New Upstream Snapshot - ruby-coffee-script-source

Ready changes

Summary

Merged new upstream version: 2.7.0+git20221025.1.98a2331 (was: 1.12.2).

Resulting package

Built on 2022-11-17T18:45 (took 14m2s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-snapshots ruby-coffee-script-source

Diff

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..0393a556
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2009-2018 Jeremy Ashkenas
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..f4958797
--- /dev/null
+++ b/README.md
@@ -0,0 +1,66 @@
+```
+      @@@@@@@                @@@@  @@@@@
+     @@@@@@@@@@              @@@   @@@                                           {
+    @@@@     @@              @@@   @@@                                        }   }   {
+   @@@@          @@@@@@@    @@@   @@@     @@@@@@    @@@@@@                   {   {  }  }
+  @@@@          @@@   @@  @@@@@  @@@@@@  @@@   @@  @@@@  @@                   }   }{  {
+  @@@@         @@@@   @@   @@@    @@@   @@@   @@@ @@@   @@@                  {  }{  }  }
+  @@@@        @@@@    @@   @@@    @@@   @@@@@@@@  @@@@@@@@                  { }{ }{  { }
+  @@@@@       @@@@   @@    @@@    @@@   @@@       @@@                     {  { } { } { }  }
+   @@@@@@@@@@ @@@@@@@@    @@@    @@@    @@@@@@@@  @@@@@@@@                 { }   { }   { }
+      @@@@@               @@@    @@@      @@@@@     @@@@@           @@@@@@   { }   { }    @@@@@@@
+                         @@@    @@@                                 @@@@@@@@@@@@@@@@@@@@@@@@@@@@
+      @@@@@@            @@@    @@@                                @@ @@@@@@@@@@@@@@@@@@@@@@@@@@
+   @@@@    @@          @@@   @@@@                                @@   @@@@@@@@@@@@@@@@@@@@@@@@
+   @@@@   @@@                       @@                  @@@@     @@@   @@@@@@@@@@@@@@@@@@@@@
+   @@@@@          @@@@@   @@  @@   @@@     @@@@@@@     @@@@@      @@@    @@@@@@@@@@@@@@@@@@
+     @@@@@      @@@  @@@ @@@@@@@@         @@@@  @@@@  @@@@@@@       @@@   @@@@@@@@@@@@@@@@
+       @@@@@   @@@       @@@@     @@@@    @@@    @@@   @@@                 @@@@@@@@@@@@@@
+ @@@@@  @@@@  @@@@      @@@@      @@@@   @@@@   @@@@  @@@@
+@@@     @@@@  @@@       @@@@     @@@@    @@@    @@@@  @@@@
+@@@     @@@@  @@@@     @@@@      @@@@   @@@@   @@@@  @@@@
+ @@@@@@@@@     @@@@@@  @@@@       @@@@  @@@@@@@@@    @@@@
+                                       @@@          @@@@
+                                      @@@
+                                      @@@
+```
+
+CoffeeScript is a little language that compiles into JavaScript.
+
+## Installation
+
+Once you have Node.js installed:
+
+```shell
+# Install locally for a project:
+npm install --save-dev coffeescript
+
+# Install globally to execute .coffee files anywhere:
+npm install --global coffeescript
+```
+
+## Getting Started
+
+Execute a script:
+
+```shell
+coffee /path/to/script.coffee
+```
+
+Compile a script:
+
+```shell
+coffee -c /path/to/script.coffee
+```
+
+For documentation, usage, and examples, see: https://coffeescript.org/
+
+To suggest a feature or report a bug: https://github.com/jashkenas/coffeescript/issues
+
+If you’d like to chat, drop by #coffeescript on Freenode IRC.
+
+The source repository: https://github.com/jashkenas/coffeescript.git
+
+Changelog: https://coffeescript.org/#changelog
+
+Our lovely and talented contributors are listed here: https://github.com/jashkenas/coffeescript/contributors
diff --git a/bin/cake b/bin/cake
new file mode 100755
index 00000000..067cabba
--- /dev/null
+++ b/bin/cake
@@ -0,0 +1,25 @@
+#!/usr/bin/env node
+
+try {
+  new Function('var {a} = {a: 1}')();
+} catch (error) {
+  console.error('Your JavaScript runtime does not support some features used by the cake command. Please use Node 6 or later.');
+  process.exit(1);
+}
+
+var path = require('path');
+var fs   = require('fs');
+
+var potentialPaths = [
+  path.join(process.cwd(), 'node_modules/coffeescript/lib/coffeescript'),
+  path.join(process.cwd(), 'node_modules/coffeescript/lib/coffee-script'),
+  path.join(process.cwd(), 'node_modules/coffee-script/lib/coffee-script'),
+  path.join(__dirname, '../lib/coffeescript')
+];
+
+for (var i = 0, len = potentialPaths.length; i < len; i++) {
+  if (fs.existsSync(potentialPaths[i])) {
+    require(potentialPaths[i] + '/cake').run();
+    break;
+  }
+}
diff --git a/bin/coffee b/bin/coffee
new file mode 100755
index 00000000..9ebc45ef
--- /dev/null
+++ b/bin/coffee
@@ -0,0 +1,25 @@
+#!/usr/bin/env node
+
+try {
+  new Function('var {a} = {a: 1}')();
+} catch (error) {
+  console.error('Your JavaScript runtime does not support some features used by the coffee command. Please use Node 6 or later.');
+  process.exit(1);
+}
+
+var path = require('path');
+var fs   = require('fs');
+
+var potentialPaths = [
+  path.join(process.cwd(), 'node_modules/coffeescript/lib/coffeescript'),
+  path.join(process.cwd(), 'node_modules/coffeescript/lib/coffee-script'),
+  path.join(process.cwd(), 'node_modules/coffee-script/lib/coffee-script'),
+  path.join(__dirname, '../lib/coffeescript')
+];
+
+for (var i = 0, len = potentialPaths.length; i < len; i++) {
+  if (fs.existsSync(potentialPaths[i])) {
+    require(potentialPaths[i] + '/command').run();
+    break;
+  }
+}
diff --git a/coffee-script-source.gemspec b/coffee-script-source.gemspec
deleted file mode 100644
index 5f15f8ea..00000000
--- a/coffee-script-source.gemspec
+++ /dev/null
@@ -1,23 +0,0 @@
-#########################################################
-# This file has been automatically generated by gem2tgz #
-#########################################################
-# -*- encoding: utf-8 -*-
-# stub: coffee-script-source 1.12.2 ruby lib
-
-Gem::Specification.new do |s|
-  s.name = "coffee-script-source".freeze
-  s.version = "1.12.2"
-
-  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
-  s.require_paths = ["lib".freeze]
-  s.authors = ["Jeremy Ashkenas".freeze]
-  s.date = "2016-12-16"
-  s.description = "    CoffeeScript is a little language that compiles into JavaScript.\n    Underneath all of those embarrassing braces and semicolons,\n    JavaScript has always had a gorgeous object model at its heart.\n    CoffeeScript is an attempt to expose the good parts of JavaScript\n    in a simple way.\n".freeze
-  s.email = "jashkenas@gmail.com".freeze
-  s.files = ["lib/coffee_script/coffee-script.js".freeze, "lib/coffee_script/source.rb".freeze]
-  s.homepage = "http://coffeescript.org".freeze
-  s.licenses = ["MIT".freeze]
-  s.rubyforge_project = "coffee-script-source".freeze
-  s.rubygems_version = "2.5.2.1".freeze
-  s.summary = "The CoffeeScript Compiler".freeze
-end
diff --git a/debian/changelog b/debian/changelog
index 9cfdf552..b3253ed3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-ruby-coffee-script-source (1.12.2-2) UNRELEASED; urgency=medium
+ruby-coffee-script-source (2.7.0+git20221025.1.98a2331-1) UNRELEASED; urgency=medium
 
   * Set debhelper-compat version in Build-Depends.
   * Update renamed lintian tag names in lintian overrides.
@@ -7,8 +7,9 @@ ruby-coffee-script-source (1.12.2-2) UNRELEASED; urgency=medium
   * Update standards version to 4.5.0, no changes needed.
   * Bump debhelper from old 12 to 13.
   * Update standards version to 4.5.1, no changes needed.
+  * New upstream snapshot.
 
- -- Debian Janitor <janitor@jelmer.uk>  Sat, 02 May 2020 07:31:41 +0000
+ -- Debian Janitor <janitor@jelmer.uk>  Thu, 17 Nov 2022 18:40:46 -0000
 
 ruby-coffee-script-source (1.12.2-1) unstable; urgency=medium
 
diff --git a/lib/coffee_script/coffee-script.js b/lib/coffee_script/coffee-script.js
deleted file mode 100644
index 14f299dc..00000000
--- a/lib/coffee_script/coffee-script.js
+++ /dev/null
@@ -1,7523 +0,0 @@
-/**
- * CoffeeScript Compiler v1.12.2
- * http://coffeescript.org
- *
- * Copyright 2011, Jeremy Ashkenas
- * Released under the MIT License
- */
-(function(root) {
-  var CoffeeScript = function() {
-    function require(path){ return require[path]; }
-    require['../../package.json'] = (function() {
-  return {
-  "name": "coffee-script",
-  "description": "Unfancy JavaScript",
-  "keywords": [
-    "javascript",
-    "language",
-    "coffeescript",
-    "compiler"
-  ],
-  "author": "Jeremy Ashkenas",
-  "version": "1.12.2",
-  "license": "MIT",
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "directories": {
-    "lib": "./lib/coffee-script"
-  },
-  "main": "./lib/coffee-script/coffee-script",
-  "bin": {
-    "coffee": "./bin/coffee",
-    "cake": "./bin/cake"
-  },
-  "files": [
-    "bin",
-    "lib",
-    "register.js",
-    "repl.js"
-  ],
-  "preferGlobal": true,
-  "scripts": {
-    "test": "node ./bin/cake test",
-    "test-harmony": "node --harmony ./bin/cake test"
-  },
-  "homepage": "http://coffeescript.org",
-  "bugs": "https://github.com/jashkenas/coffeescript/issues",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/jashkenas/coffeescript.git"
-  },
-  "devDependencies": {
-    "docco": "~0.7.0",
-    "google-closure-compiler-js": "^20161201.0.0",
-    "highlight.js": "~9.9.0",
-    "jison": ">=0.4.17",
-    "marked": "^0.3.6",
-    "underscore": "~1.8.3"
-  }
-}
-;
-})();require['./helpers'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var buildLocationData, extend, flatten, ref, repeat, syntaxErrorToString;
-
-  exports.starts = function(string, literal, start) {
-    return literal === string.substr(start, literal.length);
-  };
-
-  exports.ends = function(string, literal, back) {
-    var len;
-    len = literal.length;
-    return literal === string.substr(string.length - len - (back || 0), len);
-  };
-
-  exports.repeat = repeat = function(str, n) {
-    var res;
-    res = '';
-    while (n > 0) {
-      if (n & 1) {
-        res += str;
-      }
-      n >>>= 1;
-      str += str;
-    }
-    return res;
-  };
-
-  exports.compact = function(array) {
-    var i, item, len1, results;
-    results = [];
-    for (i = 0, len1 = array.length; i < len1; i++) {
-      item = array[i];
-      if (item) {
-        results.push(item);
-      }
-    }
-    return results;
-  };
-
-  exports.count = function(string, substr) {
-    var num, pos;
-    num = pos = 0;
-    if (!substr.length) {
-      return 1 / 0;
-    }
-    while (pos = 1 + string.indexOf(substr, pos)) {
-      num++;
-    }
-    return num;
-  };
-
-  exports.merge = function(options, overrides) {
-    return extend(extend({}, options), overrides);
-  };
-
-  extend = exports.extend = function(object, properties) {
-    var key, val;
-    for (key in properties) {
-      val = properties[key];
-      object[key] = val;
-    }
-    return object;
-  };
-
-  exports.flatten = flatten = function(array) {
-    var element, flattened, i, len1;
-    flattened = [];
-    for (i = 0, len1 = array.length; i < len1; i++) {
-      element = array[i];
-      if ('[object Array]' === Object.prototype.toString.call(element)) {
-        flattened = flattened.concat(flatten(element));
-      } else {
-        flattened.push(element);
-      }
-    }
-    return flattened;
-  };
-
-  exports.del = function(obj, key) {
-    var val;
-    val = obj[key];
-    delete obj[key];
-    return val;
-  };
-
-  exports.some = (ref = Array.prototype.some) != null ? ref : function(fn) {
-    var e, i, len1, ref1;
-    ref1 = this;
-    for (i = 0, len1 = ref1.length; i < len1; i++) {
-      e = ref1[i];
-      if (fn(e)) {
-        return true;
-      }
-    }
-    return false;
-  };
-
-  exports.invertLiterate = function(code) {
-    var line, lines, maybe_code;
-    maybe_code = true;
-    lines = (function() {
-      var i, len1, ref1, results;
-      ref1 = code.split('\n');
-      results = [];
-      for (i = 0, len1 = ref1.length; i < len1; i++) {
-        line = ref1[i];
-        if (maybe_code && /^([ ]{4}|[ ]{0,3}\t)/.test(line)) {
-          results.push(line);
-        } else if (maybe_code = /^\s*$/.test(line)) {
-          results.push(line);
-        } else {
-          results.push('# ' + line);
-        }
-      }
-      return results;
-    })();
-    return lines.join('\n');
-  };
-
-  buildLocationData = function(first, last) {
-    if (!last) {
-      return first;
-    } else {
-      return {
-        first_line: first.first_line,
-        first_column: first.first_column,
-        last_line: last.last_line,
-        last_column: last.last_column
-      };
-    }
-  };
-
-  exports.addLocationDataFn = function(first, last) {
-    return function(obj) {
-      if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) {
-        obj.updateLocationDataIfMissing(buildLocationData(first, last));
-      }
-      return obj;
-    };
-  };
-
-  exports.locationDataToString = function(obj) {
-    var locationData;
-    if (("2" in obj) && ("first_line" in obj[2])) {
-      locationData = obj[2];
-    } else if ("first_line" in obj) {
-      locationData = obj;
-    }
-    if (locationData) {
-      return ((locationData.first_line + 1) + ":" + (locationData.first_column + 1) + "-") + ((locationData.last_line + 1) + ":" + (locationData.last_column + 1));
-    } else {
-      return "No location data";
-    }
-  };
-
-  exports.baseFileName = function(file, stripExt, useWinPathSep) {
-    var parts, pathSep;
-    if (stripExt == null) {
-      stripExt = false;
-    }
-    if (useWinPathSep == null) {
-      useWinPathSep = false;
-    }
-    pathSep = useWinPathSep ? /\\|\// : /\//;
-    parts = file.split(pathSep);
-    file = parts[parts.length - 1];
-    if (!(stripExt && file.indexOf('.') >= 0)) {
-      return file;
-    }
-    parts = file.split('.');
-    parts.pop();
-    if (parts[parts.length - 1] === 'coffee' && parts.length > 1) {
-      parts.pop();
-    }
-    return parts.join('.');
-  };
-
-  exports.isCoffee = function(file) {
-    return /\.((lit)?coffee|coffee\.md)$/.test(file);
-  };
-
-  exports.isLiterate = function(file) {
-    return /\.(litcoffee|coffee\.md)$/.test(file);
-  };
-
-  exports.throwSyntaxError = function(message, location) {
-    var error;
-    error = new SyntaxError(message);
-    error.location = location;
-    error.toString = syntaxErrorToString;
-    error.stack = error.toString();
-    throw error;
-  };
-
-  exports.updateSyntaxError = function(error, code, filename) {
-    if (error.toString === syntaxErrorToString) {
-      error.code || (error.code = code);
-      error.filename || (error.filename = filename);
-      error.stack = error.toString();
-    }
-    return error;
-  };
-
-  syntaxErrorToString = function() {
-    var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, ref1, ref2, ref3, ref4, start;
-    if (!(this.code && this.location)) {
-      return Error.prototype.toString.call(this);
-    }
-    ref1 = this.location, first_line = ref1.first_line, first_column = ref1.first_column, last_line = ref1.last_line, last_column = ref1.last_column;
-    if (last_line == null) {
-      last_line = first_line;
-    }
-    if (last_column == null) {
-      last_column = first_column;
-    }
-    filename = this.filename || '[stdin]';
-    codeLine = this.code.split('\n')[first_line];
-    start = first_column;
-    end = first_line === last_line ? last_column + 1 : codeLine.length;
-    marker = codeLine.slice(0, start).replace(/[^\s]/g, ' ') + repeat('^', end - start);
-    if (typeof process !== "undefined" && process !== null) {
-      colorsEnabled = ((ref2 = process.stdout) != null ? ref2.isTTY : void 0) && !((ref3 = process.env) != null ? ref3.NODE_DISABLE_COLORS : void 0);
-    }
-    if ((ref4 = this.colorful) != null ? ref4 : colorsEnabled) {
-      colorize = function(str) {
-        return "\x1B[1;31m" + str + "\x1B[0m";
-      };
-      codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end);
-      marker = colorize(marker);
-    }
-    return filename + ":" + (first_line + 1) + ":" + (first_column + 1) + ": error: " + this.message + "\n" + codeLine + "\n" + marker;
-  };
-
-  exports.nameWhitespaceCharacter = function(string) {
-    switch (string) {
-      case ' ':
-        return 'space';
-      case '\n':
-        return 'newline';
-      case '\r':
-        return 'carriage return';
-      case '\t':
-        return 'tab';
-      default:
-        return string;
-    }
-  };
-
-}).call(this);
-
-  return module.exports;
-})();require['./rewriter'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, ref, rite,
-    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; },
-    slice = [].slice;
-
-  generate = function(tag, value, origin) {
-    var tok;
-    tok = [tag, value];
-    tok.generated = true;
-    if (origin) {
-      tok.origin = origin;
-    }
-    return tok;
-  };
-
-  exports.Rewriter = (function() {
-    function Rewriter() {}
-
-    Rewriter.prototype.rewrite = function(tokens1) {
-      this.tokens = tokens1;
-      this.removeLeadingNewlines();
-      this.closeOpenCalls();
-      this.closeOpenIndexes();
-      this.normalizeLines();
-      this.tagPostfixConditionals();
-      this.addImplicitBracesAndParens();
-      this.addLocationDataToGeneratedTokens();
-      this.fixOutdentLocationData();
-      return this.tokens;
-    };
-
-    Rewriter.prototype.scanTokens = function(block) {
-      var i, token, tokens;
-      tokens = this.tokens;
-      i = 0;
-      while (token = tokens[i]) {
-        i += block.call(this, token, i, tokens);
-      }
-      return true;
-    };
-
-    Rewriter.prototype.detectEnd = function(i, condition, action) {
-      var levels, ref, ref1, token, tokens;
-      tokens = this.tokens;
-      levels = 0;
-      while (token = tokens[i]) {
-        if (levels === 0 && condition.call(this, token, i)) {
-          return action.call(this, token, i);
-        }
-        if (!token || levels < 0) {
-          return action.call(this, token, i - 1);
-        }
-        if (ref = token[0], indexOf.call(EXPRESSION_START, ref) >= 0) {
-          levels += 1;
-        } else if (ref1 = token[0], indexOf.call(EXPRESSION_END, ref1) >= 0) {
-          levels -= 1;
-        }
-        i += 1;
-      }
-      return i - 1;
-    };
-
-    Rewriter.prototype.removeLeadingNewlines = function() {
-      var i, k, len, ref, tag;
-      ref = this.tokens;
-      for (i = k = 0, len = ref.length; k < len; i = ++k) {
-        tag = ref[i][0];
-        if (tag !== 'TERMINATOR') {
-          break;
-        }
-      }
-      if (i) {
-        return this.tokens.splice(0, i);
-      }
-    };
-
-    Rewriter.prototype.closeOpenCalls = function() {
-      var action, condition;
-      condition = function(token, i) {
-        var ref;
-        return ((ref = token[0]) === ')' || ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')';
-      };
-      action = function(token, i) {
-        return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] === 'CALL_START') {
-          this.detectEnd(i + 1, condition, action);
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.closeOpenIndexes = function() {
-      var action, condition;
-      condition = function(token, i) {
-        var ref;
-        return (ref = token[0]) === ']' || ref === 'INDEX_END';
-      };
-      action = function(token, i) {
-        return token[0] = 'INDEX_END';
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] === 'INDEX_START') {
-          this.detectEnd(i + 1, condition, action);
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.indexOfTag = function() {
-      var fuzz, i, j, k, pattern, ref, ref1;
-      i = arguments[0], pattern = 2 <= arguments.length ? slice.call(arguments, 1) : [];
-      fuzz = 0;
-      for (j = k = 0, ref = pattern.length; 0 <= ref ? k < ref : k > ref; j = 0 <= ref ? ++k : --k) {
-        while (this.tag(i + j + fuzz) === 'HERECOMMENT') {
-          fuzz += 2;
-        }
-        if (pattern[j] == null) {
-          continue;
-        }
-        if (typeof pattern[j] === 'string') {
-          pattern[j] = [pattern[j]];
-        }
-        if (ref1 = this.tag(i + j + fuzz), indexOf.call(pattern[j], ref1) < 0) {
-          return -1;
-        }
-      }
-      return i + j + fuzz - 1;
-    };
-
-    Rewriter.prototype.looksObjectish = function(j) {
-      var end, index;
-      if (this.indexOfTag(j, '@', null, ':') > -1 || this.indexOfTag(j, null, ':') > -1) {
-        return true;
-      }
-      index = this.indexOfTag(j, EXPRESSION_START);
-      if (index > -1) {
-        end = null;
-        this.detectEnd(index + 1, (function(token) {
-          var ref;
-          return ref = token[0], indexOf.call(EXPRESSION_END, ref) >= 0;
-        }), (function(token, i) {
-          return end = i;
-        }));
-        if (this.tag(end + 1) === ':') {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    Rewriter.prototype.findTagsBackwards = function(i, tags) {
-      var backStack, ref, ref1, ref2, ref3, ref4, ref5;
-      backStack = [];
-      while (i >= 0 && (backStack.length || (ref2 = this.tag(i), indexOf.call(tags, ref2) < 0) && ((ref3 = this.tag(i), indexOf.call(EXPRESSION_START, ref3) < 0) || this.tokens[i].generated) && (ref4 = this.tag(i), indexOf.call(LINEBREAKS, ref4) < 0))) {
-        if (ref = this.tag(i), indexOf.call(EXPRESSION_END, ref) >= 0) {
-          backStack.push(this.tag(i));
-        }
-        if ((ref1 = this.tag(i), indexOf.call(EXPRESSION_START, ref1) >= 0) && backStack.length) {
-          backStack.pop();
-        }
-        i -= 1;
-      }
-      return ref5 = this.tag(i), indexOf.call(tags, ref5) >= 0;
-    };
-
-    Rewriter.prototype.addImplicitBracesAndParens = function() {
-      var stack, start;
-      stack = [];
-      start = null;
-      return this.scanTokens(function(token, i, tokens) {
-        var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, newLine, nextTag, offset, prevTag, prevToken, ref, ref1, ref2, ref3, ref4, ref5, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag;
-        tag = token[0];
-        prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0];
-        nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0];
-        stackTop = function() {
-          return stack[stack.length - 1];
-        };
-        startIdx = i;
-        forward = function(n) {
-          return i - startIdx + n;
-        };
-        inImplicit = function() {
-          var ref, ref1;
-          return (ref = stackTop()) != null ? (ref1 = ref[2]) != null ? ref1.ours : void 0 : void 0;
-        };
-        inImplicitCall = function() {
-          var ref;
-          return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '(';
-        };
-        inImplicitObject = function() {
-          var ref;
-          return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '{';
-        };
-        inImplicitControl = function() {
-          var ref;
-          return inImplicit && ((ref = stackTop()) != null ? ref[0] : void 0) === 'CONTROL';
-        };
-        startImplicitCall = function(j) {
-          var idx;
-          idx = j != null ? j : i;
-          stack.push([
-            '(', idx, {
-              ours: true
-            }
-          ]);
-          tokens.splice(idx, 0, generate('CALL_START', '('));
-          if (j == null) {
-            return i += 1;
-          }
-        };
-        endImplicitCall = function() {
-          stack.pop();
-          tokens.splice(i, 0, generate('CALL_END', ')', ['', 'end of input', token[2]]));
-          return i += 1;
-        };
-        startImplicitObject = function(j, startsLine) {
-          var idx, val;
-          if (startsLine == null) {
-            startsLine = true;
-          }
-          idx = j != null ? j : i;
-          stack.push([
-            '{', idx, {
-              sameLine: true,
-              startsLine: startsLine,
-              ours: true
-            }
-          ]);
-          val = new String('{');
-          val.generated = true;
-          tokens.splice(idx, 0, generate('{', val, token));
-          if (j == null) {
-            return i += 1;
-          }
-        };
-        endImplicitObject = function(j) {
-          j = j != null ? j : i;
-          stack.pop();
-          tokens.splice(j, 0, generate('}', '}', token));
-          return i += 1;
-        };
-        if (inImplicitCall() && (tag === 'IF' || tag === 'TRY' || tag === 'FINALLY' || tag === 'CATCH' || tag === 'CLASS' || tag === 'SWITCH')) {
-          stack.push([
-            'CONTROL', i, {
-              ours: true
-            }
-          ]);
-          return forward(1);
-        }
-        if (tag === 'INDENT' && inImplicit()) {
-          if (prevTag !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'TRY' && prevTag !== 'ELSE' && prevTag !== '=') {
-            while (inImplicitCall()) {
-              endImplicitCall();
-            }
-          }
-          if (inImplicitControl()) {
-            stack.pop();
-          }
-          stack.push([tag, i]);
-          return forward(1);
-        }
-        if (indexOf.call(EXPRESSION_START, tag) >= 0) {
-          stack.push([tag, i]);
-          return forward(1);
-        }
-        if (indexOf.call(EXPRESSION_END, tag) >= 0) {
-          while (inImplicit()) {
-            if (inImplicitCall()) {
-              endImplicitCall();
-            } else if (inImplicitObject()) {
-              endImplicitObject();
-            } else {
-              stack.pop();
-            }
-          }
-          start = stack.pop();
-        }
-        if ((indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !((ref = tokens[i + 1]) != null ? ref.spaced : void 0) && !((ref1 = tokens[i + 1]) != null ? ref1.newLine : void 0))) {
-          if (tag === '?') {
-            tag = token[0] = 'FUNC_EXIST';
-          }
-          startImplicitCall(i + 1);
-          return forward(2);
-        }
-        if (indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.indexOfTag(i + 1, 'INDENT') > -1 && this.looksObjectish(i + 2) && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])) {
-          startImplicitCall(i + 1);
-          stack.push(['INDENT', i + 2]);
-          return forward(3);
-        }
-        if (tag === ':') {
-          s = (function() {
-            var ref2;
-            switch (false) {
-              case ref2 = this.tag(i - 1), indexOf.call(EXPRESSION_END, ref2) < 0:
-                return start[1];
-              case this.tag(i - 2) !== '@':
-                return i - 2;
-              default:
-                return i - 1;
-            }
-          }).call(this);
-          while (this.tag(s - 2) === 'HERECOMMENT') {
-            s -= 2;
-          }
-          this.insideForDeclaration = nextTag === 'FOR';
-          startsLine = s === 0 || (ref2 = this.tag(s - 1), indexOf.call(LINEBREAKS, ref2) >= 0) || tokens[s - 1].newLine;
-          if (stackTop()) {
-            ref3 = stackTop(), stackTag = ref3[0], stackIdx = ref3[1];
-            if ((stackTag === '{' || stackTag === 'INDENT' && this.tag(stackIdx - 1) === '{') && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{')) {
-              return forward(1);
-            }
-          }
-          startImplicitObject(s, !!startsLine);
-          return forward(2);
-        }
-        if (inImplicitObject() && indexOf.call(LINEBREAKS, tag) >= 0) {
-          stackTop()[2].sameLine = false;
-        }
-        newLine = prevTag === 'OUTDENT' || prevToken.newLine;
-        if (indexOf.call(IMPLICIT_END, tag) >= 0 || indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) {
-          while (inImplicit()) {
-            ref4 = stackTop(), stackTag = ref4[0], stackIdx = ref4[1], (ref5 = ref4[2], sameLine = ref5.sameLine, startsLine = ref5.startsLine);
-            if (inImplicitCall() && prevTag !== ',') {
-              endImplicitCall();
-            } else if (inImplicitObject() && !this.insideForDeclaration && sameLine && tag !== 'TERMINATOR' && prevTag !== ':') {
-              endImplicitObject();
-            } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) {
-              if (nextTag === 'HERECOMMENT') {
-                return forward(1);
-              }
-              endImplicitObject();
-            } else {
-              break;
-            }
-          }
-        }
-        if (tag === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && !this.insideForDeclaration && (nextTag !== 'TERMINATOR' || !this.looksObjectish(i + 2))) {
-          offset = nextTag === 'OUTDENT' ? 1 : 0;
-          while (inImplicitObject()) {
-            endImplicitObject(i + offset);
-          }
-        }
-        return forward(1);
-      });
-    };
-
-    Rewriter.prototype.addLocationDataToGeneratedTokens = function() {
-      return this.scanTokens(function(token, i, tokens) {
-        var column, line, nextLocation, prevLocation, ref, ref1;
-        if (token[2]) {
-          return 1;
-        }
-        if (!(token.generated || token.explicit)) {
-          return 1;
-        }
-        if (token[0] === '{' && (nextLocation = (ref = tokens[i + 1]) != null ? ref[2] : void 0)) {
-          line = nextLocation.first_line, column = nextLocation.first_column;
-        } else if (prevLocation = (ref1 = tokens[i - 1]) != null ? ref1[2] : void 0) {
-          line = prevLocation.last_line, column = prevLocation.last_column;
-        } else {
-          line = column = 0;
-        }
-        token[2] = {
-          first_line: line,
-          first_column: column,
-          last_line: line,
-          last_column: column
-        };
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.fixOutdentLocationData = function() {
-      return this.scanTokens(function(token, i, tokens) {
-        var prevLocationData;
-        if (!(token[0] === 'OUTDENT' || (token.generated && token[0] === 'CALL_END') || (token.generated && token[0] === '}'))) {
-          return 1;
-        }
-        prevLocationData = tokens[i - 1][2];
-        token[2] = {
-          first_line: prevLocationData.last_line,
-          first_column: prevLocationData.last_column,
-          last_line: prevLocationData.last_line,
-          last_column: prevLocationData.last_column
-        };
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.normalizeLines = function() {
-      var action, condition, indent, outdent, starter;
-      starter = indent = outdent = null;
-      condition = function(token, i) {
-        var ref, ref1, ref2, ref3;
-        return token[1] !== ';' && (ref = token[0], indexOf.call(SINGLE_CLOSERS, ref) >= 0) && !(token[0] === 'TERMINATOR' && (ref1 = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((ref2 = token[0]) === 'CATCH' || ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (ref3 = token[0], indexOf.call(CALL_CLOSERS, ref3) >= 0) && this.tokens[i - 1].newLine;
-      };
-      action = function(token, i) {
-        return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
-      };
-      return this.scanTokens(function(token, i, tokens) {
-        var j, k, ref, ref1, ref2, tag;
-        tag = token[0];
-        if (tag === 'TERMINATOR') {
-          if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
-            tokens.splice.apply(tokens, [i, 1].concat(slice.call(this.indentation())));
-            return 1;
-          }
-          if (ref = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref) >= 0) {
-            tokens.splice(i, 1);
-            return 0;
-          }
-        }
-        if (tag === 'CATCH') {
-          for (j = k = 1; k <= 2; j = ++k) {
-            if (!((ref1 = this.tag(i + j)) === 'OUTDENT' || ref1 === 'TERMINATOR' || ref1 === 'FINALLY')) {
-              continue;
-            }
-            tokens.splice.apply(tokens, [i + j, 0].concat(slice.call(this.indentation())));
-            return 2 + j;
-          }
-        }
-        if (indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {
-          starter = tag;
-          ref2 = this.indentation(tokens[i]), indent = ref2[0], outdent = ref2[1];
-          if (starter === 'THEN') {
-            indent.fromThen = true;
-          }
-          tokens.splice(i + 1, 0, indent);
-          this.detectEnd(i + 2, condition, action);
-          if (tag === 'THEN') {
-            tokens.splice(i, 1);
-          }
-          return 1;
-        }
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.tagPostfixConditionals = function() {
-      var action, condition, original;
-      original = null;
-      condition = function(token, i) {
-        var prevTag, tag;
-        tag = token[0];
-        prevTag = this.tokens[i - 1][0];
-        return tag === 'TERMINATOR' || (tag === 'INDENT' && indexOf.call(SINGLE_LINERS, prevTag) < 0);
-      };
-      action = function(token, i) {
-        if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
-          return original[0] = 'POST_' + original[0];
-        }
-      };
-      return this.scanTokens(function(token, i) {
-        if (token[0] !== 'IF') {
-          return 1;
-        }
-        original = token;
-        this.detectEnd(i + 1, condition, action);
-        return 1;
-      });
-    };
-
-    Rewriter.prototype.indentation = function(origin) {
-      var indent, outdent;
-      indent = ['INDENT', 2];
-      outdent = ['OUTDENT', 2];
-      if (origin) {
-        indent.generated = outdent.generated = true;
-        indent.origin = outdent.origin = origin;
-      } else {
-        indent.explicit = outdent.explicit = true;
-      }
-      return [indent, outdent];
-    };
-
-    Rewriter.prototype.generate = generate;
-
-    Rewriter.prototype.tag = function(i) {
-      var ref;
-      return (ref = this.tokens[i]) != null ? ref[0] : void 0;
-    };
-
-    return Rewriter;
-
-  })();
-
-  BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END'], ['STRING_START', 'STRING_END'], ['REGEX_START', 'REGEX_END']];
-
-  exports.INVERSES = INVERSES = {};
-
-  EXPRESSION_START = [];
-
-  EXPRESSION_END = [];
-
-  for (k = 0, len = BALANCED_PAIRS.length; k < len; k++) {
-    ref = BALANCED_PAIRS[k], left = ref[0], rite = ref[1];
-    EXPRESSION_START.push(INVERSES[rite] = left);
-    EXPRESSION_END.push(INVERSES[left] = rite);
-  }
-
-  EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
-
-  IMPLICIT_FUNC = ['IDENTIFIER', 'PROPERTY', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
-
-  IMPLICIT_CALL = ['IDENTIFIER', 'PROPERTY', 'NUMBER', 'INFINITY', 'NAN', 'STRING', 'STRING_START', 'REGEX', 'REGEX_START', 'JS', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'UNDEFINED', 'NULL', 'BOOL', 'UNARY', 'YIELD', 'UNARY_MATH', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++'];
-
-  IMPLICIT_UNSPACED_CALL = ['+', '-'];
-
-  IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];
-
-  SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];
-
-  SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'];
-
-  LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];
-
-  CALL_CLOSERS = ['.', '?.', '::', '?::'];
-
-}).call(this);
-
-  return module.exports;
-})();require['./lexer'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, HERE_JSTOKEN, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVALID_ESCAPE, INVERSES, JSTOKEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, isForFrom, isUnassignable, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,
-    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; },
-    slice = [].slice;
-
-  ref = require('./rewriter'), Rewriter = ref.Rewriter, INVERSES = ref.INVERSES;
-
-  ref1 = require('./helpers'), count = ref1.count, starts = ref1.starts, compact = ref1.compact, repeat = ref1.repeat, invertLiterate = ref1.invertLiterate, locationDataToString = ref1.locationDataToString, throwSyntaxError = ref1.throwSyntaxError;
-
-  exports.Lexer = Lexer = (function() {
-    function Lexer() {}
-
-    Lexer.prototype.tokenize = function(code, opts) {
-      var consumed, end, i, ref2;
-      if (opts == null) {
-        opts = {};
-      }
-      this.literate = opts.literate;
-      this.indent = 0;
-      this.baseIndent = 0;
-      this.indebt = 0;
-      this.outdebt = 0;
-      this.indents = [];
-      this.ends = [];
-      this.tokens = [];
-      this.seenFor = false;
-      this.seenImport = false;
-      this.seenExport = false;
-      this.exportSpecifierList = false;
-      this.chunkLine = opts.line || 0;
-      this.chunkColumn = opts.column || 0;
-      code = this.clean(code);
-      i = 0;
-      while (this.chunk = code.slice(i)) {
-        consumed = this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();
-        ref2 = this.getLineAndColumnFromChunk(consumed), this.chunkLine = ref2[0], this.chunkColumn = ref2[1];
-        i += consumed;
-        if (opts.untilBalanced && this.ends.length === 0) {
-          return {
-            tokens: this.tokens,
-            index: i
-          };
-        }
-      }
-      this.closeIndentation();
-      if (end = this.ends.pop()) {
-        this.error("missing " + end.tag, end.origin[2]);
-      }
-      if (opts.rewrite === false) {
-        return this.tokens;
-      }
-      return (new Rewriter).rewrite(this.tokens);
-    };
-
-    Lexer.prototype.clean = function(code) {
-      if (code.charCodeAt(0) === BOM) {
-        code = code.slice(1);
-      }
-      code = code.replace(/\r/g, '').replace(TRAILING_SPACES, '');
-      if (WHITESPACE.test(code)) {
-        code = "\n" + code;
-        this.chunkLine--;
-      }
-      if (this.literate) {
-        code = invertLiterate(code);
-      }
-      return code;
-    };
-
-    Lexer.prototype.identifierToken = function() {
-      var alias, colon, colonOffset, id, idLength, input, match, poppedToken, prev, ref2, ref3, ref4, ref5, ref6, ref7, tag, tagToken;
-      if (!(match = IDENTIFIER.exec(this.chunk))) {
-        return 0;
-      }
-      input = match[0], id = match[1], colon = match[2];
-      idLength = id.length;
-      poppedToken = void 0;
-      if (id === 'own' && this.tag() === 'FOR') {
-        this.token('OWN', id);
-        return id.length;
-      }
-      if (id === 'from' && this.tag() === 'YIELD') {
-        this.token('FROM', id);
-        return id.length;
-      }
-      if (id === 'as' && this.seenImport) {
-        if (this.value() === '*') {
-          this.tokens[this.tokens.length - 1][0] = 'IMPORT_ALL';
-        } else if (ref2 = this.value(), indexOf.call(COFFEE_KEYWORDS, ref2) >= 0) {
-          this.tokens[this.tokens.length - 1][0] = 'IDENTIFIER';
-        }
-        if ((ref3 = this.tag()) === 'DEFAULT' || ref3 === 'IMPORT_ALL' || ref3 === 'IDENTIFIER') {
-          this.token('AS', id);
-          return id.length;
-        }
-      }
-      if (id === 'as' && this.seenExport && this.tag() === 'IDENTIFIER') {
-        this.token('AS', id);
-        return id.length;
-      }
-      if (id === 'default' && this.seenExport) {
-        this.token('DEFAULT', id);
-        return id.length;
-      }
-      ref4 = this.tokens, prev = ref4[ref4.length - 1];
-      tag = colon || (prev != null) && (((ref5 = prev[0]) === '.' || ref5 === '?.' || ref5 === '::' || ref5 === '?::') || !prev.spaced && prev[0] === '@') ? 'PROPERTY' : 'IDENTIFIER';
-      if (tag === 'IDENTIFIER' && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(COFFEE_KEYWORDS, id) >= 0) && !(this.exportSpecifierList && indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
-        tag = id.toUpperCase();
-        if (tag === 'WHEN' && (ref6 = this.tag(), indexOf.call(LINE_BREAK, ref6) >= 0)) {
-          tag = 'LEADING_WHEN';
-        } else if (tag === 'FOR') {
-          this.seenFor = true;
-        } else if (tag === 'UNLESS') {
-          tag = 'IF';
-        } else if (tag === 'IMPORT') {
-          this.seenImport = true;
-        } else if (tag === 'EXPORT') {
-          this.seenExport = true;
-        } else if (indexOf.call(UNARY, tag) >= 0) {
-          tag = 'UNARY';
-        } else if (indexOf.call(RELATION, tag) >= 0) {
-          if (tag !== 'INSTANCEOF' && this.seenFor) {
-            tag = 'FOR' + tag;
-            this.seenFor = false;
-          } else {
-            tag = 'RELATION';
-            if (this.value() === '!') {
-              poppedToken = this.tokens.pop();
-              id = '!' + id;
-            }
-          }
-        }
-      } else if (tag === 'IDENTIFIER' && this.seenFor && id === 'from' && isForFrom(prev)) {
-        tag = 'FORFROM';
-        this.seenFor = false;
-      }
-      if (tag === 'IDENTIFIER' && indexOf.call(RESERVED, id) >= 0) {
-        this.error("reserved word '" + id + "'", {
-          length: id.length
-        });
-      }
-      if (tag !== 'PROPERTY') {
-        if (indexOf.call(COFFEE_ALIASES, id) >= 0) {
-          alias = id;
-          id = COFFEE_ALIAS_MAP[id];
-        }
-        tag = (function() {
-          switch (id) {
-            case '!':
-              return 'UNARY';
-            case '==':
-            case '!=':
-              return 'COMPARE';
-            case 'true':
-            case 'false':
-              return 'BOOL';
-            case 'break':
-            case 'continue':
-            case 'debugger':
-              return 'STATEMENT';
-            case '&&':
-            case '||':
-              return id;
-            default:
-              return tag;
-          }
-        })();
-      }
-      tagToken = this.token(tag, id, 0, idLength);
-      if (alias) {
-        tagToken.origin = [tag, alias, tagToken[2]];
-      }
-      if (poppedToken) {
-        ref7 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = ref7[0], tagToken[2].first_column = ref7[1];
-      }
-      if (colon) {
-        colonOffset = input.lastIndexOf(':');
-        this.token(':', ':', colonOffset, colon.length);
-      }
-      return input.length;
-    };
-
-    Lexer.prototype.numberToken = function() {
-      var base, lexedLength, match, number, numberValue, ref2, tag;
-      if (!(match = NUMBER.exec(this.chunk))) {
-        return 0;
-      }
-      number = match[0];
-      lexedLength = number.length;
-      switch (false) {
-        case !/^0[BOX]/.test(number):
-          this.error("radix prefix in '" + number + "' must be lowercase", {
-            offset: 1
-          });
-          break;
-        case !/^(?!0x).*E/.test(number):
-          this.error("exponential notation in '" + number + "' must be indicated with a lowercase 'e'", {
-            offset: number.indexOf('E')
-          });
-          break;
-        case !/^0\d*[89]/.test(number):
-          this.error("decimal literal '" + number + "' must not be prefixed with '0'", {
-            length: lexedLength
-          });
-          break;
-        case !/^0\d+/.test(number):
-          this.error("octal literal '" + number + "' must be prefixed with '0o'", {
-            length: lexedLength
-          });
-      }
-      base = (function() {
-        switch (number.charAt(1)) {
-          case 'b':
-            return 2;
-          case 'o':
-            return 8;
-          case 'x':
-            return 16;
-          default:
-            return null;
-        }
-      })();
-      numberValue = base != null ? parseInt(number.slice(2), base) : parseFloat(number);
-      if ((ref2 = number.charAt(1)) === 'b' || ref2 === 'o') {
-        number = "0x" + (numberValue.toString(16));
-      }
-      tag = numberValue === 2e308 ? 'INFINITY' : 'NUMBER';
-      this.token(tag, number, 0, lexedLength);
-      return lexedLength;
-    };
-
-    Lexer.prototype.stringToken = function() {
-      var $, attempt, delimiter, doc, end, heredoc, i, indent, indentRegex, match, quote, ref2, ref3, regex, token, tokens;
-      quote = (STRING_START.exec(this.chunk) || [])[0];
-      if (!quote) {
-        return 0;
-      }
-      if (this.tokens.length && this.value() === 'from' && (this.seenImport || this.seenExport)) {
-        this.tokens[this.tokens.length - 1][0] = 'FROM';
-      }
-      regex = (function() {
-        switch (quote) {
-          case "'":
-            return STRING_SINGLE;
-          case '"':
-            return STRING_DOUBLE;
-          case "'''":
-            return HEREDOC_SINGLE;
-          case '"""':
-            return HEREDOC_DOUBLE;
-        }
-      })();
-      heredoc = quote.length === 3;
-      ref2 = this.matchWithInterpolations(regex, quote), tokens = ref2.tokens, end = ref2.index;
-      $ = tokens.length - 1;
-      delimiter = quote.charAt(0);
-      if (heredoc) {
-        indent = null;
-        doc = ((function() {
-          var j, len, results;
-          results = [];
-          for (i = j = 0, len = tokens.length; j < len; i = ++j) {
-            token = tokens[i];
-            if (token[0] === 'NEOSTRING') {
-              results.push(token[1]);
-            }
-          }
-          return results;
-        })()).join('#{}');
-        while (match = HEREDOC_INDENT.exec(doc)) {
-          attempt = match[1];
-          if (indent === null || (0 < (ref3 = attempt.length) && ref3 < indent.length)) {
-            indent = attempt;
-          }
-        }
-        if (indent) {
-          indentRegex = RegExp("\\n" + indent, "g");
-        }
-        this.mergeInterpolationTokens(tokens, {
-          delimiter: delimiter
-        }, (function(_this) {
-          return function(value, i) {
-            value = _this.formatString(value);
-            if (indentRegex) {
-              value = value.replace(indentRegex, '\n');
-            }
-            if (i === 0) {
-              value = value.replace(LEADING_BLANK_LINE, '');
-            }
-            if (i === $) {
-              value = value.replace(TRAILING_BLANK_LINE, '');
-            }
-            return value;
-          };
-        })(this));
-      } else {
-        this.mergeInterpolationTokens(tokens, {
-          delimiter: delimiter
-        }, (function(_this) {
-          return function(value, i) {
-            value = _this.formatString(value);
-            value = value.replace(SIMPLE_STRING_OMIT, function(match, offset) {
-              if ((i === 0 && offset === 0) || (i === $ && offset + match.length === value.length)) {
-                return '';
-              } else {
-                return ' ';
-              }
-            });
-            return value;
-          };
-        })(this));
-      }
-      return end;
-    };
-
-    Lexer.prototype.commentToken = function() {
-      var comment, here, match;
-      if (!(match = this.chunk.match(COMMENT))) {
-        return 0;
-      }
-      comment = match[0], here = match[1];
-      if (here) {
-        if (match = HERECOMMENT_ILLEGAL.exec(comment)) {
-          this.error("block comments cannot contain " + match[0], {
-            offset: match.index,
-            length: match[0].length
-          });
-        }
-        if (here.indexOf('\n') >= 0) {
-          here = here.replace(RegExp("\\n" + (repeat(' ', this.indent)), "g"), '\n');
-        }
-        this.token('HERECOMMENT', here, 0, comment.length);
-      }
-      return comment.length;
-    };
-
-    Lexer.prototype.jsToken = function() {
-      var match, script;
-      if (!(this.chunk.charAt(0) === '`' && (match = HERE_JSTOKEN.exec(this.chunk) || JSTOKEN.exec(this.chunk)))) {
-        return 0;
-      }
-      script = match[1].replace(/\\+(`|$)/g, function(string) {
-        return string.slice(-Math.ceil(string.length / 2));
-      });
-      this.token('JS', script, 0, match[0].length);
-      return match[0].length;
-    };
-
-    Lexer.prototype.regexToken = function() {
-      var body, closed, end, flags, index, match, origin, prev, ref2, ref3, ref4, regex, tokens;
-      switch (false) {
-        case !(match = REGEX_ILLEGAL.exec(this.chunk)):
-          this.error("regular expressions cannot begin with " + match[2], {
-            offset: match.index + match[1].length
-          });
-          break;
-        case !(match = this.matchWithInterpolations(HEREGEX, '///')):
-          tokens = match.tokens, index = match.index;
-          break;
-        case !(match = REGEX.exec(this.chunk)):
-          regex = match[0], body = match[1], closed = match[2];
-          this.validateEscapes(body, {
-            isRegex: true,
-            offsetInChunk: 1
-          });
-          index = regex.length;
-          ref2 = this.tokens, prev = ref2[ref2.length - 1];
-          if (prev) {
-            if (prev.spaced && (ref3 = prev[0], indexOf.call(CALLABLE, ref3) >= 0)) {
-              if (!closed || POSSIBLY_DIVISION.test(regex)) {
-                return 0;
-              }
-            } else if (ref4 = prev[0], indexOf.call(NOT_REGEX, ref4) >= 0) {
-              return 0;
-            }
-          }
-          if (!closed) {
-            this.error('missing / (unclosed regex)');
-          }
-          break;
-        default:
-          return 0;
-      }
-      flags = REGEX_FLAGS.exec(this.chunk.slice(index))[0];
-      end = index + flags.length;
-      origin = this.makeToken('REGEX', null, 0, end);
-      switch (false) {
-        case !!VALID_FLAGS.test(flags):
-          this.error("invalid regular expression flags " + flags, {
-            offset: index,
-            length: flags.length
-          });
-          break;
-        case !(regex || tokens.length === 1):
-          if (body == null) {
-            body = this.formatHeregex(tokens[0][1]);
-          }
-          this.token('REGEX', "" + (this.makeDelimitedLiteral(body, {
-            delimiter: '/'
-          })) + flags, 0, end, origin);
-          break;
-        default:
-          this.token('REGEX_START', '(', 0, 0, origin);
-          this.token('IDENTIFIER', 'RegExp', 0, 0);
-          this.token('CALL_START', '(', 0, 0);
-          this.mergeInterpolationTokens(tokens, {
-            delimiter: '"',
-            double: true
-          }, this.formatHeregex);
-          if (flags) {
-            this.token(',', ',', index, 0);
-            this.token('STRING', '"' + flags + '"', index, flags.length);
-          }
-          this.token(')', ')', end, 0);
-          this.token('REGEX_END', ')', end, 0);
-      }
-      return end;
-    };
-
-    Lexer.prototype.lineToken = function() {
-      var diff, indent, match, noNewlines, size;
-      if (!(match = MULTI_DENT.exec(this.chunk))) {
-        return 0;
-      }
-      indent = match[0];
-      this.seenFor = false;
-      size = indent.length - 1 - indent.lastIndexOf('\n');
-      noNewlines = this.unfinished();
-      if (size - this.indebt === this.indent) {
-        if (noNewlines) {
-          this.suppressNewlines();
-        } else {
-          this.newlineToken(0);
-        }
-        return indent.length;
-      }
-      if (size > this.indent) {
-        if (noNewlines) {
-          this.indebt = size - this.indent;
-          this.suppressNewlines();
-          return indent.length;
-        }
-        if (!this.tokens.length) {
-          this.baseIndent = this.indent = size;
-          return indent.length;
-        }
-        diff = size - this.indent + this.outdebt;
-        this.token('INDENT', diff, indent.length - size, size);
-        this.indents.push(diff);
-        this.ends.push({
-          tag: 'OUTDENT'
-        });
-        this.outdebt = this.indebt = 0;
-        this.indent = size;
-      } else if (size < this.baseIndent) {
-        this.error('missing indentation', {
-          offset: indent.length
-        });
-      } else {
-        this.indebt = 0;
-        this.outdentToken(this.indent - size, noNewlines, indent.length);
-      }
-      return indent.length;
-    };
-
-    Lexer.prototype.outdentToken = function(moveOut, noNewlines, outdentLength) {
-      var decreasedIndent, dent, lastIndent, ref2;
-      decreasedIndent = this.indent - moveOut;
-      while (moveOut > 0) {
-        lastIndent = this.indents[this.indents.length - 1];
-        if (!lastIndent) {
-          moveOut = 0;
-        } else if (lastIndent === this.outdebt) {
-          moveOut -= this.outdebt;
-          this.outdebt = 0;
-        } else if (lastIndent < this.outdebt) {
-          this.outdebt -= lastIndent;
-          moveOut -= lastIndent;
-        } else {
-          dent = this.indents.pop() + this.outdebt;
-          if (outdentLength && (ref2 = this.chunk[outdentLength], indexOf.call(INDENTABLE_CLOSERS, ref2) >= 0)) {
-            decreasedIndent -= dent - moveOut;
-            moveOut = dent;
-          }
-          this.outdebt = 0;
-          this.pair('OUTDENT');
-          this.token('OUTDENT', moveOut, 0, outdentLength);
-          moveOut -= dent;
-        }
-      }
-      if (dent) {
-        this.outdebt -= moveOut;
-      }
-      while (this.value() === ';') {
-        this.tokens.pop();
-      }
-      if (!(this.tag() === 'TERMINATOR' || noNewlines)) {
-        this.token('TERMINATOR', '\n', outdentLength, 0);
-      }
-      this.indent = decreasedIndent;
-      return this;
-    };
-
-    Lexer.prototype.whitespaceToken = function() {
-      var match, nline, prev, ref2;
-      if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) {
-        return 0;
-      }
-      ref2 = this.tokens, prev = ref2[ref2.length - 1];
-      if (prev) {
-        prev[match ? 'spaced' : 'newLine'] = true;
-      }
-      if (match) {
-        return match[0].length;
-      } else {
-        return 0;
-      }
-    };
-
-    Lexer.prototype.newlineToken = function(offset) {
-      while (this.value() === ';') {
-        this.tokens.pop();
-      }
-      if (this.tag() !== 'TERMINATOR') {
-        this.token('TERMINATOR', '\n', offset, 0);
-      }
-      return this;
-    };
-
-    Lexer.prototype.suppressNewlines = function() {
-      if (this.value() === '\\') {
-        this.tokens.pop();
-      }
-      return this;
-    };
-
-    Lexer.prototype.literalToken = function() {
-      var match, message, origin, prev, ref2, ref3, ref4, ref5, ref6, skipToken, tag, token, value;
-      if (match = OPERATOR.exec(this.chunk)) {
-        value = match[0];
-        if (CODE.test(value)) {
-          this.tagParameters();
-        }
-      } else {
-        value = this.chunk.charAt(0);
-      }
-      tag = value;
-      ref2 = this.tokens, prev = ref2[ref2.length - 1];
-      if (prev && indexOf.call(['='].concat(slice.call(COMPOUND_ASSIGN)), value) >= 0) {
-        skipToken = false;
-        if (value === '=' && ((ref3 = prev[1]) === '||' || ref3 === '&&') && !prev.spaced) {
-          prev[0] = 'COMPOUND_ASSIGN';
-          prev[1] += '=';
-          prev = this.tokens[this.tokens.length - 2];
-          skipToken = true;
-        }
-        if (prev && prev[0] !== 'PROPERTY') {
-          origin = (ref4 = prev.origin) != null ? ref4 : prev;
-          message = isUnassignable(prev[1], origin[1]);
-          if (message) {
-            this.error(message, origin[2]);
-          }
-        }
-        if (skipToken) {
-          return value.length;
-        }
-      }
-      if (value === '{' && (prev != null ? prev[0] : void 0) === 'EXPORT') {
-        this.exportSpecifierList = true;
-      } else if (this.exportSpecifierList && value === '}') {
-        this.exportSpecifierList = false;
-      }
-      if (value === ';') {
-        this.seenFor = this.seenImport = this.seenExport = false;
-        tag = 'TERMINATOR';
-      } else if (value === '*' && prev[0] === 'EXPORT') {
-        tag = 'EXPORT_ALL';
-      } else if (indexOf.call(MATH, value) >= 0) {
-        tag = 'MATH';
-      } else if (indexOf.call(COMPARE, value) >= 0) {
-        tag = 'COMPARE';
-      } else if (indexOf.call(COMPOUND_ASSIGN, value) >= 0) {
-        tag = 'COMPOUND_ASSIGN';
-      } else if (indexOf.call(UNARY, value) >= 0) {
-        tag = 'UNARY';
-      } else if (indexOf.call(UNARY_MATH, value) >= 0) {
-        tag = 'UNARY_MATH';
-      } else if (indexOf.call(SHIFT, value) >= 0) {
-        tag = 'SHIFT';
-      } else if (value === '?' && (prev != null ? prev.spaced : void 0)) {
-        tag = 'BIN?';
-      } else if (prev && !prev.spaced) {
-        if (value === '(' && (ref5 = prev[0], indexOf.call(CALLABLE, ref5) >= 0)) {
-          if (prev[0] === '?') {
-            prev[0] = 'FUNC_EXIST';
-          }
-          tag = 'CALL_START';
-        } else if (value === '[' && (ref6 = prev[0], indexOf.call(INDEXABLE, ref6) >= 0)) {
-          tag = 'INDEX_START';
-          switch (prev[0]) {
-            case '?':
-              prev[0] = 'INDEX_SOAK';
-          }
-        }
-      }
-      token = this.makeToken(tag, value);
-      switch (value) {
-        case '(':
-        case '{':
-        case '[':
-          this.ends.push({
-            tag: INVERSES[value],
-            origin: token
-          });
-          break;
-        case ')':
-        case '}':
-        case ']':
-          this.pair(value);
-      }
-      this.tokens.push(token);
-      return value.length;
-    };
-
-    Lexer.prototype.tagParameters = function() {
-      var i, stack, tok, tokens;
-      if (this.tag() !== ')') {
-        return this;
-      }
-      stack = [];
-      tokens = this.tokens;
-      i = tokens.length;
-      tokens[--i][0] = 'PARAM_END';
-      while (tok = tokens[--i]) {
-        switch (tok[0]) {
-          case ')':
-            stack.push(tok);
-            break;
-          case '(':
-          case 'CALL_START':
-            if (stack.length) {
-              stack.pop();
-            } else if (tok[0] === '(') {
-              tok[0] = 'PARAM_START';
-              return this;
-            } else {
-              return this;
-            }
-        }
-      }
-      return this;
-    };
-
-    Lexer.prototype.closeIndentation = function() {
-      return this.outdentToken(this.indent);
-    };
-
-    Lexer.prototype.matchWithInterpolations = function(regex, delimiter) {
-      var close, column, firstToken, index, lastToken, line, nested, offsetInChunk, open, ref2, ref3, ref4, str, strPart, tokens;
-      tokens = [];
-      offsetInChunk = delimiter.length;
-      if (this.chunk.slice(0, offsetInChunk) !== delimiter) {
-        return null;
-      }
-      str = this.chunk.slice(offsetInChunk);
-      while (true) {
-        strPart = regex.exec(str)[0];
-        this.validateEscapes(strPart, {
-          isRegex: delimiter.charAt(0) === '/',
-          offsetInChunk: offsetInChunk
-        });
-        tokens.push(this.makeToken('NEOSTRING', strPart, offsetInChunk));
-        str = str.slice(strPart.length);
-        offsetInChunk += strPart.length;
-        if (str.slice(0, 2) !== '#{') {
-          break;
-        }
-        ref2 = this.getLineAndColumnFromChunk(offsetInChunk + 1), line = ref2[0], column = ref2[1];
-        ref3 = new Lexer().tokenize(str.slice(1), {
-          line: line,
-          column: column,
-          untilBalanced: true
-        }), nested = ref3.tokens, index = ref3.index;
-        index += 1;
-        open = nested[0], close = nested[nested.length - 1];
-        open[0] = open[1] = '(';
-        close[0] = close[1] = ')';
-        close.origin = ['', 'end of interpolation', close[2]];
-        if (((ref4 = nested[1]) != null ? ref4[0] : void 0) === 'TERMINATOR') {
-          nested.splice(1, 1);
-        }
-        tokens.push(['TOKENS', nested]);
-        str = str.slice(index);
-        offsetInChunk += index;
-      }
-      if (str.slice(0, delimiter.length) !== delimiter) {
-        this.error("missing " + delimiter, {
-          length: delimiter.length
-        });
-      }
-      firstToken = tokens[0], lastToken = tokens[tokens.length - 1];
-      firstToken[2].first_column -= delimiter.length;
-      if (lastToken[1].substr(-1) === '\n') {
-        lastToken[2].last_line += 1;
-        lastToken[2].last_column = delimiter.length - 1;
-      } else {
-        lastToken[2].last_column += delimiter.length;
-      }
-      if (lastToken[1].length === 0) {
-        lastToken[2].last_column -= 1;
-      }
-      return {
-        tokens: tokens,
-        index: offsetInChunk + delimiter.length
-      };
-    };
-
-    Lexer.prototype.mergeInterpolationTokens = function(tokens, options, fn) {
-      var converted, firstEmptyStringIndex, firstIndex, i, j, lastToken, len, locationToken, lparen, plusToken, ref2, rparen, tag, token, tokensToPush, value;
-      if (tokens.length > 1) {
-        lparen = this.token('STRING_START', '(', 0, 0);
-      }
-      firstIndex = this.tokens.length;
-      for (i = j = 0, len = tokens.length; j < len; i = ++j) {
-        token = tokens[i];
-        tag = token[0], value = token[1];
-        switch (tag) {
-          case 'TOKENS':
-            if (value.length === 2) {
-              continue;
-            }
-            locationToken = value[0];
-            tokensToPush = value;
-            break;
-          case 'NEOSTRING':
-            converted = fn(token[1], i);
-            if (converted.length === 0) {
-              if (i === 0) {
-                firstEmptyStringIndex = this.tokens.length;
-              } else {
-                continue;
-              }
-            }
-            if (i === 2 && (firstEmptyStringIndex != null)) {
-              this.tokens.splice(firstEmptyStringIndex, 2);
-            }
-            token[0] = 'STRING';
-            token[1] = this.makeDelimitedLiteral(converted, options);
-            locationToken = token;
-            tokensToPush = [token];
-        }
-        if (this.tokens.length > firstIndex) {
-          plusToken = this.token('+', '+');
-          plusToken[2] = {
-            first_line: locationToken[2].first_line,
-            first_column: locationToken[2].first_column,
-            last_line: locationToken[2].first_line,
-            last_column: locationToken[2].first_column
-          };
-        }
-        (ref2 = this.tokens).push.apply(ref2, tokensToPush);
-      }
-      if (lparen) {
-        lastToken = tokens[tokens.length - 1];
-        lparen.origin = [
-          'STRING', null, {
-            first_line: lparen[2].first_line,
-            first_column: lparen[2].first_column,
-            last_line: lastToken[2].last_line,
-            last_column: lastToken[2].last_column
-          }
-        ];
-        rparen = this.token('STRING_END', ')');
-        return rparen[2] = {
-          first_line: lastToken[2].last_line,
-          first_column: lastToken[2].last_column,
-          last_line: lastToken[2].last_line,
-          last_column: lastToken[2].last_column
-        };
-      }
-    };
-
-    Lexer.prototype.pair = function(tag) {
-      var lastIndent, prev, ref2, ref3, wanted;
-      ref2 = this.ends, prev = ref2[ref2.length - 1];
-      if (tag !== (wanted = prev != null ? prev.tag : void 0)) {
-        if ('OUTDENT' !== wanted) {
-          this.error("unmatched " + tag);
-        }
-        ref3 = this.indents, lastIndent = ref3[ref3.length - 1];
-        this.outdentToken(lastIndent, true);
-        return this.pair(tag);
-      }
-      return this.ends.pop();
-    };
-
-    Lexer.prototype.getLineAndColumnFromChunk = function(offset) {
-      var column, lastLine, lineCount, ref2, string;
-      if (offset === 0) {
-        return [this.chunkLine, this.chunkColumn];
-      }
-      if (offset >= this.chunk.length) {
-        string = this.chunk;
-      } else {
-        string = this.chunk.slice(0, +(offset - 1) + 1 || 9e9);
-      }
-      lineCount = count(string, '\n');
-      column = this.chunkColumn;
-      if (lineCount > 0) {
-        ref2 = string.split('\n'), lastLine = ref2[ref2.length - 1];
-        column = lastLine.length;
-      } else {
-        column += string.length;
-      }
-      return [this.chunkLine + lineCount, column];
-    };
-
-    Lexer.prototype.makeToken = function(tag, value, offsetInChunk, length) {
-      var lastCharacter, locationData, ref2, ref3, token;
-      if (offsetInChunk == null) {
-        offsetInChunk = 0;
-      }
-      if (length == null) {
-        length = value.length;
-      }
-      locationData = {};
-      ref2 = this.getLineAndColumnFromChunk(offsetInChunk), locationData.first_line = ref2[0], locationData.first_column = ref2[1];
-      lastCharacter = length > 0 ? length - 1 : 0;
-      ref3 = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter), locationData.last_line = ref3[0], locationData.last_column = ref3[1];
-      token = [tag, value, locationData];
-      return token;
-    };
-
-    Lexer.prototype.token = function(tag, value, offsetInChunk, length, origin) {
-      var token;
-      token = this.makeToken(tag, value, offsetInChunk, length);
-      if (origin) {
-        token.origin = origin;
-      }
-      this.tokens.push(token);
-      return token;
-    };
-
-    Lexer.prototype.tag = function() {
-      var ref2, token;
-      ref2 = this.tokens, token = ref2[ref2.length - 1];
-      return token != null ? token[0] : void 0;
-    };
-
-    Lexer.prototype.value = function() {
-      var ref2, token;
-      ref2 = this.tokens, token = ref2[ref2.length - 1];
-      return token != null ? token[1] : void 0;
-    };
-
-    Lexer.prototype.unfinished = function() {
-      var ref2;
-      return LINE_CONTINUER.test(this.chunk) || ((ref2 = this.tag()) === '\\' || ref2 === '.' || ref2 === '?.' || ref2 === '?::' || ref2 === 'UNARY' || ref2 === 'MATH' || ref2 === 'UNARY_MATH' || ref2 === '+' || ref2 === '-' || ref2 === '**' || ref2 === 'SHIFT' || ref2 === 'RELATION' || ref2 === 'COMPARE' || ref2 === '&' || ref2 === '^' || ref2 === '|' || ref2 === '&&' || ref2 === '||' || ref2 === 'BIN?' || ref2 === 'THROW' || ref2 === 'EXTENDS');
-    };
-
-    Lexer.prototype.formatString = function(str) {
-      return str.replace(STRING_OMIT, '$1');
-    };
-
-    Lexer.prototype.formatHeregex = function(str) {
-      return str.replace(HEREGEX_OMIT, '$1$2');
-    };
-
-    Lexer.prototype.validateEscapes = function(str, options) {
-      var before, hex, invalidEscape, match, message, octal, ref2, unicode;
-      if (options == null) {
-        options = {};
-      }
-      match = INVALID_ESCAPE.exec(str);
-      if (!match) {
-        return;
-      }
-      match[0], before = match[1], octal = match[2], hex = match[3], unicode = match[4];
-      if (options.isRegex && octal && octal.charAt(0) !== '0') {
-        return;
-      }
-      message = octal ? "octal escape sequences are not allowed" : "invalid escape sequence";
-      invalidEscape = "\\" + (octal || hex || unicode);
-      return this.error(message + " " + invalidEscape, {
-        offset: ((ref2 = options.offsetInChunk) != null ? ref2 : 0) + match.index + before.length,
-        length: invalidEscape.length
-      });
-    };
-
-    Lexer.prototype.makeDelimitedLiteral = function(body, options) {
-      var regex;
-      if (options == null) {
-        options = {};
-      }
-      if (body === '' && options.delimiter === '/') {
-        body = '(?:)';
-      }
-      regex = RegExp("(\\\\\\\\)|(\\\\0(?=[1-7]))|\\\\?(" + options.delimiter + ")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)", "g");
-      body = body.replace(regex, function(match, backslash, nul, delimiter, lf, cr, ls, ps, other) {
-        switch (false) {
-          case !backslash:
-            if (options.double) {
-              return backslash + backslash;
-            } else {
-              return backslash;
-            }
-          case !nul:
-            return '\\x00';
-          case !delimiter:
-            return "\\" + delimiter;
-          case !lf:
-            return '\\n';
-          case !cr:
-            return '\\r';
-          case !ls:
-            return '\\u2028';
-          case !ps:
-            return '\\u2029';
-          case !other:
-            if (options.double) {
-              return "\\" + other;
-            } else {
-              return other;
-            }
-        }
-      });
-      return "" + options.delimiter + body + options.delimiter;
-    };
-
-    Lexer.prototype.error = function(message, options) {
-      var first_column, first_line, location, ref2, ref3, ref4;
-      if (options == null) {
-        options = {};
-      }
-      location = 'first_line' in options ? options : ((ref3 = this.getLineAndColumnFromChunk((ref2 = options.offset) != null ? ref2 : 0), first_line = ref3[0], first_column = ref3[1], ref3), {
-        first_line: first_line,
-        first_column: first_column,
-        last_column: first_column + ((ref4 = options.length) != null ? ref4 : 1) - 1
-      });
-      return throwSyntaxError(message, location);
-    };
-
-    return Lexer;
-
-  })();
-
-  isUnassignable = function(name, displayName) {
-    if (displayName == null) {
-      displayName = name;
-    }
-    switch (false) {
-      case indexOf.call(slice.call(JS_KEYWORDS).concat(slice.call(COFFEE_KEYWORDS)), name) < 0:
-        return "keyword '" + displayName + "' can't be assigned";
-      case indexOf.call(STRICT_PROSCRIBED, name) < 0:
-        return "'" + displayName + "' can't be assigned";
-      case indexOf.call(RESERVED, name) < 0:
-        return "reserved word '" + displayName + "' can't be assigned";
-      default:
-        return false;
-    }
-  };
-
-  exports.isUnassignable = isUnassignable;
-
-  isForFrom = function(prev) {
-    var ref2;
-    if (prev[0] === 'IDENTIFIER') {
-      if (prev[1] === 'from') {
-        prev[1][0] = 'IDENTIFIER';
-        true;
-      }
-      return true;
-    } else if (prev[0] === 'FOR') {
-      return false;
-    } else if ((ref2 = prev[1]) === '{' || ref2 === '[' || ref2 === ',' || ref2 === ':') {
-      return false;
-    } else {
-      return true;
-    }
-  };
-
-  JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'yield', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super', 'import', 'export', 'default'];
-
-  COFFEE_KEYWORDS = ['undefined', 'Infinity', 'NaN', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];
-
-  COFFEE_ALIAS_MAP = {
-    and: '&&',
-    or: '||',
-    is: '==',
-    isnt: '!=',
-    not: '!',
-    yes: 'true',
-    no: 'false',
-    on: 'true',
-    off: 'false'
-  };
-
-  COFFEE_ALIASES = (function() {
-    var results;
-    results = [];
-    for (key in COFFEE_ALIAS_MAP) {
-      results.push(key);
-    }
-    return results;
-  })();
-
-  COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
-
-  RESERVED = ['case', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'native', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static'];
-
-  STRICT_PROSCRIBED = ['arguments', 'eval'];
-
-  exports.JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);
-
-  BOM = 65279;
-
-  IDENTIFIER = /^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/;
-
-  NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;
-
-  OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/;
-
-  WHITESPACE = /^[^\n\S]+/;
-
-  COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/;
-
-  CODE = /^[-=]>/;
-
-  MULTI_DENT = /^(?:\n[^\n\S]*)+/;
-
-  JSTOKEN = /^`(?!``)((?:[^`\\]|\\[\s\S])*)`/;
-
-  HERE_JSTOKEN = /^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/;
-
-  STRING_START = /^(?:'''|"""|'|")/;
-
-  STRING_SINGLE = /^(?:[^\\']|\\[\s\S])*/;
-
-  STRING_DOUBLE = /^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/;
-
-  HEREDOC_SINGLE = /^(?:[^\\']|\\[\s\S]|'(?!''))*/;
-
-  HEREDOC_DOUBLE = /^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/;
-
-  STRING_OMIT = /((?:\\\\)+)|\\[^\S\n]*\n\s*/g;
-
-  SIMPLE_STRING_OMIT = /\s*\n\s*/g;
-
-  HEREDOC_INDENT = /\n+([^\n\S]*)(?=\S)/g;
-
-  REGEX = /^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/;
-
-  REGEX_FLAGS = /^\w*/;
-
-  VALID_FLAGS = /^(?!.*(.).*\1)[imgy]*$/;
-
-  HEREGEX = /^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/;
-
-  HEREGEX_OMIT = /((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g;
-
-  REGEX_ILLEGAL = /^(\/|\/{3}\s*)(\*)/;
-
-  POSSIBLY_DIVISION = /^\/=?\s/;
-
-  HERECOMMENT_ILLEGAL = /\*\//;
-
-  LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/;
-
-  INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/;
-
-  LEADING_BLANK_LINE = /^[^\n\S]*\n/;
-
-  TRAILING_BLANK_LINE = /\n[^\n\S]*$/;
-
-  TRAILING_SPACES = /\s+$/;
-
-  COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '**=', '//=', '%%='];
-
-  UNARY = ['NEW', 'TYPEOF', 'DELETE', 'DO'];
-
-  UNARY_MATH = ['!', '~'];
-
-  SHIFT = ['<<', '>>', '>>>'];
-
-  COMPARE = ['==', '!=', '<', '>', '<=', '>='];
-
-  MATH = ['*', '/', '%', '//', '%%'];
-
-  RELATION = ['IN', 'OF', 'INSTANCEOF'];
-
-  BOOL = ['TRUE', 'FALSE'];
-
-  CALLABLE = ['IDENTIFIER', 'PROPERTY', ')', ']', '?', '@', 'THIS', 'SUPER'];
-
-  INDEXABLE = CALLABLE.concat(['NUMBER', 'INFINITY', 'NAN', 'STRING', 'STRING_END', 'REGEX', 'REGEX_END', 'BOOL', 'NULL', 'UNDEFINED', '}', '::']);
-
-  NOT_REGEX = INDEXABLE.concat(['++', '--']);
-
-  LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
-
-  INDENTABLE_CLOSERS = [')', '}', ']'];
-
-}).call(this);
-
-  return module.exports;
-})();require['./parser'] = (function() {
-  var exports = {}, module = {exports: exports};
-  /* parser generated by jison 0.4.17 */
-/*
-  Returns a Parser object of the following structure:
-
-  Parser: {
-    yy: {}
-  }
-
-  Parser.prototype: {
-    yy: {},
-    trace: function(),
-    symbols_: {associative list: name ==> number},
-    terminals_: {associative list: number ==> name},
-    productions_: [...],
-    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
-    table: [...],
-    defaultActions: {...},
-    parseError: function(str, hash),
-    parse: function(input),
-
-    lexer: {
-        EOF: 1,
-        parseError: function(str, hash),
-        setInput: function(input),
-        input: function(),
-        unput: function(str),
-        more: function(),
-        less: function(n),
-        pastInput: function(),
-        upcomingInput: function(),
-        showPosition: function(),
-        test_match: function(regex_match_array, rule_index),
-        next: function(),
-        lex: function(),
-        begin: function(condition),
-        popState: function(),
-        _currentRules: function(),
-        topState: function(),
-        pushState: function(condition),
-
-        options: {
-            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
-            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
-            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
-        },
-
-        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
-        rules: [...],
-        conditions: {associative list: name ==> set},
-    }
-  }
-
-
-  token location info (@$, _$, etc.): {
-    first_line: n,
-    last_line: n,
-    first_column: n,
-    last_column: n,
-    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
-  }
-
-
-  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
-    text:        (matched text)
-    token:       (the produced terminal token, if any)
-    line:        (yylineno)
-  }
-  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
-    loc:         (yylloc)
-    expected:    (string describing the set of expected tokens)
-    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
-  }
-*/
-var parser = (function(){
-var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,22],$V1=[1,25],$V2=[1,83],$V3=[1,79],$V4=[1,84],$V5=[1,85],$V6=[1,81],$V7=[1,82],$V8=[1,56],$V9=[1,58],$Va=[1,59],$Vb=[1,60],$Vc=[1,61],$Vd=[1,62],$Ve=[1,49],$Vf=[1,50],$Vg=[1,32],$Vh=[1,68],$Vi=[1,69],$Vj=[1,78],$Vk=[1,47],$Vl=[1,51],$Vm=[1,52],$Vn=[1,67],$Vo=[1,65],$Vp=[1,66],$Vq=[1,64],$Vr=[1,42],$Vs=[1,48],$Vt=[1,63],$Vu=[1,73],$Vv=[1,74],$Vw=[1,75],$Vx=[1,76],$Vy=[1,46],$Vz=[1,72],$VA=[1,34],$VB=[1,35],$VC=[1,36],$VD=[1,37],$VE=[1,38],$VF=[1,39],$VG=[1,86],$VH=[1,6,32,42,131],$VI=[1,101],$VJ=[1,89],$VK=[1,88],$VL=[1,87],$VM=[1,90],$VN=[1,91],$VO=[1,92],$VP=[1,93],$VQ=[1,94],$VR=[1,95],$VS=[1,96],$VT=[1,97],$VU=[1,98],$VV=[1,99],$VW=[1,100],$VX=[1,104],$VY=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$VZ=[2,165],$V_=[1,110],$V$=[1,111],$V01=[1,112],$V11=[1,113],$V21=[1,115],$V31=[1,116],$V41=[1,109],$V51=[1,6,32,42,131,133,135,139,156],$V61=[2,27],$V71=[1,123],$V81=[1,121],$V91=[1,6,31,32,40,41,42,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Va1=[2,94],$Vb1=[1,6,31,32,42,46,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vc1=[2,73],$Vd1=[1,128],$Ve1=[1,133],$Vf1=[1,134],$Vg1=[1,136],$Vh1=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vi1=[2,91],$Vj1=[1,6,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vk1=[2,63],$Vl1=[1,166],$Vm1=[1,178],$Vn1=[1,180],$Vo1=[1,175],$Vp1=[1,182],$Vq1=[1,184],$Vr1=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],$Vs1=[2,110],$Vt1=[1,6,31,32,40,41,42,58,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vu1=[1,6,31,32,40,41,42,46,58,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vv1=[40,41,114],$Vw1=[1,241],$Vx1=[1,240],$Vy1=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156],$Vz1=[2,71],$VA1=[1,250],$VB1=[6,31,32,65,70],$VC1=[6,31,32,55,65,70,73],$VD1=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,164,166,167,168,169,170,171,172,173,174],$VE1=[40,41,82,83,84,85,87,90,113,114],$VF1=[1,269],$VG1=[2,62],$VH1=[1,279],$VI1=[1,281],$VJ1=[1,286],$VK1=[1,288],$VL1=[2,186],$VM1=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$VN1=[1,297],$VO1=[6,31,32,70,115,120],$VP1=[1,6,31,32,40,41,42,55,58,65,70,73,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],$VQ1=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,140,156],$VR1=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,134,140,156],$VS1=[146,147,148],$VT1=[70,146,147,148],$VU1=[6,31,94],$VV1=[1,311],$VW1=[6,31,32,70,94],$VX1=[6,31,32,58,70,94],$VY1=[6,31,32,55,58,70,94],$VZ1=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,166,167,168,169,170,171,172,173,174],$V_1=[12,28,34,38,40,41,44,45,48,49,50,51,52,53,61,62,63,67,68,89,92,95,97,105,112,117,118,119,125,129,130,133,135,137,139,149,155,157,158,159,160,161,162],$V$1=[2,175],$V02=[6,31,32],$V12=[2,72],$V22=[1,323],$V32=[1,324],$V42=[1,6,31,32,42,65,70,73,89,94,115,120,122,127,128,131,133,134,135,139,140,151,153,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$V52=[32,151,153],$V62=[1,6,32,42,65,70,73,89,94,115,120,122,131,134,140,156],$V72=[1,350],$V82=[1,356],$V92=[1,6,32,42,131,156],$Va2=[2,86],$Vb2=[1,366],$Vc2=[1,367],$Vd2=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,151,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Ve2=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,135,139,140,156],$Vf2=[1,380],$Vg2=[1,381],$Vh2=[6,31,32,94],$Vi2=[6,31,32,70],$Vj2=[1,6,31,32,42,65,70,73,89,94,115,120,122,127,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$Vk2=[31,70],$Vl2=[1,407],$Vm2=[1,408],$Vn2=[1,414],$Vo2=[1,415];
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"Statement":8,"YieldReturn":9,"Return":10,"Comment":11,"STATEMENT":12,"Import":13,"Export":14,"Value":15,"Invocation":16,"Code":17,"Operation":18,"Assign":19,"If":20,"Try":21,"While":22,"For":23,"Switch":24,"Class":25,"Throw":26,"Yield":27,"YIELD":28,"FROM":29,"Block":30,"INDENT":31,"OUTDENT":32,"Identifier":33,"IDENTIFIER":34,"Property":35,"PROPERTY":36,"AlphaNumeric":37,"NUMBER":38,"String":39,"STRING":40,"STRING_START":41,"STRING_END":42,"Regex":43,"REGEX":44,"REGEX_START":45,"REGEX_END":46,"Literal":47,"JS":48,"UNDEFINED":49,"NULL":50,"BOOL":51,"INFINITY":52,"NAN":53,"Assignable":54,"=":55,"AssignObj":56,"ObjAssignable":57,":":58,"SimpleObjAssignable":59,"ThisProperty":60,"RETURN":61,"HERECOMMENT":62,"PARAM_START":63,"ParamList":64,"PARAM_END":65,"FuncGlyph":66,"->":67,"=>":68,"OptComma":69,",":70,"Param":71,"ParamVar":72,"...":73,"Array":74,"Object":75,"Splat":76,"SimpleAssignable":77,"Accessor":78,"Parenthetical":79,"Range":80,"This":81,".":82,"?.":83,"::":84,"?::":85,"Index":86,"INDEX_START":87,"IndexValue":88,"INDEX_END":89,"INDEX_SOAK":90,"Slice":91,"{":92,"AssignList":93,"}":94,"CLASS":95,"EXTENDS":96,"IMPORT":97,"ImportDefaultSpecifier":98,"ImportNamespaceSpecifier":99,"ImportSpecifierList":100,"ImportSpecifier":101,"AS":102,"DEFAULT":103,"IMPORT_ALL":104,"EXPORT":105,"ExportSpecifierList":106,"EXPORT_ALL":107,"ExportSpecifier":108,"OptFuncExist":109,"Arguments":110,"Super":111,"SUPER":112,"FUNC_EXIST":113,"CALL_START":114,"CALL_END":115,"ArgList":116,"THIS":117,"@":118,"[":119,"]":120,"RangeDots":121,"..":122,"Arg":123,"SimpleArgs":124,"TRY":125,"Catch":126,"FINALLY":127,"CATCH":128,"THROW":129,"(":130,")":131,"WhileSource":132,"WHILE":133,"WHEN":134,"UNTIL":135,"Loop":136,"LOOP":137,"ForBody":138,"FOR":139,"BY":140,"ForStart":141,"ForSource":142,"ForVariables":143,"OWN":144,"ForValue":145,"FORIN":146,"FOROF":147,"FORFROM":148,"SWITCH":149,"Whens":150,"ELSE":151,"When":152,"LEADING_WHEN":153,"IfBlock":154,"IF":155,"POST_IF":156,"UNARY":157,"UNARY_MATH":158,"-":159,"+":160,"--":161,"++":162,"?":163,"MATH":164,"**":165,"SHIFT":166,"COMPARE":167,"&":168,"^":169,"|":170,"&&":171,"||":172,"BIN?":173,"RELATION":174,"COMPOUND_ASSIGN":175,"$accept":0,"$end":1},
-terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",28:"YIELD",29:"FROM",31:"INDENT",32:"OUTDENT",34:"IDENTIFIER",36:"PROPERTY",38:"NUMBER",40:"STRING",41:"STRING_START",42:"STRING_END",44:"REGEX",45:"REGEX_START",46:"REGEX_END",48:"JS",49:"UNDEFINED",50:"NULL",51:"BOOL",52:"INFINITY",53:"NAN",55:"=",58:":",61:"RETURN",62:"HERECOMMENT",63:"PARAM_START",65:"PARAM_END",67:"->",68:"=>",70:",",73:"...",82:".",83:"?.",84:"::",85:"?::",87:"INDEX_START",89:"INDEX_END",90:"INDEX_SOAK",92:"{",94:"}",95:"CLASS",96:"EXTENDS",97:"IMPORT",102:"AS",103:"DEFAULT",104:"IMPORT_ALL",105:"EXPORT",107:"EXPORT_ALL",112:"SUPER",113:"FUNC_EXIST",114:"CALL_START",115:"CALL_END",117:"THIS",118:"@",119:"[",120:"]",122:"..",125:"TRY",127:"FINALLY",128:"CATCH",129:"THROW",130:"(",131:")",133:"WHILE",134:"WHEN",135:"UNTIL",137:"LOOP",139:"FOR",140:"BY",144:"OWN",146:"FORIN",147:"FOROF",148:"FORFROM",149:"SWITCH",151:"ELSE",153:"LEADING_WHEN",155:"IF",156:"POST_IF",157:"UNARY",158:"UNARY_MATH",159:"-",160:"+",161:"--",162:"++",163:"?",164:"MATH",165:"**",166:"SHIFT",167:"COMPARE",168:"&",169:"^",170:"|",171:"&&",172:"||",173:"BIN?",174:"RELATION",175:"COMPOUND_ASSIGN"},
-productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[8,1],[8,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[27,1],[27,2],[27,3],[30,2],[30,3],[33,1],[35,1],[37,1],[37,1],[39,1],[39,3],[43,1],[43,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[19,3],[19,4],[19,5],[56,1],[56,3],[56,5],[56,3],[56,5],[56,1],[59,1],[59,1],[59,1],[57,1],[57,1],[10,2],[10,1],[9,3],[9,2],[11,1],[17,5],[17,2],[66,1],[66,1],[69,0],[69,1],[64,0],[64,1],[64,3],[64,4],[64,6],[71,1],[71,2],[71,3],[71,1],[72,1],[72,1],[72,1],[72,1],[76,2],[77,1],[77,2],[77,2],[77,1],[54,1],[54,1],[54,1],[15,1],[15,1],[15,1],[15,1],[15,1],[78,2],[78,2],[78,2],[78,2],[78,1],[78,1],[86,3],[86,2],[88,1],[88,1],[75,4],[93,0],[93,1],[93,3],[93,4],[93,6],[25,1],[25,2],[25,3],[25,4],[25,2],[25,3],[25,4],[25,5],[13,2],[13,4],[13,4],[13,5],[13,7],[13,6],[13,9],[100,1],[100,3],[100,4],[100,4],[100,6],[101,1],[101,3],[101,1],[101,3],[98,1],[99,3],[14,3],[14,5],[14,2],[14,4],[14,5],[14,6],[14,3],[14,4],[14,7],[106,1],[106,3],[106,4],[106,4],[106,6],[108,1],[108,3],[108,3],[108,1],[16,3],[16,3],[16,3],[16,1],[111,1],[111,2],[109,0],[109,1],[110,2],[110,4],[81,1],[81,1],[60,2],[74,2],[74,4],[121,1],[121,1],[80,5],[91,3],[91,2],[91,2],[91,1],[116,1],[116,3],[116,4],[116,4],[116,6],[123,1],[123,1],[123,1],[124,1],[124,3],[21,2],[21,3],[21,4],[21,5],[126,3],[126,3],[126,2],[26,2],[79,3],[79,5],[132,2],[132,4],[132,2],[132,4],[22,2],[22,2],[22,2],[22,1],[136,2],[136,2],[23,2],[23,2],[23,2],[138,2],[138,4],[138,2],[141,2],[141,3],[145,1],[145,1],[145,1],[145,1],[143,1],[143,3],[142,2],[142,2],[142,4],[142,4],[142,4],[142,6],[142,6],[142,2],[142,4],[24,5],[24,7],[24,4],[24,6],[150,1],[150,2],[152,3],[152,4],[154,3],[154,5],[20,1],[20,3],[20,3],[20,3],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,5],[18,4],[18,3]],
-performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
-/* this == yyval */
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1:
-return this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Block);
-break;
-case 2:
-return this.$ = $$[$0];
-break;
-case 3:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(yy.Block.wrap([$$[$0]]));
-break;
-case 4:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].push($$[$0]));
-break;
-case 5:
-this.$ = $$[$0-1];
-break;
-case 6: case 7: case 8: case 9: case 10: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 35: case 40: case 42: case 56: case 57: case 58: case 59: case 60: case 61: case 71: case 72: case 82: case 83: case 84: case 85: case 90: case 91: case 94: case 98: case 104: case 162: case 186: case 187: case 189: case 219: case 220: case 238: case 244:
-this.$ = $$[$0];
-break;
-case 11:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.StatementLiteral($$[$0]));
-break;
-case 27:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Op($$[$0], new yy.Value(new yy.Literal(''))));
-break;
-case 28: case 248: case 249:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0]));
-break;
-case 29:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-2].concat($$[$0-1]), $$[$0]));
-break;
-case 30:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Block);
-break;
-case 31: case 105:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]);
-break;
-case 32:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.IdentifierLiteral($$[$0]));
-break;
-case 33:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.PropertyName($$[$0]));
-break;
-case 34:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NumberLiteral($$[$0]));
-break;
-case 36:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.StringLiteral($$[$0]));
-break;
-case 37:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.StringWithInterpolations($$[$0-1]));
-break;
-case 38:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.RegexLiteral($$[$0]));
-break;
-case 39:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.RegexWithInterpolations($$[$0-1].args));
-break;
-case 41:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.PassthroughLiteral($$[$0]));
-break;
-case 43:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.UndefinedLiteral);
-break;
-case 44:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NullLiteral);
-break;
-case 45:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.BooleanLiteral($$[$0]));
-break;
-case 46:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.InfinityLiteral($$[$0]));
-break;
-case 47:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NaNLiteral);
-break;
-case 48:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0]));
-break;
-case 49:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0]));
-break;
-case 50:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1]));
-break;
-case 51: case 87: case 92: case 93: case 95: case 96: case 97: case 221: case 222:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));
-break;
-case 52:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', {
-          operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1]))
-        }));
-break;
-case 53:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', {
-          operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3]))
-        }));
-break;
-case 54:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, {
-          operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1]))
-        }));
-break;
-case 55:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, {
-          operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3]))
-        }));
-break;
-case 62:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Return($$[$0]));
-break;
-case 63:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Return);
-break;
-case 64:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.YieldReturn($$[$0]));
-break;
-case 65:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.YieldReturn);
-break;
-case 66:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Comment($$[$0]));
-break;
-case 67:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1]));
-break;
-case 68:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1]));
-break;
-case 69:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('func');
-break;
-case 70:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('boundfunc');
-break;
-case 73: case 110:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]);
-break;
-case 74: case 111: case 130: case 150: case 181: case 223:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);
-break;
-case 75: case 112: case 131: case 151: case 182:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0]));
-break;
-case 76: case 113: case 132: case 152: case 183:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0]));
-break;
-case 77: case 114: case 134: case 154: case 185:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2]));
-break;
-case 78:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Param($$[$0]));
-break;
-case 79:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true));
-break;
-case 80:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0]));
-break;
-case 81: case 188:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Expansion);
-break;
-case 86:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Splat($$[$0-1]));
-break;
-case 88:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].add($$[$0]));
-break;
-case 89:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0])));
-break;
-case 99:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0]));
-break;
-case 100:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak'));
-break;
-case 101:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.PropertyName('prototype'))), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);
-break;
-case 102:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.PropertyName('prototype'), 'soak')), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);
-break;
-case 103:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Access(new yy.PropertyName('prototype')));
-break;
-case 106:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(yy.extend($$[$0], {
-          soak: true
-        }));
-break;
-case 107:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Index($$[$0]));
-break;
-case 108:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Slice($$[$0]));
-break;
-case 109:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated));
-break;
-case 115:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Class);
-break;
-case 116:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0]));
-break;
-case 117:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class(null, $$[$0]));
-break;
-case 118:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0]));
-break;
-case 119:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class($$[$0]));
-break;
-case 120:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0]));
-break;
-case 121:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0]));
-break;
-case 122:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0]));
-break;
-case 123:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.ImportDeclaration(null, $$[$0]));
-break;
-case 124:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2], null), $$[$0]));
-break;
-case 125:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, $$[$0-2]), $$[$0]));
-break;
-case 126:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList([])), $$[$0]));
-break;
-case 127:
-this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList($$[$0-4])), $$[$0]));
-break;
-case 128:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4], $$[$0-2]), $$[$0]));
-break;
-case 129:
-this.$ = yy.addLocationDataFn(_$[$0-8], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7], new yy.ImportSpecifierList($$[$0-4])), $$[$0]));
-break;
-case 133: case 153: case 168: case 184:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]);
-break;
-case 135:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportSpecifier($$[$0]));
-break;
-case 136:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], $$[$0]));
-break;
-case 137:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0])));
-break;
-case 138:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0-2]), $$[$0]));
-break;
-case 139:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportDefaultSpecifier($$[$0]));
-break;
-case 140:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]), $$[$0]));
-break;
-case 141:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([])));
-break;
-case 142:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2])));
-break;
-case 143:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.ExportNamedDeclaration($$[$0]));
-break;
-case 144:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-2], $$[$0], null, {
-          moduleDeclaration: 'export'
-        })));
-break;
-case 145:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-3], $$[$0], null, {
-          moduleDeclaration: 'export'
-        })));
-break;
-case 146:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-4], $$[$0-1], null, {
-          moduleDeclaration: 'export'
-        })));
-break;
-case 147:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportDefaultDeclaration($$[$0]));
-break;
-case 148:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]), $$[$0]));
-break;
-case 149:
-this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]), $$[$0]));
-break;
-case 155:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ExportSpecifier($$[$0]));
-break;
-case 156:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], $$[$0]));
-break;
-case 157:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], new yy.Literal($$[$0])));
-break;
-case 158:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0])));
-break;
-case 159:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.TaggedTemplateCall($$[$0-2], $$[$0], $$[$0-1]));
-break;
-case 160: case 161:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1]));
-break;
-case 163:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.SuperCall);
-break;
-case 164:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.SuperCall($$[$0]));
-break;
-case 165:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(false);
-break;
-case 166:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(true);
-break;
-case 167:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([]);
-break;
-case 169: case 170:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.ThisLiteral));
-break;
-case 171:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value(yy.addLocationDataFn(_$[$0-1])(new yy.ThisLiteral), [yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))], 'this'));
-break;
-case 172:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Arr([]));
-break;
-case 173:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Arr($$[$0-2]));
-break;
-case 174:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('inclusive');
-break;
-case 175:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('exclusive');
-break;
-case 176:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]));
-break;
-case 177:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1]));
-break;
-case 178:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0]));
-break;
-case 179:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1]));
-break;
-case 180:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Range(null, null, $$[$0]));
-break;
-case 190:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0]));
-break;
-case 191:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Try($$[$0]));
-break;
-case 192:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]));
-break;
-case 193:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0]));
-break;
-case 194:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]));
-break;
-case 195:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-1], $$[$0]]);
-break;
-case 196:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]);
-break;
-case 197:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([null, $$[$0]]);
-break;
-case 198:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Throw($$[$0]));
-break;
-case 199:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Parens($$[$0-1]));
-break;
-case 200:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Parens($$[$0-2]));
-break;
-case 201:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0]));
-break;
-case 202:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {
-          guard: $$[$0]
-        }));
-break;
-case 203:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0], {
-          invert: true
-        }));
-break;
-case 204:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {
-          invert: true,
-          guard: $$[$0]
-        }));
-break;
-case 205:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].addBody($$[$0]));
-break;
-case 206: case 207:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]]))));
-break;
-case 208:
-this.$ = yy.addLocationDataFn(_$[$0], _$[$0])($$[$0]);
-break;
-case 209:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.BooleanLiteral('true'))).addBody($$[$0]));
-break;
-case 210:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.BooleanLiteral('true'))).addBody(yy.addLocationDataFn(_$[$0])(yy.Block.wrap([$$[$0]]))));
-break;
-case 211: case 212:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0]));
-break;
-case 213:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1]));
-break;
-case 214:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
-          source: yy.addLocationDataFn(_$[$0])(new yy.Value($$[$0]))
-        });
-break;
-case 215:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
-          source: yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])),
-          step: $$[$0]
-        });
-break;
-case 216:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () {
-        $$[$0].own = $$[$0-1].own;
-        $$[$0].ownTag = $$[$0-1].ownTag;
-        $$[$0].name = $$[$0-1][0];
-        $$[$0].index = $$[$0-1][1];
-        return $$[$0];
-      }()));
-break;
-case 217:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0]);
-break;
-case 218:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {
-        $$[$0].own = true;
-        $$[$0].ownTag = yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1]));
-        return $$[$0];
-      }()));
-break;
-case 224:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-2], $$[$0]]);
-break;
-case 225:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
-          source: $$[$0]
-        });
-break;
-case 226:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
-          source: $$[$0],
-          object: true
-        });
-break;
-case 227:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
-          source: $$[$0-2],
-          guard: $$[$0]
-        });
-break;
-case 228:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
-          source: $$[$0-2],
-          guard: $$[$0],
-          object: true
-        });
-break;
-case 229:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
-          source: $$[$0-2],
-          step: $$[$0]
-        });
-break;
-case 230:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({
-          source: $$[$0-4],
-          guard: $$[$0-2],
-          step: $$[$0]
-        });
-break;
-case 231:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({
-          source: $$[$0-4],
-          step: $$[$0-2],
-          guard: $$[$0]
-        });
-break;
-case 232:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({
-          source: $$[$0],
-          from: true
-        });
-break;
-case 233:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({
-          source: $$[$0-2],
-          guard: $$[$0],
-          from: true
-        });
-break;
-case 234:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1]));
-break;
-case 235:
-this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]));
-break;
-case 236:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1]));
-break;
-case 237:
-this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1]));
-break;
-case 239:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].concat($$[$0]));
-break;
-case 240:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]);
-break;
-case 241:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]);
-break;
-case 242:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {
-          type: $$[$0-2]
-        }));
-break;
-case 243:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])($$[$0-4].addElse(yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {
-          type: $$[$0-2]
-        }))));
-break;
-case 245:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].addElse($$[$0]));
-break;
-case 246: case 247:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), {
-          type: $$[$0-1],
-          statement: true
-        }));
-break;
-case 250:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('-', $$[$0]));
-break;
-case 251:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('+', $$[$0]));
-break;
-case 252:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0]));
-break;
-case 253:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0]));
-break;
-case 254:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true));
-break;
-case 255:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true));
-break;
-case 256:
-this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Existence($$[$0-1]));
-break;
-case 257:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0]));
-break;
-case 258:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0]));
-break;
-case 259: case 260: case 261: case 262: case 263: case 264: case 265: case 266: case 267: case 268:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));
-break;
-case 269:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {
-        if ($$[$0-1].charAt(0) === '!') {
-          return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();
-        } else {
-          return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);
-        }
-      }()));
-break;
-case 270:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1]));
-break;
-case 271:
-this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]));
-break;
-case 272:
-this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2]));
-break;
-case 273:
-this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Extends($$[$0-2], $$[$0]));
-break;
-}
-},
-table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{1:[3]},{1:[2,2],6:$VG},o($VH,[2,3]),o($VH,[2,6],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VH,[2,7],{141:77,132:105,138:106,133:$Vu,135:$Vv,139:$Vx,156:$VX}),o($VH,[2,8]),o($VY,[2,14],{109:107,78:108,86:114,40:$VZ,41:$VZ,114:$VZ,82:$V_,83:$V$,84:$V01,85:$V11,87:$V21,90:$V31,113:$V41}),o($VY,[2,15],{86:114,109:117,78:118,82:$V_,83:$V$,84:$V01,85:$V11,87:$V21,90:$V31,113:$V41,114:$VZ}),o($VY,[2,16]),o($VY,[2,17]),o($VY,[2,18]),o($VY,[2,19]),o($VY,[2,20]),o($VY,[2,21]),o($VY,[2,22]),o($VY,[2,23]),o($VY,[2,24]),o($VY,[2,25]),o($VY,[2,26]),o($V51,[2,9]),o($V51,[2,10]),o($V51,[2,11]),o($V51,[2,12]),o($V51,[2,13]),o([1,6,32,42,131,133,135,139,156,163,164,165,166,167,168,169,170,171,172,173,174],$V61,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,8:122,12:$V0,28:$V71,29:$V81,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:[1,119],62:$Vf,63:$Vg,67:$Vh,68:$Vi,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,137:$Vw,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),o($V91,$Va1,{55:[1,124]}),o($V91,[2,95]),o($V91,[2,96]),o($V91,[2,97]),o($V91,[2,98]),o($Vb1,[2,162]),o([6,31,65,70],$Vc1,{64:125,71:126,72:127,33:129,60:130,74:131,75:132,34:$V2,73:$Vd1,92:$Vj,118:$Ve1,119:$Vf1}),{30:135,31:$Vg1},{7:137,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:138,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:139,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:140,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{15:142,16:143,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:144,60:71,74:53,75:54,77:141,79:28,80:29,81:30,92:$Vj,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,130:$Vt},{15:142,16:143,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:144,60:71,74:53,75:54,77:145,79:28,80:29,81:30,92:$Vj,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,130:$Vt},o($Vh1,$Vi1,{96:[1,149],161:[1,146],162:[1,147],175:[1,148]}),o($VY,[2,244],{151:[1,150]}),{30:151,31:$Vg1},{30:152,31:$Vg1},o($VY,[2,208]),{30:153,31:$Vg1},{7:154,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,155],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($Vj1,[2,115],{47:27,79:28,80:29,81:30,111:31,74:53,75:54,37:55,43:57,33:70,60:71,39:80,15:142,16:143,54:144,30:156,77:158,31:$Vg1,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,92:$Vj,96:[1,157],112:$Vn,117:$Vo,118:$Vp,119:$Vq,130:$Vt}),{7:159,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V51,$Vk1,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,7:160,12:$V0,28:$V71,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:$Ve,62:$Vf,63:$Vg,67:$Vh,68:$Vi,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,137:$Vw,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),o([1,6,31,32,42,70,94,131,133,135,139,156],[2,66]),{33:165,34:$V2,39:161,40:$V4,41:$V5,92:[1,164],98:162,99:163,104:$Vl1},{25:168,33:169,34:$V2,92:[1,167],95:$Vk,103:[1,170],107:[1,171]},o($Vh1,[2,92]),o($Vh1,[2,93]),o($V91,[2,40]),o($V91,[2,41]),o($V91,[2,42]),o($V91,[2,43]),o($V91,[2,44]),o($V91,[2,45]),o($V91,[2,46]),o($V91,[2,47]),{4:172,5:3,7:4,8:5,9:6,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V1,31:[1,173],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:174,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:$Vm1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,116:176,117:$Vo,118:$Vp,119:$Vq,120:$Vo1,123:177,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V91,[2,169]),o($V91,[2,170],{35:181,36:$Vp1}),o([1,6,31,32,42,46,65,70,73,82,83,84,85,87,89,90,94,113,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,163],{110:183,114:$Vq1}),{31:[2,69]},{31:[2,70]},o($Vr1,[2,87]),o($Vr1,[2,90]),{7:185,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:186,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:187,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:189,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,30:188,31:$Vg1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{33:194,34:$V2,60:195,74:196,75:197,80:190,92:$Vj,118:$Ve1,119:$Vq,143:191,144:[1,192],145:193},{142:198,146:[1,199],147:[1,200],148:[1,201]},o([6,31,70,94],$Vs1,{39:80,93:202,56:203,57:204,59:205,11:206,37:207,33:208,35:209,60:210,34:$V2,36:$Vp1,38:$V3,40:$V4,41:$V5,62:$Vf,118:$Ve1}),o($Vt1,[2,34]),o($Vt1,[2,35]),o($V91,[2,38]),{15:142,16:211,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:144,60:71,74:53,75:54,77:212,79:28,80:29,81:30,92:$Vj,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,130:$Vt},o([1,6,29,31,32,40,41,42,55,58,65,70,73,82,83,84,85,87,89,90,94,96,102,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],[2,32]),o($Vu1,[2,36]),{4:213,5:3,7:4,8:5,9:6,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VH,[2,5],{7:4,8:5,9:6,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,5:214,12:$V0,28:$V1,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:$Ve,62:$Vf,63:$Vg,67:$Vh,68:$Vi,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,133:$Vu,135:$Vv,137:$Vw,139:$Vx,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),o($VY,[2,256]),{7:215,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:216,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:217,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:218,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:219,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:220,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:221,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:222,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:223,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:224,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:225,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:226,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:227,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:228,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VY,[2,207]),o($VY,[2,212]),{7:229,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VY,[2,206]),o($VY,[2,211]),{39:230,40:$V4,41:$V5,110:231,114:$Vq1},o($Vr1,[2,88]),o($Vv1,[2,166]),{35:232,36:$Vp1},{35:233,36:$Vp1},o($Vr1,[2,103],{35:234,36:$Vp1}),{35:235,36:$Vp1},o($Vr1,[2,104]),{7:237,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vw1,74:53,75:54,77:40,79:28,80:29,81:30,88:236,91:238,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,121:239,122:$Vx1,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{86:242,87:$V21,90:$V31},{110:243,114:$Vq1},o($Vr1,[2,89]),o($VH,[2,65],{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,7:244,12:$V0,28:$V71,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:$Ve,62:$Vf,63:$Vg,67:$Vh,68:$Vi,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,133:$Vk1,135:$Vk1,139:$Vk1,156:$Vk1,137:$Vw,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),o($Vy1,[2,28],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:245,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{132:105,133:$Vu,135:$Vv,138:106,139:$Vx,141:77,156:$VX},o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,163,164,165,166,167,168,169,170,171,172,173,174],$V61,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,8:122,12:$V0,28:$V71,29:$V81,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:$Ve,62:$Vf,63:$Vg,67:$Vh,68:$Vi,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,137:$Vw,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),{6:[1,247],7:246,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,248],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o([6,31],$Vz1,{69:251,65:[1,249],70:$VA1}),o($VB1,[2,74]),o($VB1,[2,78],{55:[1,253],73:[1,252]}),o($VB1,[2,81]),o($VC1,[2,82]),o($VC1,[2,83]),o($VC1,[2,84]),o($VC1,[2,85]),{35:181,36:$Vp1},{7:254,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:$Vm1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,116:176,117:$Vo,118:$Vp,119:$Vq,120:$Vo1,123:177,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VY,[2,68]),{4:256,5:3,7:4,8:5,9:6,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V1,32:[1,255],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,164,165,166,167,168,169,170,171,172,173,174],[2,248],{141:77,132:102,138:103,163:$VL}),o($VD1,[2,249],{141:77,132:102,138:103,163:$VL,165:$VN}),o($VD1,[2,250],{141:77,132:102,138:103,163:$VL,165:$VN}),o($VD1,[2,251],{141:77,132:102,138:103,163:$VL,165:$VN}),o($VY,[2,252],{40:$Vi1,41:$Vi1,82:$Vi1,83:$Vi1,84:$Vi1,85:$Vi1,87:$Vi1,90:$Vi1,113:$Vi1,114:$Vi1}),o($Vv1,$VZ,{109:107,78:108,86:114,82:$V_,83:$V$,84:$V01,85:$V11,87:$V21,90:$V31,113:$V41}),{78:118,82:$V_,83:$V$,84:$V01,85:$V11,86:114,87:$V21,90:$V31,109:117,113:$V41,114:$VZ},o($VE1,$Va1),o($VY,[2,253],{40:$Vi1,41:$Vi1,82:$Vi1,83:$Vi1,84:$Vi1,85:$Vi1,87:$Vi1,90:$Vi1,113:$Vi1,114:$Vi1}),o($VY,[2,254]),o($VY,[2,255]),{6:[1,259],7:257,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,258],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:260,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{30:261,31:$Vg1,155:[1,262]},o($VY,[2,191],{126:263,127:[1,264],128:[1,265]}),o($VY,[2,205]),o($VY,[2,213]),{31:[1,266],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{150:267,152:268,153:$VF1},o($VY,[2,116]),{7:270,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($Vj1,[2,119],{30:271,31:$Vg1,40:$Vi1,41:$Vi1,82:$Vi1,83:$Vi1,84:$Vi1,85:$Vi1,87:$Vi1,90:$Vi1,113:$Vi1,114:$Vi1,96:[1,272]}),o($Vy1,[2,198],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($V51,$VG1,{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($V51,[2,123]),{29:[1,273],70:[1,274]},{29:[1,275]},{31:$VH1,33:280,34:$V2,94:[1,276],100:277,101:278,103:$VI1},o([29,70],[2,139]),{102:[1,282]},{31:$VJ1,33:287,34:$V2,94:[1,283],103:$VK1,106:284,108:285},o($V51,[2,143]),{55:[1,289]},{7:290,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{29:[1,291]},{6:$VG,131:[1,292]},{4:293,5:3,7:4,8:5,9:6,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o([6,31,70,120],$VL1,{141:77,132:102,138:103,121:294,73:[1,295],122:$Vx1,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VM1,[2,172]),o([6,31,120],$Vz1,{69:296,70:$VN1}),o($VO1,[2,181]),{7:254,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:$Vm1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,116:298,117:$Vo,118:$Vp,119:$Vq,123:177,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VO1,[2,187]),o($VO1,[2,188]),o($VP1,[2,171]),o($VP1,[2,33]),o($Vb1,[2,164]),{7:254,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:$Vm1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,115:[1,299],116:300,117:$Vo,118:$Vp,119:$Vq,123:177,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{30:301,31:$Vg1,132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($VQ1,[2,201],{141:77,132:102,138:103,133:$Vu,134:[1,302],135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VQ1,[2,203],{141:77,132:102,138:103,133:$Vu,134:[1,303],135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VY,[2,209]),o($VR1,[2,210],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,214],{140:[1,304]}),o($VS1,[2,217]),{33:194,34:$V2,60:195,74:196,75:197,92:$Vj,118:$Ve1,119:$Vf1,143:305,145:193},o($VS1,[2,223],{70:[1,306]}),o($VT1,[2,219]),o($VT1,[2,220]),o($VT1,[2,221]),o($VT1,[2,222]),o($VY,[2,216]),{7:307,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:308,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:309,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VU1,$Vz1,{69:310,70:$VV1}),o($VW1,[2,111]),o($VW1,[2,51],{58:[1,312]}),o($VX1,[2,60],{55:[1,313]}),o($VW1,[2,56]),o($VX1,[2,61]),o($VY1,[2,57]),o($VY1,[2,58]),o($VY1,[2,59]),{46:[1,314],78:118,82:$V_,83:$V$,84:$V01,85:$V11,86:114,87:$V21,90:$V31,109:117,113:$V41,114:$VZ},o($VE1,$Vi1),{6:$VG,42:[1,315]},o($VH,[2,4]),o($VZ1,[2,257],{141:77,132:102,138:103,163:$VL,164:$VM,165:$VN}),o($VZ1,[2,258],{141:77,132:102,138:103,163:$VL,164:$VM,165:$VN}),o($VD1,[2,259],{141:77,132:102,138:103,163:$VL,165:$VN}),o($VD1,[2,260],{141:77,132:102,138:103,163:$VL,165:$VN}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,166,167,168,169,170,171,172,173,174],[2,261],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173],[2,262],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,168,169,170,171,172,173],[2,263],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,169,170,171,172,173],[2,264],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,170,171,172,173],[2,265],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,171,172,173],[2,266],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,172,173],[2,267],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,173],[2,268],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,174:$VW}),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173,174],[2,269],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO}),o($VR1,[2,247],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VR1,[2,246],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vb1,[2,159]),o($Vb1,[2,160]),o($Vr1,[2,99]),o($Vr1,[2,100]),o($Vr1,[2,101]),o($Vr1,[2,102]),{89:[1,316]},{73:$Vw1,89:[2,107],121:317,122:$Vx1,132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{89:[2,108]},{7:318,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,89:[2,180],92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V_1,[2,174]),o($V_1,$V$1),o($Vr1,[2,106]),o($Vb1,[2,161]),o($VH,[2,64],{141:77,132:102,138:103,133:$VG1,135:$VG1,139:$VG1,156:$VG1,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vy1,[2,29],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vy1,[2,48],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:319,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:320,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{66:321,67:$Vh,68:$Vi},o($V02,$V12,{72:127,33:129,60:130,74:131,75:132,71:322,34:$V2,73:$Vd1,92:$Vj,118:$Ve1,119:$Vf1}),{6:$V22,31:$V32},o($VB1,[2,79]),{7:325,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VO1,$VL1,{141:77,132:102,138:103,73:[1,326],133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($V42,[2,30]),{6:$VG,32:[1,327]},o($Vy1,[2,270],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:328,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:329,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($Vy1,[2,273],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VY,[2,245]),{7:330,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VY,[2,192],{127:[1,331]}),{30:332,31:$Vg1},{30:335,31:$Vg1,33:333,34:$V2,75:334,92:$Vj},{150:336,152:268,153:$VF1},{32:[1,337],151:[1,338],152:339,153:$VF1},o($V52,[2,238]),{7:341,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,124:340,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V62,[2,117],{141:77,132:102,138:103,30:342,31:$Vg1,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VY,[2,120]),{7:343,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{39:344,40:$V4,41:$V5},{92:[1,346],99:345,104:$Vl1},{39:347,40:$V4,41:$V5},{29:[1,348]},o($VU1,$Vz1,{69:349,70:$V72}),o($VW1,[2,130]),{31:$VH1,33:280,34:$V2,100:351,101:278,103:$VI1},o($VW1,[2,135],{102:[1,352]}),o($VW1,[2,137],{102:[1,353]}),{33:354,34:$V2},o($V51,[2,141]),o($VU1,$Vz1,{69:355,70:$V82}),o($VW1,[2,150]),{31:$VJ1,33:287,34:$V2,103:$VK1,106:357,108:285},o($VW1,[2,155],{102:[1,358]}),o($VW1,[2,158]),{6:[1,360],7:359,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,361],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V92,[2,147],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{39:362,40:$V4,41:$V5},o($V91,[2,199]),{6:$VG,32:[1,363]},{7:364,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o([12,28,34,38,40,41,44,45,48,49,50,51,52,53,61,62,63,67,68,92,95,97,105,112,117,118,119,125,129,130,133,135,137,139,149,155,157,158,159,160,161,162],$V$1,{6:$Va2,31:$Va2,70:$Va2,120:$Va2}),{6:$Vb2,31:$Vc2,120:[1,365]},o([6,31,32,115,120],$V12,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,76:179,7:254,123:368,12:$V0,28:$V71,34:$V2,38:$V3,40:$V4,41:$V5,44:$V6,45:$V7,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,61:$Ve,62:$Vf,63:$Vg,67:$Vh,68:$Vi,73:$Vn1,92:$Vj,95:$Vk,97:$Vl,105:$Vm,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,133:$Vu,135:$Vv,137:$Vw,139:$Vx,149:$Vy,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF}),o($V02,$Vz1,{69:369,70:$VN1}),o($Vb1,[2,167]),o([6,31,115],$Vz1,{69:370,70:$VN1}),o($Vd2,[2,242]),{7:371,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:372,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:373,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VS1,[2,218]),{33:194,34:$V2,60:195,74:196,75:197,92:$Vj,118:$Ve1,119:$Vf1,145:374},o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,135,139,156],[2,225],{141:77,132:102,138:103,134:[1,375],140:[1,376],159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Ve2,[2,226],{141:77,132:102,138:103,134:[1,377],159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Ve2,[2,232],{141:77,132:102,138:103,134:[1,378],159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{6:$Vf2,31:$Vg2,94:[1,379]},o($Vh2,$V12,{39:80,57:204,59:205,11:206,37:207,33:208,35:209,60:210,56:382,34:$V2,36:$Vp1,38:$V3,40:$V4,41:$V5,62:$Vf,118:$Ve1}),{7:383,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,384],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:385,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:[1,386],33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V91,[2,39]),o($Vu1,[2,37]),o($Vr1,[2,105]),{7:387,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,89:[2,178],92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{89:[2,179],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($Vy1,[2,49],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{32:[1,388],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{30:389,31:$Vg1},o($VB1,[2,75]),{33:129,34:$V2,60:130,71:390,72:127,73:$Vd1,74:131,75:132,92:$Vj,118:$Ve1,119:$Vf1},o($Vi2,$Vc1,{71:126,72:127,33:129,60:130,74:131,75:132,64:391,34:$V2,73:$Vd1,92:$Vj,118:$Ve1,119:$Vf1}),o($VB1,[2,80],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VO1,$Va2),o($V42,[2,31]),{32:[1,392],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($Vy1,[2,272],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{30:393,31:$Vg1,132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{30:394,31:$Vg1},o($VY,[2,193]),{30:395,31:$Vg1},{30:396,31:$Vg1},o($Vj2,[2,197]),{32:[1,397],151:[1,398],152:339,153:$VF1},o($VY,[2,236]),{30:399,31:$Vg1},o($V52,[2,239]),{30:400,31:$Vg1,70:[1,401]},o($Vk2,[2,189],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VY,[2,118]),o($V62,[2,121],{141:77,132:102,138:103,30:402,31:$Vg1,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($V51,[2,124]),{29:[1,403]},{31:$VH1,33:280,34:$V2,100:404,101:278,103:$VI1},o($V51,[2,125]),{39:405,40:$V4,41:$V5},{6:$Vl2,31:$Vm2,94:[1,406]},o($Vh2,$V12,{33:280,101:409,34:$V2,103:$VI1}),o($V02,$Vz1,{69:410,70:$V72}),{33:411,34:$V2},{33:412,34:$V2},{29:[2,140]},{6:$Vn2,31:$Vo2,94:[1,413]},o($Vh2,$V12,{33:287,108:416,34:$V2,103:$VK1}),o($V02,$Vz1,{69:417,70:$V82}),{33:418,34:$V2,103:[1,419]},o($V92,[2,144],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:420,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:421,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($V51,[2,148]),{131:[1,422]},{120:[1,423],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($VM1,[2,173]),{7:254,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,123:424,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:254,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,31:$Vm1,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,73:$Vn1,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,116:425,117:$Vo,118:$Vp,119:$Vq,123:177,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VO1,[2,182]),{6:$Vb2,31:$Vc2,32:[1,426]},{6:$Vb2,31:$Vc2,115:[1,427]},o($VR1,[2,202],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VR1,[2,204],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VR1,[2,215],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VS1,[2,224]),{7:428,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:429,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:430,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:431,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VM1,[2,109]),{11:206,33:208,34:$V2,35:209,36:$Vp1,37:207,38:$V3,39:80,40:$V4,41:$V5,56:432,57:204,59:205,60:210,62:$Vf,118:$Ve1},o($Vi2,$Vs1,{39:80,56:203,57:204,59:205,11:206,37:207,33:208,35:209,60:210,93:433,34:$V2,36:$Vp1,38:$V3,40:$V4,41:$V5,62:$Vf,118:$Ve1}),o($VW1,[2,112]),o($VW1,[2,52],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:434,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VW1,[2,54],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{7:435,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{89:[2,177],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($VY,[2,50]),o($VY,[2,67]),o($VB1,[2,76]),o($V02,$Vz1,{69:436,70:$VA1}),o($VY,[2,271]),o($Vd2,[2,243]),o($VY,[2,194]),o($Vj2,[2,195]),o($Vj2,[2,196]),o($VY,[2,234]),{30:437,31:$Vg1},{32:[1,438]},o($V52,[2,240],{6:[1,439]}),{7:440,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},o($VY,[2,122]),{39:441,40:$V4,41:$V5},o($VU1,$Vz1,{69:442,70:$V72}),o($V51,[2,126]),{29:[1,443]},{33:280,34:$V2,101:444,103:$VI1},{31:$VH1,33:280,34:$V2,100:445,101:278,103:$VI1},o($VW1,[2,131]),{6:$Vl2,31:$Vm2,32:[1,446]},o($VW1,[2,136]),o($VW1,[2,138]),o($V51,[2,142],{29:[1,447]}),{33:287,34:$V2,103:$VK1,108:448},{31:$VJ1,33:287,34:$V2,103:$VK1,106:449,108:285},o($VW1,[2,151]),{6:$Vn2,31:$Vo2,32:[1,450]},o($VW1,[2,156]),o($VW1,[2,157]),o($V92,[2,145],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),{32:[1,451],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},o($V91,[2,200]),o($V91,[2,176]),o($VO1,[2,183]),o($V02,$Vz1,{69:452,70:$VN1}),o($VO1,[2,184]),o($Vb1,[2,168]),o([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,156],[2,227],{141:77,132:102,138:103,140:[1,453],159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Ve2,[2,229],{141:77,132:102,138:103,134:[1,454],159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vy1,[2,228],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vy1,[2,233],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VW1,[2,113]),o($V02,$Vz1,{69:455,70:$VV1}),{32:[1,456],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{32:[1,457],132:102,133:$Vu,135:$Vv,138:103,139:$Vx,141:77,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW},{6:$V22,31:$V32,32:[1,458]},{32:[1,459]},o($VY,[2,237]),o($V52,[2,241]),o($Vk2,[2,190],{141:77,132:102,138:103,133:$Vu,135:$Vv,139:$Vx,156:$VI,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($V51,[2,128]),{6:$Vl2,31:$Vm2,94:[1,460]},{39:461,40:$V4,41:$V5},o($VW1,[2,132]),o($V02,$Vz1,{69:462,70:$V72}),o($VW1,[2,133]),{39:463,40:$V4,41:$V5},o($VW1,[2,152]),o($V02,$Vz1,{69:464,70:$V82}),o($VW1,[2,153]),o($V51,[2,146]),{6:$Vb2,31:$Vc2,32:[1,465]},{7:466,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{7:467,8:122,10:20,11:21,12:$V0,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:$V71,33:70,34:$V2,37:55,38:$V3,39:80,40:$V4,41:$V5,43:57,44:$V6,45:$V7,47:27,48:$V8,49:$V9,50:$Va,51:$Vb,52:$Vc,53:$Vd,54:26,60:71,61:$Ve,62:$Vf,63:$Vg,66:33,67:$Vh,68:$Vi,74:53,75:54,77:40,79:28,80:29,81:30,92:$Vj,95:$Vk,97:$Vl,105:$Vm,111:31,112:$Vn,117:$Vo,118:$Vp,119:$Vq,125:$Vr,129:$Vs,130:$Vt,132:43,133:$Vu,135:$Vv,136:44,137:$Vw,138:45,139:$Vx,141:77,149:$Vy,154:41,155:$Vz,157:$VA,158:$VB,159:$VC,160:$VD,161:$VE,162:$VF},{6:$Vf2,31:$Vg2,32:[1,468]},o($VW1,[2,53]),o($VW1,[2,55]),o($VB1,[2,77]),o($VY,[2,235]),{29:[1,469]},o($V51,[2,127]),{6:$Vl2,31:$Vm2,32:[1,470]},o($V51,[2,149]),{6:$Vn2,31:$Vo2,32:[1,471]},o($VO1,[2,185]),o($Vy1,[2,230],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($Vy1,[2,231],{141:77,132:102,138:103,159:$VJ,160:$VK,163:$VL,164:$VM,165:$VN,166:$VO,167:$VP,168:$VQ,169:$VR,170:$VS,171:$VT,172:$VU,173:$VV,174:$VW}),o($VW1,[2,114]),{39:472,40:$V4,41:$V5},o($VW1,[2,134]),o($VW1,[2,154]),o($V51,[2,129])],
-defaultActions: {68:[2,69],69:[2,70],238:[2,108],354:[2,140]},
-parseError: function parseError(str, hash) {
-    if (hash.recoverable) {
-        this.trace(str);
-    } else {
-        function _parseError (msg, hash) {
-            this.message = msg;
-            this.hash = hash;
-        }
-        _parseError.prototype = Error;
-
-        throw new _parseError(str, hash);
-    }
-},
-parse: function parse(input) {
-    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
-    var args = lstack.slice.call(arguments, 1);
-    var lexer = Object.create(this.lexer);
-    var sharedState = { yy: {} };
-    for (var k in this.yy) {
-        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
-            sharedState.yy[k] = this.yy[k];
-        }
-    }
-    lexer.setInput(input, sharedState.yy);
-    sharedState.yy.lexer = lexer;
-    sharedState.yy.parser = this;
-    if (typeof lexer.yylloc == 'undefined') {
-        lexer.yylloc = {};
-    }
-    var yyloc = lexer.yylloc;
-    lstack.push(yyloc);
-    var ranges = lexer.options && lexer.options.ranges;
-    if (typeof sharedState.yy.parseError === 'function') {
-        this.parseError = sharedState.yy.parseError;
-    } else {
-        this.parseError = Object.getPrototypeOf(this).parseError;
-    }
-    function popStack(n) {
-        stack.length = stack.length - 2 * n;
-        vstack.length = vstack.length - n;
-        lstack.length = lstack.length - n;
-    }
-    _token_stack:
-        var lex = function () {
-            var token;
-            token = lexer.lex() || EOF;
-            if (typeof token !== 'number') {
-                token = self.symbols_[token] || token;
-            }
-            return token;
-        };
-    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
-    while (true) {
-        state = stack[stack.length - 1];
-        if (this.defaultActions[state]) {
-            action = this.defaultActions[state];
-        } else {
-            if (symbol === null || typeof symbol == 'undefined') {
-                symbol = lex();
-            }
-            action = table[state] && table[state][symbol];
-        }
-                    if (typeof action === 'undefined' || !action.length || !action[0]) {
-                var errStr = '';
-                expected = [];
-                for (p in table[state]) {
-                    if (this.terminals_[p] && p > TERROR) {
-                        expected.push('\'' + this.terminals_[p] + '\'');
-                    }
-                }
-                if (lexer.showPosition) {
-                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
-                } else {
-                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
-                }
-                this.parseError(errStr, {
-                    text: lexer.match,
-                    token: this.terminals_[symbol] || symbol,
-                    line: lexer.yylineno,
-                    loc: yyloc,
-                    expected: expected
-                });
-            }
-        if (action[0] instanceof Array && action.length > 1) {
-            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
-        }
-        switch (action[0]) {
-        case 1:
-            stack.push(symbol);
-            vstack.push(lexer.yytext);
-            lstack.push(lexer.yylloc);
-            stack.push(action[1]);
-            symbol = null;
-            if (!preErrorSymbol) {
-                yyleng = lexer.yyleng;
-                yytext = lexer.yytext;
-                yylineno = lexer.yylineno;
-                yyloc = lexer.yylloc;
-                if (recovering > 0) {
-                    recovering--;
-                }
-            } else {
-                symbol = preErrorSymbol;
-                preErrorSymbol = null;
-            }
-            break;
-        case 2:
-            len = this.productions_[action[1]][1];
-            yyval.$ = vstack[vstack.length - len];
-            yyval._$ = {
-                first_line: lstack[lstack.length - (len || 1)].first_line,
-                last_line: lstack[lstack.length - 1].last_line,
-                first_column: lstack[lstack.length - (len || 1)].first_column,
-                last_column: lstack[lstack.length - 1].last_column
-            };
-            if (ranges) {
-                yyval._$.range = [
-                    lstack[lstack.length - (len || 1)].range[0],
-                    lstack[lstack.length - 1].range[1]
-                ];
-            }
-            r = this.performAction.apply(yyval, [
-                yytext,
-                yyleng,
-                yylineno,
-                sharedState.yy,
-                action[1],
-                vstack,
-                lstack
-            ].concat(args));
-            if (typeof r !== 'undefined') {
-                return r;
-            }
-            if (len) {
-                stack = stack.slice(0, -1 * len * 2);
-                vstack = vstack.slice(0, -1 * len);
-                lstack = lstack.slice(0, -1 * len);
-            }
-            stack.push(this.productions_[action[1]][0]);
-            vstack.push(yyval.$);
-            lstack.push(yyval._$);
-            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
-            stack.push(newState);
-            break;
-        case 3:
-            return true;
-        }
-    }
-    return true;
-}};
-
-function Parser () {
-  this.yy = {};
-}
-Parser.prototype = parser;parser.Parser = Parser;
-return new Parser;
-})();
-
-
-if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
-exports.parser = parser;
-exports.Parser = parser.Parser;
-exports.parse = function () { return parser.parse.apply(parser, arguments); };
-exports.main = function commonjsMain(args) {
-    if (!args[1]) {
-        console.log('Usage: '+args[0]+' FILE');
-        process.exit(1);
-    }
-    var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
-    return exports.parser.parse(source);
-};
-if (typeof module !== 'undefined' && require.main === module) {
-  exports.main(process.argv.slice(1));
-}
-}
-  return module.exports;
-})();require['./scope'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var Scope,
-    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; };
-
-  exports.Scope = Scope = (function() {
-    function Scope(parent, expressions, method, referencedVars) {
-      var ref, ref1;
-      this.parent = parent;
-      this.expressions = expressions;
-      this.method = method;
-      this.referencedVars = referencedVars;
-      this.variables = [
-        {
-          name: 'arguments',
-          type: 'arguments'
-        }
-      ];
-      this.positions = {};
-      if (!this.parent) {
-        this.utilities = {};
-      }
-      this.root = (ref = (ref1 = this.parent) != null ? ref1.root : void 0) != null ? ref : this;
-    }
-
-    Scope.prototype.add = function(name, type, immediate) {
-      if (this.shared && !immediate) {
-        return this.parent.add(name, type, immediate);
-      }
-      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
-        return this.variables[this.positions[name]].type = type;
-      } else {
-        return this.positions[name] = this.variables.push({
-          name: name,
-          type: type
-        }) - 1;
-      }
-    };
-
-    Scope.prototype.namedMethod = function() {
-      var ref;
-      if (((ref = this.method) != null ? ref.name : void 0) || !this.parent) {
-        return this.method;
-      }
-      return this.parent.namedMethod();
-    };
-
-    Scope.prototype.find = function(name) {
-      if (this.check(name)) {
-        return true;
-      }
-      this.add(name, 'var');
-      return false;
-    };
-
-    Scope.prototype.parameter = function(name) {
-      if (this.shared && this.parent.check(name, true)) {
-        return;
-      }
-      return this.add(name, 'param');
-    };
-
-    Scope.prototype.check = function(name) {
-      var ref;
-      return !!(this.type(name) || ((ref = this.parent) != null ? ref.check(name) : void 0));
-    };
-
-    Scope.prototype.temporary = function(name, index, single) {
-      var diff, endCode, letter, newCode, num, startCode;
-      if (single == null) {
-        single = false;
-      }
-      if (single) {
-        startCode = name.charCodeAt(0);
-        endCode = 'z'.charCodeAt(0);
-        diff = endCode - startCode;
-        newCode = startCode + index % (diff + 1);
-        letter = String.fromCharCode(newCode);
-        num = Math.floor(index / (diff + 1));
-        return "" + letter + (num || '');
-      } else {
-        return "" + name + (index || '');
-      }
-    };
-
-    Scope.prototype.type = function(name) {
-      var i, len, ref, v;
-      ref = this.variables;
-      for (i = 0, len = ref.length; i < len; i++) {
-        v = ref[i];
-        if (v.name === name) {
-          return v.type;
-        }
-      }
-      return null;
-    };
-
-    Scope.prototype.freeVariable = function(name, options) {
-      var index, ref, temp;
-      if (options == null) {
-        options = {};
-      }
-      index = 0;
-      while (true) {
-        temp = this.temporary(name, index, options.single);
-        if (!(this.check(temp) || indexOf.call(this.root.referencedVars, temp) >= 0)) {
-          break;
-        }
-        index++;
-      }
-      if ((ref = options.reserve) != null ? ref : true) {
-        this.add(temp, 'var', true);
-      }
-      return temp;
-    };
-
-    Scope.prototype.assign = function(name, value) {
-      this.add(name, {
-        value: value,
-        assigned: true
-      }, true);
-      return this.hasAssignments = true;
-    };
-
-    Scope.prototype.hasDeclarations = function() {
-      return !!this.declaredVariables().length;
-    };
-
-    Scope.prototype.declaredVariables = function() {
-      var v;
-      return ((function() {
-        var i, len, ref, results;
-        ref = this.variables;
-        results = [];
-        for (i = 0, len = ref.length; i < len; i++) {
-          v = ref[i];
-          if (v.type === 'var') {
-            results.push(v.name);
-          }
-        }
-        return results;
-      }).call(this)).sort();
-    };
-
-    Scope.prototype.assignedVariables = function() {
-      var i, len, ref, results, v;
-      ref = this.variables;
-      results = [];
-      for (i = 0, len = ref.length; i < len; i++) {
-        v = ref[i];
-        if (v.type.assigned) {
-          results.push(v.name + " = " + v.type.value);
-        }
-      }
-      return results;
-    };
-
-    return Scope;
-
-  })();
-
-}).call(this);
-
-  return module.exports;
-})();require['./nodes'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var Access, Arr, Assign, Base, Block, BooleanLiteral, Call, Class, Code, CodeFragment, Comment, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isComplexOrAssignable, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, ref1, ref2, some, starts, throwSyntaxError, unfoldSoak, utility,
-    extend1 = 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; },
-    hasProp = {}.hasOwnProperty,
-    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; },
-    slice = [].slice;
-
-  Error.stackTraceLimit = 2e308;
-
-  Scope = require('./scope').Scope;
-
-  ref1 = require('./lexer'), isUnassignable = ref1.isUnassignable, JS_FORBIDDEN = ref1.JS_FORBIDDEN;
-
-  ref2 = require('./helpers'), compact = ref2.compact, flatten = ref2.flatten, extend = ref2.extend, merge = ref2.merge, del = ref2.del, starts = ref2.starts, ends = ref2.ends, some = ref2.some, addLocationDataFn = ref2.addLocationDataFn, locationDataToString = ref2.locationDataToString, throwSyntaxError = ref2.throwSyntaxError;
-
-  exports.extend = extend;
-
-  exports.addLocationDataFn = addLocationDataFn;
-
-  YES = function() {
-    return true;
-  };
-
-  NO = function() {
-    return false;
-  };
-
-  THIS = function() {
-    return this;
-  };
-
-  NEGATE = function() {
-    this.negated = !this.negated;
-    return this;
-  };
-
-  exports.CodeFragment = CodeFragment = (function() {
-    function CodeFragment(parent, code) {
-      var ref3;
-      this.code = "" + code;
-      this.locationData = parent != null ? parent.locationData : void 0;
-      this.type = (parent != null ? (ref3 = parent.constructor) != null ? ref3.name : void 0 : void 0) || 'unknown';
-    }
-
-    CodeFragment.prototype.toString = function() {
-      return "" + this.code + (this.locationData ? ": " + locationDataToString(this.locationData) : '');
-    };
-
-    return CodeFragment;
-
-  })();
-
-  fragmentsToText = function(fragments) {
-    var fragment;
-    return ((function() {
-      var j, len1, results;
-      results = [];
-      for (j = 0, len1 = fragments.length; j < len1; j++) {
-        fragment = fragments[j];
-        results.push(fragment.code);
-      }
-      return results;
-    })()).join('');
-  };
-
-  exports.Base = Base = (function() {
-    function Base() {}
-
-    Base.prototype.compile = function(o, lvl) {
-      return fragmentsToText(this.compileToFragments(o, lvl));
-    };
-
-    Base.prototype.compileToFragments = function(o, lvl) {
-      var node;
-      o = extend({}, o);
-      if (lvl) {
-        o.level = lvl;
-      }
-      node = this.unfoldSoak(o) || this;
-      node.tab = o.indent;
-      if (o.level === LEVEL_TOP || !node.isStatement(o)) {
-        return node.compileNode(o);
-      } else {
-        return node.compileClosure(o);
-      }
-    };
-
-    Base.prototype.compileClosure = function(o) {
-      var args, argumentsNode, func, jumpNode, meth, parts, ref3;
-      if (jumpNode = this.jumps()) {
-        jumpNode.error('cannot use a pure statement in an expression');
-      }
-      o.sharedScope = true;
-      func = new Code([], Block.wrap([this]));
-      args = [];
-      if ((argumentsNode = this.contains(isLiteralArguments)) || this.contains(isLiteralThis)) {
-        args = [new ThisLiteral];
-        if (argumentsNode) {
-          meth = 'apply';
-          args.push(new IdentifierLiteral('arguments'));
-        } else {
-          meth = 'call';
-        }
-        func = new Value(func, [new Access(new PropertyName(meth))]);
-      }
-      parts = (new Call(func, args)).compileNode(o);
-      if (func.isGenerator || ((ref3 = func.base) != null ? ref3.isGenerator : void 0)) {
-        parts.unshift(this.makeCode("(yield* "));
-        parts.push(this.makeCode(")"));
-      }
-      return parts;
-    };
-
-    Base.prototype.cache = function(o, level, isComplex) {
-      var complex, ref, sub;
-      complex = isComplex != null ? isComplex(this) : this.isComplex();
-      if (complex) {
-        ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
-        sub = new Assign(ref, this);
-        if (level) {
-          return [sub.compileToFragments(o, level), [this.makeCode(ref.value)]];
-        } else {
-          return [sub, ref];
-        }
-      } else {
-        ref = level ? this.compileToFragments(o, level) : this;
-        return [ref, ref];
-      }
-    };
-
-    Base.prototype.cacheToCodeFragments = function(cacheValues) {
-      return [fragmentsToText(cacheValues[0]), fragmentsToText(cacheValues[1])];
-    };
-
-    Base.prototype.makeReturn = function(res) {
-      var me;
-      me = this.unwrapAll();
-      if (res) {
-        return new Call(new Literal(res + ".push"), [me]);
-      } else {
-        return new Return(me);
-      }
-    };
-
-    Base.prototype.contains = function(pred) {
-      var node;
-      node = void 0;
-      this.traverseChildren(false, function(n) {
-        if (pred(n)) {
-          node = n;
-          return false;
-        }
-      });
-      return node;
-    };
-
-    Base.prototype.lastNonComment = function(list) {
-      var i;
-      i = list.length;
-      while (i--) {
-        if (!(list[i] instanceof Comment)) {
-          return list[i];
-        }
-      }
-      return null;
-    };
-
-    Base.prototype.toString = function(idt, name) {
-      var tree;
-      if (idt == null) {
-        idt = '';
-      }
-      if (name == null) {
-        name = this.constructor.name;
-      }
-      tree = '\n' + idt + name;
-      if (this.soak) {
-        tree += '?';
-      }
-      this.eachChild(function(node) {
-        return tree += node.toString(idt + TAB);
-      });
-      return tree;
-    };
-
-    Base.prototype.eachChild = function(func) {
-      var attr, child, j, k, len1, len2, ref3, ref4;
-      if (!this.children) {
-        return this;
-      }
-      ref3 = this.children;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        attr = ref3[j];
-        if (this[attr]) {
-          ref4 = flatten([this[attr]]);
-          for (k = 0, len2 = ref4.length; k < len2; k++) {
-            child = ref4[k];
-            if (func(child) === false) {
-              return this;
-            }
-          }
-        }
-      }
-      return this;
-    };
-
-    Base.prototype.traverseChildren = function(crossScope, func) {
-      return this.eachChild(function(child) {
-        var recur;
-        recur = func(child);
-        if (recur !== false) {
-          return child.traverseChildren(crossScope, func);
-        }
-      });
-    };
-
-    Base.prototype.invert = function() {
-      return new Op('!', this);
-    };
-
-    Base.prototype.unwrapAll = function() {
-      var node;
-      node = this;
-      while (node !== (node = node.unwrap())) {
-        continue;
-      }
-      return node;
-    };
-
-    Base.prototype.children = [];
-
-    Base.prototype.isStatement = NO;
-
-    Base.prototype.jumps = NO;
-
-    Base.prototype.isComplex = YES;
-
-    Base.prototype.isChainable = NO;
-
-    Base.prototype.isAssignable = NO;
-
-    Base.prototype.isNumber = NO;
-
-    Base.prototype.unwrap = THIS;
-
-    Base.prototype.unfoldSoak = NO;
-
-    Base.prototype.assigns = NO;
-
-    Base.prototype.updateLocationDataIfMissing = function(locationData) {
-      if (this.locationData) {
-        return this;
-      }
-      this.locationData = locationData;
-      return this.eachChild(function(child) {
-        return child.updateLocationDataIfMissing(locationData);
-      });
-    };
-
-    Base.prototype.error = function(message) {
-      return throwSyntaxError(message, this.locationData);
-    };
-
-    Base.prototype.makeCode = function(code) {
-      return new CodeFragment(this, code);
-    };
-
-    Base.prototype.wrapInBraces = function(fragments) {
-      return [].concat(this.makeCode('('), fragments, this.makeCode(')'));
-    };
-
-    Base.prototype.joinFragmentArrays = function(fragmentsList, joinStr) {
-      var answer, fragments, i, j, len1;
-      answer = [];
-      for (i = j = 0, len1 = fragmentsList.length; j < len1; i = ++j) {
-        fragments = fragmentsList[i];
-        if (i) {
-          answer.push(this.makeCode(joinStr));
-        }
-        answer = answer.concat(fragments);
-      }
-      return answer;
-    };
-
-    return Base;
-
-  })();
-
-  exports.Block = Block = (function(superClass1) {
-    extend1(Block, superClass1);
-
-    function Block(nodes) {
-      this.expressions = compact(flatten(nodes || []));
-    }
-
-    Block.prototype.children = ['expressions'];
-
-    Block.prototype.push = function(node) {
-      this.expressions.push(node);
-      return this;
-    };
-
-    Block.prototype.pop = function() {
-      return this.expressions.pop();
-    };
-
-    Block.prototype.unshift = function(node) {
-      this.expressions.unshift(node);
-      return this;
-    };
-
-    Block.prototype.unwrap = function() {
-      if (this.expressions.length === 1) {
-        return this.expressions[0];
-      } else {
-        return this;
-      }
-    };
-
-    Block.prototype.isEmpty = function() {
-      return !this.expressions.length;
-    };
-
-    Block.prototype.isStatement = function(o) {
-      var exp, j, len1, ref3;
-      ref3 = this.expressions;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        exp = ref3[j];
-        if (exp.isStatement(o)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    Block.prototype.jumps = function(o) {
-      var exp, j, jumpNode, len1, ref3;
-      ref3 = this.expressions;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        exp = ref3[j];
-        if (jumpNode = exp.jumps(o)) {
-          return jumpNode;
-        }
-      }
-    };
-
-    Block.prototype.makeReturn = function(res) {
-      var expr, len;
-      len = this.expressions.length;
-      while (len--) {
-        expr = this.expressions[len];
-        if (!(expr instanceof Comment)) {
-          this.expressions[len] = expr.makeReturn(res);
-          if (expr instanceof Return && !expr.expression) {
-            this.expressions.splice(len, 1);
-          }
-          break;
-        }
-      }
-      return this;
-    };
-
-    Block.prototype.compileToFragments = function(o, level) {
-      if (o == null) {
-        o = {};
-      }
-      if (o.scope) {
-        return Block.__super__.compileToFragments.call(this, o, level);
-      } else {
-        return this.compileRoot(o);
-      }
-    };
-
-    Block.prototype.compileNode = function(o) {
-      var answer, compiledNodes, fragments, index, j, len1, node, ref3, top;
-      this.tab = o.indent;
-      top = o.level === LEVEL_TOP;
-      compiledNodes = [];
-      ref3 = this.expressions;
-      for (index = j = 0, len1 = ref3.length; j < len1; index = ++j) {
-        node = ref3[index];
-        node = node.unwrapAll();
-        node = node.unfoldSoak(o) || node;
-        if (node instanceof Block) {
-          compiledNodes.push(node.compileNode(o));
-        } else if (top) {
-          node.front = true;
-          fragments = node.compileToFragments(o);
-          if (!node.isStatement(o)) {
-            fragments.unshift(this.makeCode("" + this.tab));
-            fragments.push(this.makeCode(";"));
-          }
-          compiledNodes.push(fragments);
-        } else {
-          compiledNodes.push(node.compileToFragments(o, LEVEL_LIST));
-        }
-      }
-      if (top) {
-        if (this.spaced) {
-          return [].concat(this.joinFragmentArrays(compiledNodes, '\n\n'), this.makeCode("\n"));
-        } else {
-          return this.joinFragmentArrays(compiledNodes, '\n');
-        }
-      }
-      if (compiledNodes.length) {
-        answer = this.joinFragmentArrays(compiledNodes, ', ');
-      } else {
-        answer = [this.makeCode("void 0")];
-      }
-      if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) {
-        return this.wrapInBraces(answer);
-      } else {
-        return answer;
-      }
-    };
-
-    Block.prototype.compileRoot = function(o) {
-      var exp, fragments, i, j, len1, name, prelude, preludeExps, ref3, ref4, rest;
-      o.indent = o.bare ? '' : TAB;
-      o.level = LEVEL_TOP;
-      this.spaced = true;
-      o.scope = new Scope(null, this, null, (ref3 = o.referencedVars) != null ? ref3 : []);
-      ref4 = o.locals || [];
-      for (j = 0, len1 = ref4.length; j < len1; j++) {
-        name = ref4[j];
-        o.scope.parameter(name);
-      }
-      prelude = [];
-      if (!o.bare) {
-        preludeExps = (function() {
-          var k, len2, ref5, results;
-          ref5 = this.expressions;
-          results = [];
-          for (i = k = 0, len2 = ref5.length; k < len2; i = ++k) {
-            exp = ref5[i];
-            if (!(exp.unwrap() instanceof Comment)) {
-              break;
-            }
-            results.push(exp);
-          }
-          return results;
-        }).call(this);
-        rest = this.expressions.slice(preludeExps.length);
-        this.expressions = preludeExps;
-        if (preludeExps.length) {
-          prelude = this.compileNode(merge(o, {
-            indent: ''
-          }));
-          prelude.push(this.makeCode("\n"));
-        }
-        this.expressions = rest;
-      }
-      fragments = this.compileWithDeclarations(o);
-      if (o.bare) {
-        return fragments;
-      }
-      return [].concat(prelude, this.makeCode("(function() {\n"), fragments, this.makeCode("\n}).call(this);\n"));
-    };
-
-    Block.prototype.compileWithDeclarations = function(o) {
-      var assigns, declars, exp, fragments, i, j, len1, post, ref3, ref4, ref5, rest, scope, spaced;
-      fragments = [];
-      post = [];
-      ref3 = this.expressions;
-      for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {
-        exp = ref3[i];
-        exp = exp.unwrap();
-        if (!(exp instanceof Comment || exp instanceof Literal)) {
-          break;
-        }
-      }
-      o = merge(o, {
-        level: LEVEL_TOP
-      });
-      if (i) {
-        rest = this.expressions.splice(i, 9e9);
-        ref4 = [this.spaced, false], spaced = ref4[0], this.spaced = ref4[1];
-        ref5 = [this.compileNode(o), spaced], fragments = ref5[0], this.spaced = ref5[1];
-        this.expressions = rest;
-      }
-      post = this.compileNode(o);
-      scope = o.scope;
-      if (scope.expressions === this) {
-        declars = o.scope.hasDeclarations();
-        assigns = scope.hasAssignments;
-        if (declars || assigns) {
-          if (i) {
-            fragments.push(this.makeCode('\n'));
-          }
-          fragments.push(this.makeCode(this.tab + "var "));
-          if (declars) {
-            fragments.push(this.makeCode(scope.declaredVariables().join(', ')));
-          }
-          if (assigns) {
-            if (declars) {
-              fragments.push(this.makeCode(",\n" + (this.tab + TAB)));
-            }
-            fragments.push(this.makeCode(scope.assignedVariables().join(",\n" + (this.tab + TAB))));
-          }
-          fragments.push(this.makeCode(";\n" + (this.spaced ? '\n' : '')));
-        } else if (fragments.length && post.length) {
-          fragments.push(this.makeCode("\n"));
-        }
-      }
-      return fragments.concat(post);
-    };
-
-    Block.wrap = function(nodes) {
-      if (nodes.length === 1 && nodes[0] instanceof Block) {
-        return nodes[0];
-      }
-      return new Block(nodes);
-    };
-
-    return Block;
-
-  })(Base);
-
-  exports.Literal = Literal = (function(superClass1) {
-    extend1(Literal, superClass1);
-
-    function Literal(value1) {
-      this.value = value1;
-    }
-
-    Literal.prototype.isComplex = NO;
-
-    Literal.prototype.assigns = function(name) {
-      return name === this.value;
-    };
-
-    Literal.prototype.compileNode = function(o) {
-      return [this.makeCode(this.value)];
-    };
-
-    Literal.prototype.toString = function() {
-      return " " + (this.isStatement() ? Literal.__super__.toString.apply(this, arguments) : this.constructor.name) + ": " + this.value;
-    };
-
-    return Literal;
-
-  })(Base);
-
-  exports.NumberLiteral = NumberLiteral = (function(superClass1) {
-    extend1(NumberLiteral, superClass1);
-
-    function NumberLiteral() {
-      return NumberLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    return NumberLiteral;
-
-  })(Literal);
-
-  exports.InfinityLiteral = InfinityLiteral = (function(superClass1) {
-    extend1(InfinityLiteral, superClass1);
-
-    function InfinityLiteral() {
-      return InfinityLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    InfinityLiteral.prototype.compileNode = function() {
-      return [this.makeCode('2e308')];
-    };
-
-    return InfinityLiteral;
-
-  })(NumberLiteral);
-
-  exports.NaNLiteral = NaNLiteral = (function(superClass1) {
-    extend1(NaNLiteral, superClass1);
-
-    function NaNLiteral() {
-      NaNLiteral.__super__.constructor.call(this, 'NaN');
-    }
-
-    NaNLiteral.prototype.compileNode = function(o) {
-      var code;
-      code = [this.makeCode('0/0')];
-      if (o.level >= LEVEL_OP) {
-        return this.wrapInBraces(code);
-      } else {
-        return code;
-      }
-    };
-
-    return NaNLiteral;
-
-  })(NumberLiteral);
-
-  exports.StringLiteral = StringLiteral = (function(superClass1) {
-    extend1(StringLiteral, superClass1);
-
-    function StringLiteral() {
-      return StringLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    return StringLiteral;
-
-  })(Literal);
-
-  exports.RegexLiteral = RegexLiteral = (function(superClass1) {
-    extend1(RegexLiteral, superClass1);
-
-    function RegexLiteral() {
-      return RegexLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    return RegexLiteral;
-
-  })(Literal);
-
-  exports.PassthroughLiteral = PassthroughLiteral = (function(superClass1) {
-    extend1(PassthroughLiteral, superClass1);
-
-    function PassthroughLiteral() {
-      return PassthroughLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    return PassthroughLiteral;
-
-  })(Literal);
-
-  exports.IdentifierLiteral = IdentifierLiteral = (function(superClass1) {
-    extend1(IdentifierLiteral, superClass1);
-
-    function IdentifierLiteral() {
-      return IdentifierLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    IdentifierLiteral.prototype.isAssignable = YES;
-
-    return IdentifierLiteral;
-
-  })(Literal);
-
-  exports.PropertyName = PropertyName = (function(superClass1) {
-    extend1(PropertyName, superClass1);
-
-    function PropertyName() {
-      return PropertyName.__super__.constructor.apply(this, arguments);
-    }
-
-    PropertyName.prototype.isAssignable = YES;
-
-    return PropertyName;
-
-  })(Literal);
-
-  exports.StatementLiteral = StatementLiteral = (function(superClass1) {
-    extend1(StatementLiteral, superClass1);
-
-    function StatementLiteral() {
-      return StatementLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    StatementLiteral.prototype.isStatement = YES;
-
-    StatementLiteral.prototype.makeReturn = THIS;
-
-    StatementLiteral.prototype.jumps = function(o) {
-      if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
-        return this;
-      }
-      if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {
-        return this;
-      }
-    };
-
-    StatementLiteral.prototype.compileNode = function(o) {
-      return [this.makeCode("" + this.tab + this.value + ";")];
-    };
-
-    return StatementLiteral;
-
-  })(Literal);
-
-  exports.ThisLiteral = ThisLiteral = (function(superClass1) {
-    extend1(ThisLiteral, superClass1);
-
-    function ThisLiteral() {
-      ThisLiteral.__super__.constructor.call(this, 'this');
-    }
-
-    ThisLiteral.prototype.compileNode = function(o) {
-      var code, ref3;
-      code = ((ref3 = o.scope.method) != null ? ref3.bound : void 0) ? o.scope.method.context : this.value;
-      return [this.makeCode(code)];
-    };
-
-    return ThisLiteral;
-
-  })(Literal);
-
-  exports.UndefinedLiteral = UndefinedLiteral = (function(superClass1) {
-    extend1(UndefinedLiteral, superClass1);
-
-    function UndefinedLiteral() {
-      UndefinedLiteral.__super__.constructor.call(this, 'undefined');
-    }
-
-    UndefinedLiteral.prototype.compileNode = function(o) {
-      return [this.makeCode(o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0')];
-    };
-
-    return UndefinedLiteral;
-
-  })(Literal);
-
-  exports.NullLiteral = NullLiteral = (function(superClass1) {
-    extend1(NullLiteral, superClass1);
-
-    function NullLiteral() {
-      NullLiteral.__super__.constructor.call(this, 'null');
-    }
-
-    return NullLiteral;
-
-  })(Literal);
-
-  exports.BooleanLiteral = BooleanLiteral = (function(superClass1) {
-    extend1(BooleanLiteral, superClass1);
-
-    function BooleanLiteral() {
-      return BooleanLiteral.__super__.constructor.apply(this, arguments);
-    }
-
-    return BooleanLiteral;
-
-  })(Literal);
-
-  exports.Return = Return = (function(superClass1) {
-    extend1(Return, superClass1);
-
-    function Return(expression) {
-      this.expression = expression;
-    }
-
-    Return.prototype.children = ['expression'];
-
-    Return.prototype.isStatement = YES;
-
-    Return.prototype.makeReturn = THIS;
-
-    Return.prototype.jumps = THIS;
-
-    Return.prototype.compileToFragments = function(o, level) {
-      var expr, ref3;
-      expr = (ref3 = this.expression) != null ? ref3.makeReturn() : void 0;
-      if (expr && !(expr instanceof Return)) {
-        return expr.compileToFragments(o, level);
-      } else {
-        return Return.__super__.compileToFragments.call(this, o, level);
-      }
-    };
-
-    Return.prototype.compileNode = function(o) {
-      var answer;
-      answer = [];
-      answer.push(this.makeCode(this.tab + ("return" + (this.expression ? " " : ""))));
-      if (this.expression) {
-        answer = answer.concat(this.expression.compileToFragments(o, LEVEL_PAREN));
-      }
-      answer.push(this.makeCode(";"));
-      return answer;
-    };
-
-    return Return;
-
-  })(Base);
-
-  exports.YieldReturn = YieldReturn = (function(superClass1) {
-    extend1(YieldReturn, superClass1);
-
-    function YieldReturn() {
-      return YieldReturn.__super__.constructor.apply(this, arguments);
-    }
-
-    YieldReturn.prototype.compileNode = function(o) {
-      if (o.scope.parent == null) {
-        this.error('yield can only occur inside functions');
-      }
-      return YieldReturn.__super__.compileNode.apply(this, arguments);
-    };
-
-    return YieldReturn;
-
-  })(Return);
-
-  exports.Value = Value = (function(superClass1) {
-    extend1(Value, superClass1);
-
-    function Value(base, props, tag) {
-      if (!props && base instanceof Value) {
-        return base;
-      }
-      this.base = base;
-      this.properties = props || [];
-      if (tag) {
-        this[tag] = true;
-      }
-      return this;
-    }
-
-    Value.prototype.children = ['base', 'properties'];
-
-    Value.prototype.add = function(props) {
-      this.properties = this.properties.concat(props);
-      return this;
-    };
-
-    Value.prototype.hasProperties = function() {
-      return !!this.properties.length;
-    };
-
-    Value.prototype.bareLiteral = function(type) {
-      return !this.properties.length && this.base instanceof type;
-    };
-
-    Value.prototype.isArray = function() {
-      return this.bareLiteral(Arr);
-    };
-
-    Value.prototype.isRange = function() {
-      return this.bareLiteral(Range);
-    };
-
-    Value.prototype.isComplex = function() {
-      return this.hasProperties() || this.base.isComplex();
-    };
-
-    Value.prototype.isAssignable = function() {
-      return this.hasProperties() || this.base.isAssignable();
-    };
-
-    Value.prototype.isNumber = function() {
-      return this.bareLiteral(NumberLiteral);
-    };
-
-    Value.prototype.isString = function() {
-      return this.bareLiteral(StringLiteral);
-    };
-
-    Value.prototype.isRegex = function() {
-      return this.bareLiteral(RegexLiteral);
-    };
-
-    Value.prototype.isUndefined = function() {
-      return this.bareLiteral(UndefinedLiteral);
-    };
-
-    Value.prototype.isNull = function() {
-      return this.bareLiteral(NullLiteral);
-    };
-
-    Value.prototype.isBoolean = function() {
-      return this.bareLiteral(BooleanLiteral);
-    };
-
-    Value.prototype.isAtomic = function() {
-      var j, len1, node, ref3;
-      ref3 = this.properties.concat(this.base);
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        node = ref3[j];
-        if (node.soak || node instanceof Call) {
-          return false;
-        }
-      }
-      return true;
-    };
-
-    Value.prototype.isNotCallable = function() {
-      return this.isNumber() || this.isString() || this.isRegex() || this.isArray() || this.isRange() || this.isSplice() || this.isObject() || this.isUndefined() || this.isNull() || this.isBoolean();
-    };
-
-    Value.prototype.isStatement = function(o) {
-      return !this.properties.length && this.base.isStatement(o);
-    };
-
-    Value.prototype.assigns = function(name) {
-      return !this.properties.length && this.base.assigns(name);
-    };
-
-    Value.prototype.jumps = function(o) {
-      return !this.properties.length && this.base.jumps(o);
-    };
-
-    Value.prototype.isObject = function(onlyGenerated) {
-      if (this.properties.length) {
-        return false;
-      }
-      return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
-    };
-
-    Value.prototype.isSplice = function() {
-      var lastProp, ref3;
-      ref3 = this.properties, lastProp = ref3[ref3.length - 1];
-      return lastProp instanceof Slice;
-    };
-
-    Value.prototype.looksStatic = function(className) {
-      var ref3;
-      return this.base.value === className && this.properties.length === 1 && ((ref3 = this.properties[0].name) != null ? ref3.value : void 0) !== 'prototype';
-    };
-
-    Value.prototype.unwrap = function() {
-      if (this.properties.length) {
-        return this;
-      } else {
-        return this.base;
-      }
-    };
-
-    Value.prototype.cacheReference = function(o) {
-      var base, bref, name, nref, ref3;
-      ref3 = this.properties, name = ref3[ref3.length - 1];
-      if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) {
-        return [this, this];
-      }
-      base = new Value(this.base, this.properties.slice(0, -1));
-      if (base.isComplex()) {
-        bref = new IdentifierLiteral(o.scope.freeVariable('base'));
-        base = new Value(new Parens(new Assign(bref, base)));
-      }
-      if (!name) {
-        return [base, bref];
-      }
-      if (name.isComplex()) {
-        nref = new IdentifierLiteral(o.scope.freeVariable('name'));
-        name = new Index(new Assign(nref, name.index));
-        nref = new Index(nref);
-      }
-      return [base.add(name), new Value(bref || base.base, [nref || name])];
-    };
-
-    Value.prototype.compileNode = function(o) {
-      var fragments, j, len1, prop, props;
-      this.base.front = this.front;
-      props = this.properties;
-      fragments = this.base.compileToFragments(o, (props.length ? LEVEL_ACCESS : null));
-      if (props.length && SIMPLENUM.test(fragmentsToText(fragments))) {
-        fragments.push(this.makeCode('.'));
-      }
-      for (j = 0, len1 = props.length; j < len1; j++) {
-        prop = props[j];
-        fragments.push.apply(fragments, prop.compileToFragments(o));
-      }
-      return fragments;
-    };
-
-    Value.prototype.unfoldSoak = function(o) {
-      return this.unfoldedSoak != null ? this.unfoldedSoak : this.unfoldedSoak = (function(_this) {
-        return function() {
-          var fst, i, ifn, j, len1, prop, ref, ref3, ref4, snd;
-          if (ifn = _this.base.unfoldSoak(o)) {
-            (ref3 = ifn.body.properties).push.apply(ref3, _this.properties);
-            return ifn;
-          }
-          ref4 = _this.properties;
-          for (i = j = 0, len1 = ref4.length; j < len1; i = ++j) {
-            prop = ref4[i];
-            if (!prop.soak) {
-              continue;
-            }
-            prop.soak = false;
-            fst = new Value(_this.base, _this.properties.slice(0, i));
-            snd = new Value(_this.base, _this.properties.slice(i));
-            if (fst.isComplex()) {
-              ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
-              fst = new Parens(new Assign(ref, fst));
-              snd.base = ref;
-            }
-            return new If(new Existence(fst), snd, {
-              soak: true
-            });
-          }
-          return false;
-        };
-      })(this)();
-    };
-
-    return Value;
-
-  })(Base);
-
-  exports.Comment = Comment = (function(superClass1) {
-    extend1(Comment, superClass1);
-
-    function Comment(comment1) {
-      this.comment = comment1;
-    }
-
-    Comment.prototype.isStatement = YES;
-
-    Comment.prototype.makeReturn = THIS;
-
-    Comment.prototype.compileNode = function(o, level) {
-      var code, comment;
-      comment = this.comment.replace(/^(\s*)#(?=\s)/gm, "$1 *");
-      code = "/*" + (multident(comment, this.tab)) + (indexOf.call(comment, '\n') >= 0 ? "\n" + this.tab : '') + " */";
-      if ((level || o.level) === LEVEL_TOP) {
-        code = o.indent + code;
-      }
-      return [this.makeCode("\n"), this.makeCode(code)];
-    };
-
-    return Comment;
-
-  })(Base);
-
-  exports.Call = Call = (function(superClass1) {
-    extend1(Call, superClass1);
-
-    function Call(variable1, args1, soak1) {
-      this.variable = variable1;
-      this.args = args1 != null ? args1 : [];
-      this.soak = soak1;
-      this.isNew = false;
-      if (this.variable instanceof Value && this.variable.isNotCallable()) {
-        this.variable.error("literal is not a function");
-      }
-    }
-
-    Call.prototype.children = ['variable', 'args'];
-
-    Call.prototype.newInstance = function() {
-      var base, ref3;
-      base = ((ref3 = this.variable) != null ? ref3.base : void 0) || this.variable;
-      if (base instanceof Call && !base.isNew) {
-        base.newInstance();
-      } else {
-        this.isNew = true;
-      }
-      return this;
-    };
-
-    Call.prototype.unfoldSoak = function(o) {
-      var call, ifn, j, left, len1, list, ref3, ref4, rite;
-      if (this.soak) {
-        if (this instanceof SuperCall) {
-          left = new Literal(this.superReference(o));
-          rite = new Value(left);
-        } else {
-          if (ifn = unfoldSoak(o, this, 'variable')) {
-            return ifn;
-          }
-          ref3 = new Value(this.variable).cacheReference(o), left = ref3[0], rite = ref3[1];
-        }
-        rite = new Call(rite, this.args);
-        rite.isNew = this.isNew;
-        left = new Literal("typeof " + (left.compile(o)) + " === \"function\"");
-        return new If(left, new Value(rite), {
-          soak: true
-        });
-      }
-      call = this;
-      list = [];
-      while (true) {
-        if (call.variable instanceof Call) {
-          list.push(call);
-          call = call.variable;
-          continue;
-        }
-        if (!(call.variable instanceof Value)) {
-          break;
-        }
-        list.push(call);
-        if (!((call = call.variable.base) instanceof Call)) {
-          break;
-        }
-      }
-      ref4 = list.reverse();
-      for (j = 0, len1 = ref4.length; j < len1; j++) {
-        call = ref4[j];
-        if (ifn) {
-          if (call.variable instanceof Call) {
-            call.variable = ifn;
-          } else {
-            call.variable.base = ifn;
-          }
-        }
-        ifn = unfoldSoak(o, call, 'variable');
-      }
-      return ifn;
-    };
-
-    Call.prototype.compileNode = function(o) {
-      var arg, argIndex, compiledArgs, compiledArray, fragments, j, len1, preface, ref3, ref4;
-      if ((ref3 = this.variable) != null) {
-        ref3.front = this.front;
-      }
-      compiledArray = Splat.compileSplattedArray(o, this.args, true);
-      if (compiledArray.length) {
-        return this.compileSplat(o, compiledArray);
-      }
-      compiledArgs = [];
-      ref4 = this.args;
-      for (argIndex = j = 0, len1 = ref4.length; j < len1; argIndex = ++j) {
-        arg = ref4[argIndex];
-        if (argIndex) {
-          compiledArgs.push(this.makeCode(", "));
-        }
-        compiledArgs.push.apply(compiledArgs, arg.compileToFragments(o, LEVEL_LIST));
-      }
-      fragments = [];
-      if (this instanceof SuperCall) {
-        preface = this.superReference(o) + (".call(" + (this.superThis(o)));
-        if (compiledArgs.length) {
-          preface += ", ";
-        }
-        fragments.push(this.makeCode(preface));
-      } else {
-        if (this.isNew) {
-          fragments.push(this.makeCode('new '));
-        }
-        fragments.push.apply(fragments, this.variable.compileToFragments(o, LEVEL_ACCESS));
-        fragments.push(this.makeCode("("));
-      }
-      fragments.push.apply(fragments, compiledArgs);
-      fragments.push(this.makeCode(")"));
-      return fragments;
-    };
-
-    Call.prototype.compileSplat = function(o, splatArgs) {
-      var answer, base, fun, idt, name, ref;
-      if (this instanceof SuperCall) {
-        return [].concat(this.makeCode((this.superReference(o)) + ".apply(" + (this.superThis(o)) + ", "), splatArgs, this.makeCode(")"));
-      }
-      if (this.isNew) {
-        idt = this.tab + TAB;
-        return [].concat(this.makeCode("(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args);\n" + idt + "return Object(result) === result ? result : child;\n" + this.tab + "})("), this.variable.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), splatArgs, this.makeCode(", function(){})"));
-      }
-      answer = [];
-      base = new Value(this.variable);
-      if ((name = base.properties.pop()) && base.isComplex()) {
-        ref = o.scope.freeVariable('ref');
-        answer = answer.concat(this.makeCode("(" + ref + " = "), base.compileToFragments(o, LEVEL_LIST), this.makeCode(")"), name.compileToFragments(o));
-      } else {
-        fun = base.compileToFragments(o, LEVEL_ACCESS);
-        if (SIMPLENUM.test(fragmentsToText(fun))) {
-          fun = this.wrapInBraces(fun);
-        }
-        if (name) {
-          ref = fragmentsToText(fun);
-          fun.push.apply(fun, name.compileToFragments(o));
-        } else {
-          ref = 'null';
-        }
-        answer = answer.concat(fun);
-      }
-      return answer = answer.concat(this.makeCode(".apply(" + ref + ", "), splatArgs, this.makeCode(")"));
-    };
-
-    return Call;
-
-  })(Base);
-
-  exports.SuperCall = SuperCall = (function(superClass1) {
-    extend1(SuperCall, superClass1);
-
-    function SuperCall(args) {
-      SuperCall.__super__.constructor.call(this, null, args != null ? args : [new Splat(new IdentifierLiteral('arguments'))]);
-      this.isBare = args != null;
-    }
-
-    SuperCall.prototype.superReference = function(o) {
-      var accesses, base, bref, klass, method, name, nref, variable;
-      method = o.scope.namedMethod();
-      if (method != null ? method.klass : void 0) {
-        klass = method.klass, name = method.name, variable = method.variable;
-        if (klass.isComplex()) {
-          bref = new IdentifierLiteral(o.scope.parent.freeVariable('base'));
-          base = new Value(new Parens(new Assign(bref, klass)));
-          variable.base = base;
-          variable.properties.splice(0, klass.properties.length);
-        }
-        if (name.isComplex() || (name instanceof Index && name.index.isAssignable())) {
-          nref = new IdentifierLiteral(o.scope.parent.freeVariable('name'));
-          name = new Index(new Assign(nref, name.index));
-          variable.properties.pop();
-          variable.properties.push(name);
-        }
-        accesses = [new Access(new PropertyName('__super__'))];
-        if (method["static"]) {
-          accesses.push(new Access(new PropertyName('constructor')));
-        }
-        accesses.push(nref != null ? new Index(nref) : name);
-        return (new Value(bref != null ? bref : klass, accesses)).compile(o);
-      } else if (method != null ? method.ctor : void 0) {
-        return method.name + ".__super__.constructor";
-      } else {
-        return this.error('cannot call super outside of an instance method.');
-      }
-    };
-
-    SuperCall.prototype.superThis = function(o) {
-      var method;
-      method = o.scope.method;
-      return (method && !method.klass && method.context) || "this";
-    };
-
-    return SuperCall;
-
-  })(Call);
-
-  exports.RegexWithInterpolations = RegexWithInterpolations = (function(superClass1) {
-    extend1(RegexWithInterpolations, superClass1);
-
-    function RegexWithInterpolations(args) {
-      if (args == null) {
-        args = [];
-      }
-      RegexWithInterpolations.__super__.constructor.call(this, new Value(new IdentifierLiteral('RegExp')), args, false);
-    }
-
-    return RegexWithInterpolations;
-
-  })(Call);
-
-  exports.TaggedTemplateCall = TaggedTemplateCall = (function(superClass1) {
-    extend1(TaggedTemplateCall, superClass1);
-
-    function TaggedTemplateCall(variable, arg, soak) {
-      if (arg instanceof StringLiteral) {
-        arg = new StringWithInterpolations(Block.wrap([new Value(arg)]));
-      }
-      TaggedTemplateCall.__super__.constructor.call(this, variable, [arg], soak);
-    }
-
-    TaggedTemplateCall.prototype.compileNode = function(o) {
-      o.inTaggedTemplateCall = true;
-      return this.variable.compileToFragments(o, LEVEL_ACCESS).concat(this.args[0].compileToFragments(o, LEVEL_LIST));
-    };
-
-    return TaggedTemplateCall;
-
-  })(Call);
-
-  exports.Extends = Extends = (function(superClass1) {
-    extend1(Extends, superClass1);
-
-    function Extends(child1, parent1) {
-      this.child = child1;
-      this.parent = parent1;
-    }
-
-    Extends.prototype.children = ['child', 'parent'];
-
-    Extends.prototype.compileToFragments = function(o) {
-      return new Call(new Value(new Literal(utility('extend', o))), [this.child, this.parent]).compileToFragments(o);
-    };
-
-    return Extends;
-
-  })(Base);
-
-  exports.Access = Access = (function(superClass1) {
-    extend1(Access, superClass1);
-
-    function Access(name1, tag) {
-      this.name = name1;
-      this.soak = tag === 'soak';
-    }
-
-    Access.prototype.children = ['name'];
-
-    Access.prototype.compileToFragments = function(o) {
-      var name, node, ref3;
-      name = this.name.compileToFragments(o);
-      node = this.name.unwrap();
-      if (node instanceof PropertyName) {
-        if (ref3 = node.value, indexOf.call(JS_FORBIDDEN, ref3) >= 0) {
-          return [this.makeCode('["')].concat(slice.call(name), [this.makeCode('"]')]);
-        } else {
-          return [this.makeCode('.')].concat(slice.call(name));
-        }
-      } else {
-        return [this.makeCode('[')].concat(slice.call(name), [this.makeCode(']')]);
-      }
-    };
-
-    Access.prototype.isComplex = NO;
-
-    return Access;
-
-  })(Base);
-
-  exports.Index = Index = (function(superClass1) {
-    extend1(Index, superClass1);
-
-    function Index(index1) {
-      this.index = index1;
-    }
-
-    Index.prototype.children = ['index'];
-
-    Index.prototype.compileToFragments = function(o) {
-      return [].concat(this.makeCode("["), this.index.compileToFragments(o, LEVEL_PAREN), this.makeCode("]"));
-    };
-
-    Index.prototype.isComplex = function() {
-      return this.index.isComplex();
-    };
-
-    return Index;
-
-  })(Base);
-
-  exports.Range = Range = (function(superClass1) {
-    extend1(Range, superClass1);
-
-    Range.prototype.children = ['from', 'to'];
-
-    function Range(from1, to1, tag) {
-      this.from = from1;
-      this.to = to1;
-      this.exclusive = tag === 'exclusive';
-      this.equals = this.exclusive ? '' : '=';
-    }
-
-    Range.prototype.compileVariables = function(o) {
-      var isComplex, ref3, ref4, ref5, step;
-      o = merge(o, {
-        top: true
-      });
-      isComplex = del(o, 'isComplex');
-      ref3 = this.cacheToCodeFragments(this.from.cache(o, LEVEL_LIST, isComplex)), this.fromC = ref3[0], this.fromVar = ref3[1];
-      ref4 = this.cacheToCodeFragments(this.to.cache(o, LEVEL_LIST, isComplex)), this.toC = ref4[0], this.toVar = ref4[1];
-      if (step = del(o, 'step')) {
-        ref5 = this.cacheToCodeFragments(step.cache(o, LEVEL_LIST, isComplex)), this.step = ref5[0], this.stepVar = ref5[1];
-      }
-      this.fromNum = this.from.isNumber() ? Number(this.fromVar) : null;
-      this.toNum = this.to.isNumber() ? Number(this.toVar) : null;
-      return this.stepNum = (step != null ? step.isNumber() : void 0) ? Number(this.stepVar) : null;
-    };
-
-    Range.prototype.compileNode = function(o) {
-      var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, ref3, ref4, stepPart, to, varPart;
-      if (!this.fromVar) {
-        this.compileVariables(o);
-      }
-      if (!o.index) {
-        return this.compileArray(o);
-      }
-      known = (this.fromNum != null) && (this.toNum != null);
-      idx = del(o, 'index');
-      idxName = del(o, 'name');
-      namedIndex = idxName && idxName !== idx;
-      varPart = idx + " = " + this.fromC;
-      if (this.toC !== this.toVar) {
-        varPart += ", " + this.toC;
-      }
-      if (this.step !== this.stepVar) {
-        varPart += ", " + this.step;
-      }
-      ref3 = [idx + " <" + this.equals, idx + " >" + this.equals], lt = ref3[0], gt = ref3[1];
-      condPart = this.stepNum != null ? this.stepNum > 0 ? lt + " " + this.toVar : gt + " " + this.toVar : known ? ((ref4 = [this.fromNum, this.toNum], from = ref4[0], to = ref4[1], ref4), from <= to ? lt + " " + to : gt + " " + to) : (cond = this.stepVar ? this.stepVar + " > 0" : this.fromVar + " <= " + this.toVar, cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar);
-      stepPart = this.stepVar ? idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? idx + "++" : idx + "--" : namedIndex ? cond + " ? ++" + idx + " : --" + idx : cond + " ? " + idx + "++ : " + idx + "--";
-      if (namedIndex) {
-        varPart = idxName + " = " + varPart;
-      }
-      if (namedIndex) {
-        stepPart = idxName + " = " + stepPart;
-      }
-      return [this.makeCode(varPart + "; " + condPart + "; " + stepPart)];
-    };
-
-    Range.prototype.compileArray = function(o) {
-      var args, body, cond, hasArgs, i, idt, j, known, post, pre, range, ref3, ref4, result, results, vars;
-      known = (this.fromNum != null) && (this.toNum != null);
-      if (known && Math.abs(this.fromNum - this.toNum) <= 20) {
-        range = (function() {
-          results = [];
-          for (var j = ref3 = this.fromNum, ref4 = this.toNum; ref3 <= ref4 ? j <= ref4 : j >= ref4; ref3 <= ref4 ? j++ : j--){ results.push(j); }
-          return results;
-        }).apply(this);
-        if (this.exclusive) {
-          range.pop();
-        }
-        return [this.makeCode("[" + (range.join(', ')) + "]")];
-      }
-      idt = this.tab + TAB;
-      i = o.scope.freeVariable('i', {
-        single: true
-      });
-      result = o.scope.freeVariable('results');
-      pre = "\n" + idt + result + " = [];";
-      if (known) {
-        o.index = i;
-        body = fragmentsToText(this.compileNode(o));
-      } else {
-        vars = (i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : '');
-        cond = this.fromVar + " <= " + this.toVar;
-        body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--";
-      }
-      post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent;
-      hasArgs = function(node) {
-        return node != null ? node.contains(isLiteralArguments) : void 0;
-      };
-      if (hasArgs(this.from) || hasArgs(this.to)) {
-        args = ', arguments';
-      }
-      return [this.makeCode("(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")")];
-    };
-
-    return Range;
-
-  })(Base);
-
-  exports.Slice = Slice = (function(superClass1) {
-    extend1(Slice, superClass1);
-
-    Slice.prototype.children = ['range'];
-
-    function Slice(range1) {
-      this.range = range1;
-      Slice.__super__.constructor.call(this);
-    }
-
-    Slice.prototype.compileNode = function(o) {
-      var compiled, compiledText, from, fromCompiled, ref3, to, toStr;
-      ref3 = this.range, to = ref3.to, from = ref3.from;
-      fromCompiled = from && from.compileToFragments(o, LEVEL_PAREN) || [this.makeCode('0')];
-      if (to) {
-        compiled = to.compileToFragments(o, LEVEL_PAREN);
-        compiledText = fragmentsToText(compiled);
-        if (!(!this.range.exclusive && +compiledText === -1)) {
-          toStr = ', ' + (this.range.exclusive ? compiledText : to.isNumber() ? "" + (+compiledText + 1) : (compiled = to.compileToFragments(o, LEVEL_ACCESS), "+" + (fragmentsToText(compiled)) + " + 1 || 9e9"));
-        }
-      }
-      return [this.makeCode(".slice(" + (fragmentsToText(fromCompiled)) + (toStr || '') + ")")];
-    };
-
-    return Slice;
-
-  })(Base);
-
-  exports.Obj = Obj = (function(superClass1) {
-    extend1(Obj, superClass1);
-
-    function Obj(props, generated) {
-      this.generated = generated != null ? generated : false;
-      this.objects = this.properties = props || [];
-    }
-
-    Obj.prototype.children = ['properties'];
-
-    Obj.prototype.compileNode = function(o) {
-      var answer, dynamicIndex, hasDynamic, i, idt, indent, j, join, k, key, l, lastNoncom, len1, len2, len3, node, oref, prop, props, ref3, value;
-      props = this.properties;
-      if (this.generated) {
-        for (j = 0, len1 = props.length; j < len1; j++) {
-          node = props[j];
-          if (node instanceof Value) {
-            node.error('cannot have an implicit value in an implicit object');
-          }
-        }
-      }
-      for (dynamicIndex = k = 0, len2 = props.length; k < len2; dynamicIndex = ++k) {
-        prop = props[dynamicIndex];
-        if ((prop.variable || prop).base instanceof Parens) {
-          break;
-        }
-      }
-      hasDynamic = dynamicIndex < props.length;
-      idt = o.indent += TAB;
-      lastNoncom = this.lastNonComment(this.properties);
-      answer = [];
-      if (hasDynamic) {
-        oref = o.scope.freeVariable('obj');
-        answer.push(this.makeCode("(\n" + idt + oref + " = "));
-      }
-      answer.push(this.makeCode("{" + (props.length === 0 || dynamicIndex === 0 ? '}' : '\n')));
-      for (i = l = 0, len3 = props.length; l < len3; i = ++l) {
-        prop = props[i];
-        if (i === dynamicIndex) {
-          if (i !== 0) {
-            answer.push(this.makeCode("\n" + idt + "}"));
-          }
-          answer.push(this.makeCode(',\n'));
-        }
-        join = i === props.length - 1 || i === dynamicIndex - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n';
-        indent = prop instanceof Comment ? '' : idt;
-        if (hasDynamic && i < dynamicIndex) {
-          indent += TAB;
-        }
-        if (prop instanceof Assign) {
-          if (prop.context !== 'object') {
-            prop.operatorToken.error("unexpected " + prop.operatorToken.value);
-          }
-          if (prop.variable instanceof Value && prop.variable.hasProperties()) {
-            prop.variable.error('invalid object key');
-          }
-        }
-        if (prop instanceof Value && prop["this"]) {
-          prop = new Assign(prop.properties[0].name, prop, 'object');
-        }
-        if (!(prop instanceof Comment)) {
-          if (i < dynamicIndex) {
-            if (!(prop instanceof Assign)) {
-              prop = new Assign(prop, prop, 'object');
-            }
-          } else {
-            if (prop instanceof Assign) {
-              key = prop.variable;
-              value = prop.value;
-            } else {
-              ref3 = prop.base.cache(o), key = ref3[0], value = ref3[1];
-              if (key instanceof IdentifierLiteral) {
-                key = new PropertyName(key.value);
-              }
-            }
-            prop = new Assign(new Value(new IdentifierLiteral(oref), [new Access(key)]), value);
-          }
-        }
-        if (indent) {
-          answer.push(this.makeCode(indent));
-        }
-        answer.push.apply(answer, prop.compileToFragments(o, LEVEL_TOP));
-        if (join) {
-          answer.push(this.makeCode(join));
-        }
-      }
-      if (hasDynamic) {
-        answer.push(this.makeCode(",\n" + idt + oref + "\n" + this.tab + ")"));
-      } else {
-        if (props.length !== 0) {
-          answer.push(this.makeCode("\n" + this.tab + "}"));
-        }
-      }
-      if (this.front && !hasDynamic) {
-        return this.wrapInBraces(answer);
-      } else {
-        return answer;
-      }
-    };
-
-    Obj.prototype.assigns = function(name) {
-      var j, len1, prop, ref3;
-      ref3 = this.properties;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        prop = ref3[j];
-        if (prop.assigns(name)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    return Obj;
-
-  })(Base);
-
-  exports.Arr = Arr = (function(superClass1) {
-    extend1(Arr, superClass1);
-
-    function Arr(objs) {
-      this.objects = objs || [];
-    }
-
-    Arr.prototype.children = ['objects'];
-
-    Arr.prototype.compileNode = function(o) {
-      var answer, compiledObjs, fragments, index, j, len1, obj;
-      if (!this.objects.length) {
-        return [this.makeCode('[]')];
-      }
-      o.indent += TAB;
-      answer = Splat.compileSplattedArray(o, this.objects);
-      if (answer.length) {
-        return answer;
-      }
-      answer = [];
-      compiledObjs = (function() {
-        var j, len1, ref3, results;
-        ref3 = this.objects;
-        results = [];
-        for (j = 0, len1 = ref3.length; j < len1; j++) {
-          obj = ref3[j];
-          results.push(obj.compileToFragments(o, LEVEL_LIST));
-        }
-        return results;
-      }).call(this);
-      for (index = j = 0, len1 = compiledObjs.length; j < len1; index = ++j) {
-        fragments = compiledObjs[index];
-        if (index) {
-          answer.push(this.makeCode(", "));
-        }
-        answer.push.apply(answer, fragments);
-      }
-      if (fragmentsToText(answer).indexOf('\n') >= 0) {
-        answer.unshift(this.makeCode("[\n" + o.indent));
-        answer.push(this.makeCode("\n" + this.tab + "]"));
-      } else {
-        answer.unshift(this.makeCode("["));
-        answer.push(this.makeCode("]"));
-      }
-      return answer;
-    };
-
-    Arr.prototype.assigns = function(name) {
-      var j, len1, obj, ref3;
-      ref3 = this.objects;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        obj = ref3[j];
-        if (obj.assigns(name)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    return Arr;
-
-  })(Base);
-
-  exports.Class = Class = (function(superClass1) {
-    extend1(Class, superClass1);
-
-    function Class(variable1, parent1, body1) {
-      this.variable = variable1;
-      this.parent = parent1;
-      this.body = body1 != null ? body1 : new Block;
-      this.boundFuncs = [];
-      this.body.classBody = true;
-    }
-
-    Class.prototype.children = ['variable', 'parent', 'body'];
-
-    Class.prototype.defaultClassVariableName = '_Class';
-
-    Class.prototype.determineName = function() {
-      var message, name, node, ref3, tail;
-      if (!this.variable) {
-        return this.defaultClassVariableName;
-      }
-      ref3 = this.variable.properties, tail = ref3[ref3.length - 1];
-      node = tail ? tail instanceof Access && tail.name : this.variable.base;
-      if (!(node instanceof IdentifierLiteral || node instanceof PropertyName)) {
-        return this.defaultClassVariableName;
-      }
-      name = node.value;
-      if (!tail) {
-        message = isUnassignable(name);
-        if (message) {
-          this.variable.error(message);
-        }
-      }
-      if (indexOf.call(JS_FORBIDDEN, name) >= 0) {
-        return "_" + name;
-      } else {
-        return name;
-      }
-    };
-
-    Class.prototype.setContext = function(name) {
-      return this.body.traverseChildren(false, function(node) {
-        if (node.classBody) {
-          return false;
-        }
-        if (node instanceof ThisLiteral) {
-          return node.value = name;
-        } else if (node instanceof Code) {
-          if (node.bound) {
-            return node.context = name;
-          }
-        }
-      });
-    };
-
-    Class.prototype.addBoundFunctions = function(o) {
-      var bvar, j, len1, lhs, ref3;
-      ref3 = this.boundFuncs;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        bvar = ref3[j];
-        lhs = (new Value(new ThisLiteral, [new Access(bvar)])).compile(o);
-        this.ctor.body.unshift(new Literal(lhs + " = " + (utility('bind', o)) + "(" + lhs + ", this)"));
-      }
-    };
-
-    Class.prototype.addProperties = function(node, name, o) {
-      var acc, assign, base, exprs, func, props;
-      props = node.base.properties.slice(0);
-      exprs = (function() {
-        var results;
-        results = [];
-        while (assign = props.shift()) {
-          if (assign instanceof Assign) {
-            base = assign.variable.base;
-            delete assign.context;
-            func = assign.value;
-            if (base.value === 'constructor') {
-              if (this.ctor) {
-                assign.error('cannot define more than one constructor in a class');
-              }
-              if (func.bound) {
-                assign.error('cannot define a constructor as a bound function');
-              }
-              if (func instanceof Code) {
-                assign = this.ctor = func;
-              } else {
-                this.externalCtor = o.classScope.freeVariable('ctor');
-                assign = new Assign(new IdentifierLiteral(this.externalCtor), func);
-              }
-            } else {
-              if (assign.variable["this"]) {
-                func["static"] = true;
-              } else {
-                acc = base.isComplex() ? new Index(base) : new Access(base);
-                assign.variable = new Value(new IdentifierLiteral(name), [new Access(new PropertyName('prototype')), acc]);
-                if (func instanceof Code && func.bound) {
-                  this.boundFuncs.push(base);
-                  func.bound = false;
-                }
-              }
-            }
-          }
-          results.push(assign);
-        }
-        return results;
-      }).call(this);
-      return compact(exprs);
-    };
-
-    Class.prototype.walkBody = function(name, o) {
-      return this.traverseChildren(false, (function(_this) {
-        return function(child) {
-          var cont, exps, i, j, len1, node, ref3;
-          cont = true;
-          if (child instanceof Class) {
-            return false;
-          }
-          if (child instanceof Block) {
-            ref3 = exps = child.expressions;
-            for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {
-              node = ref3[i];
-              if (node instanceof Assign && node.variable.looksStatic(name)) {
-                node.value["static"] = true;
-              } else if (node instanceof Value && node.isObject(true)) {
-                cont = false;
-                exps[i] = _this.addProperties(node, name, o);
-              }
-            }
-            child.expressions = exps = flatten(exps);
-          }
-          return cont && !(child instanceof Class);
-        };
-      })(this));
-    };
-
-    Class.prototype.hoistDirectivePrologue = function() {
-      var expressions, index, node;
-      index = 0;
-      expressions = this.body.expressions;
-      while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) {
-        ++index;
-      }
-      return this.directives = expressions.splice(0, index);
-    };
-
-    Class.prototype.ensureConstructor = function(name) {
-      if (!this.ctor) {
-        this.ctor = new Code;
-        if (this.externalCtor) {
-          this.ctor.body.push(new Literal(this.externalCtor + ".apply(this, arguments)"));
-        } else if (this.parent) {
-          this.ctor.body.push(new Literal(name + ".__super__.constructor.apply(this, arguments)"));
-        }
-        this.ctor.body.makeReturn();
-        this.body.expressions.unshift(this.ctor);
-      }
-      this.ctor.ctor = this.ctor.name = name;
-      this.ctor.klass = null;
-      return this.ctor.noReturn = true;
-    };
-
-    Class.prototype.compileNode = function(o) {
-      var args, argumentsNode, func, jumpNode, klass, lname, name, ref3, superClass;
-      if (jumpNode = this.body.jumps()) {
-        jumpNode.error('Class bodies cannot contain pure statements');
-      }
-      if (argumentsNode = this.body.contains(isLiteralArguments)) {
-        argumentsNode.error("Class bodies shouldn't reference arguments");
-      }
-      name = this.determineName();
-      lname = new IdentifierLiteral(name);
-      func = new Code([], Block.wrap([this.body]));
-      args = [];
-      o.classScope = func.makeScope(o.scope);
-      this.hoistDirectivePrologue();
-      this.setContext(name);
-      this.walkBody(name, o);
-      this.ensureConstructor(name);
-      this.addBoundFunctions(o);
-      this.body.spaced = true;
-      this.body.expressions.push(lname);
-      if (this.parent) {
-        superClass = new IdentifierLiteral(o.classScope.freeVariable('superClass', {
-          reserve: false
-        }));
-        this.body.expressions.unshift(new Extends(lname, superClass));
-        func.params.push(new Param(superClass));
-        args.push(this.parent);
-      }
-      (ref3 = this.body.expressions).unshift.apply(ref3, this.directives);
-      klass = new Parens(new Call(func, args));
-      if (this.variable) {
-        klass = new Assign(this.variable, klass, null, {
-          moduleDeclaration: this.moduleDeclaration
-        });
-      }
-      return klass.compileToFragments(o);
-    };
-
-    return Class;
-
-  })(Base);
-
-  exports.ModuleDeclaration = ModuleDeclaration = (function(superClass1) {
-    extend1(ModuleDeclaration, superClass1);
-
-    function ModuleDeclaration(clause, source1) {
-      this.clause = clause;
-      this.source = source1;
-      this.checkSource();
-    }
-
-    ModuleDeclaration.prototype.children = ['clause', 'source'];
-
-    ModuleDeclaration.prototype.isStatement = YES;
-
-    ModuleDeclaration.prototype.jumps = THIS;
-
-    ModuleDeclaration.prototype.makeReturn = THIS;
-
-    ModuleDeclaration.prototype.checkSource = function() {
-      if ((this.source != null) && this.source instanceof StringWithInterpolations) {
-        return this.source.error('the name of the module to be imported from must be an uninterpolated string');
-      }
-    };
-
-    ModuleDeclaration.prototype.checkScope = function(o, moduleDeclarationType) {
-      if (o.indent.length !== 0) {
-        return this.error(moduleDeclarationType + " statements must be at top-level scope");
-      }
-    };
-
-    return ModuleDeclaration;
-
-  })(Base);
-
-  exports.ImportDeclaration = ImportDeclaration = (function(superClass1) {
-    extend1(ImportDeclaration, superClass1);
-
-    function ImportDeclaration() {
-      return ImportDeclaration.__super__.constructor.apply(this, arguments);
-    }
-
-    ImportDeclaration.prototype.compileNode = function(o) {
-      var code, ref3;
-      this.checkScope(o, 'import');
-      o.importedSymbols = [];
-      code = [];
-      code.push(this.makeCode(this.tab + "import "));
-      if (this.clause != null) {
-        code.push.apply(code, this.clause.compileNode(o));
-      }
-      if (((ref3 = this.source) != null ? ref3.value : void 0) != null) {
-        if (this.clause !== null) {
-          code.push(this.makeCode(' from '));
-        }
-        code.push(this.makeCode(this.source.value));
-      }
-      code.push(this.makeCode(';'));
-      return code;
-    };
-
-    return ImportDeclaration;
-
-  })(ModuleDeclaration);
-
-  exports.ImportClause = ImportClause = (function(superClass1) {
-    extend1(ImportClause, superClass1);
-
-    function ImportClause(defaultBinding, namedImports) {
-      this.defaultBinding = defaultBinding;
-      this.namedImports = namedImports;
-    }
-
-    ImportClause.prototype.children = ['defaultBinding', 'namedImports'];
-
-    ImportClause.prototype.compileNode = function(o) {
-      var code;
-      code = [];
-      if (this.defaultBinding != null) {
-        code.push.apply(code, this.defaultBinding.compileNode(o));
-        if (this.namedImports != null) {
-          code.push(this.makeCode(', '));
-        }
-      }
-      if (this.namedImports != null) {
-        code.push.apply(code, this.namedImports.compileNode(o));
-      }
-      return code;
-    };
-
-    return ImportClause;
-
-  })(Base);
-
-  exports.ExportDeclaration = ExportDeclaration = (function(superClass1) {
-    extend1(ExportDeclaration, superClass1);
-
-    function ExportDeclaration() {
-      return ExportDeclaration.__super__.constructor.apply(this, arguments);
-    }
-
-    ExportDeclaration.prototype.compileNode = function(o) {
-      var code, ref3;
-      this.checkScope(o, 'export');
-      code = [];
-      code.push(this.makeCode(this.tab + "export "));
-      if (this instanceof ExportDefaultDeclaration) {
-        code.push(this.makeCode('default '));
-      }
-      if (!(this instanceof ExportDefaultDeclaration) && (this.clause instanceof Assign || this.clause instanceof Class)) {
-        if (this.clause instanceof Class && !this.clause.variable) {
-          this.clause.error('anonymous classes cannot be exported');
-        }
-        code.push(this.makeCode('var '));
-        this.clause.moduleDeclaration = 'export';
-      }
-      if ((this.clause.body != null) && this.clause.body instanceof Block) {
-        code = code.concat(this.clause.compileToFragments(o, LEVEL_TOP));
-      } else {
-        code = code.concat(this.clause.compileNode(o));
-      }
-      if (((ref3 = this.source) != null ? ref3.value : void 0) != null) {
-        code.push(this.makeCode(" from " + this.source.value));
-      }
-      code.push(this.makeCode(';'));
-      return code;
-    };
-
-    return ExportDeclaration;
-
-  })(ModuleDeclaration);
-
-  exports.ExportNamedDeclaration = ExportNamedDeclaration = (function(superClass1) {
-    extend1(ExportNamedDeclaration, superClass1);
-
-    function ExportNamedDeclaration() {
-      return ExportNamedDeclaration.__super__.constructor.apply(this, arguments);
-    }
-
-    return ExportNamedDeclaration;
-
-  })(ExportDeclaration);
-
-  exports.ExportDefaultDeclaration = ExportDefaultDeclaration = (function(superClass1) {
-    extend1(ExportDefaultDeclaration, superClass1);
-
-    function ExportDefaultDeclaration() {
-      return ExportDefaultDeclaration.__super__.constructor.apply(this, arguments);
-    }
-
-    return ExportDefaultDeclaration;
-
-  })(ExportDeclaration);
-
-  exports.ExportAllDeclaration = ExportAllDeclaration = (function(superClass1) {
-    extend1(ExportAllDeclaration, superClass1);
-
-    function ExportAllDeclaration() {
-      return ExportAllDeclaration.__super__.constructor.apply(this, arguments);
-    }
-
-    return ExportAllDeclaration;
-
-  })(ExportDeclaration);
-
-  exports.ModuleSpecifierList = ModuleSpecifierList = (function(superClass1) {
-    extend1(ModuleSpecifierList, superClass1);
-
-    function ModuleSpecifierList(specifiers) {
-      this.specifiers = specifiers;
-    }
-
-    ModuleSpecifierList.prototype.children = ['specifiers'];
-
-    ModuleSpecifierList.prototype.compileNode = function(o) {
-      var code, compiledList, fragments, index, j, len1, specifier;
-      code = [];
-      o.indent += TAB;
-      compiledList = (function() {
-        var j, len1, ref3, results;
-        ref3 = this.specifiers;
-        results = [];
-        for (j = 0, len1 = ref3.length; j < len1; j++) {
-          specifier = ref3[j];
-          results.push(specifier.compileToFragments(o, LEVEL_LIST));
-        }
-        return results;
-      }).call(this);
-      if (this.specifiers.length !== 0) {
-        code.push(this.makeCode("{\n" + o.indent));
-        for (index = j = 0, len1 = compiledList.length; j < len1; index = ++j) {
-          fragments = compiledList[index];
-          if (index) {
-            code.push(this.makeCode(",\n" + o.indent));
-          }
-          code.push.apply(code, fragments);
-        }
-        code.push(this.makeCode("\n}"));
-      } else {
-        code.push(this.makeCode('{}'));
-      }
-      return code;
-    };
-
-    return ModuleSpecifierList;
-
-  })(Base);
-
-  exports.ImportSpecifierList = ImportSpecifierList = (function(superClass1) {
-    extend1(ImportSpecifierList, superClass1);
-
-    function ImportSpecifierList() {
-      return ImportSpecifierList.__super__.constructor.apply(this, arguments);
-    }
-
-    return ImportSpecifierList;
-
-  })(ModuleSpecifierList);
-
-  exports.ExportSpecifierList = ExportSpecifierList = (function(superClass1) {
-    extend1(ExportSpecifierList, superClass1);
-
-    function ExportSpecifierList() {
-      return ExportSpecifierList.__super__.constructor.apply(this, arguments);
-    }
-
-    return ExportSpecifierList;
-
-  })(ModuleSpecifierList);
-
-  exports.ModuleSpecifier = ModuleSpecifier = (function(superClass1) {
-    extend1(ModuleSpecifier, superClass1);
-
-    function ModuleSpecifier(original, alias, moduleDeclarationType1) {
-      this.original = original;
-      this.alias = alias;
-      this.moduleDeclarationType = moduleDeclarationType1;
-      this.identifier = this.alias != null ? this.alias.value : this.original.value;
-    }
-
-    ModuleSpecifier.prototype.children = ['original', 'alias'];
-
-    ModuleSpecifier.prototype.compileNode = function(o) {
-      var code;
-      o.scope.add(this.identifier, this.moduleDeclarationType);
-      code = [];
-      code.push(this.makeCode(this.original.value));
-      if (this.alias != null) {
-        code.push(this.makeCode(" as " + this.alias.value));
-      }
-      return code;
-    };
-
-    return ModuleSpecifier;
-
-  })(Base);
-
-  exports.ImportSpecifier = ImportSpecifier = (function(superClass1) {
-    extend1(ImportSpecifier, superClass1);
-
-    function ImportSpecifier(imported, local) {
-      ImportSpecifier.__super__.constructor.call(this, imported, local, 'import');
-    }
-
-    ImportSpecifier.prototype.compileNode = function(o) {
-      var ref3;
-      if ((ref3 = this.identifier, indexOf.call(o.importedSymbols, ref3) >= 0) || o.scope.check(this.identifier)) {
-        this.error("'" + this.identifier + "' has already been declared");
-      } else {
-        o.importedSymbols.push(this.identifier);
-      }
-      return ImportSpecifier.__super__.compileNode.call(this, o);
-    };
-
-    return ImportSpecifier;
-
-  })(ModuleSpecifier);
-
-  exports.ImportDefaultSpecifier = ImportDefaultSpecifier = (function(superClass1) {
-    extend1(ImportDefaultSpecifier, superClass1);
-
-    function ImportDefaultSpecifier() {
-      return ImportDefaultSpecifier.__super__.constructor.apply(this, arguments);
-    }
-
-    return ImportDefaultSpecifier;
-
-  })(ImportSpecifier);
-
-  exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier = (function(superClass1) {
-    extend1(ImportNamespaceSpecifier, superClass1);
-
-    function ImportNamespaceSpecifier() {
-      return ImportNamespaceSpecifier.__super__.constructor.apply(this, arguments);
-    }
-
-    return ImportNamespaceSpecifier;
-
-  })(ImportSpecifier);
-
-  exports.ExportSpecifier = ExportSpecifier = (function(superClass1) {
-    extend1(ExportSpecifier, superClass1);
-
-    function ExportSpecifier(local, exported) {
-      ExportSpecifier.__super__.constructor.call(this, local, exported, 'export');
-    }
-
-    return ExportSpecifier;
-
-  })(ModuleSpecifier);
-
-  exports.Assign = Assign = (function(superClass1) {
-    extend1(Assign, superClass1);
-
-    function Assign(variable1, value1, context, options) {
-      this.variable = variable1;
-      this.value = value1;
-      this.context = context;
-      if (options == null) {
-        options = {};
-      }
-      this.param = options.param, this.subpattern = options.subpattern, this.operatorToken = options.operatorToken, this.moduleDeclaration = options.moduleDeclaration;
-    }
-
-    Assign.prototype.children = ['variable', 'value'];
-
-    Assign.prototype.isStatement = function(o) {
-      return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && (this.moduleDeclaration || indexOf.call(this.context, "?") >= 0);
-    };
-
-    Assign.prototype.checkAssignability = function(o, varBase) {
-      if (Object.prototype.hasOwnProperty.call(o.scope.positions, varBase.value) && o.scope.variables[o.scope.positions[varBase.value]].type === 'import') {
-        return varBase.error("'" + varBase.value + "' is read-only");
-      }
-    };
-
-    Assign.prototype.assigns = function(name) {
-      return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);
-    };
-
-    Assign.prototype.unfoldSoak = function(o) {
-      return unfoldSoak(o, this, 'variable');
-    };
-
-    Assign.prototype.compileNode = function(o) {
-      var answer, compiledName, isValue, j, name, properties, prototype, ref3, ref4, ref5, ref6, ref7, ref8, val, varBase;
-      if (isValue = this.variable instanceof Value) {
-        if (this.variable.isArray() || this.variable.isObject()) {
-          return this.compilePatternMatch(o);
-        }
-        if (this.variable.isSplice()) {
-          return this.compileSplice(o);
-        }
-        if ((ref3 = this.context) === '||=' || ref3 === '&&=' || ref3 === '?=') {
-          return this.compileConditional(o);
-        }
-        if ((ref4 = this.context) === '**=' || ref4 === '//=' || ref4 === '%%=') {
-          return this.compileSpecialMath(o);
-        }
-      }
-      if (this.value instanceof Code) {
-        if (this.value["static"]) {
-          this.value.klass = this.variable.base;
-          this.value.name = this.variable.properties[0];
-          this.value.variable = this.variable;
-        } else if (((ref5 = this.variable.properties) != null ? ref5.length : void 0) >= 2) {
-          ref6 = this.variable.properties, properties = 3 <= ref6.length ? slice.call(ref6, 0, j = ref6.length - 2) : (j = 0, []), prototype = ref6[j++], name = ref6[j++];
-          if (((ref7 = prototype.name) != null ? ref7.value : void 0) === 'prototype') {
-            this.value.klass = new Value(this.variable.base, properties);
-            this.value.name = name;
-            this.value.variable = this.variable;
-          }
-        }
-      }
-      if (!this.context) {
-        varBase = this.variable.unwrapAll();
-        if (!varBase.isAssignable()) {
-          this.variable.error("'" + (this.variable.compile(o)) + "' can't be assigned");
-        }
-        if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) {
-          if (this.moduleDeclaration) {
-            this.checkAssignability(o, varBase);
-            o.scope.add(varBase.value, this.moduleDeclaration);
-          } else if (this.param) {
-            o.scope.add(varBase.value, 'var');
-          } else {
-            this.checkAssignability(o, varBase);
-            o.scope.find(varBase.value);
-          }
-        }
-      }
-      val = this.value.compileToFragments(o, LEVEL_LIST);
-      if (isValue && this.variable.base instanceof Obj) {
-        this.variable.front = true;
-      }
-      compiledName = this.variable.compileToFragments(o, LEVEL_LIST);
-      if (this.context === 'object') {
-        if (ref8 = fragmentsToText(compiledName), indexOf.call(JS_FORBIDDEN, ref8) >= 0) {
-          compiledName.unshift(this.makeCode('"'));
-          compiledName.push(this.makeCode('"'));
-        }
-        return compiledName.concat(this.makeCode(": "), val);
-      }
-      answer = compiledName.concat(this.makeCode(" " + (this.context || '=') + " "), val);
-      if (o.level <= LEVEL_LIST) {
-        return answer;
-      } else {
-        return this.wrapInBraces(answer);
-      }
-    };
-
-    Assign.prototype.compilePatternMatch = function(o) {
-      var acc, assigns, code, defaultValue, expandedIdx, fragments, i, idx, isObject, ivar, j, len1, message, name, obj, objects, olen, ref, ref3, ref4, ref5, ref6, rest, top, val, value, vvar, vvarText;
-      top = o.level === LEVEL_TOP;
-      value = this.value;
-      objects = this.variable.base.objects;
-      if (!(olen = objects.length)) {
-        code = value.compileToFragments(o);
-        if (o.level >= LEVEL_OP) {
-          return this.wrapInBraces(code);
-        } else {
-          return code;
-        }
-      }
-      obj = objects[0];
-      if (olen === 1 && obj instanceof Expansion) {
-        obj.error('Destructuring assignment has no target');
-      }
-      isObject = this.variable.isObject();
-      if (top && olen === 1 && !(obj instanceof Splat)) {
-        defaultValue = null;
-        if (obj instanceof Assign && obj.context === 'object') {
-          ref3 = obj, (ref4 = ref3.variable, idx = ref4.base), obj = ref3.value;
-          if (obj instanceof Assign) {
-            defaultValue = obj.value;
-            obj = obj.variable;
-          }
-        } else {
-          if (obj instanceof Assign) {
-            defaultValue = obj.value;
-            obj = obj.variable;
-          }
-          idx = isObject ? obj["this"] ? obj.properties[0].name : new PropertyName(obj.unwrap().value) : new NumberLiteral(0);
-        }
-        acc = idx.unwrap() instanceof PropertyName;
-        value = new Value(value);
-        value.properties.push(new (acc ? Access : Index)(idx));
-        message = isUnassignable(obj.unwrap().value);
-        if (message) {
-          obj.error(message);
-        }
-        if (defaultValue) {
-          value = new Op('?', value, defaultValue);
-        }
-        return new Assign(obj, value, null, {
-          param: this.param
-        }).compileToFragments(o, LEVEL_TOP);
-      }
-      vvar = value.compileToFragments(o, LEVEL_LIST);
-      vvarText = fragmentsToText(vvar);
-      assigns = [];
-      expandedIdx = false;
-      if (!(value.unwrap() instanceof IdentifierLiteral) || this.variable.assigns(vvarText)) {
-        assigns.push([this.makeCode((ref = o.scope.freeVariable('ref')) + " = ")].concat(slice.call(vvar)));
-        vvar = [this.makeCode(ref)];
-        vvarText = ref;
-      }
-      for (i = j = 0, len1 = objects.length; j < len1; i = ++j) {
-        obj = objects[i];
-        idx = i;
-        if (!expandedIdx && obj instanceof Splat) {
-          name = obj.name.unwrap().value;
-          obj = obj.unwrap();
-          val = olen + " <= " + vvarText + ".length ? " + (utility('slice', o)) + ".call(" + vvarText + ", " + i;
-          if (rest = olen - i - 1) {
-            ivar = o.scope.freeVariable('i', {
-              single: true
-            });
-            val += ", " + ivar + " = " + vvarText + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])";
-          } else {
-            val += ") : []";
-          }
-          val = new Literal(val);
-          expandedIdx = ivar + "++";
-        } else if (!expandedIdx && obj instanceof Expansion) {
-          if (rest = olen - i - 1) {
-            if (rest === 1) {
-              expandedIdx = vvarText + ".length - 1";
-            } else {
-              ivar = o.scope.freeVariable('i', {
-                single: true
-              });
-              val = new Literal(ivar + " = " + vvarText + ".length - " + rest);
-              expandedIdx = ivar + "++";
-              assigns.push(val.compileToFragments(o, LEVEL_LIST));
-            }
-          }
-          continue;
-        } else {
-          if (obj instanceof Splat || obj instanceof Expansion) {
-            obj.error("multiple splats/expansions are disallowed in an assignment");
-          }
-          defaultValue = null;
-          if (obj instanceof Assign && obj.context === 'object') {
-            ref5 = obj, (ref6 = ref5.variable, idx = ref6.base), obj = ref5.value;
-            if (obj instanceof Assign) {
-              defaultValue = obj.value;
-              obj = obj.variable;
-            }
-          } else {
-            if (obj instanceof Assign) {
-              defaultValue = obj.value;
-              obj = obj.variable;
-            }
-            idx = isObject ? obj["this"] ? obj.properties[0].name : new PropertyName(obj.unwrap().value) : new Literal(expandedIdx || idx);
-          }
-          name = obj.unwrap().value;
-          acc = idx.unwrap() instanceof PropertyName;
-          val = new Value(new Literal(vvarText), [new (acc ? Access : Index)(idx)]);
-          if (defaultValue) {
-            val = new Op('?', val, defaultValue);
-          }
-        }
-        if (name != null) {
-          message = isUnassignable(name);
-          if (message) {
-            obj.error(message);
-          }
-        }
-        assigns.push(new Assign(obj, val, null, {
-          param: this.param,
-          subpattern: true
-        }).compileToFragments(o, LEVEL_LIST));
-      }
-      if (!(top || this.subpattern)) {
-        assigns.push(vvar);
-      }
-      fragments = this.joinFragmentArrays(assigns, ', ');
-      if (o.level < LEVEL_LIST) {
-        return fragments;
-      } else {
-        return this.wrapInBraces(fragments);
-      }
-    };
-
-    Assign.prototype.compileConditional = function(o) {
-      var fragments, left, ref3, right;
-      ref3 = this.variable.cacheReference(o), left = ref3[0], right = ref3[1];
-      if (!left.properties.length && left.base instanceof Literal && !(left.base instanceof ThisLiteral) && !o.scope.check(left.base.value)) {
-        this.variable.error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been declared before");
-      }
-      if (indexOf.call(this.context, "?") >= 0) {
-        o.isExistentialEquals = true;
-        return new If(new Existence(left), right, {
-          type: 'if'
-        }).addElse(new Assign(right, this.value, '=')).compileToFragments(o);
-      } else {
-        fragments = new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compileToFragments(o);
-        if (o.level <= LEVEL_LIST) {
-          return fragments;
-        } else {
-          return this.wrapInBraces(fragments);
-        }
-      }
-    };
-
-    Assign.prototype.compileSpecialMath = function(o) {
-      var left, ref3, right;
-      ref3 = this.variable.cacheReference(o), left = ref3[0], right = ref3[1];
-      return new Assign(left, new Op(this.context.slice(0, -1), right, this.value)).compileToFragments(o);
-    };
-
-    Assign.prototype.compileSplice = function(o) {
-      var answer, exclusive, from, fromDecl, fromRef, name, ref3, ref4, ref5, to, valDef, valRef;
-      ref3 = this.variable.properties.pop().range, from = ref3.from, to = ref3.to, exclusive = ref3.exclusive;
-      name = this.variable.compile(o);
-      if (from) {
-        ref4 = this.cacheToCodeFragments(from.cache(o, LEVEL_OP)), fromDecl = ref4[0], fromRef = ref4[1];
-      } else {
-        fromDecl = fromRef = '0';
-      }
-      if (to) {
-        if ((from != null ? from.isNumber() : void 0) && to.isNumber()) {
-          to = to.compile(o) - fromRef;
-          if (!exclusive) {
-            to += 1;
-          }
-        } else {
-          to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
-          if (!exclusive) {
-            to += ' + 1';
-          }
-        }
-      } else {
-        to = "9e9";
-      }
-      ref5 = this.value.cache(o, LEVEL_LIST), valDef = ref5[0], valRef = ref5[1];
-      answer = [].concat(this.makeCode("[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat("), valDef, this.makeCode(")), "), valRef);
-      if (o.level > LEVEL_TOP) {
-        return this.wrapInBraces(answer);
-      } else {
-        return answer;
-      }
-    };
-
-    return Assign;
-
-  })(Base);
-
-  exports.Code = Code = (function(superClass1) {
-    extend1(Code, superClass1);
-
-    function Code(params, body, tag) {
-      this.params = params || [];
-      this.body = body || new Block;
-      this.bound = tag === 'boundfunc';
-      this.isGenerator = !!this.body.contains(function(node) {
-        return (node instanceof Op && node.isYield()) || node instanceof YieldReturn;
-      });
-    }
-
-    Code.prototype.children = ['params', 'body'];
-
-    Code.prototype.isStatement = function() {
-      return !!this.ctor;
-    };
-
-    Code.prototype.jumps = NO;
-
-    Code.prototype.makeScope = function(parentScope) {
-      return new Scope(parentScope, this.body, this);
-    };
-
-    Code.prototype.compileNode = function(o) {
-      var answer, boundfunc, code, exprs, i, j, k, l, len1, len2, len3, len4, len5, len6, lit, m, p, param, params, q, r, ref, ref3, ref4, ref5, ref6, ref7, ref8, splats, uniqs, val, wasEmpty, wrapper;
-      if (this.bound && ((ref3 = o.scope.method) != null ? ref3.bound : void 0)) {
-        this.context = o.scope.method.context;
-      }
-      if (this.bound && !this.context) {
-        this.context = '_this';
-        wrapper = new Code([new Param(new IdentifierLiteral(this.context))], new Block([this]));
-        boundfunc = new Call(wrapper, [new ThisLiteral]);
-        boundfunc.updateLocationDataIfMissing(this.locationData);
-        return boundfunc.compileNode(o);
-      }
-      o.scope = del(o, 'classScope') || this.makeScope(o.scope);
-      o.scope.shared = del(o, 'sharedScope');
-      o.indent += TAB;
-      delete o.bare;
-      delete o.isExistentialEquals;
-      params = [];
-      exprs = [];
-      ref4 = this.params;
-      for (j = 0, len1 = ref4.length; j < len1; j++) {
-        param = ref4[j];
-        if (!(param instanceof Expansion)) {
-          o.scope.parameter(param.asReference(o));
-        }
-      }
-      ref5 = this.params;
-      for (k = 0, len2 = ref5.length; k < len2; k++) {
-        param = ref5[k];
-        if (!(param.splat || param instanceof Expansion)) {
-          continue;
-        }
-        ref6 = this.params;
-        for (l = 0, len3 = ref6.length; l < len3; l++) {
-          p = ref6[l];
-          if (!(p instanceof Expansion) && p.name.value) {
-            o.scope.add(p.name.value, 'var', true);
-          }
-        }
-        splats = new Assign(new Value(new Arr((function() {
-          var len4, m, ref7, results;
-          ref7 = this.params;
-          results = [];
-          for (m = 0, len4 = ref7.length; m < len4; m++) {
-            p = ref7[m];
-            results.push(p.asReference(o));
-          }
-          return results;
-        }).call(this))), new Value(new IdentifierLiteral('arguments')));
-        break;
-      }
-      ref7 = this.params;
-      for (m = 0, len4 = ref7.length; m < len4; m++) {
-        param = ref7[m];
-        if (param.isComplex()) {
-          val = ref = param.asReference(o);
-          if (param.value) {
-            val = new Op('?', ref, param.value);
-          }
-          exprs.push(new Assign(new Value(param.name), val, '=', {
-            param: true
-          }));
-        } else {
-          ref = param;
-          if (param.value) {
-            lit = new Literal(ref.name.value + ' == null');
-            val = new Assign(new Value(param.name), param.value, '=');
-            exprs.push(new If(lit, val));
-          }
-        }
-        if (!splats) {
-          params.push(ref);
-        }
-      }
-      wasEmpty = this.body.isEmpty();
-      if (splats) {
-        exprs.unshift(splats);
-      }
-      if (exprs.length) {
-        (ref8 = this.body.expressions).unshift.apply(ref8, exprs);
-      }
-      for (i = q = 0, len5 = params.length; q < len5; i = ++q) {
-        p = params[i];
-        params[i] = p.compileToFragments(o);
-        o.scope.parameter(fragmentsToText(params[i]));
-      }
-      uniqs = [];
-      this.eachParamName(function(name, node) {
-        if (indexOf.call(uniqs, name) >= 0) {
-          node.error("multiple parameters named " + name);
-        }
-        return uniqs.push(name);
-      });
-      if (!(wasEmpty || this.noReturn)) {
-        this.body.makeReturn();
-      }
-      code = 'function';
-      if (this.isGenerator) {
-        code += '*';
-      }
-      if (this.ctor) {
-        code += ' ' + this.name;
-      }
-      code += '(';
-      answer = [this.makeCode(code)];
-      for (i = r = 0, len6 = params.length; r < len6; i = ++r) {
-        p = params[i];
-        if (i) {
-          answer.push(this.makeCode(", "));
-        }
-        answer.push.apply(answer, p);
-      }
-      answer.push(this.makeCode(') {'));
-      if (!this.body.isEmpty()) {
-        answer = answer.concat(this.makeCode("\n"), this.body.compileWithDeclarations(o), this.makeCode("\n" + this.tab));
-      }
-      answer.push(this.makeCode('}'));
-      if (this.ctor) {
-        return [this.makeCode(this.tab)].concat(slice.call(answer));
-      }
-      if (this.front || (o.level >= LEVEL_ACCESS)) {
-        return this.wrapInBraces(answer);
-      } else {
-        return answer;
-      }
-    };
-
-    Code.prototype.eachParamName = function(iterator) {
-      var j, len1, param, ref3, results;
-      ref3 = this.params;
-      results = [];
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        param = ref3[j];
-        results.push(param.eachName(iterator));
-      }
-      return results;
-    };
-
-    Code.prototype.traverseChildren = function(crossScope, func) {
-      if (crossScope) {
-        return Code.__super__.traverseChildren.call(this, crossScope, func);
-      }
-    };
-
-    return Code;
-
-  })(Base);
-
-  exports.Param = Param = (function(superClass1) {
-    extend1(Param, superClass1);
-
-    function Param(name1, value1, splat) {
-      var message, token;
-      this.name = name1;
-      this.value = value1;
-      this.splat = splat;
-      message = isUnassignable(this.name.unwrapAll().value);
-      if (message) {
-        this.name.error(message);
-      }
-      if (this.name instanceof Obj && this.name.generated) {
-        token = this.name.objects[0].operatorToken;
-        token.error("unexpected " + token.value);
-      }
-    }
-
-    Param.prototype.children = ['name', 'value'];
-
-    Param.prototype.compileToFragments = function(o) {
-      return this.name.compileToFragments(o, LEVEL_LIST);
-    };
-
-    Param.prototype.asReference = function(o) {
-      var name, node;
-      if (this.reference) {
-        return this.reference;
-      }
-      node = this.name;
-      if (node["this"]) {
-        name = node.properties[0].name.value;
-        if (indexOf.call(JS_FORBIDDEN, name) >= 0) {
-          name = "_" + name;
-        }
-        node = new IdentifierLiteral(o.scope.freeVariable(name));
-      } else if (node.isComplex()) {
-        node = new IdentifierLiteral(o.scope.freeVariable('arg'));
-      }
-      node = new Value(node);
-      if (this.splat) {
-        node = new Splat(node);
-      }
-      node.updateLocationDataIfMissing(this.locationData);
-      return this.reference = node;
-    };
-
-    Param.prototype.isComplex = function() {
-      return this.name.isComplex();
-    };
-
-    Param.prototype.eachName = function(iterator, name) {
-      var atParam, j, len1, node, obj, ref3, ref4;
-      if (name == null) {
-        name = this.name;
-      }
-      atParam = function(obj) {
-        return iterator("@" + obj.properties[0].name.value, obj);
-      };
-      if (name instanceof Literal) {
-        return iterator(name.value, name);
-      }
-      if (name instanceof Value) {
-        return atParam(name);
-      }
-      ref4 = (ref3 = name.objects) != null ? ref3 : [];
-      for (j = 0, len1 = ref4.length; j < len1; j++) {
-        obj = ref4[j];
-        if (obj instanceof Assign && (obj.context == null)) {
-          obj = obj.variable;
-        }
-        if (obj instanceof Assign) {
-          if (obj.value instanceof Assign) {
-            obj = obj.value;
-          }
-          this.eachName(iterator, obj.value.unwrap());
-        } else if (obj instanceof Splat) {
-          node = obj.name.unwrap();
-          iterator(node.value, node);
-        } else if (obj instanceof Value) {
-          if (obj.isArray() || obj.isObject()) {
-            this.eachName(iterator, obj.base);
-          } else if (obj["this"]) {
-            atParam(obj);
-          } else {
-            iterator(obj.base.value, obj.base);
-          }
-        } else if (!(obj instanceof Expansion)) {
-          obj.error("illegal parameter " + (obj.compile()));
-        }
-      }
-    };
-
-    return Param;
-
-  })(Base);
-
-  exports.Splat = Splat = (function(superClass1) {
-    extend1(Splat, superClass1);
-
-    Splat.prototype.children = ['name'];
-
-    Splat.prototype.isAssignable = YES;
-
-    function Splat(name) {
-      this.name = name.compile ? name : new Literal(name);
-    }
-
-    Splat.prototype.assigns = function(name) {
-      return this.name.assigns(name);
-    };
-
-    Splat.prototype.compileToFragments = function(o) {
-      return this.name.compileToFragments(o);
-    };
-
-    Splat.prototype.unwrap = function() {
-      return this.name;
-    };
-
-    Splat.compileSplattedArray = function(o, list, apply) {
-      var args, base, compiledNode, concatPart, fragments, i, index, j, last, len1, node;
-      index = -1;
-      while ((node = list[++index]) && !(node instanceof Splat)) {
-        continue;
-      }
-      if (index >= list.length) {
-        return [];
-      }
-      if (list.length === 1) {
-        node = list[0];
-        fragments = node.compileToFragments(o, LEVEL_LIST);
-        if (apply) {
-          return fragments;
-        }
-        return [].concat(node.makeCode((utility('slice', o)) + ".call("), fragments, node.makeCode(")"));
-      }
-      args = list.slice(index);
-      for (i = j = 0, len1 = args.length; j < len1; i = ++j) {
-        node = args[i];
-        compiledNode = node.compileToFragments(o, LEVEL_LIST);
-        args[i] = node instanceof Splat ? [].concat(node.makeCode((utility('slice', o)) + ".call("), compiledNode, node.makeCode(")")) : [].concat(node.makeCode("["), compiledNode, node.makeCode("]"));
-      }
-      if (index === 0) {
-        node = list[0];
-        concatPart = node.joinFragmentArrays(args.slice(1), ', ');
-        return args[0].concat(node.makeCode(".concat("), concatPart, node.makeCode(")"));
-      }
-      base = (function() {
-        var k, len2, ref3, results;
-        ref3 = list.slice(0, index);
-        results = [];
-        for (k = 0, len2 = ref3.length; k < len2; k++) {
-          node = ref3[k];
-          results.push(node.compileToFragments(o, LEVEL_LIST));
-        }
-        return results;
-      })();
-      base = list[0].joinFragmentArrays(base, ', ');
-      concatPart = list[index].joinFragmentArrays(args, ', ');
-      last = list[list.length - 1];
-      return [].concat(list[0].makeCode("["), base, list[index].makeCode("].concat("), concatPart, last.makeCode(")"));
-    };
-
-    return Splat;
-
-  })(Base);
-
-  exports.Expansion = Expansion = (function(superClass1) {
-    extend1(Expansion, superClass1);
-
-    function Expansion() {
-      return Expansion.__super__.constructor.apply(this, arguments);
-    }
-
-    Expansion.prototype.isComplex = NO;
-
-    Expansion.prototype.compileNode = function(o) {
-      return this.error('Expansion must be used inside a destructuring assignment or parameter list');
-    };
-
-    Expansion.prototype.asReference = function(o) {
-      return this;
-    };
-
-    Expansion.prototype.eachName = function(iterator) {};
-
-    return Expansion;
-
-  })(Base);
-
-  exports.While = While = (function(superClass1) {
-    extend1(While, superClass1);
-
-    function While(condition, options) {
-      this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;
-      this.guard = options != null ? options.guard : void 0;
-    }
-
-    While.prototype.children = ['condition', 'guard', 'body'];
-
-    While.prototype.isStatement = YES;
-
-    While.prototype.makeReturn = function(res) {
-      if (res) {
-        return While.__super__.makeReturn.apply(this, arguments);
-      } else {
-        this.returns = !this.jumps({
-          loop: true
-        });
-        return this;
-      }
-    };
-
-    While.prototype.addBody = function(body1) {
-      this.body = body1;
-      return this;
-    };
-
-    While.prototype.jumps = function() {
-      var expressions, j, jumpNode, len1, node;
-      expressions = this.body.expressions;
-      if (!expressions.length) {
-        return false;
-      }
-      for (j = 0, len1 = expressions.length; j < len1; j++) {
-        node = expressions[j];
-        if (jumpNode = node.jumps({
-          loop: true
-        })) {
-          return jumpNode;
-        }
-      }
-      return false;
-    };
-
-    While.prototype.compileNode = function(o) {
-      var answer, body, rvar, set;
-      o.indent += TAB;
-      set = '';
-      body = this.body;
-      if (body.isEmpty()) {
-        body = this.makeCode('');
-      } else {
-        if (this.returns) {
-          body.makeReturn(rvar = o.scope.freeVariable('results'));
-          set = "" + this.tab + rvar + " = [];\n";
-        }
-        if (this.guard) {
-          if (body.expressions.length > 1) {
-            body.expressions.unshift(new If((new Parens(this.guard)).invert(), new StatementLiteral("continue")));
-          } else {
-            if (this.guard) {
-              body = Block.wrap([new If(this.guard, body)]);
-            }
-          }
-        }
-        body = [].concat(this.makeCode("\n"), body.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab));
-      }
-      answer = [].concat(this.makeCode(set + this.tab + "while ("), this.condition.compileToFragments(o, LEVEL_PAREN), this.makeCode(") {"), body, this.makeCode("}"));
-      if (this.returns) {
-        answer.push(this.makeCode("\n" + this.tab + "return " + rvar + ";"));
-      }
-      return answer;
-    };
-
-    return While;
-
-  })(Base);
-
-  exports.Op = Op = (function(superClass1) {
-    var CONVERSIONS, INVERSIONS;
-
-    extend1(Op, superClass1);
-
-    function Op(op, first, second, flip) {
-      if (op === 'in') {
-        return new In(first, second);
-      }
-      if (op === 'do') {
-        return this.generateDo(first);
-      }
-      if (op === 'new') {
-        if (first instanceof Call && !first["do"] && !first.isNew) {
-          return first.newInstance();
-        }
-        if (first instanceof Code && first.bound || first["do"]) {
-          first = new Parens(first);
-        }
-      }
-      this.operator = CONVERSIONS[op] || op;
-      this.first = first;
-      this.second = second;
-      this.flip = !!flip;
-      return this;
-    }
-
-    CONVERSIONS = {
-      '==': '===',
-      '!=': '!==',
-      'of': 'in',
-      'yieldfrom': 'yield*'
-    };
-
-    INVERSIONS = {
-      '!==': '===',
-      '===': '!=='
-    };
-
-    Op.prototype.children = ['first', 'second'];
-
-    Op.prototype.isNumber = function() {
-      var ref3;
-      return this.isUnary() && ((ref3 = this.operator) === '+' || ref3 === '-') && this.first instanceof Value && this.first.isNumber();
-    };
-
-    Op.prototype.isYield = function() {
-      var ref3;
-      return (ref3 = this.operator) === 'yield' || ref3 === 'yield*';
-    };
-
-    Op.prototype.isUnary = function() {
-      return !this.second;
-    };
-
-    Op.prototype.isComplex = function() {
-      return !this.isNumber();
-    };
-
-    Op.prototype.isChainable = function() {
-      var ref3;
-      return (ref3 = this.operator) === '<' || ref3 === '>' || ref3 === '>=' || ref3 === '<=' || ref3 === '===' || ref3 === '!==';
-    };
-
-    Op.prototype.invert = function() {
-      var allInvertable, curr, fst, op, ref3;
-      if (this.isChainable() && this.first.isChainable()) {
-        allInvertable = true;
-        curr = this;
-        while (curr && curr.operator) {
-          allInvertable && (allInvertable = curr.operator in INVERSIONS);
-          curr = curr.first;
-        }
-        if (!allInvertable) {
-          return new Parens(this).invert();
-        }
-        curr = this;
-        while (curr && curr.operator) {
-          curr.invert = !curr.invert;
-          curr.operator = INVERSIONS[curr.operator];
-          curr = curr.first;
-        }
-        return this;
-      } else if (op = INVERSIONS[this.operator]) {
-        this.operator = op;
-        if (this.first.unwrap() instanceof Op) {
-          this.first.invert();
-        }
-        return this;
-      } else if (this.second) {
-        return new Parens(this).invert();
-      } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((ref3 = fst.operator) === '!' || ref3 === 'in' || ref3 === 'instanceof')) {
-        return fst;
-      } else {
-        return new Op('!', this);
-      }
-    };
-
-    Op.prototype.unfoldSoak = function(o) {
-      var ref3;
-      return ((ref3 = this.operator) === '++' || ref3 === '--' || ref3 === 'delete') && unfoldSoak(o, this, 'first');
-    };
-
-    Op.prototype.generateDo = function(exp) {
-      var call, func, j, len1, param, passedParams, ref, ref3;
-      passedParams = [];
-      func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;
-      ref3 = func.params || [];
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        param = ref3[j];
-        if (param.value) {
-          passedParams.push(param.value);
-          delete param.value;
-        } else {
-          passedParams.push(param);
-        }
-      }
-      call = new Call(exp, passedParams);
-      call["do"] = true;
-      return call;
-    };
-
-    Op.prototype.compileNode = function(o) {
-      var answer, isChain, lhs, message, ref3, rhs;
-      isChain = this.isChainable() && this.first.isChainable();
-      if (!isChain) {
-        this.first.front = this.front;
-      }
-      if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
-        this.error('delete operand may not be argument or var');
-      }
-      if ((ref3 = this.operator) === '--' || ref3 === '++') {
-        message = isUnassignable(this.first.unwrapAll().value);
-        if (message) {
-          this.first.error(message);
-        }
-      }
-      if (this.isYield()) {
-        return this.compileYield(o);
-      }
-      if (this.isUnary()) {
-        return this.compileUnary(o);
-      }
-      if (isChain) {
-        return this.compileChain(o);
-      }
-      switch (this.operator) {
-        case '?':
-          return this.compileExistence(o);
-        case '**':
-          return this.compilePower(o);
-        case '//':
-          return this.compileFloorDivision(o);
-        case '%%':
-          return this.compileModulo(o);
-        default:
-          lhs = this.first.compileToFragments(o, LEVEL_OP);
-          rhs = this.second.compileToFragments(o, LEVEL_OP);
-          answer = [].concat(lhs, this.makeCode(" " + this.operator + " "), rhs);
-          if (o.level <= LEVEL_OP) {
-            return answer;
-          } else {
-            return this.wrapInBraces(answer);
-          }
-      }
-    };
-
-    Op.prototype.compileChain = function(o) {
-      var fragments, fst, ref3, shared;
-      ref3 = this.first.second.cache(o), this.first.second = ref3[0], shared = ref3[1];
-      fst = this.first.compileToFragments(o, LEVEL_OP);
-      fragments = fst.concat(this.makeCode(" " + (this.invert ? '&&' : '||') + " "), shared.compileToFragments(o), this.makeCode(" " + this.operator + " "), this.second.compileToFragments(o, LEVEL_OP));
-      return this.wrapInBraces(fragments);
-    };
-
-    Op.prototype.compileExistence = function(o) {
-      var fst, ref;
-      if (this.first.isComplex()) {
-        ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
-        fst = new Parens(new Assign(ref, this.first));
-      } else {
-        fst = this.first;
-        ref = fst;
-      }
-      return new If(new Existence(fst), ref, {
-        type: 'if'
-      }).addElse(this.second).compileToFragments(o);
-    };
-
-    Op.prototype.compileUnary = function(o) {
-      var op, parts, plusMinus;
-      parts = [];
-      op = this.operator;
-      parts.push([this.makeCode(op)]);
-      if (op === '!' && this.first instanceof Existence) {
-        this.first.negated = !this.first.negated;
-        return this.first.compileToFragments(o);
-      }
-      if (o.level >= LEVEL_ACCESS) {
-        return (new Parens(this)).compileToFragments(o);
-      }
-      plusMinus = op === '+' || op === '-';
-      if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
-        parts.push([this.makeCode(' ')]);
-      }
-      if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) {
-        this.first = new Parens(this.first);
-      }
-      parts.push(this.first.compileToFragments(o, LEVEL_OP));
-      if (this.flip) {
-        parts.reverse();
-      }
-      return this.joinFragmentArrays(parts, '');
-    };
-
-    Op.prototype.compileYield = function(o) {
-      var op, parts, ref3;
-      parts = [];
-      op = this.operator;
-      if (o.scope.parent == null) {
-        this.error('yield can only occur inside functions');
-      }
-      if (indexOf.call(Object.keys(this.first), 'expression') >= 0 && !(this.first instanceof Throw)) {
-        if (this.first.expression != null) {
-          parts.push(this.first.expression.compileToFragments(o, LEVEL_OP));
-        }
-      } else {
-        if (o.level >= LEVEL_PAREN) {
-          parts.push([this.makeCode("(")]);
-        }
-        parts.push([this.makeCode(op)]);
-        if (((ref3 = this.first.base) != null ? ref3.value : void 0) !== '') {
-          parts.push([this.makeCode(" ")]);
-        }
-        parts.push(this.first.compileToFragments(o, LEVEL_OP));
-        if (o.level >= LEVEL_PAREN) {
-          parts.push([this.makeCode(")")]);
-        }
-      }
-      return this.joinFragmentArrays(parts, '');
-    };
-
-    Op.prototype.compilePower = function(o) {
-      var pow;
-      pow = new Value(new IdentifierLiteral('Math'), [new Access(new PropertyName('pow'))]);
-      return new Call(pow, [this.first, this.second]).compileToFragments(o);
-    };
-
-    Op.prototype.compileFloorDivision = function(o) {
-      var div, floor;
-      floor = new Value(new IdentifierLiteral('Math'), [new Access(new PropertyName('floor'))]);
-      div = new Op('/', this.first, this.second);
-      return new Call(floor, [div]).compileToFragments(o);
-    };
-
-    Op.prototype.compileModulo = function(o) {
-      var mod;
-      mod = new Value(new Literal(utility('modulo', o)));
-      return new Call(mod, [this.first, this.second]).compileToFragments(o);
-    };
-
-    Op.prototype.toString = function(idt) {
-      return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator);
-    };
-
-    return Op;
-
-  })(Base);
-
-  exports.In = In = (function(superClass1) {
-    extend1(In, superClass1);
-
-    function In(object, array) {
-      this.object = object;
-      this.array = array;
-    }
-
-    In.prototype.children = ['object', 'array'];
-
-    In.prototype.invert = NEGATE;
-
-    In.prototype.compileNode = function(o) {
-      var hasSplat, j, len1, obj, ref3;
-      if (this.array instanceof Value && this.array.isArray() && this.array.base.objects.length) {
-        ref3 = this.array.base.objects;
-        for (j = 0, len1 = ref3.length; j < len1; j++) {
-          obj = ref3[j];
-          if (!(obj instanceof Splat)) {
-            continue;
-          }
-          hasSplat = true;
-          break;
-        }
-        if (!hasSplat) {
-          return this.compileOrTest(o);
-        }
-      }
-      return this.compileLoopTest(o);
-    };
-
-    In.prototype.compileOrTest = function(o) {
-      var cmp, cnj, i, item, j, len1, ref, ref3, ref4, ref5, sub, tests;
-      ref3 = this.object.cache(o, LEVEL_OP), sub = ref3[0], ref = ref3[1];
-      ref4 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = ref4[0], cnj = ref4[1];
-      tests = [];
-      ref5 = this.array.base.objects;
-      for (i = j = 0, len1 = ref5.length; j < len1; i = ++j) {
-        item = ref5[i];
-        if (i) {
-          tests.push(this.makeCode(cnj));
-        }
-        tests = tests.concat((i ? ref : sub), this.makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS));
-      }
-      if (o.level < LEVEL_OP) {
-        return tests;
-      } else {
-        return this.wrapInBraces(tests);
-      }
-    };
-
-    In.prototype.compileLoopTest = function(o) {
-      var fragments, ref, ref3, sub;
-      ref3 = this.object.cache(o, LEVEL_LIST), sub = ref3[0], ref = ref3[1];
-      fragments = [].concat(this.makeCode(utility('indexOf', o) + ".call("), this.array.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), ref, this.makeCode(") " + (this.negated ? '< 0' : '>= 0')));
-      if (fragmentsToText(sub) === fragmentsToText(ref)) {
-        return fragments;
-      }
-      fragments = sub.concat(this.makeCode(', '), fragments);
-      if (o.level < LEVEL_LIST) {
-        return fragments;
-      } else {
-        return this.wrapInBraces(fragments);
-      }
-    };
-
-    In.prototype.toString = function(idt) {
-      return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : ''));
-    };
-
-    return In;
-
-  })(Base);
-
-  exports.Try = Try = (function(superClass1) {
-    extend1(Try, superClass1);
-
-    function Try(attempt, errorVariable, recovery, ensure) {
-      this.attempt = attempt;
-      this.errorVariable = errorVariable;
-      this.recovery = recovery;
-      this.ensure = ensure;
-    }
-
-    Try.prototype.children = ['attempt', 'recovery', 'ensure'];
-
-    Try.prototype.isStatement = YES;
-
-    Try.prototype.jumps = function(o) {
-      var ref3;
-      return this.attempt.jumps(o) || ((ref3 = this.recovery) != null ? ref3.jumps(o) : void 0);
-    };
-
-    Try.prototype.makeReturn = function(res) {
-      if (this.attempt) {
-        this.attempt = this.attempt.makeReturn(res);
-      }
-      if (this.recovery) {
-        this.recovery = this.recovery.makeReturn(res);
-      }
-      return this;
-    };
-
-    Try.prototype.compileNode = function(o) {
-      var catchPart, ensurePart, generatedErrorVariableName, message, placeholder, tryPart;
-      o.indent += TAB;
-      tryPart = this.attempt.compileToFragments(o, LEVEL_TOP);
-      catchPart = this.recovery ? (generatedErrorVariableName = o.scope.freeVariable('error', {
-        reserve: false
-      }), placeholder = new IdentifierLiteral(generatedErrorVariableName), this.errorVariable ? (message = isUnassignable(this.errorVariable.unwrapAll().value), message ? this.errorVariable.error(message) : void 0, this.recovery.unshift(new Assign(this.errorVariable, placeholder))) : void 0, [].concat(this.makeCode(" catch ("), placeholder.compileToFragments(o), this.makeCode(") {\n"), this.recovery.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}"))) : !(this.ensure || this.recovery) ? (generatedErrorVariableName = o.scope.freeVariable('error', {
-        reserve: false
-      }), [this.makeCode(" catch (" + generatedErrorVariableName + ") {}")]) : [];
-      ensurePart = this.ensure ? [].concat(this.makeCode(" finally {\n"), this.ensure.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}")) : [];
-      return [].concat(this.makeCode(this.tab + "try {\n"), tryPart, this.makeCode("\n" + this.tab + "}"), catchPart, ensurePart);
-    };
-
-    return Try;
-
-  })(Base);
-
-  exports.Throw = Throw = (function(superClass1) {
-    extend1(Throw, superClass1);
-
-    function Throw(expression) {
-      this.expression = expression;
-    }
-
-    Throw.prototype.children = ['expression'];
-
-    Throw.prototype.isStatement = YES;
-
-    Throw.prototype.jumps = NO;
-
-    Throw.prototype.makeReturn = THIS;
-
-    Throw.prototype.compileNode = function(o) {
-      return [].concat(this.makeCode(this.tab + "throw "), this.expression.compileToFragments(o), this.makeCode(";"));
-    };
-
-    return Throw;
-
-  })(Base);
-
-  exports.Existence = Existence = (function(superClass1) {
-    extend1(Existence, superClass1);
-
-    function Existence(expression) {
-      this.expression = expression;
-    }
-
-    Existence.prototype.children = ['expression'];
-
-    Existence.prototype.invert = NEGATE;
-
-    Existence.prototype.compileNode = function(o) {
-      var cmp, cnj, code, ref3;
-      this.expression.front = this.front;
-      code = this.expression.compile(o, LEVEL_OP);
-      if (this.expression.unwrap() instanceof IdentifierLiteral && !o.scope.check(code)) {
-        ref3 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = ref3[0], cnj = ref3[1];
-        code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null";
-      } else {
-        code = code + " " + (this.negated ? '==' : '!=') + " null";
-      }
-      return [this.makeCode(o.level <= LEVEL_COND ? code : "(" + code + ")")];
-    };
-
-    return Existence;
-
-  })(Base);
-
-  exports.Parens = Parens = (function(superClass1) {
-    extend1(Parens, superClass1);
-
-    function Parens(body1) {
-      this.body = body1;
-    }
-
-    Parens.prototype.children = ['body'];
-
-    Parens.prototype.unwrap = function() {
-      return this.body;
-    };
-
-    Parens.prototype.isComplex = function() {
-      return this.body.isComplex();
-    };
-
-    Parens.prototype.compileNode = function(o) {
-      var bare, expr, fragments;
-      expr = this.body.unwrap();
-      if (expr instanceof Value && expr.isAtomic()) {
-        expr.front = this.front;
-        return expr.compileToFragments(o);
-      }
-      fragments = expr.compileToFragments(o, LEVEL_PAREN);
-      bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));
-      if (bare) {
-        return fragments;
-      } else {
-        return this.wrapInBraces(fragments);
-      }
-    };
-
-    return Parens;
-
-  })(Base);
-
-  exports.StringWithInterpolations = StringWithInterpolations = (function(superClass1) {
-    extend1(StringWithInterpolations, superClass1);
-
-    function StringWithInterpolations() {
-      return StringWithInterpolations.__super__.constructor.apply(this, arguments);
-    }
-
-    StringWithInterpolations.prototype.compileNode = function(o) {
-      var element, elements, expr, fragments, j, len1, value;
-      if (!o.inTaggedTemplateCall) {
-        return StringWithInterpolations.__super__.compileNode.apply(this, arguments);
-      }
-      expr = this.body.unwrap();
-      elements = [];
-      expr.traverseChildren(false, function(node) {
-        if (node instanceof StringLiteral) {
-          elements.push(node);
-          return true;
-        } else if (node instanceof Parens) {
-          elements.push(node);
-          return false;
-        }
-        return true;
-      });
-      fragments = [];
-      fragments.push(this.makeCode('`'));
-      for (j = 0, len1 = elements.length; j < len1; j++) {
-        element = elements[j];
-        if (element instanceof StringLiteral) {
-          value = element.value.slice(1, -1);
-          value = value.replace(/(\\*)(`|\$\{)/g, function(match, backslashes, toBeEscaped) {
-            if (backslashes.length % 2 === 0) {
-              return backslashes + "\\" + toBeEscaped;
-            } else {
-              return match;
-            }
-          });
-          fragments.push(this.makeCode(value));
-        } else {
-          fragments.push(this.makeCode('${'));
-          fragments.push.apply(fragments, element.compileToFragments(o, LEVEL_PAREN));
-          fragments.push(this.makeCode('}'));
-        }
-      }
-      fragments.push(this.makeCode('`'));
-      return fragments;
-    };
-
-    return StringWithInterpolations;
-
-  })(Parens);
-
-  exports.For = For = (function(superClass1) {
-    extend1(For, superClass1);
-
-    function For(body, source) {
-      var ref3;
-      this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;
-      this.body = Block.wrap([body]);
-      this.own = !!source.own;
-      this.object = !!source.object;
-      this.from = !!source.from;
-      if (this.from && this.index) {
-        this.index.error('cannot use index with for-from');
-      }
-      if (this.own && !this.object) {
-        source.ownTag.error("cannot use own with for-" + (this.from ? 'from' : 'in'));
-      }
-      if (this.object) {
-        ref3 = [this.index, this.name], this.name = ref3[0], this.index = ref3[1];
-      }
-      if (this.index instanceof Value) {
-        this.index.error('index cannot be a pattern matching expression');
-      }
-      this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length && !this.from;
-      this.pattern = this.name instanceof Value;
-      if (this.range && this.index) {
-        this.index.error('indexes do not apply to range loops');
-      }
-      if (this.range && this.pattern) {
-        this.name.error('cannot pattern match over range loops');
-      }
-      this.returns = false;
-    }
-
-    For.prototype.children = ['body', 'source', 'guard', 'step'];
-
-    For.prototype.compileNode = function(o) {
-      var body, bodyFragments, compare, compareDown, declare, declareDown, defPart, defPartFragments, down, forPartFragments, guardPart, idt1, increment, index, ivar, kvar, kvarAssign, last, lvar, name, namePart, ref, ref3, ref4, resultPart, returnResult, rvar, scope, source, step, stepNum, stepVar, svar, varPart;
-      body = Block.wrap([this.body]);
-      ref3 = body.expressions, last = ref3[ref3.length - 1];
-      if ((last != null ? last.jumps() : void 0) instanceof Return) {
-        this.returns = false;
-      }
-      source = this.range ? this.source.base : this.source;
-      scope = o.scope;
-      if (!this.pattern) {
-        name = this.name && (this.name.compile(o, LEVEL_LIST));
-      }
-      index = this.index && (this.index.compile(o, LEVEL_LIST));
-      if (name && !this.pattern) {
-        scope.find(name);
-      }
-      if (index) {
-        scope.find(index);
-      }
-      if (this.returns) {
-        rvar = scope.freeVariable('results');
-      }
-      if (this.from) {
-        if (this.pattern) {
-          ivar = scope.freeVariable('x', {
-            single: true
-          });
-        }
-      } else {
-        ivar = (this.object && index) || scope.freeVariable('i', {
-          single: true
-        });
-      }
-      kvar = ((this.range || this.from) && name) || index || ivar;
-      kvarAssign = kvar !== ivar ? kvar + " = " : "";
-      if (this.step && !this.range) {
-        ref4 = this.cacheToCodeFragments(this.step.cache(o, LEVEL_LIST, isComplexOrAssignable)), step = ref4[0], stepVar = ref4[1];
-        if (this.step.isNumber()) {
-          stepNum = Number(stepVar);
-        }
-      }
-      if (this.pattern) {
-        name = ivar;
-      }
-      varPart = '';
-      guardPart = '';
-      defPart = '';
-      idt1 = this.tab + TAB;
-      if (this.range) {
-        forPartFragments = source.compileToFragments(merge(o, {
-          index: ivar,
-          name: name,
-          step: this.step,
-          isComplex: isComplexOrAssignable
-        }));
-      } else {
-        svar = this.source.compile(o, LEVEL_LIST);
-        if ((name || this.own) && !(this.source.unwrap() instanceof IdentifierLiteral)) {
-          defPart += "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n";
-          svar = ref;
-        }
-        if (name && !this.pattern && !this.from) {
-          namePart = name + " = " + svar + "[" + kvar + "]";
-        }
-        if (!this.object && !this.from) {
-          if (step !== stepVar) {
-            defPart += "" + this.tab + step + ";\n";
-          }
-          down = stepNum < 0;
-          if (!(this.step && (stepNum != null) && down)) {
-            lvar = scope.freeVariable('len');
-          }
-          declare = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length";
-          declareDown = "" + kvarAssign + ivar + " = " + svar + ".length - 1";
-          compare = ivar + " < " + lvar;
-          compareDown = ivar + " >= 0";
-          if (this.step) {
-            if (stepNum != null) {
-              if (down) {
-                compare = compareDown;
-                declare = declareDown;
-              }
-            } else {
-              compare = stepVar + " > 0 ? " + compare + " : " + compareDown;
-              declare = "(" + stepVar + " > 0 ? (" + declare + ") : " + declareDown + ")";
-            }
-            increment = ivar + " += " + stepVar;
-          } else {
-            increment = "" + (kvar !== ivar ? "++" + ivar : ivar + "++");
-          }
-          forPartFragments = [this.makeCode(declare + "; " + compare + "; " + kvarAssign + increment)];
-        }
-      }
-      if (this.returns) {
-        resultPart = "" + this.tab + rvar + " = [];\n";
-        returnResult = "\n" + this.tab + "return " + rvar + ";";
-        body.makeReturn(rvar);
-      }
-      if (this.guard) {
-        if (body.expressions.length > 1) {
-          body.expressions.unshift(new If((new Parens(this.guard)).invert(), new StatementLiteral("continue")));
-        } else {
-          if (this.guard) {
-            body = Block.wrap([new If(this.guard, body)]);
-          }
-        }
-      }
-      if (this.pattern) {
-        body.expressions.unshift(new Assign(this.name, this.from ? new IdentifierLiteral(kvar) : new Literal(svar + "[" + kvar + "]")));
-      }
-      defPartFragments = [].concat(this.makeCode(defPart), this.pluckDirectCall(o, body));
-      if (namePart) {
-        varPart = "\n" + idt1 + namePart + ";";
-      }
-      if (this.object) {
-        forPartFragments = [this.makeCode(kvar + " in " + svar)];
-        if (this.own) {
-          guardPart = "\n" + idt1 + "if (!" + (utility('hasProp', o)) + ".call(" + svar + ", " + kvar + ")) continue;";
-        }
-      } else if (this.from) {
-        forPartFragments = [this.makeCode(kvar + " of " + svar)];
-      }
-      bodyFragments = body.compileToFragments(merge(o, {
-        indent: idt1
-      }), LEVEL_TOP);
-      if (bodyFragments && bodyFragments.length > 0) {
-        bodyFragments = [].concat(this.makeCode("\n"), bodyFragments, this.makeCode("\n"));
-      }
-      return [].concat(defPartFragments, this.makeCode("" + (resultPart || '') + this.tab + "for ("), forPartFragments, this.makeCode(") {" + guardPart + varPart), bodyFragments, this.makeCode(this.tab + "}" + (returnResult || '')));
-    };
-
-    For.prototype.pluckDirectCall = function(o, body) {
-      var base, defs, expr, fn, idx, j, len1, ref, ref3, ref4, ref5, ref6, ref7, ref8, ref9, val;
-      defs = [];
-      ref3 = body.expressions;
-      for (idx = j = 0, len1 = ref3.length; j < len1; idx = ++j) {
-        expr = ref3[idx];
-        expr = expr.unwrapAll();
-        if (!(expr instanceof Call)) {
-          continue;
-        }
-        val = (ref4 = expr.variable) != null ? ref4.unwrapAll() : void 0;
-        if (!((val instanceof Code) || (val instanceof Value && ((ref5 = val.base) != null ? ref5.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((ref6 = (ref7 = val.properties[0].name) != null ? ref7.value : void 0) === 'call' || ref6 === 'apply')))) {
-          continue;
-        }
-        fn = ((ref8 = val.base) != null ? ref8.unwrapAll() : void 0) || val;
-        ref = new IdentifierLiteral(o.scope.freeVariable('fn'));
-        base = new Value(ref);
-        if (val.base) {
-          ref9 = [base, val], val.base = ref9[0], base = ref9[1];
-        }
-        body.expressions[idx] = new Call(base, expr.args);
-        defs = defs.concat(this.makeCode(this.tab), new Assign(ref, fn).compileToFragments(o, LEVEL_TOP), this.makeCode(';\n'));
-      }
-      return defs;
-    };
-
-    return For;
-
-  })(While);
-
-  exports.Switch = Switch = (function(superClass1) {
-    extend1(Switch, superClass1);
-
-    function Switch(subject, cases, otherwise) {
-      this.subject = subject;
-      this.cases = cases;
-      this.otherwise = otherwise;
-    }
-
-    Switch.prototype.children = ['subject', 'cases', 'otherwise'];
-
-    Switch.prototype.isStatement = YES;
-
-    Switch.prototype.jumps = function(o) {
-      var block, conds, j, jumpNode, len1, ref3, ref4, ref5;
-      if (o == null) {
-        o = {
-          block: true
-        };
-      }
-      ref3 = this.cases;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        ref4 = ref3[j], conds = ref4[0], block = ref4[1];
-        if (jumpNode = block.jumps(o)) {
-          return jumpNode;
-        }
-      }
-      return (ref5 = this.otherwise) != null ? ref5.jumps(o) : void 0;
-    };
-
-    Switch.prototype.makeReturn = function(res) {
-      var j, len1, pair, ref3, ref4;
-      ref3 = this.cases;
-      for (j = 0, len1 = ref3.length; j < len1; j++) {
-        pair = ref3[j];
-        pair[1].makeReturn(res);
-      }
-      if (res) {
-        this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
-      }
-      if ((ref4 = this.otherwise) != null) {
-        ref4.makeReturn(res);
-      }
-      return this;
-    };
-
-    Switch.prototype.compileNode = function(o) {
-      var block, body, cond, conditions, expr, fragments, i, idt1, idt2, j, k, len1, len2, ref3, ref4, ref5;
-      idt1 = o.indent + TAB;
-      idt2 = o.indent = idt1 + TAB;
-      fragments = [].concat(this.makeCode(this.tab + "switch ("), (this.subject ? this.subject.compileToFragments(o, LEVEL_PAREN) : this.makeCode("false")), this.makeCode(") {\n"));
-      ref3 = this.cases;
-      for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {
-        ref4 = ref3[i], conditions = ref4[0], block = ref4[1];
-        ref5 = flatten([conditions]);
-        for (k = 0, len2 = ref5.length; k < len2; k++) {
-          cond = ref5[k];
-          if (!this.subject) {
-            cond = cond.invert();
-          }
-          fragments = fragments.concat(this.makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), this.makeCode(":\n"));
-        }
-        if ((body = block.compileToFragments(o, LEVEL_TOP)).length > 0) {
-          fragments = fragments.concat(body, this.makeCode('\n'));
-        }
-        if (i === this.cases.length - 1 && !this.otherwise) {
-          break;
-        }
-        expr = this.lastNonComment(block.expressions);
-        if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
-          continue;
-        }
-        fragments.push(cond.makeCode(idt2 + 'break;\n'));
-      }
-      if (this.otherwise && this.otherwise.expressions.length) {
-        fragments.push.apply(fragments, [this.makeCode(idt1 + "default:\n")].concat(slice.call(this.otherwise.compileToFragments(o, LEVEL_TOP)), [this.makeCode("\n")]));
-      }
-      fragments.push(this.makeCode(this.tab + '}'));
-      return fragments;
-    };
-
-    return Switch;
-
-  })(Base);
-
-  exports.If = If = (function(superClass1) {
-    extend1(If, superClass1);
-
-    function If(condition, body1, options) {
-      this.body = body1;
-      if (options == null) {
-        options = {};
-      }
-      this.condition = options.type === 'unless' ? condition.invert() : condition;
-      this.elseBody = null;
-      this.isChain = false;
-      this.soak = options.soak;
-    }
-
-    If.prototype.children = ['condition', 'body', 'elseBody'];
-
-    If.prototype.bodyNode = function() {
-      var ref3;
-      return (ref3 = this.body) != null ? ref3.unwrap() : void 0;
-    };
-
-    If.prototype.elseBodyNode = function() {
-      var ref3;
-      return (ref3 = this.elseBody) != null ? ref3.unwrap() : void 0;
-    };
-
-    If.prototype.addElse = function(elseBody) {
-      if (this.isChain) {
-        this.elseBodyNode().addElse(elseBody);
-      } else {
-        this.isChain = elseBody instanceof If;
-        this.elseBody = this.ensureBlock(elseBody);
-        this.elseBody.updateLocationDataIfMissing(elseBody.locationData);
-      }
-      return this;
-    };
-
-    If.prototype.isStatement = function(o) {
-      var ref3;
-      return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((ref3 = this.elseBodyNode()) != null ? ref3.isStatement(o) : void 0);
-    };
-
-    If.prototype.jumps = function(o) {
-      var ref3;
-      return this.body.jumps(o) || ((ref3 = this.elseBody) != null ? ref3.jumps(o) : void 0);
-    };
-
-    If.prototype.compileNode = function(o) {
-      if (this.isStatement(o)) {
-        return this.compileStatement(o);
-      } else {
-        return this.compileExpression(o);
-      }
-    };
-
-    If.prototype.makeReturn = function(res) {
-      if (res) {
-        this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));
-      }
-      this.body && (this.body = new Block([this.body.makeReturn(res)]));
-      this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)]));
-      return this;
-    };
-
-    If.prototype.ensureBlock = function(node) {
-      if (node instanceof Block) {
-        return node;
-      } else {
-        return new Block([node]);
-      }
-    };
-
-    If.prototype.compileStatement = function(o) {
-      var answer, body, child, cond, exeq, ifPart, indent;
-      child = del(o, 'chainChild');
-      exeq = del(o, 'isExistentialEquals');
-      if (exeq) {
-        return new If(this.condition.invert(), this.elseBodyNode(), {
-          type: 'if'
-        }).compileToFragments(o);
-      }
-      indent = o.indent + TAB;
-      cond = this.condition.compileToFragments(o, LEVEL_PAREN);
-      body = this.ensureBlock(this.body).compileToFragments(merge(o, {
-        indent: indent
-      }));
-      ifPart = [].concat(this.makeCode("if ("), cond, this.makeCode(") {\n"), body, this.makeCode("\n" + this.tab + "}"));
-      if (!child) {
-        ifPart.unshift(this.makeCode(this.tab));
-      }
-      if (!this.elseBody) {
-        return ifPart;
-      }
-      answer = ifPart.concat(this.makeCode(' else '));
-      if (this.isChain) {
-        o.chainChild = true;
-        answer = answer.concat(this.elseBody.unwrap().compileToFragments(o, LEVEL_TOP));
-      } else {
-        answer = answer.concat(this.makeCode("{\n"), this.elseBody.compileToFragments(merge(o, {
-          indent: indent
-        }), LEVEL_TOP), this.makeCode("\n" + this.tab + "}"));
-      }
-      return answer;
-    };
-
-    If.prototype.compileExpression = function(o) {
-      var alt, body, cond, fragments;
-      cond = this.condition.compileToFragments(o, LEVEL_COND);
-      body = this.bodyNode().compileToFragments(o, LEVEL_LIST);
-      alt = this.elseBodyNode() ? this.elseBodyNode().compileToFragments(o, LEVEL_LIST) : [this.makeCode('void 0')];
-      fragments = cond.concat(this.makeCode(" ? "), body, this.makeCode(" : "), alt);
-      if (o.level >= LEVEL_COND) {
-        return this.wrapInBraces(fragments);
-      } else {
-        return fragments;
-      }
-    };
-
-    If.prototype.unfoldSoak = function() {
-      return this.soak && this;
-    };
-
-    return If;
-
-  })(Base);
-
-  UTILITIES = {
-    extend: function(o) {
-      return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp', o)) + ".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; }";
-    },
-    modulo: function() {
-      return "function(a, b) { return (+a % (b = +b) + b) % b; }";
-    },
-    hasProp: function() {
-      return '{}.hasOwnProperty';
-    },
-    slice: function() {
-      return '[].slice';
-    }
-  };
-
-  LEVEL_TOP = 1;
-
-  LEVEL_PAREN = 2;
-
-  LEVEL_LIST = 3;
-
-  LEVEL_COND = 4;
-
-  LEVEL_OP = 5;
-
-  LEVEL_ACCESS = 6;
-
-  TAB = '  ';
-
-  SIMPLENUM = /^[+-]?\d+$/;
-
-  utility = function(name, o) {
-    var ref, root;
-    root = o.scope.root;
-    if (name in root.utilities) {
-      return root.utilities[name];
-    } else {
-      ref = root.freeVariable(name);
-      root.assign(ref, UTILITIES[name](o));
-      return root.utilities[name] = ref;
-    }
-  };
-
-  multident = function(code, tab) {
-    code = code.replace(/\n/g, '$&' + tab);
-    return code.replace(/\s+$/, '');
-  };
-
-  isLiteralArguments = function(node) {
-    return node instanceof IdentifierLiteral && node.value === 'arguments';
-  };
-
-  isLiteralThis = function(node) {
-    return node instanceof ThisLiteral || (node instanceof Code && node.bound) || node instanceof SuperCall;
-  };
-
-  isComplexOrAssignable = function(node) {
-    return node.isComplex() || (typeof node.isAssignable === "function" ? node.isAssignable() : void 0);
-  };
-
-  unfoldSoak = function(o, parent, name) {
-    var ifn;
-    if (!(ifn = parent[name].unfoldSoak(o))) {
-      return;
-    }
-    parent[name] = ifn.body;
-    ifn.body = new Value(parent);
-    return ifn;
-  };
-
-}).call(this);
-
-  return module.exports;
-})();require['./sourcemap'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var LineMap, SourceMap;
-
-  LineMap = (function() {
-    function LineMap(line1) {
-      this.line = line1;
-      this.columns = [];
-    }
-
-    LineMap.prototype.add = function(column, arg, options) {
-      var sourceColumn, sourceLine;
-      sourceLine = arg[0], sourceColumn = arg[1];
-      if (options == null) {
-        options = {};
-      }
-      if (this.columns[column] && options.noReplace) {
-        return;
-      }
-      return this.columns[column] = {
-        line: this.line,
-        column: column,
-        sourceLine: sourceLine,
-        sourceColumn: sourceColumn
-      };
-    };
-
-    LineMap.prototype.sourceLocation = function(column) {
-      var mapping;
-      while (!((mapping = this.columns[column]) || (column <= 0))) {
-        column--;
-      }
-      return mapping && [mapping.sourceLine, mapping.sourceColumn];
-    };
-
-    return LineMap;
-
-  })();
-
-  SourceMap = (function() {
-    var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;
-
-    function SourceMap() {
-      this.lines = [];
-    }
-
-    SourceMap.prototype.add = function(sourceLocation, generatedLocation, options) {
-      var base, column, line, lineMap;
-      if (options == null) {
-        options = {};
-      }
-      line = generatedLocation[0], column = generatedLocation[1];
-      lineMap = ((base = this.lines)[line] || (base[line] = new LineMap(line)));
-      return lineMap.add(column, sourceLocation, options);
-    };
-
-    SourceMap.prototype.sourceLocation = function(arg) {
-      var column, line, lineMap;
-      line = arg[0], column = arg[1];
-      while (!((lineMap = this.lines[line]) || (line <= 0))) {
-        line--;
-      }
-      return lineMap && lineMap.sourceLocation(column);
-    };
-
-    SourceMap.prototype.generate = function(options, code) {
-      var buffer, i, j, lastColumn, lastSourceColumn, lastSourceLine, len, len1, lineMap, lineNumber, mapping, needComma, ref, ref1, v3, writingline;
-      if (options == null) {
-        options = {};
-      }
-      if (code == null) {
-        code = null;
-      }
-      writingline = 0;
-      lastColumn = 0;
-      lastSourceLine = 0;
-      lastSourceColumn = 0;
-      needComma = false;
-      buffer = "";
-      ref = this.lines;
-      for (lineNumber = i = 0, len = ref.length; i < len; lineNumber = ++i) {
-        lineMap = ref[lineNumber];
-        if (lineMap) {
-          ref1 = lineMap.columns;
-          for (j = 0, len1 = ref1.length; j < len1; j++) {
-            mapping = ref1[j];
-            if (!(mapping)) {
-              continue;
-            }
-            while (writingline < mapping.line) {
-              lastColumn = 0;
-              needComma = false;
-              buffer += ";";
-              writingline++;
-            }
-            if (needComma) {
-              buffer += ",";
-              needComma = false;
-            }
-            buffer += this.encodeVlq(mapping.column - lastColumn);
-            lastColumn = mapping.column;
-            buffer += this.encodeVlq(0);
-            buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);
-            lastSourceLine = mapping.sourceLine;
-            buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);
-            lastSourceColumn = mapping.sourceColumn;
-            needComma = true;
-          }
-        }
-      }
-      v3 = {
-        version: 3,
-        file: options.generatedFile || '',
-        sourceRoot: options.sourceRoot || '',
-        sources: options.sourceFiles || [''],
-        names: [],
-        mappings: buffer
-      };
-      if (options.inlineMap) {
-        v3.sourcesContent = [code];
-      }
-      return v3;
-    };
-
-    VLQ_SHIFT = 5;
-
-    VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
-
-    VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
-
-    SourceMap.prototype.encodeVlq = function(value) {
-      var answer, nextChunk, signBit, valueToEncode;
-      answer = '';
-      signBit = value < 0 ? 1 : 0;
-      valueToEncode = (Math.abs(value) << 1) + signBit;
-      while (valueToEncode || !answer) {
-        nextChunk = valueToEncode & VLQ_VALUE_MASK;
-        valueToEncode = valueToEncode >> VLQ_SHIFT;
-        if (valueToEncode) {
-          nextChunk |= VLQ_CONTINUATION_BIT;
-        }
-        answer += this.encodeBase64(nextChunk);
-      }
-      return answer;
-    };
-
-    BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-
-    SourceMap.prototype.encodeBase64 = function(value) {
-      return BASE64_CHARS[value] || (function() {
-        throw new Error("Cannot Base64 encode value: " + value);
-      })();
-    };
-
-    return SourceMap;
-
-  })();
-
-  module.exports = SourceMap;
-
-}).call(this);
-
-  return module.exports;
-})();require['./coffee-script'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var Lexer, SourceMap, base64encode, compile, ext, fn1, fs, helpers, i, len, lexer, packageJson, parser, path, ref, vm, withPrettyErrors,
-    hasProp = {}.hasOwnProperty;
-
-  fs = require('fs');
-
-  vm = require('vm');
-
-  path = require('path');
-
-  Lexer = require('./lexer').Lexer;
-
-  parser = require('./parser').parser;
-
-  helpers = require('./helpers');
-
-  SourceMap = require('./sourcemap');
-
-  packageJson = require('../../package.json');
-
-  exports.VERSION = packageJson.version;
-
-  exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
-
-  exports.helpers = helpers;
-
-  base64encode = function(src) {
-    switch (false) {
-      case typeof Buffer !== 'function':
-        return new Buffer(src).toString('base64');
-      case typeof btoa !== 'function':
-        return btoa(encodeURIComponent(src).replace(/%([0-9A-F]{2})/g, function(match, p1) {
-          return String.fromCharCode('0x' + p1);
-        }));
-      default:
-        throw new Error('Unable to base64 encode inline sourcemap.');
-    }
-  };
-
-  withPrettyErrors = function(fn) {
-    return function(code, options) {
-      var err;
-      if (options == null) {
-        options = {};
-      }
-      try {
-        return fn.call(this, code, options);
-      } catch (error) {
-        err = error;
-        if (typeof code !== 'string') {
-          throw err;
-        }
-        throw helpers.updateSyntaxError(err, code, options.filename);
-      }
-    };
-  };
-
-  exports.compile = compile = withPrettyErrors(function(code, options) {
-    var currentColumn, currentLine, encoded, extend, fragment, fragments, generateSourceMap, header, i, j, js, len, len1, map, merge, newLines, ref, ref1, sourceMapDataURI, sourceURL, token, tokens, v3SourceMap;
-    merge = helpers.merge, extend = helpers.extend;
-    options = extend({}, options);
-    generateSourceMap = options.sourceMap || options.inlineMap;
-    if (generateSourceMap) {
-      map = new SourceMap;
-    }
-    tokens = lexer.tokenize(code, options);
-    options.referencedVars = (function() {
-      var i, len, results;
-      results = [];
-      for (i = 0, len = tokens.length; i < len; i++) {
-        token = tokens[i];
-        if (token[0] === 'IDENTIFIER') {
-          results.push(token[1]);
-        }
-      }
-      return results;
-    })();
-    if (!((options.bare != null) && options.bare === true)) {
-      for (i = 0, len = tokens.length; i < len; i++) {
-        token = tokens[i];
-        if ((ref = token[0]) === 'IMPORT' || ref === 'EXPORT') {
-          options.bare = true;
-          break;
-        }
-      }
-    }
-    fragments = parser.parse(tokens).compileToFragments(options);
-    currentLine = 0;
-    if (options.header) {
-      currentLine += 1;
-    }
-    if (options.shiftLine) {
-      currentLine += 1;
-    }
-    currentColumn = 0;
-    js = "";
-    for (j = 0, len1 = fragments.length; j < len1; j++) {
-      fragment = fragments[j];
-      if (generateSourceMap) {
-        if (fragment.locationData && !/^[;\s]*$/.test(fragment.code)) {
-          map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
-            noReplace: true
-          });
-        }
-        newLines = helpers.count(fragment.code, "\n");
-        currentLine += newLines;
-        if (newLines) {
-          currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
-        } else {
-          currentColumn += fragment.code.length;
-        }
-      }
-      js += fragment.code;
-    }
-    if (options.header) {
-      header = "Generated by CoffeeScript " + this.VERSION;
-      js = "// " + header + "\n" + js;
-    }
-    if (generateSourceMap) {
-      v3SourceMap = map.generate(options, code);
-    }
-    if (options.inlineMap) {
-      encoded = base64encode(JSON.stringify(v3SourceMap));
-      sourceMapDataURI = "//# sourceMappingURL=data:application/json;base64," + encoded;
-      sourceURL = "//# sourceURL=" + ((ref1 = options.filename) != null ? ref1 : 'coffeescript');
-      js = js + "\n" + sourceMapDataURI + "\n" + sourceURL;
-    }
-    if (options.sourceMap) {
-      return {
-        js: js,
-        sourceMap: map,
-        v3SourceMap: JSON.stringify(v3SourceMap, null, 2)
-      };
-    } else {
-      return js;
-    }
-  });
-
-  exports.tokens = withPrettyErrors(function(code, options) {
-    return lexer.tokenize(code, options);
-  });
-
-  exports.nodes = withPrettyErrors(function(source, options) {
-    if (typeof source === 'string') {
-      return parser.parse(lexer.tokenize(source, options));
-    } else {
-      return parser.parse(source);
-    }
-  });
-
-  exports.run = function(code, options) {
-    var answer, dir, mainModule, ref;
-    if (options == null) {
-      options = {};
-    }
-    mainModule = require.main;
-    mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';
-    mainModule.moduleCache && (mainModule.moduleCache = {});
-    dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
-    mainModule.paths = require('module')._nodeModulePaths(dir);
-    if (!helpers.isCoffee(mainModule.filename) || require.extensions) {
-      answer = compile(code, options);
-      code = (ref = answer.js) != null ? ref : answer;
-    }
-    return mainModule._compile(code, mainModule.filename);
-  };
-
-  exports["eval"] = function(code, options) {
-    var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;
-    if (options == null) {
-      options = {};
-    }
-    if (!(code = code.trim())) {
-      return;
-    }
-    createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;
-    isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {
-      return options.sandbox instanceof createContext().constructor;
-    };
-    if (createContext) {
-      if (options.sandbox != null) {
-        if (isContext(options.sandbox)) {
-          sandbox = options.sandbox;
-        } else {
-          sandbox = createContext();
-          ref2 = options.sandbox;
-          for (k in ref2) {
-            if (!hasProp.call(ref2, k)) continue;
-            v = ref2[k];
-            sandbox[k] = v;
-          }
-        }
-        sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
-      } else {
-        sandbox = global;
-      }
-      sandbox.__filename = options.filename || 'eval';
-      sandbox.__dirname = path.dirname(sandbox.__filename);
-      if (!(sandbox !== global || sandbox.module || sandbox.require)) {
-        Module = require('module');
-        sandbox.module = _module = new Module(options.modulename || 'eval');
-        sandbox.require = _require = function(path) {
-          return Module._load(path, _module, true);
-        };
-        _module.filename = sandbox.__filename;
-        ref3 = Object.getOwnPropertyNames(require);
-        for (i = 0, len = ref3.length; i < len; i++) {
-          r = ref3[i];
-          if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {
-            _require[r] = require[r];
-          }
-        }
-        _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
-        _require.resolve = function(request) {
-          return Module._resolveFilename(request, _module);
-        };
-      }
-    }
-    o = {};
-    for (k in options) {
-      if (!hasProp.call(options, k)) continue;
-      v = options[k];
-      o[k] = v;
-    }
-    o.bare = true;
-    js = compile(code, o);
-    if (sandbox === global) {
-      return vm.runInThisContext(js);
-    } else {
-      return vm.runInContext(js, sandbox);
-    }
-  };
-
-  exports.register = function() {
-    return require('./register');
-  };
-
-  if (require.extensions) {
-    ref = this.FILE_EXTENSIONS;
-    fn1 = function(ext) {
-      var base;
-      return (base = require.extensions)[ext] != null ? base[ext] : base[ext] = function() {
-        throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");
-      };
-    };
-    for (i = 0, len = ref.length; i < len; i++) {
-      ext = ref[i];
-      fn1(ext);
-    }
-  }
-
-  exports._compileFile = function(filename, sourceMap, inlineMap) {
-    var answer, err, raw, stripped;
-    if (sourceMap == null) {
-      sourceMap = false;
-    }
-    if (inlineMap == null) {
-      inlineMap = false;
-    }
-    raw = fs.readFileSync(filename, 'utf8');
-    stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
-    try {
-      answer = compile(stripped, {
-        filename: filename,
-        sourceMap: sourceMap,
-        inlineMap: inlineMap,
-        sourceFiles: [filename],
-        literate: helpers.isLiterate(filename)
-      });
-    } catch (error) {
-      err = error;
-      throw helpers.updateSyntaxError(err, stripped, filename);
-    }
-    return answer;
-  };
-
-  lexer = new Lexer;
-
-  parser.lexer = {
-    lex: function() {
-      var tag, token;
-      token = parser.tokens[this.pos++];
-      if (token) {
-        tag = token[0], this.yytext = token[1], this.yylloc = token[2];
-        parser.errorToken = token.origin || token;
-        this.yylineno = this.yylloc.first_line;
-      } else {
-        tag = '';
-      }
-      return tag;
-    },
-    setInput: function(tokens) {
-      parser.tokens = tokens;
-      return this.pos = 0;
-    },
-    upcomingInput: function() {
-      return "";
-    }
-  };
-
-  parser.yy = require('./nodes');
-
-  parser.yy.parseError = function(message, arg) {
-    var errorLoc, errorTag, errorText, errorToken, token, tokens;
-    token = arg.token;
-    errorToken = parser.errorToken, tokens = parser.tokens;
-    errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];
-    errorText = (function() {
-      switch (false) {
-        case errorToken !== tokens[tokens.length - 1]:
-          return 'end of input';
-        case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':
-          return 'indentation';
-        case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'INFINITY' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':
-          return errorTag.replace(/_START$/, '').toLowerCase();
-        default:
-          return helpers.nameWhitespaceCharacter(errorText);
-      }
-    })();
-    return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);
-  };
-
-}).call(this);
-
-  return module.exports;
-})();require['./browser'] = (function() {
-  var exports = {}, module = {exports: exports};
-  // Generated by CoffeeScript 1.12.2
-(function() {
-  var CoffeeScript, compile, 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; };
-
-  CoffeeScript = require('./coffee-script');
-
-  CoffeeScript.require = require;
-
-  compile = CoffeeScript.compile;
-
-  CoffeeScript["eval"] = function(code, options) {
-    if (options == null) {
-      options = {};
-    }
-    if (options.bare == null) {
-      options.bare = true;
-    }
-    return eval(compile(code, options));
-  };
-
-  CoffeeScript.run = function(code, options) {
-    if (options == null) {
-      options = {};
-    }
-    options.bare = true;
-    options.shiftLine = true;
-    return Function(compile(code, options))();
-  };
-
-  if (typeof window === "undefined" || window === null) {
-    return;
-  }
-
-  if ((typeof btoa !== "undefined" && btoa !== null) && (typeof JSON !== "undefined" && JSON !== null)) {
-    compile = function(code, options) {
-      if (options == null) {
-        options = {};
-      }
-      options.inlineMap = true;
-      return CoffeeScript.compile(code, options);
-    };
-  }
-
-  CoffeeScript.load = function(url, callback, options, hold) {
-    var xhr;
-    if (options == null) {
-      options = {};
-    }
-    if (hold == null) {
-      hold = false;
-    }
-    options.sourceFiles = [url];
-    xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new window.XMLHttpRequest();
-    xhr.open('GET', url, true);
-    if ('overrideMimeType' in xhr) {
-      xhr.overrideMimeType('text/plain');
-    }
-    xhr.onreadystatechange = function() {
-      var param, ref;
-      if (xhr.readyState === 4) {
-        if ((ref = xhr.status) === 0 || ref === 200) {
-          param = [xhr.responseText, options];
-          if (!hold) {
-            CoffeeScript.run.apply(CoffeeScript, param);
-          }
-        } else {
-          throw new Error("Could not load " + url);
-        }
-        if (callback) {
-          return callback(param);
-        }
-      }
-    };
-    return xhr.send(null);
-  };
-
-  runScripts = function() {
-    var coffees, coffeetypes, execute, fn, i, index, j, len, s, script, scripts;
-    scripts = window.document.getElementsByTagName('script');
-    coffeetypes = ['text/coffeescript', 'text/literate-coffeescript'];
-    coffees = (function() {
-      var j, len, ref, results;
-      results = [];
-      for (j = 0, len = scripts.length; j < len; j++) {
-        s = scripts[j];
-        if (ref = s.type, indexOf.call(coffeetypes, ref) >= 0) {
-          results.push(s);
-        }
-      }
-      return results;
-    })();
-    index = 0;
-    execute = function() {
-      var param;
-      param = coffees[index];
-      if (param instanceof Array) {
-        CoffeeScript.run.apply(CoffeeScript, param);
-        index++;
-        return execute();
-      }
-    };
-    fn = function(script, i) {
-      var options, source;
-      options = {
-        literate: script.type === coffeetypes[1]
-      };
-      source = script.src || script.getAttribute('data-src');
-      if (source) {
-        return CoffeeScript.load(source, function(param) {
-          coffees[i] = param;
-          return execute();
-        }, options, true);
-      } else {
-        options.sourceFiles = ['embedded'];
-        return coffees[i] = [script.innerHTML, options];
-      }
-    };
-    for (i = j = 0, len = coffees.length; j < len; i = ++j) {
-      script = coffees[i];
-      fn(script, i);
-    }
-    return execute();
-  };
-
-  if (window.addEventListener) {
-    window.addEventListener('DOMContentLoaded', runScripts, false);
-  } else {
-    window.attachEvent('onload', runScripts);
-  }
-
-}).call(this);
-
-  return module.exports;
-})();
-    return require['./coffee-script'];
-  }();
-
-  if (typeof define === 'function' && define.amd) {
-    define(function() { return CoffeeScript; });
-  } else {
-    root.CoffeeScript = CoffeeScript;
-  }
-}(this));
\ No newline at end of file
diff --git a/lib/coffee_script/source.rb b/lib/coffee_script/source.rb
deleted file mode 100644
index 67805545..00000000
--- a/lib/coffee_script/source.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-module CoffeeScript
-  module Source
-    def self.bundled_path
-      File.expand_path("../coffee-script.js", __FILE__)
-    end
-  end
-end
diff --git a/lib/coffeescript-browser-compiler-legacy/coffeescript.js b/lib/coffeescript-browser-compiler-legacy/coffeescript.js
new file mode 100644
index 00000000..1781eb2c
--- /dev/null
+++ b/lib/coffeescript-browser-compiler-legacy/coffeescript.js
@@ -0,0 +1,8 @@
+/**
+ * CoffeeScript Compiler v2.7.0
+ * https://coffeescript.org
+ *
+ * Copyright 2011-2022, Jeremy Ashkenas
+ * Released under the MIT License
+ */
+function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(target,property,receiver){var base=_superPropBase(target,property);if(base){var desc=Object.getOwnPropertyDescriptor(base,property);return desc.get?desc.get.call(3>arguments.length?target:receiver):desc.value}},_get.apply(this,arguments)}function _superPropBase(object,property){for(;!Object.prototype.hasOwnProperty.call(object,property)&&(object=_getPrototypeOf(object),null!==object););return object}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),Object.defineProperty(subClass,"prototype",{writable:!1}),superClass&&_setPrototypeOf(subClass,superClass)}function _setPrototypeOf(o,p){return _setPrototypeOf=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_setPrototypeOf(o,p)}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget)}else result=Super.apply(this,arguments);return _possibleConstructorReturn(this,result)}}function _possibleConstructorReturn(self,call){if(call&&("object"===_typeof(call)||"function"==typeof call))return call;if(void 0!==call)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(self)}function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function _getPrototypeOf(o){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_getPrototypeOf(o)}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(arr,i){var _i=null==arr?null:"undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"];if(null!=_i){var _arr=[],_n=!0,_d=!1,_s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!(i&&_arr.length===i));_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i["return"]||_i["return"]()}finally{if(_d)throw _e}}return _arr}}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0,descriptor;i<props.length;i++)descriptor=props[i],descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Object.defineProperty(Constructor,"prototype",{writable:!1}),Constructor}function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _iterableToArray(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=Array(len);i<len;i++)arr2[i]=arr[i];return arr2}(function(root){var CoffeeScript=function(){var _Mathabs=Math.abs,_StringfromCharCode=String.fromCharCode,_Mathfloor=Math.floor;function require(path){return require[path]}return require["../../package.json"]=function(){return{name:"coffeescript",description:"Unfancy JavaScript",keywords:["javascript","language","coffeescript","compiler"],author:"Jeremy Ashkenas",version:"2.7.0",license:"MIT",engines:{node:">=6"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",module:"./lib/coffeescript-browser-compiler-modern/coffeescript.js",browser:"./lib/coffeescript-browser-compiler-legacy/coffeescript.js",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"https://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"@babel/core":"~7.17.9","@babel/preset-env":"~7.16.11","babel-preset-minify":"~0.5.1",codemirror:"~5.65.3",docco:"~0.9.1","highlight.js":"~11.5.1",jison:"~0.4.18","markdown-it":"~13.0.0",puppeteer:"~13.6.0",underscore:"~1.13.3",webpack:"~5.72.0"}}}(),require["./helpers"]=function(){var exports={};return function(){var indexOf=[].indexOf,UNICODE_CODE_POINT_ESCAPE,attachCommentsToNode,buildLocationData,buildLocationHash,buildTokenDataDictionary,extend,_flatten,isBoolean,isNumber,isString,ref,repeat,syntaxErrorToString,unicodeCodePointToUnicodeEscapes;exports.starts=function(string,literal,start){return literal===string.substr(start,literal.length)},exports.ends=function(string,literal,back){var len;return len=literal.length,literal===string.substr(string.length-len-(back||0),len)},exports.repeat=repeat=function(str,n){var res;for(res="";0<n;)1&n&&(res+=str),n>>>=1,str+=str;return res},exports.compact=function(array){var i,item,len1,results;for(results=[],i=0,len1=array.length;i<len1;i++)item=array[i],item&&results.push(item);return results},exports.count=function(string,substr){var num,pos;if(num=pos=0,!substr.length)return 1/0;for(;pos=1+string.indexOf(substr,pos);)num++;return num},exports.merge=function(options,overrides){return extend(extend({},options),overrides)},extend=exports.extend=function(object,properties){var key,val;for(key in properties)val=properties[key],object[key]=val;return object},exports.flatten=_flatten=function flatten(array){var element,flattened,i,len1;for(flattened=[],i=0,len1=array.length;i<len1;i++)element=array[i],"[object Array]"===Object.prototype.toString.call(element)?flattened=flattened.concat(_flatten(element)):flattened.push(element);return flattened},exports.del=function(obj,key){var val;return val=obj[key],delete obj[key],val},exports.some=null==(ref=Array.prototype.some)?function(fn){var e,i,len1,ref1;for(ref1=this,i=0,len1=ref1.length;i<len1;i++)if(e=ref1[i],fn(e))return!0;return!1}:ref,exports.invertLiterate=function(code){var blankLine,i,indented,insideComment,len1,line,listItemStart,out,ref1;for(out=[],blankLine=/^\s*$/,indented=/^[\t ]/,listItemStart=/^(?:\t?| {0,3})(?:[\*\-\+]|[0-9]{1,9}\.)[ \t]/,insideComment=!1,ref1=code.split("\n"),(i=0,len1=ref1.length);i<len1;i++)line=ref1[i],blankLine.test(line)?(insideComment=!1,out.push(line)):insideComment||listItemStart.test(line)?(insideComment=!0,out.push("# ".concat(line))):!insideComment&&indented.test(line)?out.push(line):(insideComment=!0,out.push("# ".concat(line)));return out.join("\n")},buildLocationData=function(first,last){return last?{first_line:first.first_line,first_column:first.first_column,last_line:last.last_line,last_column:last.last_column,last_line_exclusive:last.last_line_exclusive,last_column_exclusive:last.last_column_exclusive,range:[first.range[0],last.range[1]]}:first},exports.extractAllCommentTokens=function(tokens){var allCommentsObj,comment,commentKey,i,j,k,key,len1,len2,len3,ref1,results,sortedKeys,token;for(allCommentsObj={},i=0,len1=tokens.length;i<len1;i++)if(token=tokens[i],token.comments)for(ref1=token.comments,j=0,len2=ref1.length;j<len2;j++)comment=ref1[j],commentKey=comment.locationData.range[0],allCommentsObj[commentKey]=comment;for(sortedKeys=Object.keys(allCommentsObj).sort(function(a,b){return a-b}),results=[],(k=0,len3=sortedKeys.length);k<len3;k++)key=sortedKeys[k],results.push(allCommentsObj[key]);return results},buildLocationHash=function(loc){return"".concat(loc.range[0],"-").concat(loc.range[1])},exports.buildTokenDataDictionary=buildTokenDataDictionary=function(tokens){var base1,i,len1,token,tokenData,tokenHash;for(tokenData={},i=0,len1=tokens.length;i<len1;i++)if((token=tokens[i],!!token.comments)&&(tokenHash=buildLocationHash(token[2]),null==tokenData[tokenHash]&&(tokenData[tokenHash]={}),token.comments)){var _ref;(_ref=null==(base1=tokenData[tokenHash]).comments?base1.comments=[]:base1.comments).push.apply(_ref,_toConsumableArray(token.comments))}return tokenData},exports.addDataToNode=function(parserState,firstLocationData,firstValue,lastLocationData,lastValue){var forceUpdateLocation=!(5<arguments.length&&void 0!==arguments[5])||arguments[5];return function(obj){var locationData,objHash,ref1,ref2,ref3;return locationData=buildLocationData(null==(ref1=null==firstValue?void 0:firstValue.locationData)?firstLocationData:ref1,null==(ref2=null==lastValue?void 0:lastValue.locationData)?lastLocationData:ref2),null!=(null==obj?void 0:obj.updateLocationDataIfMissing)&&null!=firstLocationData?obj.updateLocationDataIfMissing(locationData,forceUpdateLocation):obj.locationData=locationData,null==parserState.tokenData&&(parserState.tokenData=buildTokenDataDictionary(parserState.parser.tokens)),null!=obj.locationData&&(objHash=buildLocationHash(obj.locationData),null!=(null==(ref3=parserState.tokenData[objHash])?void 0:ref3.comments)&&attachCommentsToNode(parserState.tokenData[objHash].comments,obj)),obj}},exports.attachCommentsToNode=attachCommentsToNode=function(comments,node){var _node$comments;if(null!=comments&&0!==comments.length)return null==node.comments&&(node.comments=[]),(_node$comments=node.comments).push.apply(_node$comments,_toConsumableArray(comments))},exports.locationDataToString=function(obj){var locationData;return"2"in obj&&"first_line"in obj[2]?locationData=obj[2]:"first_line"in obj&&(locationData=obj),locationData?"".concat(locationData.first_line+1,":").concat(locationData.first_column+1,"-")+"".concat(locationData.last_line+1,":").concat(locationData.last_column+1):"No location data"},exports.anonymousFileName=function(){var n;return n=0,function(){return"<anonymous-".concat(n++,">")}}(),exports.baseFileName=function(file){var stripExt=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],useWinPathSep=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],parts,pathSep;return(pathSep=useWinPathSep?/\\|\//:/\//,parts=file.split(pathSep),file=parts[parts.length-1],!(stripExt&&0<=file.indexOf(".")))?file:(parts=file.split("."),parts.pop(),"coffee"===parts[parts.length-1]&&1<parts.length&&parts.pop(),parts.join("."))},exports.isCoffee=function(file){return /\.((lit)?coffee|coffee\.md)$/.test(file)},exports.isLiterate=function(file){return /\.(litcoffee|coffee\.md)$/.test(file)},exports.throwSyntaxError=function(message,location){var error;throw error=new SyntaxError(message),error.location=location,error.toString=syntaxErrorToString,error.stack=error.toString(),error},exports.updateSyntaxError=function(error,code,filename){return error.toString===syntaxErrorToString&&(error.code||(error.code=code),error.filename||(error.filename=filename),error.stack=error.toString()),error},syntaxErrorToString=function(){var codeLine,colorize,colorsEnabled,end,filename,first_column,first_line,last_column,last_line,marker,ref1,ref2,ref3,ref4,start;if(!(this.code&&this.location))return Error.prototype.toString.call(this);var _this$location=this.location;return first_line=_this$location.first_line,first_column=_this$location.first_column,last_line=_this$location.last_line,last_column=_this$location.last_column,null==last_line&&(last_line=first_line),null==last_column&&(last_column=first_column),filename=(null==(ref1=this.filename)?void 0:ref1.startsWith("<anonymous"))?"[stdin]":this.filename||"[stdin]",codeLine=this.code.split("\n")[first_line],start=first_column,end=first_line===last_line?last_column+1:codeLine.length,marker=codeLine.slice(0,start).replace(/[^\s]/g," ")+repeat("^",end-start),"undefined"!=typeof process&&null!==process&&(colorsEnabled=(null==(ref2=process.stdout)?void 0:ref2.isTTY)&&(null==(ref3=process.env)||!ref3.NODE_DISABLE_COLORS)),(null==(ref4=this.colorful)?colorsEnabled:ref4)&&(colorize=function(str){return"\x1B[1;31m".concat(str,"\x1B[0m")},codeLine=codeLine.slice(0,start)+colorize(codeLine.slice(start,end))+codeLine.slice(end),marker=colorize(marker)),"".concat(filename,":").concat(first_line+1,":").concat(first_column+1,": error: ").concat(this.message,"\n").concat(codeLine,"\n").concat(marker)},exports.nameWhitespaceCharacter=function(string){return" "===string?"space":"\n"===string?"newline":"\r"===string?"carriage return":"\t"===string?"tab":string},exports.parseNumber=function(string){var base;return null==string?0/0:(base=function(){switch(string.charAt(1)){case"b":return 2;case"o":return 8;case"x":return 16;default:return null;}}(),null==base?parseFloat(string.replace(/_/g,"")):parseInt(string.slice(2).replace(/_/g,""),base))},exports.isFunction=function(obj){return"[object Function]"===Object.prototype.toString.call(obj)},exports.isNumber=isNumber=function(obj){return"[object Number]"===Object.prototype.toString.call(obj)},exports.isString=isString=function(obj){return"[object String]"===Object.prototype.toString.call(obj)},exports.isBoolean=isBoolean=function(obj){return!0===obj||!1===obj||"[object Boolean]"===Object.prototype.toString.call(obj)},exports.isPlainObject=function(obj){return"object"===_typeof(obj)&&!!obj&&!Array.isArray(obj)&&!isNumber(obj)&&!isString(obj)&&!isBoolean(obj)},unicodeCodePointToUnicodeEscapes=function(codePoint){var high,low,toUnicodeEscape;return(toUnicodeEscape=function(val){var str;return str=val.toString(16),"\\u".concat(repeat("0",4-str.length)).concat(str)},65536>codePoint)?toUnicodeEscape(codePoint):(high=_Mathfloor((codePoint-65536)/1024)+55296,low=(codePoint-65536)%1024+56320,"".concat(toUnicodeEscape(high)).concat(toUnicodeEscape(low)))},exports.replaceUnicodeCodePointEscapes=function(str){var _ref2=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},flags=_ref2.flags,error=_ref2.error,_ref2$delimiter=_ref2.delimiter,delimiter=void 0===_ref2$delimiter?"":_ref2$delimiter,shouldReplace;return shouldReplace=null!=flags&&0>indexOf.call(flags,"u"),str.replace(UNICODE_CODE_POINT_ESCAPE,function(match,escapedBackslash,codePointHex,offset){var codePointDecimal;return escapedBackslash?escapedBackslash:(codePointDecimal=parseInt(codePointHex,16),1114111<codePointDecimal&&error("unicode code point escapes greater than \\u{10ffff} are not allowed",{offset:offset+delimiter.length,length:codePointHex.length+4}),shouldReplace?unicodeCodePointToUnicodeEscapes(codePointDecimal):match)})},UNICODE_CODE_POINT_ESCAPE=/(\\\\)|\\u\{([\da-fA-F]+)\}/g}.call(this),{exports:exports}.exports}(),require["./rewriter"]=function(){var exports={};return function(){var indexOf=[].indexOf,hasProp={}.hasOwnProperty,_require=require("./helpers"),BALANCED_PAIRS,CALL_CLOSERS,CONTROL_IN_IMPLICIT,DISCARDED,EXPRESSION_CLOSE,EXPRESSION_END,EXPRESSION_START,IMPLICIT_CALL,IMPLICIT_END,IMPLICIT_FUNC,IMPLICIT_UNSPACED_CALL,INVERSES,LINEBREAKS,Rewriter,SINGLE_CLOSERS,SINGLE_LINERS,UNFINISHED,extractAllCommentTokens,generate,k,left,len,moveComments,right,throwSyntaxError;for(throwSyntaxError=_require.throwSyntaxError,extractAllCommentTokens=_require.extractAllCommentTokens,moveComments=function(fromToken,toToken){var comment,k,len,ref,unshiftedComments;if(fromToken.comments){if(toToken.comments&&0!==toToken.comments.length){for(unshiftedComments=[],ref=fromToken.comments,(k=0,len=ref.length);k<len;k++)comment=ref[k],comment.unshift?unshiftedComments.push(comment):toToken.comments.push(comment);toToken.comments=unshiftedComments.concat(toToken.comments)}else toToken.comments=fromToken.comments;return delete fromToken.comments}},generate=function(tag,value,origin,commentsToken){var token;return token=[tag,value],token.generated=!0,origin&&(token.origin=origin),commentsToken&&moveComments(commentsToken,token),token},exports.Rewriter=Rewriter=function(){var Rewriter=function(){"use strict";function Rewriter(){_classCallCheck(this,Rewriter)}return _createClass(Rewriter,[{key:"rewrite",value:function rewrite(tokens1){var ref,ref1,t;return this.tokens=tokens1,("undefined"!=typeof process&&null!==process?null==(ref=process.env)?void 0:ref.DEBUG_TOKEN_STREAM:void 0)&&(process.env.DEBUG_REWRITTEN_TOKEN_STREAM&&console.log("Initial token stream:"),console.log(function(){var k,len,ref1,results;for(ref1=this.tokens,results=[],(k=0,len=ref1.length);k<len;k++)t=ref1[k],results.push(t[0]+"/"+t[1]+(t.comments?"*":""));return results}.call(this).join(" "))),this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.rescueStowawayComments(),this.addLocationDataToGeneratedTokens(),this.enforceValidJSXAttributes(),this.fixIndentationLocationData(),this.exposeTokenDataToGrammar(),("undefined"!=typeof process&&null!==process?null==(ref1=process.env)?void 0:ref1.DEBUG_REWRITTEN_TOKEN_STREAM:void 0)&&(process.env.DEBUG_TOKEN_STREAM&&console.log("Rewritten token stream:"),console.log(function(){var k,len,ref2,results;for(ref2=this.tokens,results=[],(k=0,len=ref2.length);k<len;k++)t=ref2[k],results.push(t[0]+"/"+t[1]+(t.comments?"*":""));return results}.call(this).join(" "))),this.tokens}},{key:"scanTokens",value:function scanTokens(block){var i,token,tokens;for(tokens=this.tokens,i=0;token=tokens[i];)i+=block.call(this,token,i,tokens);return!0}},{key:"detectEnd",value:function detectEnd(i,condition,action){var opts=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},levels,ref,ref1,token,tokens;for(tokens=this.tokens,levels=0;token=tokens[i];){if(0===levels&&condition.call(this,token,i))return action.call(this,token,i);if((ref=token[0],0<=indexOf.call(EXPRESSION_START,ref))?levels+=1:(ref1=token[0],0<=indexOf.call(EXPRESSION_END,ref1))&&(levels-=1),0>levels)return opts.returnOnNegativeLevel?void 0:action.call(this,token,i);i+=1}return i-1}},{key:"removeLeadingNewlines",value:function removeLeadingNewlines(){var i,k,l,leadingNewlineToken,len,len1,ref,ref1,tag;for(ref=this.tokens,i=k=0,len=ref.length;k<len;i=++k){var _ref$i=_slicedToArray(ref[i],1);if(tag=_ref$i[0],"TERMINATOR"!==tag)break}if(0!==i){for(ref1=this.tokens.slice(0,i),l=0,len1=ref1.length;l<len1;l++)leadingNewlineToken=ref1[l],moveComments(leadingNewlineToken,this.tokens[i]);return this.tokens.splice(0,i)}}},{key:"closeOpenCalls",value:function closeOpenCalls(){var action,condition;return condition=function(token){var ref;return")"===(ref=token[0])||"CALL_END"===ref},action=function(token){return token[0]="CALL_END"},this.scanTokens(function(token,i){return"CALL_START"===token[0]&&this.detectEnd(i+1,condition,action),1})}},{key:"closeOpenIndexes",value:function closeOpenIndexes(){var action,condition,startToken;return startToken=null,condition=function(token){var ref;return"]"===(ref=token[0])||"INDEX_END"===ref},action=function(token,i){return this.tokens.length>=i&&":"===this.tokens[i+1][0]?(startToken[0]="[",token[0]="]"):token[0]="INDEX_END"},this.scanTokens(function(token,i){return"INDEX_START"===token[0]&&(startToken=token,this.detectEnd(i+1,condition,action)),1})}},{key:"indexOfTag",value:function indexOfTag(i){var fuzz,j,k,ref,ref1;fuzz=0;for(var _len=arguments.length,pattern=Array(1<_len?_len-1:0),_key=1;_key<_len;_key++)pattern[_key-1]=arguments[_key];for(j=k=0,ref=pattern.length;0<=ref?k<ref:k>ref;j=0<=ref?++k:--k)if(null!=pattern[j]&&("string"==typeof pattern[j]&&(pattern[j]=[pattern[j]]),ref1=this.tag(i+j+fuzz),0>indexOf.call(pattern[j],ref1)))return-1;return i+j+fuzz-1}},{key:"looksObjectish",value:function looksObjectish(j){var end,index;return-1!==this.indexOfTag(j,"@",null,":")||-1!==this.indexOfTag(j,null,":")||(index=this.indexOfTag(j,EXPRESSION_START),!!(-1!==index&&(end=null,this.detectEnd(index+1,function(token){var ref;return ref=token[0],0<=indexOf.call(EXPRESSION_END,ref)},function(token,i){return end=i}),":"===this.tag(end+1))))}},{key:"findTagsBackwards",value:function findTagsBackwards(i,tags){var backStack,ref,ref1,ref2,ref3,ref4,ref5;for(backStack=[];0<=i&&(backStack.length||(ref2=this.tag(i),0>indexOf.call(tags,ref2))&&((ref3=this.tag(i),0>indexOf.call(EXPRESSION_START,ref3))||this.tokens[i].generated)&&(ref4=this.tag(i),0>indexOf.call(LINEBREAKS,ref4)));)(ref=this.tag(i),0<=indexOf.call(EXPRESSION_END,ref))&&backStack.push(this.tag(i)),(ref1=this.tag(i),0<=indexOf.call(EXPRESSION_START,ref1))&&backStack.length&&backStack.pop(),i-=1;return ref5=this.tag(i),0<=indexOf.call(tags,ref5)}},{key:"addImplicitBracesAndParens",value:function addImplicitBracesAndParens(){var stack,start;return stack=[],start=null,this.scanTokens(function(token,i,tokens){var _this=this,_token=_slicedToArray(token,1),endImplicitCall,endImplicitObject,forward,implicitObjectContinues,implicitObjectIndent,inControlFlow,inImplicit,inImplicitCall,inImplicitControl,inImplicitObject,isImplicit,isImplicitCall,isImplicitObject,k,newLine,nextTag,nextToken,offset,preContinuationLineIndent,preObjectToken,prevTag,prevToken,ref,ref1,ref2,ref3,ref4,ref5,s,sameLine,stackIdx,stackItem,stackNext,stackTag,stackTop,startIdx,startImplicitCall,startImplicitObject,startIndex,startTag,startsLine,tag;tag=_token[0];var _prevToken=prevToken=0<i?tokens[i-1]:[],_prevToken2=_slicedToArray(_prevToken,1);prevTag=_prevToken2[0];var _nextToken=nextToken=i<tokens.length-1?tokens[i+1]:[],_nextToken2=_slicedToArray(_nextToken,1);if(nextTag=_nextToken2[0],stackTop=function(){return stack[stack.length-1]},startIdx=i,forward=function(n){return i-startIdx+n},isImplicit=function(stackItem){var ref;return null==stackItem||null==(ref=stackItem[2])?void 0:ref.ours},isImplicitObject=function(stackItem){return isImplicit(stackItem)&&"{"===(null==stackItem?void 0:stackItem[0])},isImplicitCall=function(stackItem){return isImplicit(stackItem)&&"("===(null==stackItem?void 0:stackItem[0])},inImplicit=function(){return isImplicit(stackTop())},inImplicitCall=function(){return isImplicitCall(stackTop())},inImplicitObject=function(){return isImplicitObject(stackTop())},inImplicitControl=function(){var ref;return inImplicit()&&"CONTROL"===(null==(ref=stackTop())?void 0:ref[0])},startImplicitCall=function(idx){return stack.push(["(",idx,{ours:!0}]),tokens.splice(idx,0,generate("CALL_START","(",["","implicit function call",token[2]],prevToken))},endImplicitCall=function(){return stack.pop(),tokens.splice(i,0,generate("CALL_END",")",["","end of input",token[2]],prevToken)),i+=1},startImplicitObject=function(idx){var _ref3=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref3$startsLine=_ref3.startsLine,continuationLineIndent=_ref3.continuationLineIndent,val;return stack.push(["{",idx,{sameLine:!0,startsLine:void 0===_ref3$startsLine||_ref3$startsLine,ours:!0,continuationLineIndent:continuationLineIndent}]),val=new String("{"),val.generated=!0,tokens.splice(idx,0,generate("{",val,token,prevToken))},endImplicitObject=function(j){return j=null==j?i:j,stack.pop(),tokens.splice(j,0,generate("}","}",token,prevToken)),i+=1},implicitObjectContinues=function(j){var nextTerminatorIdx;return nextTerminatorIdx=null,_this.detectEnd(j,function(token){return"TERMINATOR"===token[0]},function(token,i){return nextTerminatorIdx=i},{returnOnNegativeLevel:!0}),null!=nextTerminatorIdx&&_this.looksObjectish(nextTerminatorIdx+1)},(inImplicitCall()||inImplicitObject())&&0<=indexOf.call(CONTROL_IN_IMPLICIT,tag)||inImplicitObject()&&":"===prevTag&&"FOR"===tag)return stack.push(["CONTROL",i,{ours:!0}]),forward(1);if("INDENT"===tag&&inImplicit()){if("=>"!==prevTag&&"->"!==prevTag&&"["!==prevTag&&"("!==prevTag&&","!==prevTag&&"{"!==prevTag&&"ELSE"!==prevTag&&"="!==prevTag)for(;inImplicitCall()||inImplicitObject()&&":"!==prevTag;)inImplicitCall()?endImplicitCall():endImplicitObject();return inImplicitControl()&&stack.pop(),stack.push([tag,i]),forward(1)}if(0<=indexOf.call(EXPRESSION_START,tag))return stack.push([tag,i]),forward(1);if(0<=indexOf.call(EXPRESSION_END,tag)){for(;inImplicit();)inImplicitCall()?endImplicitCall():inImplicitObject()?endImplicitObject():stack.pop();start=stack.pop()}if(inControlFlow=function(){var controlFlow,isFunc,seenFor,tagCurrentLine;return(seenFor=_this.findTagsBackwards(i,["FOR"])&&_this.findTagsBackwards(i,["FORIN","FOROF","FORFROM"]),controlFlow=seenFor||_this.findTagsBackwards(i,["WHILE","UNTIL","LOOP","LEADING_WHEN"]),!!controlFlow)&&(isFunc=!1,tagCurrentLine=token[2].first_line,_this.detectEnd(i,function(token){var ref;return ref=token[0],0<=indexOf.call(LINEBREAKS,ref)},function(token,i){var _ref4=tokens[i-1]||[],_ref5=_slicedToArray(_ref4,3),first_line;return prevTag=_ref5[0],first_line=_ref5[2].first_line,isFunc=tagCurrentLine===first_line&&("->"===prevTag||"=>"===prevTag)},{returnOnNegativeLevel:!0}),isFunc)},(0<=indexOf.call(IMPLICIT_FUNC,tag)&&token.spaced||"?"===tag&&0<i&&!tokens[i-1].spaced)&&(0<=indexOf.call(IMPLICIT_CALL,nextTag)||"..."===nextTag&&(ref=this.tag(i+2),0<=indexOf.call(IMPLICIT_CALL,ref))&&!this.findTagsBackwards(i,["INDEX_START","["])||0<=indexOf.call(IMPLICIT_UNSPACED_CALL,nextTag)&&!nextToken.spaced&&!nextToken.newLine)&&!inControlFlow())return"?"===tag&&(tag=token[0]="FUNC_EXIST"),startImplicitCall(i+1),forward(2);if(0<=indexOf.call(IMPLICIT_FUNC,tag)&&-1<this.indexOfTag(i+1,"INDENT")&&this.looksObjectish(i+2)&&!this.findTagsBackwards(i,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"])&&("{"!==(ref1=s=null==(ref2=stackTop())?void 0:ref2[0])&&"["!==ref1||isImplicit(stackTop())||!this.findTagsBackwards(i,s)))return startImplicitCall(i+1),stack.push(["INDENT",i+2]),forward(3);if(":"===tag){if(s=function(){var ref3;switch(!1){case(ref3=this.tag(i-1),0>indexOf.call(EXPRESSION_END,ref3)):var _start=start,_start2=_slicedToArray(_start,2);return startTag=_start2[0],startIndex=_start2[1],"["===startTag&&0<startIndex&&"@"===this.tag(startIndex-1)&&!tokens[startIndex-1].spaced?startIndex-1:startIndex;break;case"@"!==this.tag(i-2):return i-2;default:return i-1;}}.call(this),startsLine=0>=s||(ref3=this.tag(s-1),0<=indexOf.call(LINEBREAKS,ref3))||tokens[s-1].newLine,stackTop()){var _stackTop=stackTop(),_stackTop2=_slicedToArray(_stackTop,2);if(stackTag=_stackTop2[0],stackIdx=_stackTop2[1],stackNext=stack[stack.length-2],("{"===stackTag||"INDENT"===stackTag&&"{"===(null==stackNext?void 0:stackNext[0])&&!isImplicit(stackNext)&&this.findTagsBackwards(stackIdx-1,["{"]))&&(startsLine||","===this.tag(s-1)||"{"===this.tag(s-1))&&(ref4=this.tag(s-1),0>indexOf.call(UNFINISHED,ref4)))return forward(1)}return preObjectToken=1<i?tokens[i-2]:[],startImplicitObject(s,{startsLine:!!startsLine,continuationLineIndent:preObjectToken.continuationLineIndent}),forward(2)}if(0<=indexOf.call(LINEBREAKS,tag))for(k=stack.length-1;0<=k&&(stackItem=stack[k],!!isImplicit(stackItem));k+=-1)isImplicitObject(stackItem)&&(stackItem[2].sameLine=!1);if("TERMINATOR"===tag&&token.endsContinuationLineIndentation)for(preContinuationLineIndent=token.endsContinuationLineIndentation.preContinuationLineIndent;inImplicitObject()&&null!=(implicitObjectIndent=stackTop()[2].continuationLineIndent)&&implicitObjectIndent>preContinuationLineIndent;)endImplicitObject();if(newLine="OUTDENT"===prevTag||prevToken.newLine,0<=indexOf.call(IMPLICIT_END,tag)||0<=indexOf.call(CALL_CLOSERS,tag)&&newLine||(".."===tag||"..."===tag)&&this.findTagsBackwards(i,["INDEX_START"]))for(;inImplicit();){var _stackTop3=stackTop(),_stackTop4=_slicedToArray(_stackTop3,3);stackTag=_stackTop4[0],stackIdx=_stackTop4[1];var _stackTop4$=_stackTop4[2];if(sameLine=_stackTop4$.sameLine,startsLine=_stackTop4$.startsLine,inImplicitCall()&&","!==prevTag||","===prevTag&&"TERMINATOR"===tag&&null==nextTag)endImplicitCall();else if(inImplicitObject()&&sameLine&&"TERMINATOR"!==tag&&":"!==prevTag&&!(("POST_IF"===tag||"FOR"===tag||"WHILE"===tag||"UNTIL"===tag)&&startsLine&&implicitObjectContinues(i+1)))endImplicitObject();else if(inImplicitObject()&&"TERMINATOR"===tag&&","!==prevTag&&!(startsLine&&this.looksObjectish(i+1)))endImplicitObject();else if(inImplicitControl()&&"CLASS"===tokens[stackTop()[1]][0]&&"TERMINATOR"===tag)stack.pop();else break}if(","===tag&&!this.looksObjectish(i+1)&&inImplicitObject()&&"FOROF"!==(ref5=this.tag(i+2))&&"FORIN"!==ref5&&("TERMINATOR"!==nextTag||!this.looksObjectish(i+2)))for(offset="OUTDENT"===nextTag?1:0;inImplicitObject();)endImplicitObject(i+offset);return forward(1)})}},{key:"enforceValidJSXAttributes",value:function enforceValidJSXAttributes(){return this.scanTokens(function(token,i,tokens){var next,ref;return token.jsxColon&&(next=tokens[i+1],"STRING_START"!==(ref=next[0])&&"STRING"!==ref&&"("!==ref&&throwSyntaxError("expected wrapped or quoted JSX attribute",next[2])),1})}},{key:"rescueStowawayComments",value:function rescueStowawayComments(){var dontShiftForward,insertPlaceholder,shiftCommentsBackward,shiftCommentsForward;return insertPlaceholder=function(token,j,tokens,method){return"TERMINATOR"!==tokens[j][0]&&tokens[method](generate("TERMINATOR","\n",tokens[j])),tokens[method](generate("JS","",tokens[j],token))},dontShiftForward=function(i,tokens){var j,ref;for(j=i+1;j!==tokens.length&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));){if("INTERPOLATION_END"===tokens[j][0])return!0;j++}return!1},shiftCommentsForward=function(token,i,tokens){var comment,j,k,len,ref,ref1,ref2;for(j=i;j!==tokens.length&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));)j++;if(!(j===tokens.length||(ref1=tokens[j][0],0<=indexOf.call(DISCARDED,ref1)))){for(ref2=token.comments,k=0,len=ref2.length;k<len;k++)comment=ref2[k],comment.unshift=!0;return moveComments(token,tokens[j]),1}return j=tokens.length-1,insertPlaceholder(token,j,tokens,"push"),1},shiftCommentsBackward=function(token,i,tokens){var j,ref,ref1;for(j=i;-1!==j&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));)j--;return-1===j||(ref1=tokens[j][0],0<=indexOf.call(DISCARDED,ref1))?(insertPlaceholder(token,0,tokens,"unshift"),3):(moveComments(token,tokens[j]),1)},this.scanTokens(function(token,i,tokens){var dummyToken,j,ref,ref1,ret;if(!token.comments)return 1;if(ret=1,ref=token[0],0<=indexOf.call(DISCARDED,ref)){for(dummyToken={comments:[]},j=token.comments.length-1;-1!==j;)!1===token.comments[j].newLine&&!1===token.comments[j].here&&(dummyToken.comments.unshift(token.comments[j]),token.comments.splice(j,1)),j--;0!==dummyToken.comments.length&&(ret=shiftCommentsBackward(dummyToken,i-1,tokens)),0!==token.comments.length&&shiftCommentsForward(token,i,tokens)}else if(!dontShiftForward(i,tokens)){for(dummyToken={comments:[]},j=token.comments.length-1;-1!==j;)!token.comments[j].newLine||token.comments[j].unshift||"JS"===token[0]&&token.generated||(dummyToken.comments.unshift(token.comments[j]),token.comments.splice(j,1)),j--;0!==dummyToken.comments.length&&(ret=shiftCommentsForward(dummyToken,i+1,tokens))}return 0===(null==(ref1=token.comments)?void 0:ref1.length)&&delete token.comments,ret})}},{key:"addLocationDataToGeneratedTokens",value:function addLocationDataToGeneratedTokens(){return this.scanTokens(function(token,i,tokens){var column,line,nextLocation,prevLocation,rangeIndex,ref,ref1;if(token[2])return 1;if(!(token.generated||token.explicit))return 1;if(token.fromThen&&"INDENT"===token[0])return token[2]=token.origin[2],1;if("{"===token[0]&&(nextLocation=null==(ref=tokens[i+1])?void 0:ref[2])){var _nextLocation=nextLocation;line=_nextLocation.first_line,column=_nextLocation.first_column;var _nextLocation$range=_slicedToArray(_nextLocation.range,1);rangeIndex=_nextLocation$range[0]}else if(prevLocation=null==(ref1=tokens[i-1])?void 0:ref1[2]){var _prevLocation=prevLocation;line=_prevLocation.last_line,column=_prevLocation.last_column;var _prevLocation$range=_slicedToArray(_prevLocation.range,2);rangeIndex=_prevLocation$range[1],column+=1}else line=column=0,rangeIndex=0;return token[2]={first_line:line,first_column:column,last_line:line,last_column:column,last_line_exclusive:line,last_column_exclusive:column,range:[rangeIndex,rangeIndex]},1})}},{key:"fixIndentationLocationData",value:function fixIndentationLocationData(){var _this2=this,findPrecedingComment;return null==this.allComments&&(this.allComments=extractAllCommentTokens(this.tokens)),findPrecedingComment=function(token,_ref6){var afterPosition=_ref6.afterPosition,indentSize=_ref6.indentSize,first=_ref6.first,indented=_ref6.indented,comment,k,l,lastMatching,matches,ref,ref1,tokenStart;if(tokenStart=token[2].range[0],matches=function(comment){return(!comment.outdented||null!=indentSize&&comment.indentSize>indentSize)&&(!indented||comment.indented)&&!!(comment.locationData.range[0]<tokenStart)&&!!(comment.locationData.range[0]>afterPosition)},first){for(lastMatching=null,ref=_this2.allComments,k=ref.length-1;0<=k;k+=-1)if(comment=ref[k],matches(comment))lastMatching=comment;else if(lastMatching)return lastMatching;return lastMatching}for(ref1=_this2.allComments,l=ref1.length-1;0<=l;l+=-1)if(comment=ref1[l],matches(comment))return comment;return null},this.scanTokens(function(token,i,tokens){var isIndent,nextToken,nextTokenIndex,precedingComment,prevLocationData,prevToken,ref,ref1,ref2,useNextToken;if("INDENT"!==(ref=token[0])&&"OUTDENT"!==ref&&(!token.generated||"CALL_END"!==token[0]||null!=(ref1=token.data)&&ref1.closingTagNameToken)&&(!token.generated||"}"!==token[0]))return 1;if(isIndent="INDENT"===token[0],prevToken=null==(ref2=token.prevToken)?tokens[i-1]:ref2,prevLocationData=prevToken[2],useNextToken=token.explicit||token.generated,useNextToken)for(nextToken=token,nextTokenIndex=i;(nextToken.explicit||nextToken.generated)&&nextTokenIndex!==tokens.length-1;)nextToken=tokens[nextTokenIndex++];return(precedingComment=findPrecedingComment(useNextToken?nextToken:token,{afterPosition:prevLocationData.range[0],indentSize:token.indentSize,first:isIndent,indented:useNextToken}),isIndent&&(null==precedingComment||!precedingComment.newLine))?1:token.generated&&"CALL_END"===token[0]&&(null==precedingComment?void 0:precedingComment.indented)?1:(null!=precedingComment&&(prevLocationData=precedingComment.locationData),token[2]={first_line:null==precedingComment?prevLocationData.last_line:prevLocationData.first_line,first_column:null==precedingComment?prevLocationData.last_column:isIndent?0:prevLocationData.first_column,last_line:prevLocationData.last_line,last_column:prevLocationData.last_column,last_line_exclusive:prevLocationData.last_line_exclusive,last_column_exclusive:prevLocationData.last_column_exclusive,range:isIndent&&null!=precedingComment?[prevLocationData.range[0]-precedingComment.indentSize,prevLocationData.range[1]]:prevLocationData.range},1)})}},{key:"normalizeLines",value:function normalizeLines(){var _this3=this,action,closeElseTag,condition,ifThens,indent,leading_if_then,leading_switch_when,outdent,starter;return starter=indent=outdent=null,leading_switch_when=null,leading_if_then=null,ifThens=[],condition=function(token,i){var ref,ref1,ref2,ref3;return";"!==token[1]&&(ref=token[0],0<=indexOf.call(SINGLE_CLOSERS,ref))&&!("TERMINATOR"===token[0]&&(ref1=this.tag(i+1),0<=indexOf.call(EXPRESSION_CLOSE,ref1)))&&!("ELSE"===token[0]&&("THEN"!==starter||leading_if_then||leading_switch_when))&&("CATCH"!==(ref2=token[0])&&"FINALLY"!==ref2||"->"!==starter&&"=>"!==starter)||(ref3=token[0],0<=indexOf.call(CALL_CLOSERS,ref3))&&(this.tokens[i-1].newLine||"OUTDENT"===this.tokens[i-1][0])},action=function(token,i){return"ELSE"===token[0]&&"THEN"===starter&&ifThens.pop(),this.tokens.splice(","===this.tag(i-1)?i-1:i,0,outdent)},closeElseTag=function(tokens,i){var lastThen,outdentElse,tlen;if(tlen=ifThens.length,!(0<tlen))return i;lastThen=ifThens.pop();var _this3$indentation=_this3.indentation(tokens[lastThen]),_this3$indentation2=_slicedToArray(_this3$indentation,2);return outdentElse=_this3$indentation2[1],outdentElse[1]=2*tlen,tokens.splice(i,0,outdentElse),outdentElse[1]=2,tokens.splice(i+1,0,outdentElse),_this3.detectEnd(i+2,function(token){var ref;return"OUTDENT"===(ref=token[0])||"TERMINATOR"===ref},function(token,i){if("OUTDENT"===this.tag(i)&&"OUTDENT"===this.tag(i+1))return tokens.splice(i,2)}),i+2},this.scanTokens(function(token,i,tokens){var _token2=_slicedToArray(token,1),conditionTag,j,k,ref,ref1,ref2,tag;if(tag=_token2[0],conditionTag=("->"===tag||"=>"===tag)&&this.findTagsBackwards(i,["IF","WHILE","FOR","UNTIL","SWITCH","WHEN","LEADING_WHEN","[","INDEX_START"])&&!this.findTagsBackwards(i,["THEN","..","..."]),"TERMINATOR"===tag){if("ELSE"===this.tag(i+1)&&"OUTDENT"!==this.tag(i-1))return tokens.splice.apply(tokens,[i,1].concat(_toConsumableArray(this.indentation()))),1;if(ref=this.tag(i+1),0<=indexOf.call(EXPRESSION_CLOSE,ref))return";"===token[1]&&"OUTDENT"===this.tag(i+1)&&(tokens[i+1].prevToken=token,moveComments(token,tokens[i+1])),tokens.splice(i,1),0}if("CATCH"===tag)for(j=k=1;2>=k;j=++k)if("OUTDENT"===(ref1=this.tag(i+j))||"TERMINATOR"===ref1||"FINALLY"===ref1)return tokens.splice.apply(tokens,[i+j,0].concat(_toConsumableArray(this.indentation()))),2+j;if(("->"===tag||"=>"===tag)&&(","===(ref2=this.tag(i+1))||"]"===ref2||"."===this.tag(i+1)&&token.newLine)){var _this$indentation=this.indentation(tokens[i]),_this$indentation2=_slicedToArray(_this$indentation,2);return indent=_this$indentation2[0],outdent=_this$indentation2[1],tokens.splice(i+1,0,indent,outdent),1}if(0<=indexOf.call(SINGLE_LINERS,tag)&&"INDENT"!==this.tag(i+1)&&("ELSE"!==tag||"IF"!==this.tag(i+1))&&!conditionTag){starter=tag;var _this$indentation3=this.indentation(tokens[i]),_this$indentation4=_slicedToArray(_this$indentation3,2);return indent=_this$indentation4[0],outdent=_this$indentation4[1],"THEN"===starter&&(indent.fromThen=!0),"THEN"===tag&&(leading_switch_when=this.findTagsBackwards(i,["LEADING_WHEN"])&&"IF"===this.tag(i+1),leading_if_then=this.findTagsBackwards(i,["IF"])&&"IF"===this.tag(i+1)),"THEN"===tag&&this.findTagsBackwards(i,["IF"])&&ifThens.push(i),"ELSE"===tag&&"OUTDENT"!==this.tag(i-1)&&(i=closeElseTag(tokens,i)),tokens.splice(i+1,0,indent),this.detectEnd(i+2,condition,action),"THEN"===tag&&tokens.splice(i,1),1}return 1})}},{key:"tagPostfixConditionals",value:function tagPostfixConditionals(){var action,condition,original;return original=null,condition=function(token,i){var _token3=_slicedToArray(token,1),prevTag,tag;tag=_token3[0];var _this$tokens=_slicedToArray(this.tokens[i-1],1);return prevTag=_this$tokens[0],"TERMINATOR"===tag||"INDENT"===tag&&0>indexOf.call(SINGLE_LINERS,prevTag)},action=function(token){if("INDENT"!==token[0]||token.generated&&!token.fromThen)return original[0]="POST_"+original[0]},this.scanTokens(function(token,i){return"IF"===token[0]?(original=token,this.detectEnd(i+1,condition,action),1):1})}},{key:"exposeTokenDataToGrammar",value:function exposeTokenDataToGrammar(){return this.scanTokens(function(token){var key,ref,ref1,val;if(token.generated||token.data&&0!==Object.keys(token.data).length){for(key in token[1]=new String(token[1]),ref1=null==(ref=token.data)?{}:ref,ref1)hasProp.call(ref1,key)&&(val=ref1[key],token[1][key]=val);token.generated&&(token[1].generated=!0)}return 1})}},{key:"indentation",value:function indentation(origin){var indent,outdent;return indent=["INDENT",2],outdent=["OUTDENT",2],origin?(indent.generated=outdent.generated=!0,indent.origin=outdent.origin=origin):indent.explicit=outdent.explicit=!0,[indent,outdent]}},{key:"tag",value:function tag(i){var ref;return null==(ref=this.tokens[i])?void 0:ref[0]}}]),Rewriter}();return Rewriter.prototype.generate=generate,Rewriter}.call(this),BALANCED_PAIRS=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["INTERPOLATION_START","INTERPOLATION_END"],["REGEX_START","REGEX_END"]],exports.INVERSES=INVERSES={},EXPRESSION_START=[],EXPRESSION_END=[],(k=0,len=BALANCED_PAIRS.length);k<len;k++){var _BALANCED_PAIRS$k=_slicedToArray(BALANCED_PAIRS[k],2);left=_BALANCED_PAIRS$k[0],right=_BALANCED_PAIRS$k[1],EXPRESSION_START.push(INVERSES[right]=left),EXPRESSION_END.push(INVERSES[left]=right)}EXPRESSION_CLOSE=["CATCH","THEN","ELSE","FINALLY"].concat(EXPRESSION_END),IMPLICIT_FUNC=["IDENTIFIER","PROPERTY","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],IMPLICIT_CALL=["IDENTIFIER","JSX_TAG","PROPERTY","NUMBER","INFINITY","NAN","STRING","STRING_START","REGEX","REGEX_START","JS","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","DYNAMIC_IMPORT","IMPORT_META","NEW_TARGET","UNDEFINED","NULL","BOOL","UNARY","DO","DO_IIFE","YIELD","AWAIT","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],IMPLICIT_UNSPACED_CALL=["+","-"],IMPLICIT_END=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],SINGLE_LINERS=["ELSE","->","=>","TRY","FINALLY","THEN"],SINGLE_CLOSERS=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],LINEBREAKS=["TERMINATOR","INDENT","OUTDENT"],CALL_CLOSERS=[".","?.","::","?::"],CONTROL_IN_IMPLICIT=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],DISCARDED=["(",")","[","]","{","}",":",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","DO","DO_IIFE","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","INTERPOLATION_START","INTERPOLATION_END","LEADING_WHEN","OUTDENT","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(IMPLICIT_UNSPACED_CALL.concat(IMPLICIT_END.concat(CALL_CLOSERS.concat(CONTROL_IN_IMPLICIT)))),exports.UNFINISHED=UNFINISHED=["\\",".","?.","?::","UNARY","DO","DO_IIFE","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS"]}.call(this),{exports:exports}.exports}(),require["./lexer"]=function(){var exports={};return function(){var indexOf=[].indexOf,slice=[].slice,_require2=require("./rewriter"),BOM,BOOL,CALLABLE,CODE,COFFEE_ALIASES,COFFEE_ALIAS_MAP,COFFEE_KEYWORDS,COMMENT,COMPARABLE_LEFT_SIDE,COMPARE,COMPOUND_ASSIGN,HERECOMMENT_ILLEGAL,HEREDOC_DOUBLE,HEREDOC_INDENT,HEREDOC_SINGLE,HEREGEX,HEREGEX_COMMENT,HERE_JSTOKEN,IDENTIFIER,INDENTABLE_CLOSERS,INDEXABLE,INSIDE_JSX,INVERSES,JSTOKEN,JSX_ATTRIBUTE,JSX_FRAGMENT_IDENTIFIER,JSX_IDENTIFIER,JSX_IDENTIFIER_PART,JSX_INTERPOLATION,JS_KEYWORDS,LINE_BREAK,LINE_CONTINUER,Lexer,MATH,MULTI_DENT,NOT_REGEX,NUMBER,OPERATOR,POSSIBLY_DIVISION,REGEX,REGEX_FLAGS,REGEX_ILLEGAL,REGEX_INVALID_ESCAPE,RELATION,RESERVED,Rewriter,SHIFT,STRICT_PROSCRIBED,STRING_DOUBLE,STRING_INVALID_ESCAPE,STRING_SINGLE,STRING_START,TRAILING_SPACES,UNARY,UNARY_MATH,UNFINISHED,VALID_FLAGS,WHITESPACE,addTokenData,attachCommentsToNode,compact,count,flatten,invertLiterate,isForFrom,isUnassignable,key,locationDataToString,merge,parseNumber,repeat,replaceUnicodeCodePointEscapes,starts,throwSyntaxError;Rewriter=_require2.Rewriter,INVERSES=_require2.INVERSES,UNFINISHED=_require2.UNFINISHED;var _require3=require("./helpers");count=_require3.count,starts=_require3.starts,compact=_require3.compact,repeat=_require3.repeat,invertLiterate=_require3.invertLiterate,merge=_require3.merge,attachCommentsToNode=_require3.attachCommentsToNode,locationDataToString=_require3.locationDataToString,throwSyntaxError=_require3.throwSyntaxError,replaceUnicodeCodePointEscapes=_require3.replaceUnicodeCodePointEscapes,flatten=_require3.flatten,parseNumber=_require3.parseNumber,exports.Lexer=Lexer=function(){"use strict";function Lexer(){_classCallCheck(this,Lexer),this.error=this.error.bind(this)}return _createClass(Lexer,[{key:"tokenize",value:function tokenize(code){var opts=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},consumed,end,i,ref;for(this.literate=opts.literate,this.indent=0,this.baseIndent=0,this.continuationLineAdditionalIndent=0,this.outdebt=0,this.indents=[],this.indentLiteral="",this.ends=[],this.tokens=[],this.seenFor=!1,this.seenImport=!1,this.seenExport=!1,this.importSpecifierList=!1,this.exportSpecifierList=!1,this.jsxDepth=0,this.jsxObjAttribute={},this.chunkLine=opts.line||0,this.chunkColumn=opts.column||0,this.chunkOffset=opts.offset||0,this.locationDataCompensations=opts.locationDataCompensations||{},code=this.clean(code),i=0;this.chunk=code.slice(i);){consumed=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.jsxToken()||this.regexToken()||this.jsToken()||this.literalToken();var _this$getLineAndColum=this.getLineAndColumnFromChunk(consumed),_this$getLineAndColum2=_slicedToArray(_this$getLineAndColum,3);if(this.chunkLine=_this$getLineAndColum2[0],this.chunkColumn=_this$getLineAndColum2[1],this.chunkOffset=_this$getLineAndColum2[2],i+=consumed,opts.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:i}}return this.closeIndentation(),(end=this.ends.pop())&&this.error("missing ".concat(end.tag),(null==(ref=end.origin)?end:ref)[2]),!1===opts.rewrite?this.tokens:new Rewriter().rewrite(this.tokens)}},{key:"clean",value:function clean(code){var _this4=this,base,thusFar;return thusFar=0,code.charCodeAt(0)===BOM&&(code=code.slice(1),this.locationDataCompensations[0]=1,thusFar+=1),WHITESPACE.test(code)&&(code="\n".concat(code),this.chunkLine--,null==(base=this.locationDataCompensations)[0]&&(base[0]=0),this.locationDataCompensations[0]-=1),code=code.replace(/\r/g,function(match,offset){return _this4.locationDataCompensations[thusFar+offset]=1,""}).replace(TRAILING_SPACES,""),this.literate&&(code=invertLiterate(code)),code}},{key:"identifierToken",value:function identifierToken(){var alias,colon,colonOffset,colonToken,id,idLength,inJSXTag,input,match,poppedToken,prev,prevprev,ref,ref1,ref10,ref11,ref12,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,regExSuper,regex,sup,tag,tagToken,tokenData;if(inJSXTag=this.atJSXTag(),regex=inJSXTag?JSX_ATTRIBUTE:IDENTIFIER,!(match=regex.exec(this.chunk)))return 0;var _match=match,_match2=_slicedToArray(_match,3);if(input=_match2[0],id=_match2[1],colon=_match2[2],idLength=id.length,poppedToken=void 0,"own"===id&&"FOR"===this.tag())return this.token("OWN",id),id.length;if("from"===id&&"YIELD"===this.tag())return this.token("FROM",id),id.length;if("as"===id&&this.seenImport){if("*"===this.value())this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(ref=this.value(!0),0<=indexOf.call(COFFEE_KEYWORDS,ref)){prev=this.prev();var _ref7=["IDENTIFIER",this.value(!0)];prev[0]=_ref7[0],prev[1]=_ref7[1]}if("DEFAULT"===(ref1=this.tag())||"IMPORT_ALL"===ref1||"IDENTIFIER"===ref1)return this.token("AS",id),id.length}if("as"===id&&this.seenExport){if("IDENTIFIER"===(ref2=this.tag())||"DEFAULT"===ref2)return this.token("AS",id),id.length;if(ref3=this.value(!0),0<=indexOf.call(COFFEE_KEYWORDS,ref3)){prev=this.prev();var _ref8=["IDENTIFIER",this.value(!0)];return prev[0]=_ref8[0],prev[1]=_ref8[1],this.token("AS",id),id.length}}if("default"===id&&this.seenExport&&("EXPORT"===(ref4=this.tag())||"AS"===ref4))return this.token("DEFAULT",id),id.length;if("assert"===id&&(this.seenImport||this.seenExport)&&"STRING"===this.tag())return this.token("ASSERT",id),id.length;if("do"===id&&(regExSuper=/^(\s*super)(?!\(\))/.exec(this.chunk.slice(3)))){this.token("SUPER","super"),this.token("CALL_START","("),this.token("CALL_END",")");var _regExSuper=regExSuper,_regExSuper2=_slicedToArray(_regExSuper,2);return input=_regExSuper2[0],sup=_regExSuper2[1],sup.length+3}if(prev=this.prev(),tag=colon||null!=prev&&("."===(ref5=prev[0])||"?."===ref5||"::"===ref5||"?::"===ref5||!prev.spaced&&"@"===prev[0])?"PROPERTY":"IDENTIFIER",tokenData={},"IDENTIFIER"===tag&&(0<=indexOf.call(JS_KEYWORDS,id)||0<=indexOf.call(COFFEE_KEYWORDS,id))&&!(this.exportSpecifierList&&0<=indexOf.call(COFFEE_KEYWORDS,id))?(tag=id.toUpperCase(),"WHEN"===tag&&(ref6=this.tag(),0<=indexOf.call(LINE_BREAK,ref6))?tag="LEADING_WHEN":"FOR"===tag?this.seenFor={endsLength:this.ends.length}:"UNLESS"===tag?tag="IF":"IMPORT"===tag?this.seenImport=!0:"EXPORT"===tag?this.seenExport=!0:0<=indexOf.call(UNARY,tag)?tag="UNARY":0<=indexOf.call(RELATION,tag)&&("INSTANCEOF"!==tag&&this.seenFor?(tag="FOR"+tag,this.seenFor=!1):(tag="RELATION","!"===this.value()&&(poppedToken=this.tokens.pop(),tokenData.invert=null==(ref7=null==(ref8=poppedToken.data)?void 0:ref8.original)?poppedToken[1]:ref7)))):"IDENTIFIER"===tag&&this.seenFor&&"from"===id&&isForFrom(prev)?(tag="FORFROM",this.seenFor=!1):"PROPERTY"===tag&&prev&&(prev.spaced&&(ref9=prev[0],0<=indexOf.call(CALLABLE,ref9))&&/^[gs]et$/.test(prev[1])&&1<this.tokens.length&&"."!==(ref10=this.tokens[this.tokens.length-2][0])&&"?."!==ref10&&"@"!==ref10?this.error("'".concat(prev[1],"' cannot be used as a keyword, or as a function call without parentheses"),prev[2]):"."===prev[0]&&1<this.tokens.length&&"UNARY"===(prevprev=this.tokens[this.tokens.length-2])[0]&&"new"===prevprev[1]?prevprev[0]="NEW_TARGET":"."===prev[0]&&1<this.tokens.length&&"IMPORT"===(prevprev=this.tokens[this.tokens.length-2])[0]&&"import"===prevprev[1]?(this.seenImport=!1,prevprev[0]="IMPORT_META"):2<this.tokens.length&&(prevprev=this.tokens[this.tokens.length-2],("@"===(ref11=prev[0])||"THIS"===ref11)&&prevprev&&prevprev.spaced&&/^[gs]et$/.test(prevprev[1])&&"."!==(ref12=this.tokens[this.tokens.length-3][0])&&"?."!==ref12&&"@"!==ref12&&this.error("'".concat(prevprev[1],"' cannot be used as a keyword, or as a function call without parentheses"),prevprev[2]))),"IDENTIFIER"===tag&&0<=indexOf.call(RESERVED,id)&&!inJSXTag&&this.error("reserved word '".concat(id,"'"),{length:id.length}),"PROPERTY"===tag||this.exportSpecifierList||this.importSpecifierList||(0<=indexOf.call(COFFEE_ALIASES,id)&&(alias=id,id=COFFEE_ALIAS_MAP[id],tokenData.original=alias),tag=function(){return"!"===id?"UNARY":"=="===id||"!="===id?"COMPARE":"true"===id||"false"===id?"BOOL":"break"===id||"continue"===id||"debugger"===id?"STATEMENT":"&&"===id||"||"===id?id:tag}()),tagToken=this.token(tag,id,{length:idLength,data:tokenData}),alias&&(tagToken.origin=[tag,alias,tagToken[2]]),poppedToken){var _ref9=[poppedToken[2].first_line,poppedToken[2].first_column,poppedToken[2].range[0]];tagToken[2].first_line=_ref9[0],tagToken[2].first_column=_ref9[1],tagToken[2].range[0]=_ref9[2]}return colon&&(colonOffset=input.lastIndexOf(inJSXTag?"=":":"),colonToken=this.token(":",":",{offset:colonOffset}),inJSXTag&&(colonToken.jsxColon=!0)),inJSXTag&&"IDENTIFIER"===tag&&":"!==prev[0]&&this.token(",",",",{length:0,origin:tagToken,generated:!0}),input.length}},{key:"numberToken",value:function numberToken(){var lexedLength,match,number,parsedValue,tag,tokenData;if(!(match=NUMBER.exec(this.chunk)))return 0;switch(number=match[0],lexedLength=number.length,!1){case!/^0[BOX]/.test(number):this.error("radix prefix in '".concat(number,"' must be lowercase"),{offset:1});break;case!/^0\d*[89]/.test(number):this.error("decimal literal '".concat(number,"' must not be prefixed with '0'"),{length:lexedLength});break;case!/^0\d+/.test(number):this.error("octal literal '".concat(number,"' must be prefixed with '0o'"),{length:lexedLength});}return parsedValue=parseNumber(number),tokenData={parsedValue:parsedValue},tag=2e308===parsedValue?"INFINITY":"NUMBER","INFINITY"===tag&&(tokenData.original=number),this.token(tag,number,{length:lexedLength,data:tokenData}),lexedLength}},{key:"stringToken",value:function stringToken(){var _this5=this,_ref10=STRING_START.exec(this.chunk)||[],_ref11=_slicedToArray(_ref10,1),attempt,delimiter,doc,end,heredoc,i,indent,match,prev,quote,ref,regex,token,tokens;if(quote=_ref11[0],!quote)return 0;prev=this.prev(),prev&&"from"===this.value()&&(this.seenImport||this.seenExport)&&(prev[0]="FROM"),regex=function(){return"'"===quote?STRING_SINGLE:"\""===quote?STRING_DOUBLE:"'''"===quote?HEREDOC_SINGLE:"\"\"\""===quote?HEREDOC_DOUBLE:void 0}();var _this$matchWithInterp=this.matchWithInterpolations(regex,quote);if(tokens=_this$matchWithInterp.tokens,end=_this$matchWithInterp.index,heredoc=3===quote.length,heredoc)for(indent=null,doc=function(){var j,len,results;for(results=[],i=j=0,len=tokens.length;j<len;i=++j)token=tokens[i],"NEOSTRING"===token[0]&&results.push(token[1]);return results}().join("#{}");match=HEREDOC_INDENT.exec(doc);)attempt=match[1],(null===indent||0<(ref=attempt.length)&&ref<indent.length)&&(indent=attempt);return delimiter=quote.charAt(0),this.mergeInterpolationTokens(tokens,{quote:quote,indent:indent,endOffset:end},function(value){return _this5.validateUnicodeCodePointEscapes(value,{delimiter:quote})}),this.atJSXTag()&&this.token(",",",",{length:0,origin:this.prev,generated:!0}),end}},{key:"commentToken",value:function commentToken(){var chunk=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.chunk,_ref12=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},heregex=_ref12.heregex,_ref12$returnCommentT=_ref12.returnCommentTokens,_ref12$offsetInChunk=_ref12.offsetInChunk,offsetInChunk=void 0===_ref12$offsetInChunk?0:_ref12$offsetInChunk,commentAttachment,commentAttachments,commentWithSurroundingWhitespace,content,contents,getIndentSize,hasSeenFirstCommentLine,hereComment,hereLeadingWhitespace,hereTrailingWhitespace,i,indentSize,leadingNewline,leadingNewlineOffset,leadingNewlines,leadingWhitespace,length,lineComment,match,matchIllegal,noIndent,nonInitial,placeholderToken,precededByBlankLine,precedingNonCommentLines,prev;if(!(match=chunk.match(COMMENT)))return 0;var _match3=match,_match4=_slicedToArray(_match3,5);return commentWithSurroundingWhitespace=_match4[0],hereLeadingWhitespace=_match4[1],hereComment=_match4[2],hereTrailingWhitespace=_match4[3],lineComment=_match4[4],contents=null,leadingNewline=/^\s*\n+\s*#/.test(commentWithSurroundingWhitespace),hereComment?(matchIllegal=HERECOMMENT_ILLEGAL.exec(hereComment),matchIllegal&&this.error("block comments cannot contain ".concat(matchIllegal[0]),{offset:"###".length+matchIllegal.index,length:matchIllegal[0].length}),chunk=chunk.replace("###".concat(hereComment,"###"),""),chunk=chunk.replace(/^\n+/,""),this.lineToken({chunk:chunk}),content=hereComment,contents=[{content:content,length:commentWithSurroundingWhitespace.length-hereLeadingWhitespace.length-hereTrailingWhitespace.length,leadingWhitespace:hereLeadingWhitespace}]):(leadingNewlines="",content=lineComment.replace(/^(\n*)/,function(leading){return leadingNewlines=leading,""}),precedingNonCommentLines="",hasSeenFirstCommentLine=!1,contents=content.split("\n").map(function(line){var comment,leadingWhitespace;return-1<line.indexOf("#")?(leadingWhitespace="",content=line.replace(/^([ |\t]*)#/,function(_,whitespace){return leadingWhitespace=whitespace,""}),comment={content:content,length:"#".length+content.length,leadingWhitespace:"".concat(hasSeenFirstCommentLine?"":leadingNewlines).concat(precedingNonCommentLines).concat(leadingWhitespace),precededByBlankLine:!!precedingNonCommentLines},hasSeenFirstCommentLine=!0,precedingNonCommentLines="",comment):void(precedingNonCommentLines+="\n".concat(line))}).filter(function(comment){return comment})),getIndentSize=function(_ref13){var leadingWhitespace=_ref13.leadingWhitespace,nonInitial=_ref13.nonInitial,lastNewlineIndex;if(lastNewlineIndex=leadingWhitespace.lastIndexOf("\n"),null==hereComment&&nonInitial)null==lastNewlineIndex&&(lastNewlineIndex=-1);else if(!(-1<lastNewlineIndex))return null;return leadingWhitespace.length-1-lastNewlineIndex},commentAttachments=function(){var j,len,results;for(results=[],i=j=0,len=contents.length;j<len;i=++j){var _contents$i=contents[i];content=_contents$i.content,length=_contents$i.length,leadingWhitespace=_contents$i.leadingWhitespace,precededByBlankLine=_contents$i.precededByBlankLine,nonInitial=0!==i,leadingNewlineOffset=nonInitial?1:0,offsetInChunk+=leadingNewlineOffset+leadingWhitespace.length,indentSize=getIndentSize({leadingWhitespace:leadingWhitespace,nonInitial:nonInitial}),noIndent=null==indentSize||-1===indentSize,commentAttachment={content:content,here:null!=hereComment,newLine:leadingNewline||nonInitial,locationData:this.makeLocationData({offsetInChunk:offsetInChunk,length:length}),precededByBlankLine:precededByBlankLine,indentSize:indentSize,indented:!noIndent&&indentSize>this.indent,outdented:!noIndent&&indentSize<this.indent},heregex&&(commentAttachment.heregex=!0),offsetInChunk+=length,results.push(commentAttachment)}return results}.call(this),prev=this.prev(),prev?attachCommentsToNode(commentAttachments,prev):(commentAttachments[0].newLine=!0,this.lineToken({chunk:this.chunk.slice(commentWithSurroundingWhitespace.length),offset:commentWithSurroundingWhitespace.length}),placeholderToken=this.makeToken("JS","",{offset:commentWithSurroundingWhitespace.length,generated:!0}),placeholderToken.comments=commentAttachments,this.tokens.push(placeholderToken),this.newlineToken(commentWithSurroundingWhitespace.length)),void 0!==_ref12$returnCommentT&&_ref12$returnCommentT?commentAttachments:commentWithSurroundingWhitespace.length}},{key:"jsToken",value:function jsToken(){var length,match,matchedHere,script;return"`"===this.chunk.charAt(0)&&(match=(matchedHere=HERE_JSTOKEN.exec(this.chunk))||JSTOKEN.exec(this.chunk))?(script=match[1],length=match[0].length,this.token("JS",script,{length:length,data:{here:!!matchedHere}}),length):0}},{key:"regexToken",value:function regexToken(){var _this6=this,body,closed,comment,commentIndex,commentOpts,commentTokens,comments,delimiter,end,flags,fullMatch,index,leadingWhitespace,match,matchedComment,origin,prev,ref,ref1,regex,tokens;switch(!1){case!(match=REGEX_ILLEGAL.exec(this.chunk)):this.error("regular expressions cannot begin with ".concat(match[2]),{offset:match.index+match[1].length});break;case!(match=this.matchWithInterpolations(HEREGEX,"///")):var _match5=match;for(tokens=_match5.tokens,index=_match5.index,comments=[];matchedComment=HEREGEX_COMMENT.exec(this.chunk.slice(0,index));){var _matchedComment=matchedComment;commentIndex=_matchedComment.index;var _matchedComment2=matchedComment,_matchedComment3=_slicedToArray(_matchedComment2,3);fullMatch=_matchedComment3[0],leadingWhitespace=_matchedComment3[1],comment=_matchedComment3[2],comments.push({comment:comment,offsetInChunk:commentIndex+leadingWhitespace.length})}commentTokens=flatten(function(){var j,len,results;for(results=[],j=0,len=comments.length;j<len;j++)commentOpts=comments[j],results.push(this.commentToken(commentOpts.comment,Object.assign(commentOpts,{heregex:!0,returnCommentTokens:!0})));return results}.call(this));break;case!(match=REGEX.exec(this.chunk)):var _match6=match,_match7=_slicedToArray(_match6,3);if(regex=_match7[0],body=_match7[1],closed=_match7[2],this.validateEscapes(body,{isRegex:!0,offsetInChunk:1}),index=regex.length,prev=this.prev(),prev)if(prev.spaced&&(ref=prev[0],0<=indexOf.call(CALLABLE,ref))){if(!closed||POSSIBLY_DIVISION.test(regex))return 0;}else if(ref1=prev[0],0<=indexOf.call(NOT_REGEX,ref1))return 0;closed||this.error("missing / (unclosed regex)");break;default:return 0;}var _REGEX_FLAGS$exec=REGEX_FLAGS.exec(this.chunk.slice(index)),_REGEX_FLAGS$exec2=_slicedToArray(_REGEX_FLAGS$exec,1);switch(flags=_REGEX_FLAGS$exec2[0],end=index+flags.length,origin=this.makeToken("REGEX",null,{length:end}),!1){case!!VALID_FLAGS.test(flags):this.error("invalid regular expression flags ".concat(flags),{offset:index,length:flags.length});break;case!(regex||1===tokens.length):delimiter=body?"/":"///",null==body&&(body=tokens[0][1]),this.validateUnicodeCodePointEscapes(body,{delimiter:delimiter}),this.token("REGEX","/".concat(body,"/").concat(flags),{length:end,origin:origin,data:{delimiter:delimiter}});break;default:this.token("REGEX_START","(",{length:0,origin:origin,generated:!0}),this.token("IDENTIFIER","RegExp",{length:0,generated:!0}),this.token("CALL_START","(",{length:0,generated:!0}),this.mergeInterpolationTokens(tokens,{double:!0,heregex:{flags:flags},endOffset:end-flags.length,quote:"///"},function(str){return _this6.validateUnicodeCodePointEscapes(str,{delimiter:delimiter})}),flags&&(this.token(",",",",{offset:index-1,length:0,generated:!0}),this.token("STRING","\""+flags+"\"",{offset:index,length:flags.length})),this.token(")",")",{offset:end,length:0,generated:!0}),this.token("REGEX_END",")",{offset:end,length:0,generated:!0});}return(null==commentTokens?void 0:commentTokens.length)&&addTokenData(this.tokens[this.tokens.length-1],{heregexCommentTokens:commentTokens}),end}},{key:"lineToken",value:function lineToken(){var _Mathmin=Math.min,_ref14=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},_ref14$chunk=_ref14.chunk,chunk=void 0===_ref14$chunk?this.chunk:_ref14$chunk,_ref14$offset=_ref14.offset,offset=void 0===_ref14$offset?0:_ref14$offset,backslash,diff,endsContinuationLineIndentation,indent,match,minLiteralLength,newIndentLiteral,noNewlines,prev,ref,size;if(!(match=MULTI_DENT.exec(chunk)))return 0;if(indent=match[0],prev=this.prev(),backslash="\\"===(null==prev?void 0:prev[0]),(backslash||(null==(ref=this.seenFor)?void 0:ref.endsLength)<this.ends.length)&&this.seenFor||(this.seenFor=!1),backslash&&this.seenImport||this.importSpecifierList||(this.seenImport=!1),backslash&&this.seenExport||this.exportSpecifierList||(this.seenExport=!1),size=indent.length-1-indent.lastIndexOf("\n"),noNewlines=this.unfinished(),newIndentLiteral=0<size?indent.slice(-size):"",!/^(.?)\1*$/.exec(newIndentLiteral))return this.error("mixed indentation",{offset:indent.length}),indent.length;if(minLiteralLength=_Mathmin(newIndentLiteral.length,this.indentLiteral.length),newIndentLiteral.slice(0,minLiteralLength)!==this.indentLiteral.slice(0,minLiteralLength))return this.error("indentation mismatch",{offset:indent.length}),indent.length;if(size-this.continuationLineAdditionalIndent===this.indent)return noNewlines?this.suppressNewlines():this.newlineToken(offset),indent.length;if(size>this.indent){if(noNewlines)return backslash||(this.continuationLineAdditionalIndent=size-this.indent),this.continuationLineAdditionalIndent&&(prev.continuationLineIndent=this.indent+this.continuationLineAdditionalIndent),this.suppressNewlines(),indent.length;if(!this.tokens.length)return this.baseIndent=this.indent=size,this.indentLiteral=newIndentLiteral,indent.length;diff=size-this.indent+this.outdebt,this.token("INDENT",diff,{offset:offset+indent.length-size,length:size}),this.indents.push(diff),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.continuationLineAdditionalIndent=0,this.indent=size,this.indentLiteral=newIndentLiteral}else size<this.baseIndent?this.error("missing indentation",{offset:offset+indent.length}):(endsContinuationLineIndentation=0<this.continuationLineAdditionalIndent,this.continuationLineAdditionalIndent=0,this.outdentToken({moveOut:this.indent-size,noNewlines:noNewlines,outdentLength:indent.length,offset:offset,indentSize:size,endsContinuationLineIndentation:endsContinuationLineIndentation}));return indent.length}},{key:"outdentToken",value:function outdentToken(_ref15){var moveOut=_ref15.moveOut,noNewlines=_ref15.noNewlines,_ref15$outdentLength=_ref15.outdentLength,outdentLength=void 0===_ref15$outdentLength?0:_ref15$outdentLength,_ref15$offset=_ref15.offset,offset=void 0===_ref15$offset?0:_ref15$offset,indentSize=_ref15.indentSize,endsContinuationLineIndentation=_ref15.endsContinuationLineIndentation,decreasedIndent,dent,lastIndent,ref,terminatorToken;for(decreasedIndent=this.indent-moveOut;0<moveOut;)lastIndent=this.indents[this.indents.length-1],lastIndent?this.outdebt&&moveOut<=this.outdebt?(this.outdebt-=moveOut,moveOut=0):(dent=this.indents.pop()+this.outdebt,outdentLength&&(ref=this.chunk[outdentLength],0<=indexOf.call(INDENTABLE_CLOSERS,ref))&&(decreasedIndent-=dent-moveOut,moveOut=dent),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",moveOut,{length:outdentLength,indentSize:indentSize+moveOut-dent}),moveOut-=dent):this.outdebt=moveOut=0;return dent&&(this.outdebt-=moveOut),this.suppressSemicolons(),"TERMINATOR"===this.tag()||noNewlines||(terminatorToken=this.token("TERMINATOR","\n",{offset:offset+outdentLength,length:0}),endsContinuationLineIndentation&&(terminatorToken.endsContinuationLineIndentation={preContinuationLineIndent:this.indent})),this.indent=decreasedIndent,this.indentLiteral=this.indentLiteral.slice(0,decreasedIndent),this}},{key:"whitespaceToken",value:function whitespaceToken(){var match,nline,prev;return(match=WHITESPACE.exec(this.chunk))||(nline="\n"===this.chunk.charAt(0))?(prev=this.prev(),prev&&(prev[match?"spaced":"newLine"]=!0),match?match[0].length:0):0}},{key:"newlineToken",value:function newlineToken(offset){return this.suppressSemicolons(),"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",{offset:offset,length:0}),this}},{key:"suppressNewlines",value:function suppressNewlines(){var prev;return prev=this.prev(),"\\"===prev[1]&&(prev.comments&&1<this.tokens.length&&attachCommentsToNode(prev.comments,this.tokens[this.tokens.length-2]),this.tokens.pop()),this}},{key:"jsxToken",value:function jsxToken(){var _this7=this,afterTag,end,endToken,firstChar,fullId,fullTagName,id,input,j,jsxTag,len,match,offset,openingTagToken,prev,prevChar,properties,property,ref,tagToken,token,tokens;if(firstChar=this.chunk[0],prevChar=0<this.tokens.length?this.tokens[this.tokens.length-1][0]:"","<"===firstChar){if(match=JSX_IDENTIFIER.exec(this.chunk.slice(1))||JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(1)),!(match&&(0<this.jsxDepth||!(prev=this.prev())||prev.spaced||(ref=prev[0],0>indexOf.call(COMPARABLE_LEFT_SIDE,ref)))))return 0;var _match8=match,_match9=_slicedToArray(_match8,2);if(input=_match9[0],id=_match9[1],fullId=id,0<=indexOf.call(id,".")){var _id$split=id.split("."),_id$split2=_toArray(_id$split);id=_id$split2[0],properties=_id$split2.slice(1)}else properties=[];for(tagToken=this.token("JSX_TAG",id,{length:id.length+1,data:{openingBracketToken:this.makeToken("<","<"),tagNameToken:this.makeToken("IDENTIFIER",id,{offset:1})}}),offset=id.length+1,(j=0,len=properties.length);j<len;j++)property=properties[j],this.token(".",".",{offset:offset}),offset+=1,this.token("PROPERTY",property,{offset:offset}),offset+=property.length;return this.token("CALL_START","(",{generated:!0}),this.token("[","[",{generated:!0}),this.ends.push({tag:"/>",origin:tagToken,name:id,properties:properties}),this.jsxDepth++,fullId.length+1}if(jsxTag=this.atJSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("]","]",{length:2,generated:!0}),this.token("CALL_END",")",{length:2,generated:!0,data:{selfClosingSlashToken:this.makeToken("/","/"),closingBracketToken:this.makeToken(">",">",{offset:1})}}),this.jsxDepth--,2;if("{"===firstChar)return":"===prevChar?(token=this.token("(","{"),this.jsxObjAttribute[this.jsxDepth]=!1,addTokenData(this.tokens[this.tokens.length-3],{jsx:!0})):(token=this.token("{","{"),this.jsxObjAttribute[this.jsxDepth]=!0),this.ends.push({tag:"}",origin:token}),1;if(">"===firstChar){var _this$pair=this.pair("/>");openingTagToken=_this$pair.origin,this.token("]","]",{generated:!0,data:{closingBracketToken:this.makeToken(">",">")}}),this.token(",","JSX_COMMA",{generated:!0});var _this$matchWithInterp2=this.matchWithInterpolations(INSIDE_JSX,">","</",JSX_INTERPOLATION);tokens=_this$matchWithInterp2.tokens,end=_this$matchWithInterp2.index,this.mergeInterpolationTokens(tokens,{endOffset:end,jsx:!0},function(value){return _this7.validateUnicodeCodePointEscapes(value,{delimiter:">"})}),match=JSX_IDENTIFIER.exec(this.chunk.slice(end))||JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(end)),match&&match[1]==="".concat(jsxTag.name).concat(function(){var k,len1,ref1,results;for(ref1=jsxTag.properties,results=[],(k=0,len1=ref1.length);k<len1;k++)property=ref1[k],results.push(".".concat(property));return results}().join(""))||this.error("expected corresponding JSX closing tag for ".concat(jsxTag.name),jsxTag.origin.data.tagNameToken[2]);var _match10=match,_match11=_slicedToArray(_match10,2);return fullTagName=_match11[1],afterTag=end+fullTagName.length,">"!==this.chunk[afterTag]&&this.error("missing closing > after tag name",{offset:afterTag,length:1}),endToken=this.token("CALL_END",")",{offset:end-2,length:fullTagName.length+3,generated:!0,data:{closingTagOpeningBracketToken:this.makeToken("<","<",{offset:end-2}),closingTagSlashToken:this.makeToken("/","/",{offset:end-1}),closingTagNameToken:this.makeToken("IDENTIFIER",fullTagName,{offset:end}),closingTagClosingBracketToken:this.makeToken(">",">",{offset:end+fullTagName.length})}}),addTokenData(openingTagToken,endToken.data),this.jsxDepth--,afterTag+1}return 0}return this.atJSXTag(1)?"}"===firstChar?(this.pair(firstChar),this.jsxObjAttribute[this.jsxDepth]?(this.token("}","}"),this.jsxObjAttribute[this.jsxDepth]=!1):this.token(")","}"),this.token(",",",",{generated:!0}),1):0:0}},{key:"atJSXTag",value:function atJSXTag(){var depth=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,i,last,ref;if(0===this.jsxDepth)return!1;for(i=this.ends.length-1;"OUTDENT"===(null==(ref=this.ends[i])?void 0:ref.tag)||0<depth--;)i--;return last=this.ends[i],"/>"===(null==last?void 0:last.tag)&&last}},{key:"literalToken",value:function literalToken(){var match,message,origin,prev,ref,ref1,ref2,ref3,ref4,ref5,skipToken,tag,token,value;if(match=OPERATOR.exec(this.chunk)){var _match12=match,_match13=_slicedToArray(_match12,1);value=_match13[0],CODE.test(value)&&this.tagParameters()}else value=this.chunk.charAt(0);if(tag=value,prev=this.prev(),prev&&0<=indexOf.call(["="].concat(_toConsumableArray(COMPOUND_ASSIGN)),value)&&(skipToken=!1,"="!==value||"||"!==(ref=prev[1])&&"&&"!==ref||prev.spaced||(prev[0]="COMPOUND_ASSIGN",prev[1]+="=",(null==(ref1=prev.data)?void 0:ref1.original)&&(prev.data.original+="="),prev[2].range=[prev[2].range[0],prev[2].range[1]+1],prev[2].last_column+=1,prev[2].last_column_exclusive+=1,prev=this.tokens[this.tokens.length-2],skipToken=!0),prev&&"PROPERTY"!==prev[0]&&(origin=null==(ref2=prev.origin)?prev:ref2,message=isUnassignable(prev[1],origin[1]),message&&this.error(message,origin[2])),skipToken))return value.length;if("("===value&&"IMPORT"===(null==prev?void 0:prev[0])&&(prev[0]="DYNAMIC_IMPORT"),"{"===value&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===value?this.importSpecifierList=!1:"{"===value&&"EXPORT"===(null==prev?void 0:prev[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===value&&(this.exportSpecifierList=!1),";"===value)(ref3=null==prev?void 0:prev[0],0<=indexOf.call(["="].concat(_toConsumableArray(UNFINISHED)),ref3))&&this.error("unexpected ;"),this.seenFor=this.seenImport=this.seenExport=!1,tag="TERMINATOR";else if("*"===value&&"EXPORT"===(null==prev?void 0:prev[0]))tag="EXPORT_ALL";else if(0<=indexOf.call(MATH,value))tag="MATH";else if(0<=indexOf.call(COMPARE,value))tag="COMPARE";else if(0<=indexOf.call(COMPOUND_ASSIGN,value))tag="COMPOUND_ASSIGN";else if(0<=indexOf.call(UNARY,value))tag="UNARY";else if(0<=indexOf.call(UNARY_MATH,value))tag="UNARY_MATH";else if(0<=indexOf.call(SHIFT,value))tag="SHIFT";else if("?"===value&&(null==prev?void 0:prev.spaced))tag="BIN?";else if(prev)if("("===value&&!prev.spaced&&(ref4=prev[0],0<=indexOf.call(CALLABLE,ref4)))"?"===prev[0]&&(prev[0]="FUNC_EXIST"),tag="CALL_START";else if("["===value&&((ref5=prev[0],0<=indexOf.call(INDEXABLE,ref5))&&!prev.spaced||"::"===prev[0]))switch(tag="INDEX_START",prev[0]){case"?":prev[0]="INDEX_SOAK";}return token=this.makeToken(tag,value),"("===value||"{"===value||"["===value?this.ends.push({tag:INVERSES[value],origin:token}):")"===value||"}"===value||"]"===value?this.pair(value):void 0,(this.tokens.push(this.makeToken(tag,value)),value.length)}},{key:"tagParameters",value:function tagParameters(){var i,paramEndToken,stack,tok,tokens;if(")"!==this.tag())return this.tagDoIife();for(stack=[],tokens=this.tokens,i=tokens.length,paramEndToken=tokens[--i],paramEndToken[0]="PARAM_END";tok=tokens[--i];)switch(tok[0]){case")":stack.push(tok);break;case"(":case"CALL_START":if(stack.length)stack.pop();else return"("===tok[0]?(tok[0]="PARAM_START",this.tagDoIife(i-1)):(paramEndToken[0]="CALL_END",this);}return this}},{key:"tagDoIife",value:function tagDoIife(tokenIndex){var tok;return(tok=this.tokens[null==tokenIndex?this.tokens.length-1:tokenIndex],"DO"!==(null==tok?void 0:tok[0]))?this:(tok[0]="DO_IIFE",this)}},{key:"closeIndentation",value:function closeIndentation(){return this.outdentToken({moveOut:this.indent,indentSize:0})}},{key:"matchWithInterpolations",value:function matchWithInterpolations(regex,delimiter){var closingDelimiter=2<arguments.length&&void 0!==arguments[2]?arguments[2]:delimiter,interpolators=3<arguments.length&&void 0!==arguments[3]?arguments[3]:/^#\{/,braceInterpolator,close,column,index,interpolationOffset,interpolator,line,match,nested,offset,offsetInChunk,open,ref,ref1,rest,str,strPart,tokens;if(tokens=[],offsetInChunk=delimiter.length,this.chunk.slice(0,offsetInChunk)!==delimiter)return null;for(str=this.chunk.slice(offsetInChunk);;){var _regex$exec=regex.exec(str),_regex$exec2=_slicedToArray(_regex$exec,1);if(strPart=_regex$exec2[0],this.validateEscapes(strPart,{isRegex:"/"===delimiter.charAt(0),offsetInChunk:offsetInChunk}),tokens.push(this.makeToken("NEOSTRING",strPart,{offset:offsetInChunk})),str=str.slice(strPart.length),offsetInChunk+=strPart.length,!(match=interpolators.exec(str)))break;var _match14=match,_match15=_slicedToArray(_match14,1);interpolator=_match15[0],interpolationOffset=interpolator.length-1;var _this$getLineAndColum3=this.getLineAndColumnFromChunk(offsetInChunk+interpolationOffset),_this$getLineAndColum4=_slicedToArray(_this$getLineAndColum3,3);line=_this$getLineAndColum4[0],column=_this$getLineAndColum4[1],offset=_this$getLineAndColum4[2],rest=str.slice(interpolationOffset);var _Lexer$tokenize=new Lexer().tokenize(rest,{line:line,column:column,offset:offset,untilBalanced:!0,locationDataCompensations:this.locationDataCompensations});if(nested=_Lexer$tokenize.tokens,index=_Lexer$tokenize.index,index+=interpolationOffset,braceInterpolator="}"===str[index-1],braceInterpolator){var _nested,_nested2,_slice$call,_slice$call2;_nested=nested,_nested2=_slicedToArray(_nested,1),open=_nested2[0],_nested,_slice$call=slice.call(nested,-1),_slice$call2=_slicedToArray(_slice$call,1),close=_slice$call2[0],_slice$call,open[0]="INTERPOLATION_START",open[1]="(",open[2].first_column-=interpolationOffset,open[2].range=[open[2].range[0]-interpolationOffset,open[2].range[1]],close[0]="INTERPOLATION_END",close[1]=")",close.origin=["","end of interpolation",close[2]]}"TERMINATOR"===(null==(ref=nested[1])?void 0:ref[0])&&nested.splice(1,1),"INDENT"===(null==(ref1=nested[nested.length-3])?void 0:ref1[0])&&"OUTDENT"===nested[nested.length-2][0]&&nested.splice(-3,2),braceInterpolator||(open=this.makeToken("INTERPOLATION_START","(",{offset:offsetInChunk,length:0,generated:!0}),close=this.makeToken("INTERPOLATION_END",")",{offset:offsetInChunk+index,length:0,generated:!0}),nested=[open].concat(_toConsumableArray(nested),[close])),tokens.push(["TOKENS",nested]),str=str.slice(index),offsetInChunk+=index}return str.slice(0,closingDelimiter.length)!==closingDelimiter&&this.error("missing ".concat(closingDelimiter),{length:delimiter.length}),{tokens:tokens,index:offsetInChunk+closingDelimiter.length}}},{key:"mergeInterpolationTokens",value:function mergeInterpolationTokens(tokens,options,fn){var $,converted,_double,endOffset,firstIndex,heregex,i,indent,j,jsx,k,lastToken,len,len1,locationToken,lparen,placeholderToken,quote,ref,ref1,rparen,tag,token,tokensToPush,val,value;for(quote=options.quote,indent=options.indent,_double=options.double,heregex=options.heregex,endOffset=options.endOffset,jsx=options.jsx,1<tokens.length&&(lparen=this.token("STRING_START","(",{length:null==(ref=null==quote?void 0:quote.length)?0:ref,data:{quote:quote},generated:null==quote||!quote.length})),firstIndex=this.tokens.length,$=tokens.length-1,(i=j=0,len=tokens.length);j<len;i=++j){var _this$tokens2;token=tokens[i];var _token4=token,_token5=_slicedToArray(_token4,2);switch(tag=_token5[0],value=_token5[1],tag){case"TOKENS":if(2===value.length&&(value[0].comments||value[1].comments)){for(placeholderToken=this.makeToken("JS","",{generated:!0}),placeholderToken[2]=value[0][2],(k=0,len1=value.length);k<len1;k++){var _placeholderToken$com;(val=value[k],!!val.comments)&&(null==placeholderToken.comments&&(placeholderToken.comments=[]),(_placeholderToken$com=placeholderToken.comments).push.apply(_placeholderToken$com,_toConsumableArray(val.comments)))}value.splice(1,0,placeholderToken)}locationToken=value[0],tokensToPush=value;break;case"NEOSTRING":converted=fn.call(this,token[1],i),0===i&&addTokenData(token,{initialChunk:!0}),i===$&&addTokenData(token,{finalChunk:!0}),addTokenData(token,{indent:indent,quote:quote,double:_double}),heregex&&addTokenData(token,{heregex:heregex}),jsx&&addTokenData(token,{jsx:jsx}),token[0]="STRING",token[1]="\""+converted+"\"",1===tokens.length&&null!=quote&&(token[2].first_column-=quote.length,"\n"===token[1].substr(-2,1)?(token[2].last_line+=1,token[2].last_column=quote.length-1):(token[2].last_column+=quote.length,2===token[1].length&&(token[2].last_column-=1)),token[2].last_column_exclusive+=quote.length,token[2].range=[token[2].range[0]-quote.length,token[2].range[1]+quote.length]),locationToken=token,tokensToPush=[token];}(_this$tokens2=this.tokens).push.apply(_this$tokens2,_toConsumableArray(tokensToPush))}if(lparen){var _slice$call3=slice.call(tokens,-1),_slice$call4=_slicedToArray(_slice$call3,1);return lastToken=_slice$call4[0],lparen.origin=["STRING",null,{first_line:lparen[2].first_line,first_column:lparen[2].first_column,last_line:lastToken[2].last_line,last_column:lastToken[2].last_column,last_line_exclusive:lastToken[2].last_line_exclusive,last_column_exclusive:lastToken[2].last_column_exclusive,range:[lparen[2].range[0],lastToken[2].range[1]]}],(null==quote?void 0:quote.length)||(lparen[2]=lparen.origin[2]),rparen=this.token("STRING_END",")",{offset:endOffset-(null==quote?"":quote).length,length:null==(ref1=null==quote?void 0:quote.length)?0:ref1,generated:null==quote||!quote.length})}}},{key:"pair",value:function pair(tag){var _slice$call5,_slice$call6,lastIndent,prev,ref,ref1,wanted;if(ref=this.ends,_slice$call5=slice.call(ref,-1),_slice$call6=_slicedToArray(_slice$call5,1),prev=_slice$call6[0],_slice$call5,tag!==(wanted=null==prev?void 0:prev.tag)){var _slice$call7,_slice$call8;return"OUTDENT"!==wanted&&this.error("unmatched ".concat(tag)),ref1=this.indents,_slice$call7=slice.call(ref1,-1),_slice$call8=_slicedToArray(_slice$call7,1),lastIndent=_slice$call8[0],_slice$call7,this.outdentToken({moveOut:lastIndent,noNewlines:!0}),this.pair(tag)}return this.ends.pop()}},{key:"getLocationDataCompensation",value:function getLocationDataCompensation(start,end){var compensation,current,initialEnd,totalCompensation;for(totalCompensation=0,initialEnd=end,current=start;current<=end&&(current!==end||start===initialEnd);)compensation=this.locationDataCompensations[current],null!=compensation&&(totalCompensation+=compensation,end+=compensation),current++;return totalCompensation}},{key:"getLineAndColumnFromChunk",value:function getLineAndColumnFromChunk(offset){var column,columnCompensation,compensation,lastLine,lineCount,previousLinesCompensation,ref,string;if(compensation=this.getLocationDataCompensation(this.chunkOffset,this.chunkOffset+offset),0===offset)return[this.chunkLine,this.chunkColumn+compensation,this.chunkOffset+compensation];if(string=offset>=this.chunk.length?this.chunk:this.chunk.slice(0,+(offset-1)+1||9e9),lineCount=count(string,"\n"),column=this.chunkColumn,0<lineCount){var _slice$call9,_slice$call10;ref=string.split("\n"),_slice$call9=slice.call(ref,-1),_slice$call10=_slicedToArray(_slice$call9,1),lastLine=_slice$call10[0],_slice$call9,column=lastLine.length,previousLinesCompensation=this.getLocationDataCompensation(this.chunkOffset,this.chunkOffset+offset-column),0>previousLinesCompensation&&(previousLinesCompensation=0),columnCompensation=this.getLocationDataCompensation(this.chunkOffset+offset+previousLinesCompensation-column,this.chunkOffset+offset+previousLinesCompensation)}else column+=string.length,columnCompensation=compensation;return[this.chunkLine+lineCount,column+columnCompensation,this.chunkOffset+offset+compensation]}},{key:"makeLocationData",value:function makeLocationData(_ref16){var offsetInChunk=_ref16.offsetInChunk,length=_ref16.length,endOffset,lastCharacter,locationData;locationData={range:[]};var _this$getLineAndColum5=this.getLineAndColumnFromChunk(offsetInChunk),_this$getLineAndColum6=_slicedToArray(_this$getLineAndColum5,3);locationData.first_line=_this$getLineAndColum6[0],locationData.first_column=_this$getLineAndColum6[1],locationData.range[0]=_this$getLineAndColum6[2],lastCharacter=0<length?length-1:0;var _this$getLineAndColum7=this.getLineAndColumnFromChunk(offsetInChunk+lastCharacter),_this$getLineAndColum8=_slicedToArray(_this$getLineAndColum7,3);locationData.last_line=_this$getLineAndColum8[0],locationData.last_column=_this$getLineAndColum8[1],endOffset=_this$getLineAndColum8[2];var _this$getLineAndColum9=this.getLineAndColumnFromChunk(offsetInChunk+lastCharacter+(0<length?1:0)),_this$getLineAndColum10=_slicedToArray(_this$getLineAndColum9,2);return locationData.last_line_exclusive=_this$getLineAndColum10[0],locationData.last_column_exclusive=_this$getLineAndColum10[1],locationData.range[1]=0<length?endOffset+1:endOffset,locationData}},{key:"makeToken",value:function makeToken(tag,value){var _ref17=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_ref17$offset=_ref17.offset,offsetInChunk=void 0===_ref17$offset?0:_ref17$offset,_ref17$length=_ref17.length,length=void 0===_ref17$length?value.length:_ref17$length,origin=_ref17.origin,generated=_ref17.generated,indentSize=_ref17.indentSize,token;return token=[tag,value,this.makeLocationData({offsetInChunk:offsetInChunk,length:length})],origin&&(token.origin=origin),generated&&(token.generated=!0),null!=indentSize&&(token.indentSize=indentSize),token}},{key:"token",value:function(tag,value){var _ref18=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},offset=_ref18.offset,length=_ref18.length,origin=_ref18.origin,data=_ref18.data,generated=_ref18.generated,indentSize=_ref18.indentSize,token;return token=this.makeToken(tag,value,{offset:offset,length:length,origin:origin,generated:generated,indentSize:indentSize}),data&&addTokenData(token,data),this.tokens.push(token),token}},{key:"tag",value:function tag(){var _slice$call11,_slice$call12,ref,token;return ref=this.tokens,_slice$call11=slice.call(ref,-1),_slice$call12=_slicedToArray(_slice$call11,1),token=_slice$call12[0],_slice$call11,null==token?void 0:token[0]}},{key:"value",value:function value(){var useOrigin=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0],_slice$call13,_slice$call14,ref,token;return ref=this.tokens,_slice$call13=slice.call(ref,-1),_slice$call14=_slicedToArray(_slice$call13,1),token=_slice$call14[0],_slice$call13,useOrigin&&null!=(null==token?void 0:token.origin)?token.origin[1]:null==token?void 0:token[1]}},{key:"prev",value:function prev(){return this.tokens[this.tokens.length-1]}},{key:"unfinished",value:function unfinished(){var ref;return LINE_CONTINUER.test(this.chunk)||(ref=this.tag(),0<=indexOf.call(UNFINISHED,ref))}},{key:"validateUnicodeCodePointEscapes",value:function validateUnicodeCodePointEscapes(str,options){return replaceUnicodeCodePointEscapes(str,merge(options,{error:this.error}))}},{key:"validateEscapes",value:function validateEscapes(str){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},before,hex,invalidEscape,invalidEscapeRegex,match,message,octal,ref,unicode,unicodeCodePoint;if(invalidEscapeRegex=options.isRegex?REGEX_INVALID_ESCAPE:STRING_INVALID_ESCAPE,match=invalidEscapeRegex.exec(str),!!match)return match[0],before=match[1],octal=match[2],hex=match[3],unicodeCodePoint=match[4],unicode=match[5],message=octal?"octal escape sequences are not allowed":"invalid escape sequence",invalidEscape="\\".concat(octal||hex||unicodeCodePoint||unicode),this.error("".concat(message," ").concat(invalidEscape),{offset:(null==(ref=options.offsetInChunk)?0:ref)+match.index+before.length,length:invalidEscape.length})}},{key:"suppressSemicolons",value:function suppressSemicolons(){var ref,ref1,results;for(results=[];";"===this.value();)this.tokens.pop(),(ref=null==(ref1=this.prev())?void 0:ref1[0],0<=indexOf.call(["="].concat(_toConsumableArray(UNFINISHED)),ref))?results.push(this.error("unexpected ;")):results.push(void 0);return results}},{key:"error",value:function error(message){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_this$getLineAndColum11,_this$getLineAndColum12,first_column,first_line,location,ref,ref1;return location="first_line"in options?options:(_this$getLineAndColum11=this.getLineAndColumnFromChunk(null==(ref=options.offset)?0:ref),_this$getLineAndColum12=_slicedToArray(_this$getLineAndColum11,2),first_line=_this$getLineAndColum12[0],first_column=_this$getLineAndColum12[1],_this$getLineAndColum11,{first_line:first_line,first_column:first_column,last_column:first_column+(null==(ref1=options.length)?1:ref1)-1}),throwSyntaxError(message,location)}}]),Lexer}(),isUnassignable=function(name){var displayName=1<arguments.length&&void 0!==arguments[1]?arguments[1]:name;switch(!1){case 0>indexOf.call([].concat(_toConsumableArray(JS_KEYWORDS),_toConsumableArray(COFFEE_KEYWORDS)),name):return"keyword '".concat(displayName,"' can't be assigned");case 0>indexOf.call(STRICT_PROSCRIBED,name):return"'".concat(displayName,"' can't be assigned");case 0>indexOf.call(RESERVED,name):return"reserved word '".concat(displayName,"' can't be assigned");default:return!1;}},exports.isUnassignable=isUnassignable,isForFrom=function(prev){var ref;return"IDENTIFIER"===prev[0]||"FOR"!==prev[0]&&"{"!==(ref=prev[1])&&"["!==ref&&","!==ref&&":"!==ref},addTokenData=function(token,data){return Object.assign(null==token.data?token.data={}:token.data,data)},JS_KEYWORDS=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],COFFEE_KEYWORDS=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],COFFEE_ALIAS_MAP={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},COFFEE_ALIASES=function(){var results;for(key in results=[],COFFEE_ALIAS_MAP)results.push(key);return results}(),COFFEE_KEYWORDS=COFFEE_KEYWORDS.concat(COFFEE_ALIASES),RESERVED=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],STRICT_PROSCRIBED=["arguments","eval"],exports.JS_FORBIDDEN=JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED),BOM=65279,IDENTIFIER=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,JSX_IDENTIFIER_PART=/(?:(?!\s)[\-$\w\x7f-\uffff])+/.source,JSX_IDENTIFIER=RegExp("^(?![\\d<])(".concat(JSX_IDENTIFIER_PART,"(?:\\s*:\\s*").concat(JSX_IDENTIFIER_PART,"|(?:\\s*\\.\\s*").concat(JSX_IDENTIFIER_PART,")+)?)")),JSX_FRAGMENT_IDENTIFIER=/^()>/,JSX_ATTRIBUTE=RegExp("^(?!\\d)(".concat(JSX_IDENTIFIER_PART,"(?:\\s*:\\s*").concat(JSX_IDENTIFIER_PART,")?)([^\\S]*=(?!=))?")),NUMBER=/^0b[01](?:_?[01])*n?|^0o[0-7](?:_?[0-7])*n?|^0x[\da-f](?:_?[\da-f])*n?|^\d+(?:_\d+)*n|^(?:\d+(?:_\d+)*)?\.?\d+(?:_\d+)*(?:e[+-]?\d+(?:_\d+)*)?/i,OPERATOR=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,WHITESPACE=/^[^\n\S]+/,COMMENT=/^(\s*)###([^#][\s\S]*?)(?:###([^\n\S]*)|###$)|^((?:\s*#(?!##[^#]).*)+)/,CODE=/^[-=]>/,MULTI_DENT=/^(?:\n[^\n\S]*)+/,JSTOKEN=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,HERE_JSTOKEN=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,STRING_START=/^(?:'''|"""|'|")/,STRING_SINGLE=/^(?:[^\\']|\\[\s\S])*/,STRING_DOUBLE=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,HEREDOC_SINGLE=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,HEREDOC_DOUBLE=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,INSIDE_JSX=/^(?:[^\{<])*/,JSX_INTERPOLATION=/^(?:\{|<(?!\/))/,HEREDOC_INDENT=/\n+([^\n\S]*)(?=\S)/g,REGEX=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,REGEX_FLAGS=/^\w*/,VALID_FLAGS=/^(?!.*(.).*\1)[gimsuy]*$/,HEREGEX=/^(?:[^\\\/#\s]|\\[\s\S]|\/(?!\/\/)|\#(?!\{)|\s+(?:#(?!\{).*)?)*/,HEREGEX_COMMENT=/(\s+)(#(?!{).*)/gm,REGEX_ILLEGAL=/^(\/|\/{3}\s*)(\*)/,POSSIBLY_DIVISION=/^\/=?\s/,HERECOMMENT_ILLEGAL=/\*\//,LINE_CONTINUER=/^\s*(?:,|\??\.(?![.\d])|\??::)/,STRING_INVALID_ESCAPE=/((?:^|[^\\])(?:\\\\)*)\\(?:(0\d|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,REGEX_INVALID_ESCAPE=/((?:^|[^\\])(?:\\\\)*)\\(?:(0\d)|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,TRAILING_SPACES=/\s+$/,COMPOUND_ASSIGN=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],UNARY=["NEW","TYPEOF","DELETE"],UNARY_MATH=["!","~"],SHIFT=["<<",">>",">>>"],COMPARE=["==","!=","<",">","<=",">="],MATH=["*","/","%","//","%%"],RELATION=["IN","OF","INSTANCEOF"],BOOL=["TRUE","FALSE"],CALLABLE=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER","DYNAMIC_IMPORT"],INDEXABLE=CALLABLE.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),COMPARABLE_LEFT_SIDE=["IDENTIFIER",")","]","NUMBER"],NOT_REGEX=INDEXABLE.concat(["++","--"]),LINE_BREAK=["INDENT","OUTDENT","TERMINATOR"],INDENTABLE_CLOSERS=[")","}","]"]}.call(this),{exports:exports}.exports}(),require["./parser"]=function(){var exports={},module={exports:exports},parser=function(){function Parser(){this.yy={}}var o=function(k,v,_o,l){for(_o=_o||{},l=k.length;l--;_o[k[l]]=v);return _o},$V0=[1,24],$V1=[1,59],$V2=[1,98],$V3=[1,99],$V4=[1,94],$V5=[1,100],$V6=[1,101],$V7=[1,96],$V8=[1,97],$V9=[1,68],$Va=[1,70],$Vb=[1,71],$Vc=[1,72],$Vd=[1,73],$Ve=[1,74],$Vf=[1,76],$Vg=[1,80],$Vh=[1,77],$Vi=[1,78],$Vj=[1,62],$Vk=[1,45],$Vl=[1,38],$Vm=[1,83],$Vn=[1,84],$Vo=[1,81],$Vp=[1,82],$Vq=[1,93],$Vr=[1,57],$Vs=[1,63],$Vt=[1,64],$Vu=[1,79],$Vv=[1,50],$Vw=[1,58],$Vx=[1,75],$Vy=[1,88],$Vz=[1,89],$VA=[1,90],$VB=[1,91],$VC=[1,56],$VD=[1,87],$VE=[1,40],$VF=[1,41],$VG=[1,61],$VH=[1,42],$VI=[1,43],$VJ=[1,44],$VK=[1,46],$VL=[1,47],$VM=[1,102],$VN=[1,6,35,52,155],$VO=[1,6,33,35,52,74,76,96,137,144,155,158,166],$VP=[1,120],$VQ=[1,121],$VR=[1,122],$VS=[1,117],$VT=[1,105],$VU=[1,104],$VV=[1,103],$VW=[1,106],$VX=[1,107],$VY=[1,108],$VZ=[1,109],$V_=[1,110],$V$=[1,111],$V01=[1,112],$V11=[1,113],$V21=[1,114],$V31=[1,115],$V41=[1,116],$V51=[1,124],$V61=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V71=[2,222],$V81=[1,130],$V91=[1,135],$Va1=[1,131],$Vb1=[1,132],$Vc1=[1,133],$Vd1=[1,136],$Ve1=[1,129],$Vf1=[1,6,33,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$Vg1=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vh1=[2,129],$Vi1=[2,133],$Vj1=[6,33,91,96],$Vk1=[2,106],$Vl1=[1,148],$Vm1=[1,147],$Vn1=[1,142],$Vo1=[1,151],$Vp1=[1,156],$Vq1=[1,154],$Vr1=[1,160],$Vs1=[1,166],$Vt1=[1,162],$Vu1=[1,163],$Vv1=[1,165],$Vw1=[1,170],$Vx1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vy1=[2,126],$Vz1=[1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA1=[2,31],$VB1=[1,195],$VC1=[1,196],$VD1=[2,93],$VE1=[1,202],$VF1=[1,208],$VG1=[1,223],$VH1=[1,218],$VI1=[1,227],$VJ1=[1,224],$VK1=[1,229],$VL1=[1,230],$VM1=[1,232],$VN1=[2,227],$VO1=[1,234],$VP1=[14,32,33,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VQ1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$VR1=[1,247],$VS1=[1,248],$VT1=[2,156],$VU1=[1,264],$VV1=[1,265],$VW1=[1,267],$VX1=[1,277],$VY1=[1,278],$VZ1=[1,6,33,35,46,47,52,70,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V_1=[1,6,33,35,36,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,128,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$V$1=[1,6,33,35,46,47,49,51,52,57,70,74,76,91,96,105,106,107,110,111,112,115,119,123,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V02=[1,283],$V12=[46,47,136],$V22=[1,322],$V32=[1,321],$V42=[6,33],$V52=[2,104],$V62=[1,328],$V72=[6,33,35,91,96],$V82=[6,33,35,66,76,91,96],$V92=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,195,196,197,198,199,200,201,202,203,204],$Va2=[2,377],$Vb2=[2,378],$Vc2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,196,197,198,199,200,201,202,203,204],$Vd2=[46,47,105,106,110,111,112,115,135,136],$Ve2=[1,357],$Vf2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183],$Vg2=[2,91],$Vh2=[1,375],$Vi2=[1,377],$Vj2=[1,382],$Vk2=[1,384],$Vl2=[6,33,74,96],$Vm2=[2,247],$Vn2=[2,248],$Vo2=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vp2=[1,398],$Vq2=[14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vr2=[1,400],$Vs2=[6,33,35,74,96],$Vt2=[6,14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vu2=[6,33,35,74,96,137],$Vv2=[1,6,33,35,46,47,52,57,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vw2=[1,411],$Vx2=[1,6,33,35,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$Vy2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,166,183],$Vz2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VA2=[2,300],$VB2=[173,174,175],$VC2=[96,173,174,175],$VD2=[6,33,119],$VE2=[1,431],$VF2=[6,33,35,96,119],$VG2=[6,33,35,70,96,119],$VH2=[6,33,35,66,70,76,96,105,106,110,111,112,115,119,135,136],$VI2=[6,33,35,76,96,105,106,110,111,112,115,119,135,136],$VJ2=[46,47,49,51],$VK2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,196,197,198,199,200,201,202,203,204],$VL2=[2,367],$VM2=[2,366],$VN2=[35,107],$VO2=[14,32,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,107,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2=[2,233],$VQ2=[6,33,35],$VR2=[2,105],$VS2=[1,470],$VT2=[1,471],$VU2=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,151,152,155,157,158,159,165,166,178,180,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VV2=[1,337],$VW2=[35,178,180],$VX2=[1,6,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VY2=[1,509],$VZ2=[1,516],$V_2=[1,6,33,35,52,74,76,96,137,144,155,158,166,183],$V$2=[2,120],$V03=[1,529],$V13=[33,35,74],$V23=[1,537],$V33=[6,33,35,96,137],$V43=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,178,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V53=[1,6,33,35,52,74,76,96,137,144,155,158,166,178],$V63=[2,314],$V73=[2,315],$V83=[2,330],$V93=[1,557],$Va3=[1,558],$Vb3=[6,33,35,119],$Vc3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,166,183],$Vd3=[6,33,35,96],$Ve3=[1,6,33,35,52,74,76,91,96,107,119,137,144,151,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vf3=[33,96],$Vg3=[1,611],$Vh3=[1,612],$Vi3=[1,619],$Vj3=[1,620],$Vk3=[1,638],$Vl3=[1,639],$Vm3=[2,285],$Vn3=[2,288],$Vo3=[2,301],$Vp3=[2,316],$Vq3=[2,320],$Vr3=[2,317],$Vs3=[2,321],$Vt3=[2,318],$Vu3=[2,319],$Vv3=[2,331],$Vw3=[2,332],$Vx3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183],$Vy3=[2,322],$Vz3=[2,324],$VA3=[2,326],$VB3=[2,328],$VC3=[2,323],$VD3=[2,325],$VE3=[2,327],$VF3=[2,329],parser={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,ExpressionLine:8,Statement:9,FuncDirective:10,YieldReturn:11,AwaitReturn:12,Return:13,STATEMENT:14,Import:15,Export:16,Value:17,Code:18,Operation:19,Assign:20,If:21,Try:22,While:23,For:24,Switch:25,Class:26,Throw:27,Yield:28,CodeLine:29,IfLine:30,OperationLine:31,YIELD:32,INDENT:33,Object:34,OUTDENT:35,FROM:36,Block:37,Identifier:38,IDENTIFIER:39,JSX_TAG:40,Property:41,PROPERTY:42,AlphaNumeric:43,NUMBER:44,String:45,STRING:46,STRING_START:47,Interpolations:48,STRING_END:49,InterpolationChunk:50,INTERPOLATION_START:51,INTERPOLATION_END:52,Regex:53,REGEX:54,REGEX_START:55,Invocation:56,REGEX_END:57,Literal:58,JS:59,UNDEFINED:60,NULL:61,BOOL:62,INFINITY:63,NAN:64,Assignable:65,"=":66,AssignObj:67,ObjAssignable:68,ObjRestValue:69,":":70,SimpleObjAssignable:71,ThisProperty:72,"[":73,"]":74,"@":75,"...":76,ObjSpreadExpr:77,ObjSpreadIdentifier:78,Parenthetical:79,Super:80,This:81,SUPER:82,OptFuncExist:83,Arguments:84,DYNAMIC_IMPORT:85,Accessor:86,RETURN:87,AWAIT:88,PARAM_START:89,ParamList:90,PARAM_END:91,FuncGlyph:92,"->":93,"=>":94,OptComma:95,",":96,Param:97,ParamVar:98,Array:99,Splat:100,SimpleAssignable:101,Range:102,DoIife:103,MetaProperty:104,".":105,INDEX_START:106,INDEX_END:107,NEW_TARGET:108,IMPORT_META:109,"?.":110,"::":111,"?::":112,Index:113,IndexValue:114,INDEX_SOAK:115,Slice:116,"{":117,AssignList:118,"}":119,CLASS:120,EXTENDS:121,IMPORT:122,ASSERT:123,ImportDefaultSpecifier:124,ImportNamespaceSpecifier:125,ImportSpecifierList:126,ImportSpecifier:127,AS:128,DEFAULT:129,IMPORT_ALL:130,EXPORT:131,ExportSpecifierList:132,EXPORT_ALL:133,ExportSpecifier:134,FUNC_EXIST:135,CALL_START:136,CALL_END:137,ArgList:138,THIS:139,Elisions:140,ArgElisionList:141,OptElisions:142,RangeDots:143,"..":144,Arg:145,ArgElision:146,Elision:147,SimpleArgs:148,TRY:149,Catch:150,FINALLY:151,CATCH:152,THROW:153,"(":154,")":155,WhileLineSource:156,WHILE:157,WHEN:158,UNTIL:159,WhileSource:160,Loop:161,LOOP:162,ForBody:163,ForLineBody:164,FOR:165,BY:166,ForStart:167,ForSource:168,ForLineSource:169,ForVariables:170,OWN:171,ForValue:172,FORIN:173,FOROF:174,FORFROM:175,SWITCH:176,Whens:177,ELSE:178,When:179,LEADING_WHEN:180,IfBlock:181,IF:182,POST_IF:183,IfBlockLine:184,UNARY:185,DO:186,DO_IIFE:187,UNARY_MATH:188,"-":189,"+":190,"--":191,"++":192,"?":193,MATH:194,"**":195,SHIFT:196,COMPARE:197,"&":198,"^":199,"|":200,"&&":201,"||":202,"BIN?":203,RELATION:204,COMPOUND_ASSIGN:205,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",14:"STATEMENT",32:"YIELD",33:"INDENT",35:"OUTDENT",36:"FROM",39:"IDENTIFIER",40:"JSX_TAG",42:"PROPERTY",44:"NUMBER",46:"STRING",47:"STRING_START",49:"STRING_END",51:"INTERPOLATION_START",52:"INTERPOLATION_END",54:"REGEX",55:"REGEX_START",57:"REGEX_END",59:"JS",60:"UNDEFINED",61:"NULL",62:"BOOL",63:"INFINITY",64:"NAN",66:"=",70:":",73:"[",74:"]",75:"@",76:"...",82:"SUPER",85:"DYNAMIC_IMPORT",87:"RETURN",88:"AWAIT",89:"PARAM_START",91:"PARAM_END",93:"->",94:"=>",96:",",105:".",106:"INDEX_START",107:"INDEX_END",108:"NEW_TARGET",109:"IMPORT_META",110:"?.",111:"::",112:"?::",115:"INDEX_SOAK",117:"{",119:"}",120:"CLASS",121:"EXTENDS",122:"IMPORT",123:"ASSERT",128:"AS",129:"DEFAULT",130:"IMPORT_ALL",131:"EXPORT",133:"EXPORT_ALL",135:"FUNC_EXIST",136:"CALL_START",137:"CALL_END",139:"THIS",144:"..",149:"TRY",151:"FINALLY",152:"CATCH",153:"THROW",154:"(",155:")",157:"WHILE",158:"WHEN",159:"UNTIL",162:"LOOP",165:"FOR",166:"BY",171:"OWN",173:"FORIN",174:"FOROF",175:"FORFROM",176:"SWITCH",178:"ELSE",180:"LEADING_WHEN",182:"IF",183:"POST_IF",185:"UNARY",186:"DO",187:"DO_IIFE",188:"UNARY_MATH",189:"-",190:"+",191:"--",192:"++",193:"?",194:"MATH",195:"**",196:"SHIFT",197:"COMPARE",198:"&",199:"^",200:"|",201:"&&",202:"||",203:"BIN?",204:"RELATION",205:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[5,1],[10,1],[10,1],[9,1],[9,1],[9,1],[9,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[8,1],[8,1],[8,1],[28,1],[28,2],[28,4],[28,3],[37,2],[37,3],[38,1],[38,1],[41,1],[43,1],[43,1],[45,1],[45,3],[48,1],[48,2],[50,3],[50,5],[50,2],[50,1],[53,1],[53,3],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[20,3],[20,4],[20,5],[67,1],[67,1],[67,3],[67,5],[67,3],[67,5],[71,1],[71,1],[71,1],[68,1],[68,3],[68,4],[68,1],[69,2],[69,2],[69,2],[69,2],[77,1],[77,1],[77,1],[77,1],[77,1],[77,3],[77,2],[77,3],[77,3],[78,2],[78,2],[13,2],[13,4],[13,1],[11,3],[11,2],[12,3],[12,2],[18,5],[18,2],[29,5],[29,2],[92,1],[92,1],[95,0],[95,1],[90,0],[90,1],[90,3],[90,4],[90,6],[97,1],[97,2],[97,2],[97,3],[97,1],[98,1],[98,1],[98,1],[98,1],[100,2],[100,2],[101,1],[101,2],[101,2],[101,1],[65,1],[65,1],[65,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[80,3],[80,4],[80,6],[104,3],[104,3],[86,2],[86,2],[86,2],[86,2],[86,1],[86,1],[86,1],[113,3],[113,5],[113,2],[114,1],[114,1],[34,4],[118,0],[118,1],[118,3],[118,4],[118,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[15,2],[15,4],[15,4],[15,6],[15,4],[15,6],[15,5],[15,7],[15,7],[15,9],[15,6],[15,8],[15,9],[15,11],[126,1],[126,3],[126,4],[126,4],[126,6],[127,1],[127,3],[127,1],[127,3],[124,1],[125,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,5],[16,4],[16,6],[16,5],[16,7],[16,7],[16,9],[132,1],[132,3],[132,4],[132,4],[132,6],[134,1],[134,3],[134,3],[134,1],[134,3],[56,3],[56,3],[56,3],[56,2],[83,0],[83,1],[84,2],[84,4],[81,1],[81,1],[72,2],[99,2],[99,3],[99,4],[143,1],[143,1],[102,5],[102,5],[116,3],[116,2],[116,3],[116,2],[116,2],[116,1],[138,1],[138,3],[138,4],[138,4],[138,6],[145,1],[145,1],[145,1],[145,1],[141,1],[141,3],[141,4],[141,4],[141,6],[146,1],[146,2],[142,1],[142,2],[140,1],[140,2],[147,1],[147,2],[148,1],[148,1],[148,3],[148,3],[22,2],[22,3],[22,4],[22,5],[150,3],[150,3],[150,2],[27,2],[27,4],[79,3],[79,5],[156,2],[156,4],[156,2],[156,4],[160,2],[160,4],[160,4],[160,2],[160,4],[160,4],[23,2],[23,2],[23,2],[23,2],[23,1],[161,2],[161,2],[24,2],[24,2],[24,2],[24,2],[163,2],[163,4],[163,2],[164,4],[164,2],[167,2],[167,3],[167,3],[172,1],[172,1],[172,1],[172,1],[170,1],[170,3],[168,2],[168,2],[168,4],[168,4],[168,4],[168,4],[168,4],[168,4],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,2],[168,4],[168,4],[169,2],[169,2],[169,4],[169,4],[169,4],[169,4],[169,4],[169,4],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,2],[169,4],[169,4],[25,5],[25,5],[25,7],[25,7],[25,4],[25,6],[177,1],[177,2],[179,3],[179,4],[181,3],[181,5],[21,1],[21,3],[21,3],[21,3],[184,3],[184,5],[30,1],[30,3],[30,3],[30,3],[31,2],[31,2],[31,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,4],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4],[103,2]],performAction:function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Root(new yy.Block()));break;case 2:return this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Root($$[$0]));break;case 3:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(yy.Block.wrap([$$[$0]]));break;case 4:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].push($$[$0]));break;case 5:this.$=$$[$0-1];break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 41:case 52:case 54:case 64:case 69:case 70:case 71:case 72:case 75:case 80:case 81:case 82:case 83:case 84:case 104:case 105:case 116:case 117:case 118:case 119:case 125:case 126:case 129:case 135:case 149:case 247:case 248:case 249:case 251:case 264:case 265:case 308:case 309:case 364:case 370:this.$=$$[$0];break;case 13:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.StatementLiteral($$[$0]));break;case 31:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Op($$[$0],new yy.Value(new yy.Literal(""))));break;case 32:case 374:case 375:case 376:case 378:case 379:case 382:case 405:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1],$$[$0]));break;case 33:case 383:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Op($$[$0-3],$$[$0-1]));break;case 34:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-2].concat($$[$0-1]),$$[$0]));break;case 35:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Block);break;case 36:case 150:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-1]);break;case 37:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.IdentifierLiteral($$[$0]));break;case 38:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(function(){var ref,ref1,ref2,ref3;return new yy.JSXTag($$[$0].toString(),{tagNameLocationData:$$[$0].tagNameToken[2],closingTagOpeningBracketLocationData:null==(ref=$$[$0].closingTagOpeningBracketToken)?void 0:ref[2],closingTagSlashLocationData:null==(ref1=$$[$0].closingTagSlashToken)?void 0:ref1[2],closingTagNameLocationData:null==(ref2=$$[$0].closingTagNameToken)?void 0:ref2[2],closingTagClosingBracketLocationData:null==(ref3=$$[$0].closingTagClosingBracketToken)?void 0:ref3[2]})}());break;case 39:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.PropertyName($$[$0].toString()));break;case 40:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NumberLiteral($$[$0].toString(),{parsedValue:$$[$0].parsedValue}));break;case 42:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.StringLiteral($$[$0].slice(1,-1),{quote:$$[$0].quote,initialChunk:$$[$0].initialChunk,finalChunk:$$[$0].finalChunk,indent:$$[$0].indent,double:$$[$0].double,heregex:$$[$0].heregex}));break;case 43:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.StringWithInterpolations(yy.Block.wrap($$[$0-1]),{quote:$$[$0-2].quote,startQuote:yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Literal($$[$0-2].toString()))}));break;case 44:case 107:case 157:case 183:case 208:case 242:case 256:case 260:case 312:case 358:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)([$$[$0]]);break;case 45:case 257:case 261:case 359:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].concat($$[$0]));break;case 46:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Interpolation($$[$0-1]));break;case 47:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Interpolation($$[$0-2]));break;case 48:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Interpolation);break;case 49:case 293:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)($$[$0]);break;case 50:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.RegexLiteral($$[$0].toString(),{delimiter:$$[$0].delimiter,heregexCommentTokens:$$[$0].heregexCommentTokens}));break;case 51:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.RegexWithInterpolations($$[$0-1],{heregexCommentTokens:$$[$0].heregexCommentTokens}));break;case 53:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.PassthroughLiteral($$[$0].toString(),{here:$$[$0].here,generated:$$[$0].generated}));break;case 55:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.UndefinedLiteral($$[$0]));break;case 56:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NullLiteral($$[$0]));break;case 57:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.BooleanLiteral($$[$0].toString(),{originalValue:$$[$0].original}));break;case 58:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.InfinityLiteral($$[$0].toString(),{originalValue:$$[$0].original}));break;case 59:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NaNLiteral($$[$0]));break;case 60:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0]));break;case 61:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0]));break;case 62:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1]));break;case 63:case 122:case 127:case 128:case 130:case 131:case 132:case 133:case 134:case 136:case 137:case 310:case 311:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Value($$[$0]));break;case 65:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),$$[$0],"object",{operatorToken:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 66:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Value($$[$0-4])),$$[$0-1],"object",{operatorToken:yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))}));break;case 67:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),$$[$0],null,{operatorToken:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 68:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Value($$[$0-4])),$$[$0-1],null,{operatorToken:yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))}));break;case 73:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Value(new yy.ComputedPropertyName($$[$0-1])));break;case 74:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Value(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.ThisLiteral($$[$0-3])),[yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.ComputedPropertyName($$[$0-1]))],"this"));break;case 76:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat(new yy.Value($$[$0-1])));break;case 77:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat(new yy.Value($$[$0]),{postfix:!1}));break;case 78:case 120:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat($$[$0-1]));break;case 79:case 121:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat($$[$0],{postfix:!1}));break;case 85:case 220:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.SuperCall(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Super),$$[$0],$$[$0-1].soak,$$[$0-2]));break;case 86:case 221:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.DynamicImportCall(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.DynamicImport),$$[$0]));break;case 87:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Call(new yy.Value($$[$0-2]),$$[$0],$$[$0-1].soak));break;case 88:case 219:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Call($$[$0-2],$$[$0],$$[$0-1].soak));break;case 89:case 90:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value($$[$0-1]).add($$[$0]));break;case 91:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Return($$[$0]));break;case 92:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Return(new yy.Value($$[$0-1])));break;case 93:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Return);break;case 94:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.YieldReturn($$[$0],{returnKeyword:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 95:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.YieldReturn(null,{returnKeyword:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Literal($$[$0]))}));break;case 96:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.AwaitReturn($$[$0],{returnKeyword:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 97:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.AwaitReturn(null,{returnKeyword:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Literal($$[$0]))}));break;case 98:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Code($$[$0-3],$$[$0],$$[$0-1],yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Literal($$[$0-4]))));break;case 99:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Code([],$$[$0],$$[$0-1]));break;case 100:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Code($$[$0-3],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]])),$$[$0-1],yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Literal($$[$0-4]))));break;case 101:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Code([],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]])),$$[$0-1]));break;case 102:case 103:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.FuncGlyph($$[$0]));break;case 106:case 156:case 258:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)([]);break;case 108:case 158:case 184:case 209:case 243:case 252:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].concat($$[$0]));break;case 109:case 159:case 185:case 210:case 244:case 253:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-3].concat($$[$0]));break;case 110:case 160:case 187:case 212:case 246:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)($$[$0-5].concat($$[$0-2]));break;case 111:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Param($$[$0]));break;case 112:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Param($$[$0-1],null,!0));break;case 113:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Param($$[$0],null,{postfix:!1}));break;case 114:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Param($$[$0-2],$$[$0]));break;case 115:case 250:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Expansion);break;case 123:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].add($$[$0]));break;case 124:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value($$[$0-1]).add($$[$0]));break;case 138:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0])),yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Literal($$[$0-2]))));break;case 139:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Index($$[$0-1])),yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))));break;case 140:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Index($$[$0-2])),yy.addDataToNode(yy,_$[$0-5],$$[$0-5],null,null,!0)(new yy.Literal($$[$0-5]))));break;case 141:case 142:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.MetaProperty(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.IdentifierLiteral($$[$0-2])),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))));break;case 143:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Access($$[$0]));break;case 144:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Access($$[$0],{soak:!0}));break;case 145:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0})),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))]);break;case 146:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0,soak:!0})),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))]);break;case 147:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0}));break;case 148:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0,soak:!0}));break;case 151:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)($$[$0-2]);break;case 152:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(yy.extend($$[$0],{soak:!0}));break;case 153:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Index($$[$0]));break;case 154:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Slice($$[$0]));break;case 155:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Obj($$[$0-2],$$[$0-3].generated));break;case 161:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Class);break;case 162:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Class(null,null,$$[$0]));break;case 163:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Class(null,$$[$0]));break;case 164:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Class(null,$$[$0-1],$$[$0]));break;case 165:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Class($$[$0]));break;case 166:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Class($$[$0-1],null,$$[$0]));break;case 167:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Class($$[$0-2],$$[$0]));break;case 168:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Class($$[$0-3],$$[$0-1],$$[$0]));break;case 169:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(null,$$[$0]));break;case 170:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(null,$$[$0-2],$$[$0]));break;case 171:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2],null),$$[$0]));break;case 172:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],null),$$[$0-2],$$[$0]));break;case 173:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,$$[$0-2]),$$[$0]));break;case 174:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,$$[$0-4]),$$[$0-2],$$[$0]));break;case 175:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList([])),$$[$0]));break;case 176:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList([])),$$[$0-2],$$[$0]));break;case 177:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList($$[$0-4])),$$[$0]));break;case 178:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList($$[$0-6])),$$[$0-2],$$[$0]));break;case 179:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],$$[$0-2]),$$[$0]));break;case 180:this.$=yy.addDataToNode(yy,_$[$0-7],$$[$0-7],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-6],$$[$0-4]),$$[$0-2],$$[$0]));break;case 181:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7],new yy.ImportSpecifierList($$[$0-4])),$$[$0]));break;case 182:this.$=yy.addDataToNode(yy,_$[$0-10],$$[$0-10],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-9],new yy.ImportSpecifierList($$[$0-6])),$$[$0-2],$$[$0]));break;case 186:case 211:case 245:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-2]);break;case 188:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportSpecifier($$[$0]));break;case 189:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportSpecifier($$[$0-2],$$[$0]));break;case 190:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportSpecifier(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 191:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportSpecifier(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.DefaultLiteral($$[$0-2])),$$[$0]));break;case 192:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportDefaultSpecifier($$[$0]));break;case 193:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]),$$[$0]));break;case 194:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([])));break;case 195:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2])));break;case 196:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration($$[$0]));break;case 197:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0],null,{moduleDeclaration:"export"}))));break;case 198:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0],null,{moduleDeclaration:"export"}))));break;case 199:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1],null,{moduleDeclaration:"export"}))));break;case 200:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportDefaultDeclaration($$[$0]));break;case 201:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportDefaultDeclaration(new yy.Value($$[$0-1])));break;case 202:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]),$$[$0]));break;case 203:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-4]),$$[$0-2],$$[$0]));break;case 204:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),$$[$0]));break;case 205:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),$$[$0-2],$$[$0]));break;case 206:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]),$$[$0]));break;case 207:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-6]),$$[$0-2],$$[$0]));break;case 213:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0]));break;case 214:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0-2],$$[$0]));break;case 215:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0-2],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 216:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ExportSpecifier(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 217:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.DefaultLiteral($$[$0-2])),$$[$0]));break;case 218:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.TaggedTemplateCall($$[$0-2],$$[$0],$$[$0-1].soak));break;case 222:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({soak:!1});break;case 223:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({soak:!0});break;case 224:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([]);break;case 225:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(function(){return $$[$0-2].implicit=$$[$0-3].generated,$$[$0-2]}());break;case 226:case 227:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Value(new yy.ThisLiteral($$[$0])));break;case 228:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.ThisLiteral($$[$0-1])),[yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))],"this"));break;case 229:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Arr([]));break;case 230:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Arr($$[$0-1]));break;case 231:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Arr([].concat($$[$0-2],$$[$0-1])));break;case 232:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({exclusive:!1});break;case 233:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({exclusive:!0});break;case 234:case 235:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Range($$[$0-3],$$[$0-1],$$[$0-2].exclusive?"exclusive":"inclusive"));break;case 236:case 238:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Range($$[$0-2],$$[$0],$$[$0-1].exclusive?"exclusive":"inclusive"));break;case 237:case 239:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Range($$[$0-1],null,$$[$0].exclusive?"exclusive":"inclusive"));break;case 240:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Range(null,$$[$0],$$[$0-1].exclusive?"exclusive":"inclusive"));break;case 241:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Range(null,null,$$[$0].exclusive?"exclusive":"inclusive"));break;case 254:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-2].concat($$[$0-1]));break;case 255:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)($$[$0-5].concat($$[$0-4],$$[$0-2],$$[$0-1]));break;case 259:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([].concat($$[$0]));break;case 262:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Elision);break;case 263:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1]);break;case 266:case 267:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)([].concat($$[$0-2],$$[$0]));break;case 268:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Try($$[$0]));break;case 269:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Try($$[$0-1],$$[$0]));break;case 270:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Try($$[$0-2],null,$$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))));break;case 271:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Try($$[$0-3],$$[$0-2],$$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))));break;case 272:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Catch($$[$0],$$[$0-1]));break;case 273:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Catch($$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Value($$[$0-1]))));break;case 274:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Catch($$[$0]));break;case 275:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Throw($$[$0]));break;case 276:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Throw(new yy.Value($$[$0-1])));break;case 277:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Parens($$[$0-1]));break;case 278:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Parens($$[$0-2]));break;case 279:case 283:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While($$[$0]));break;case 280:case 284:case 285:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.While($$[$0-2],{guard:$$[$0]}));break;case 281:case 286:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While($$[$0],{invert:!0}));break;case 282:case 287:case 288:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.While($$[$0-2],{invert:!0,guard:$$[$0]}));break;case 289:case 290:case 298:case 299:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].addBody($$[$0]));break;case 291:case 292:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(Object.assign($$[$0],{postfix:!0}).addBody(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(yy.Block.wrap([$$[$0-1]]))));break;case 294:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.BooleanLiteral("true")),{isLoop:!0}).addBody($$[$0]));break;case 295:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.BooleanLiteral("true")),{isLoop:!0}).addBody(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]]))));break;case 296:case 297:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(function(){return $$[$0].postfix=!0,$$[$0].addBody($$[$0-1])}());break;case 300:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.For([],{source:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Value($$[$0]))}));break;case 301:case 303:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.For([],{source:yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),step:$$[$0]}));break;case 302:case 304:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].addSource($$[$0]));break;case 305:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.For([],{name:$$[$0][0],index:$$[$0][1]}));break;case 306:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var _$$$$=_slicedToArray($$[$0],2),index,name;return name=_$$$$[0],index=_$$$$[1],new yy.For([],{name:name,index:index,await:!0,awaitTag:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))})}());break;case 307:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var _$$$$2=_slicedToArray($$[$0],2),index,name;return name=_$$$$2[0],index=_$$$$2[1],new yy.For([],{name:name,index:index,own:!0,ownTag:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))})}());break;case 313:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)([$$[$0-2],$$[$0]]);break;case 314:case 333:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0]});break;case 315:case 334:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0],object:!0});break;case 316:case 317:case 335:case 336:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0]});break;case 318:case 319:case 337:case 338:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0],object:!0});break;case 320:case 321:case 339:case 340:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],step:$$[$0]});break;case 322:case 323:case 324:case 325:case 341:case 342:case 343:case 344:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)({source:$$[$0-4],guard:$$[$0-2],step:$$[$0]});break;case 326:case 327:case 328:case 329:case 345:case 346:case 347:case 348:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)({source:$$[$0-4],step:$$[$0-2],guard:$$[$0]});break;case 330:case 349:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0],from:!0});break;case 331:case 332:case 350:case 351:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0],from:!0});break;case 352:case 353:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Switch($$[$0-3],$$[$0-1]));break;case 354:case 355:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.Switch($$[$0-5],$$[$0-3],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0-1],$$[$0-1],!0)($$[$0-1])));break;case 356:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Switch(null,$$[$0-1]));break;case 357:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.Switch(null,$$[$0-3],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0-1],$$[$0-1],!0)($$[$0-1])));break;case 360:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.SwitchWhen($$[$0-1],$$[$0]));break;case 361:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!1)(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0-1],$$[$0-1],!0)(new yy.SwitchWhen($$[$0-2],$$[$0-1])));break;case 362:case 368:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0-1],$$[$0],{type:$$[$0-2]}));break;case 363:case 369:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)($$[$0-4].addElse(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0-1],$$[$0],{type:$$[$0-2]}))));break;case 365:case 371:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].addElse($$[$0]));break;case 366:case 367:case 372:case 373:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(yy.Block.wrap([$$[$0-2]])),{type:$$[$0-1],postfix:!0}));break;case 377:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1].toString(),$$[$0],void 0,void 0,{originalOperator:$$[$0-1].original}));break;case 380:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("-",$$[$0]));break;case 381:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("+",$$[$0]));break;case 384:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("--",$$[$0]));break;case 385:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("++",$$[$0]));break;case 386:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("--",$$[$0-1],null,!0));break;case 387:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("++",$$[$0-1],null,!0));break;case 388:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Existence($$[$0-1]));break;case 389:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op("+",$$[$0-2],$$[$0]));break;case 390:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op("-",$$[$0-2],$$[$0]));break;case 391:case 392:case 393:case 395:case 396:case 397:case 400:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1],$$[$0-2],$$[$0]));break;case 394:case 398:case 399:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1].toString(),$$[$0-2],$$[$0],void 0,{originalOperator:$$[$0-1].original}));break;case 401:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var ref,ref1;return new yy.Op($$[$0-1].toString(),$$[$0-2],$$[$0],void 0,{invertOperator:null==(ref=null==(ref1=$$[$0-1].invert)?void 0:ref1.original)?$$[$0-1].invert:ref})}());break;case 402:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0],$$[$0-1].toString(),{originalContext:$$[$0-1].original}));break;case 403:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1],$$[$0-3].toString(),{originalContext:$$[$0-3].original}));break;case 404:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0],$$[$0-2].toString(),{originalContext:$$[$0-2].original}));}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{1:[3]},{1:[2,2],6:$VM},o($VN,[2,3]),o($VO,[2,6],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,7]),o($VO,[2,8],{167:123,160:125,163:126,157:$VP,159:$VQ,165:$VR,183:$V51}),o($VO,[2,9]),o($V61,[2,16],{83:127,86:128,113:134,46:$V71,47:$V71,136:$V71,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),o($V61,[2,17],{113:134,86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1}),o($V61,[2,18]),o($V61,[2,19]),o($V61,[2,20]),o($V61,[2,21]),o($V61,[2,22]),o($V61,[2,23]),o($V61,[2,24]),o($V61,[2,25]),o($V61,[2,26]),o($V61,[2,27]),o($VO,[2,28]),o($VO,[2,29]),o($VO,[2,30]),o($Vf1,[2,12]),o($Vf1,[2,13]),o($Vf1,[2,14]),o($Vf1,[2,15]),o($VO,[2,10]),o($VO,[2,11]),o($Vg1,$Vh1,{66:[1,138]}),o($Vg1,[2,130]),o($Vg1,[2,131]),o($Vg1,[2,132]),o($Vg1,$Vi1),o($Vg1,[2,134]),o($Vg1,[2,135]),o($Vg1,[2,136]),o($Vg1,[2,137]),o($Vj1,$Vk1,{90:139,97:140,98:141,38:143,72:144,99:145,34:146,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{5:150,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:149,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:152,8:153,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:157,8:158,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:159,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:167,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:168,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:[1,171],88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:172,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:176,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($Vx1,$Vy1,{191:[1,177],192:[1,178],205:[1,179]}),o($V61,[2,364],{178:[1,180]}),{33:$Vo1,37:181},{33:$Vo1,37:182},{33:$Vo1,37:183},o($V61,[2,293]),{33:$Vo1,37:184},{33:$Vo1,37:185},{7:186,8:187,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,188],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,161],{58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,99:65,34:66,43:67,53:69,38:85,72:86,45:95,92:161,17:173,18:174,65:175,37:189,101:191,33:$Vo1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,121:[1,190],139:$Vu,154:$Vx,187:$Vv1}),{7:192,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,193],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:[1,197],88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO,[2,370],{178:[1,198]}),{18:200,29:199,89:$Vl,92:39,93:$Vm,94:$Vn},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$VD1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:201,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{38:207,39:$V2,40:$V3,45:203,46:$V5,47:$V6,117:[1,206],124:204,125:205,130:$VF1},{26:210,38:211,39:$V2,40:$V3,117:[1,209],120:$Vr,129:[1,212],133:[1,213]},o($Vx1,[2,127]),o($Vx1,[2,128]),o($Vg1,[2,52]),o($Vg1,[2,53]),o($Vg1,[2,54]),o($Vg1,[2,55]),o($Vg1,[2,56]),o($Vg1,[2,57]),o($Vg1,[2,58]),o($Vg1,[2,59]),{4:214,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,215],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:216,8:217,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{83:228,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:231,136:$VM1},o($Vg1,[2,226]),o($Vg1,$VN1,{41:233,42:$VO1}),{105:[1,235]},{105:[1,236]},o($VP1,[2,102]),o($VP1,[2,103]),o($VQ1,[2,122]),o($VQ1,[2,125]),{7:237,8:238,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:239,8:240,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:242,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:244,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vo1,34:66,37:243,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:245,117:$Vq,170:246,171:$VS1,172:249},{168:254,169:255,173:[1,256],174:[1,257],175:[1,258]},o([6,33,96,119],$VT1,{45:95,118:259,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VZ1,[2,40]),o($VZ1,[2,41]),o($Vg1,[2,50]),{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:279,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:280,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($V_1,[2,37]),o($V_1,[2,38]),o($V$1,[2,42]),{45:284,46:$V5,47:$V6,48:281,50:282,51:$V02},o($VN,[2,5],{7:4,8:5,9:6,10:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,11:27,12:28,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,5:285,14:$V0,32:$V1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,388]),{7:286,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:287,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:288,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:289,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:290,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:291,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:292,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:293,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:294,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:295,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:296,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:297,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:298,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:299,8:300,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,292]),o($V61,[2,297]),{7:239,8:301,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:302,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:303,117:$Vq,170:246,171:$VS1,172:249},{168:254,173:[1,304],174:[1,305],175:[1,306]},{7:307,8:308,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,291]),o($V61,[2,296]),{45:309,46:$V5,47:$V6,84:310,136:$VM1},o($VQ1,[2,123]),o($V12,[2,223]),{41:311,42:$VO1},{41:312,42:$VO1},o($VQ1,[2,147],{41:313,42:$VO1}),o($VQ1,[2,148],{41:314,42:$VO1}),o($VQ1,[2,149]),{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,316],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:315,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{106:$V91,113:323,115:$Vd1},o($VQ1,[2,124]),{6:[1,325],7:324,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,326],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,327],96:$V62}),o($V72,[2,107]),o($V72,[2,111],{66:[1,331],76:[1,330]}),o($V72,[2,115],{38:143,72:144,99:145,34:146,98:332,39:$V2,40:$V3,73:$Vl1,75:$Vm1,117:$Vq}),o($V82,[2,116]),o($V82,[2,117]),o($V82,[2,118]),o($V82,[2,119]),{41:233,42:$VO1},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,99]),o($VO,[2,101]),{4:336,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,35:[1,335],38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,374]),{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:$V51},o([1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,375]),o($Vc2,[2,379],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vj1,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:338,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{33:$Vo1,37:149},{7:339,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:340,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:[1,341]},{18:200,89:$Vr1,92:161,93:$Vm,94:$Vn},{7:342,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vc2,[2,380],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,381],{160:118,163:119,167:123,193:$VV,195:$VX}),o($V92,[2,382],{160:118,163:119,167:123,193:$VV}),{34:343,117:$Vq},o($VO,[2,97],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:344,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,384],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V12,$V71,{83:127,86:128,113:134,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),{86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1},o($Vd2,$Vh1),o($V61,[2,385],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V61,[2,386]),o($V61,[2,387]),{6:[1,347],7:345,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,346],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:348,182:[1,349]},o($V61,[2,268],{150:350,151:[1,351],152:[1,352]}),o($V61,[2,289]),o($V61,[2,290]),o($V61,[2,298]),o($V61,[2,299]),{33:[1,353],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[1,354]},{177:355,179:356,180:$Ve2},o($V61,[2,162]),{7:358,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,165],{37:359,33:$Vo1,46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1,121:[1,360]}),o($Vf2,[2,275],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:361,117:$Vq},o($Vf2,[2,32],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:362,117:$Vq},{7:363,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,158,166],[2,95],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:364,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{33:$Vo1,37:365,182:[1,366]},o($VO,[2,376]),o($Vg1,[2,405]),o($Vf1,$Vg2,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:367,117:$Vq},o($Vf1,[2,169],{123:[1,368]}),{36:[1,369],96:[1,370]},{36:[1,371]},{33:$Vh2,38:376,39:$V2,40:$V3,119:[1,372],126:373,127:374,129:$Vi2},o([36,96],[2,192]),{128:[1,378]},{33:$Vj2,38:383,39:$V2,40:$V3,119:[1,379],129:$Vk2,132:380,134:381},o($Vf1,[2,196]),{66:[1,385]},{7:386,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,387],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{36:[1,388]},{6:$VM,155:[1,389]},{4:390,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vl2,$Vm2,{160:118,163:119,167:123,143:391,76:[1,392],144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vl2,$Vn2,{143:393,76:$V22,144:$V32}),o($Vo2,[2,229]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:[1,394],75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([6,33,74],$V52,{142:397,95:399,96:$Vp2}),o($Vq2,[2,260],{6:$Vr2}),o($Vs2,[2,251]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:401,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vt2,[2,262]),o($Vs2,[2,256]),o($Vu2,[2,249]),o($Vu2,[2,250],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:403,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{84:404,136:$VM1},{41:405,42:$VO1},{7:406,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,407],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,221]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,137:[1,408],138:409,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vx2,[2,228]),o($Vx2,[2,39]),{41:412,42:$VO1},{41:413,42:$VO1},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:415},o($Vy2,[2,283],{160:118,163:119,167:123,157:$VP,158:[1,416],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,279],158:[1,417]},o($Vy2,[2,286],{160:118,163:119,167:123,157:$VP,158:[1,418],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,281],158:[1,419]},o($V61,[2,294]),o($Vz2,[2,295],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$VA2,166:[1,420]},o($VB2,[2,305]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:421,172:249},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:422,172:249},o($VB2,[2,312],{96:[1,423]}),o($VC2,[2,308]),o($VC2,[2,309]),o($VC2,[2,310]),o($VC2,[2,311]),o($V61,[2,302]),{33:[2,304]},{7:424,8:425,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:426,8:427,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:428,8:429,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VD2,$V52,{95:430,96:$VE2}),o($VF2,[2,157]),o($VF2,[2,63],{70:[1,432]}),o($VF2,[2,64]),o($VG2,[2,72],{113:134,83:435,86:436,66:[1,433],76:[1,434],105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),{7:437,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([76,105,106,110,111,112,115,135,136],$VN1,{41:233,42:$VO1,73:[1,438]}),o($VG2,[2,75]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,71:439,72:271,75:$Vg,77:440,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},{76:[1,441],83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1,135:$Ve1,136:$V71},o($VH2,[2,69]),o($VH2,[2,70]),o($VH2,[2,71]),o($VI2,[2,80]),o($VI2,[2,81]),o($VI2,[2,82]),o($VI2,[2,83]),o($VI2,[2,84]),{83:444,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:445,136:$VM1},o($Vd2,$Vi1,{57:[1,446]}),o($Vd2,$Vy1),{45:284,46:$V5,47:$V6,49:[1,447],50:448,51:$V02},o($VJ2,[2,44]),{4:449,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,450],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,52:[1,451],53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,49]),o($VN,[2,4]),o($VK2,[2,389],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($VK2,[2,390],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($Vc2,[2,391],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,392],{160:118,163:119,167:123,193:$VV,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,196,197,198,199,200,201,202,203,204],[2,393],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203],[2,394],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,198,199,200,201,202,203],[2,395],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,199,200,201,202,203],[2,396],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,200,201,202,203],[2,397],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,201,202,203],[2,398],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,202,203],[2,399],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,203],[2,400],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203,204],[2,401],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY}),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,373]),{158:[1,452]},{158:[1,453]},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA2,{166:[1,454]}),{7:455,8:456,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:457,8:458,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:459,8:460,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,372]),o($Vv2,[2,218]),o($Vv2,[2,219]),o($VQ1,[2,143]),o($VQ1,[2,144]),o($VQ1,[2,145]),o($VQ1,[2,146]),{107:[1,461]},{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:462,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VN2,[2,153],{160:118,163:119,167:123,143:463,76:$V22,144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,154]),{76:$V22,143:464,144:$V32},o($VN2,[2,241],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:465,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO2,[2,232]),o($VO2,$VP2),o($VQ1,[2,152]),o($Vf2,[2,60],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:466,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:467,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{92:468,93:$Vm,94:$Vn},o($VQ2,$VR2,{98:141,38:143,72:144,99:145,34:146,97:469,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{6:$VS2,33:$VT2},o($V72,[2,112]),{7:472,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,113]),o($Vu2,$Vm2,{160:118,163:119,167:123,76:[1,473],157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$Vn2),o($VU2,[2,35]),{6:$VM,35:[1,474]},{7:475,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,476],96:$V62}),o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),{7:477,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,478]},o($VO,[2,96],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,402],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:479,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:480,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,365]),{7:481,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,269],{151:[1,482]}),{33:$Vo1,37:483},{33:$Vo1,34:485,37:486,38:484,39:$V2,40:$V3,117:$Vq},{177:487,179:356,180:$Ve2},{177:488,179:356,180:$Ve2},{35:[1,489],178:[1,490],179:491,180:$Ve2},o($VW2,[2,358]),{7:493,8:494,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,148:492,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VX2,[2,163],{160:118,163:119,167:123,37:495,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,166]),{7:496,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,497]},{35:[1,498]},o($Vf2,[2,34],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,94],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,371]),{7:500,8:499,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,501]},{34:502,117:$Vq},{45:503,46:$V5,47:$V6},{117:[1,505],125:504,130:$VF1},{45:506,46:$V5,47:$V6},{36:[1,507]},o($VD2,$V52,{95:508,96:$VY2}),o($VF2,[2,183]),{33:$Vh2,38:376,39:$V2,40:$V3,126:510,127:374,129:$Vi2},o($VF2,[2,188],{128:[1,511]}),o($VF2,[2,190],{128:[1,512]}),{38:513,39:$V2,40:$V3},o($Vf1,[2,194],{36:[1,514]}),o($VD2,$V52,{95:515,96:$VZ2}),o($VF2,[2,208]),{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:517,134:381},o($VF2,[2,213],{128:[1,518]}),o($VF2,[2,216],{128:[1,519]}),{6:[1,521],7:520,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,522],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V_2,[2,200],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:523,117:$Vq},{45:524,46:$V5,47:$V6},o($Vg1,[2,277]),{6:$VM,35:[1,525]},{7:526,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([14,32,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2,{6:$V$2,33:$V$2,74:$V$2,96:$V$2}),{7:527,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,230]),o($Vq2,[2,261],{6:$Vr2}),o($Vs2,[2,257]),{33:$V03,74:[1,528]},o([6,33,35,74],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,147:221,145:225,100:226,7:333,8:334,146:530,140:531,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V13,[2,258],{6:[1,532]}),o($Vt2,[2,263]),o($VQ2,$V52,{95:399,142:533,96:$Vp2}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vu2,[2,121],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vv2,[2,220]),o($Vg1,[2,138]),{107:[1,534],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:535,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,224]),o([6,33,137],$V52,{95:536,96:$V23}),o($V33,[2,242]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:538,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,141]),o($Vg1,[2,142]),o($V43,[2,362]),o($V53,[2,368]),{7:539,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:540,8:541,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:542,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:543,8:544,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:545,8:546,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VB2,[2,306]),o($VB2,[2,307]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,172:547},{33:$V63,157:$VP,158:[1,548],159:$VQ,160:118,163:119,165:$VR,166:[1,549],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,333],158:[1,550],166:[1,551]},{33:$V73,157:$VP,158:[1,552],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,334],158:[1,553]},{33:$V83,157:$VP,158:[1,554],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,349],158:[1,555]},{6:$V93,33:$Va3,119:[1,556]},o($Vb3,$VR2,{45:95,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,67:559,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),{7:560,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,561],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:562,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,563],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,76]),{84:564,136:$VM1},o($VI2,[2,89]),{74:[1,565],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:566,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,77],{113:134,83:435,86:436,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,79],{113:134,83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,78]),{84:567,136:$VM1},o($VI2,[2,90]),{84:568,136:$VM1},o($VI2,[2,86]),o($Vg1,[2,51]),o($V$1,[2,43]),o($VJ2,[2,45]),{6:$VM,52:[1,569]},{4:570,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,48]),{7:571,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:572,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:573,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,183],$V63,{160:118,163:119,167:123,158:[1,574],166:[1,575],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,576],166:[1,577]},o($Vc3,$V73,{160:118,163:119,167:123,158:[1,578],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,579]},o($Vc3,$V83,{160:118,163:119,167:123,158:[1,580],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,581]},o($VQ1,[2,150]),{35:[1,582]},o($VN2,[2,237],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:583,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,239],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:584,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,240],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,61],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,585],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{5:587,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:586,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,108]),{34:146,38:143,39:$V2,40:$V3,72:144,73:$Vl1,75:$Vm1,76:$Vn1,97:588,98:141,99:145,117:$Vq},o($Vd3,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:589,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),o($V72,[2,114],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$V$2),o($VU2,[2,36]),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{92:590,93:$Vm,94:$Vn},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,383]),{35:[1,591],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf2,[2,404],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vo1,37:592,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:593},o($V61,[2,270]),{33:$Vo1,37:594},{33:$Vo1,37:595},o($Ve3,[2,274]),{35:[1,596],178:[1,597],179:491,180:$Ve2},{35:[1,598],178:[1,599],179:491,180:$Ve2},o($V61,[2,356]),{33:$Vo1,37:600},o($VW2,[2,359]),{33:$Vo1,37:601,96:[1,602]},o($Vf3,[2,264],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,265]),o($V61,[2,164]),o($VX2,[2,167],{160:118,163:119,167:123,37:603,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,276]),o($V61,[2,33]),{33:$Vo1,37:604},{157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,92]),o($Vf1,[2,170]),o($Vf1,[2,171],{123:[1,605]}),{36:[1,606]},{33:$Vh2,38:376,39:$V2,40:$V3,126:607,127:374,129:$Vi2},o($Vf1,[2,173],{123:[1,608]}),{45:609,46:$V5,47:$V6},{6:$Vg3,33:$Vh3,119:[1,610]},o($Vb3,$VR2,{38:376,127:613,39:$V2,40:$V3,129:$Vi2}),o($VQ2,$V52,{95:614,96:$VY2}),{38:615,39:$V2,40:$V3},{38:616,39:$V2,40:$V3},{36:[2,193]},{45:617,46:$V5,47:$V6},{6:$Vi3,33:$Vj3,119:[1,618]},o($Vb3,$VR2,{38:383,134:621,39:$V2,40:$V3,129:$Vk2}),o($VQ2,$V52,{95:622,96:$VZ2}),{38:623,39:$V2,40:$V3,129:[1,624]},{38:625,39:$V2,40:$V3},o($V_2,[2,197],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:626,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:627,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,628]},o($Vf1,[2,202],{123:[1,629]}),{155:[1,630]},{74:[1,631],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{74:[1,632],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vo2,[2,231]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:633,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vs2,[2,252]),o($V13,[2,259],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,147:395,145:396,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,145:225,146:634,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$V03,35:[1,635]},o($Vg1,[2,139]),{35:[1,636],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{6:$Vk3,33:$Vl3,137:[1,637]},o([6,33,35,137],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,145:640,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VQ2,$V52,{95:641,96:$V23}),o($Vz2,[2,284],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vm3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,280]},o($Vz2,[2,287],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vn3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,282]},{33:$Vo3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,303]},o($VB2,[2,313]),{7:642,8:643,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:644,8:645,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:646,8:647,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:648,8:649,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:650,8:651,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:652,8:653,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:654,8:655,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:656,8:657,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,155]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,43:266,44:$V4,45:95,46:$V5,47:$V6,67:658,68:261,69:262,71:263,72:271,73:$VU1,75:$VV1,76:$VW1,77:268,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},o($Vd3,$VT1,{45:95,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,118:659,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VF2,[2,158]),o($VF2,[2,65],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:660,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,67],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:661,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VI2,[2,87]),o($VG2,[2,73]),{74:[1,662],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VI2,[2,88]),o($VI2,[2,85]),o($VJ2,[2,46]),{6:$VM,35:[1,663]},o($Vz2,$Vm3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vn3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vo3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:664,8:665,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:666,8:667,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:668,8:669,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:670,8:671,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:672,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:673,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:674,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:675,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{107:[1,676]},o($VN2,[2,236],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,238],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,62]),o($Vg1,[2,98]),o($VO,[2,100]),o($V72,[2,109]),o($VQ2,$V52,{95:677,96:$V62}),{33:$Vo1,37:586},o($V61,[2,403]),o($V43,[2,363]),o($V61,[2,271]),o($Ve3,[2,272]),o($Ve3,[2,273]),o($V61,[2,352]),{33:$Vo1,37:678},o($V61,[2,353]),{33:$Vo1,37:679},{35:[1,680]},o($VW2,[2,360],{6:[1,681]}),{7:682,8:683,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,168]),o($V53,[2,369]),{34:684,117:$Vq},{45:685,46:$V5,47:$V6},o($VD2,$V52,{95:686,96:$VY2}),{34:687,117:$Vq},o($Vf1,[2,175],{123:[1,688]}),{36:[1,689]},{38:376,39:$V2,40:$V3,127:690,129:$Vi2},{33:$Vh2,38:376,39:$V2,40:$V3,126:691,127:374,129:$Vi2},o($VF2,[2,184]),{6:$Vg3,33:$Vh3,35:[1,692]},o($VF2,[2,189]),o($VF2,[2,191]),o($Vf1,[2,204],{123:[1,693]}),o($Vf1,[2,195],{36:[1,694]}),{38:383,39:$V2,40:$V3,129:$Vk2,134:695},{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:696,134:381},o($VF2,[2,209]),{6:$Vi3,33:$Vj3,35:[1,697]},o($VF2,[2,214]),o($VF2,[2,215]),o($VF2,[2,217]),o($V_2,[2,198],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,698],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,201]),{34:699,117:$Vq},o($Vg1,[2,278]),o($Vg1,[2,234]),o($Vg1,[2,235]),o($VQ2,$V52,{95:399,142:700,96:$Vp2}),o($Vs2,[2,253]),o($Vs2,[2,254]),{107:[1,701]},o($Vv2,[2,225]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:702,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:703,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V33,[2,243]),{6:$Vk3,33:$Vl3,35:[1,704]},{33:$Vp3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,705],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,335],166:[1,706]},{33:$Vq3,157:$VP,158:[1,707],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,339],158:[1,708]},{33:$Vr3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,709],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,336],166:[1,710]},{33:$Vs3,157:$VP,158:[1,711],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,340],158:[1,712]},{33:$Vt3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,337]},{33:$Vu3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,338]},{33:$Vv3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,350]},{33:$Vw3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,351]},o($VF2,[2,159]),o($VQ2,$V52,{95:713,96:$VE2}),{35:[1,714],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,715],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VG2,[2,74]),{52:[1,716]},o($Vx3,$Vp3,{160:118,163:119,167:123,166:[1,717],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,718]},o($Vc3,$Vq3,{160:118,163:119,167:123,158:[1,719],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,720]},o($Vx3,$Vr3,{160:118,163:119,167:123,166:[1,721],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,722]},o($Vc3,$Vs3,{160:118,163:119,167:123,158:[1,723],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,724]},o($Vf2,$Vt3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vu3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vv3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vw3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VQ1,[2,151]),{6:$VS2,33:$VT2,35:[1,725]},{35:[1,726]},{35:[1,727]},o($V61,[2,357]),o($VW2,[2,361]),o($Vf3,[2,266],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,267]),o($Vf1,[2,172]),o($Vf1,[2,179],{123:[1,728]}),{6:$Vg3,33:$Vh3,119:[1,729]},o($Vf1,[2,174]),{34:730,117:$Vq},{45:731,46:$V5,47:$V6},o($VF2,[2,185]),o($VQ2,$V52,{95:732,96:$VY2}),o($VF2,[2,186]),{34:733,117:$Vq},{45:734,46:$V5,47:$V6},o($VF2,[2,210]),o($VQ2,$V52,{95:735,96:$VZ2}),o($VF2,[2,211]),o($Vf1,[2,199]),o($Vf1,[2,203]),{33:$V03,35:[1,736]},o($Vg1,[2,140]),o($V33,[2,244]),o($VQ2,$V52,{95:737,96:$V23}),o($V33,[2,245]),{7:738,8:739,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:740,8:741,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:742,8:743,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:744,8:745,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:746,8:747,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:748,8:749,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:750,8:751,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:752,8:753,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{6:$V93,33:$Va3,35:[1,754]},o($VF2,[2,66]),o($VF2,[2,68]),o($VJ2,[2,47]),{7:755,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:756,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:757,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:758,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:759,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:760,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:761,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:762,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,110]),o($V61,[2,354]),o($V61,[2,355]),{34:763,117:$Vq},{36:[1,764]},o($Vf1,[2,176]),o($Vf1,[2,177],{123:[1,765]}),{6:$Vg3,33:$Vh3,35:[1,766]},o($Vf1,[2,205]),o($Vf1,[2,206],{123:[1,767]}),{6:$Vi3,33:$Vj3,35:[1,768]},o($Vs2,[2,255]),{6:$Vk3,33:$Vl3,35:[1,769]},{33:$Vy3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,341]},{33:$Vz3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,343]},{33:$VA3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,345]},{33:$VB3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,347]},{33:$VC3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,342]},{33:$VD3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,344]},{33:$VE3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,346]},{33:$VF3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,348]},o($VF2,[2,160]),o($Vf2,$Vy3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vz3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VA3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VB3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VC3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VD3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VE3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VF3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf1,[2,180]),{45:770,46:$V5,47:$V6},{34:771,117:$Vq},o($VF2,[2,187]),{34:772,117:$Vq},o($VF2,[2,212]),o($V33,[2,246]),o($Vf1,[2,181],{123:[1,773]}),o($Vf1,[2,178]),o($Vf1,[2,207]),{34:774,117:$Vq},o($Vf1,[2,182])],defaultActions:{255:[2,304],513:[2,193],541:[2,280],544:[2,282],546:[2,303],651:[2,337],653:[2,338],655:[2,350],657:[2,351],739:[2,341],741:[2,343],743:[2,345],745:[2,347],747:[2,342],749:[2,344],751:[2,346],753:[2,348]},parseError:function(str,hash){if(hash.recoverable)this.trace(str);else{var error=new Error(str);throw error.hash=hash,error}},parse:function(input){var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,EOF=1,args=lstack.slice.call(arguments,1),lexer=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer,sharedState.yy.parser=this,"undefined"==typeof lexer.yylloc&&(lexer.yylloc={});var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;this.parseError="function"==typeof sharedState.yy.parseError?sharedState.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var lex=function(){var token;return token=lexer.lex()||EOF,"number"!=typeof token&&(token=self.symbols_[token]||token),token};for(var yyval={},symbol,preErrorSymbol,state,action,r,p,len,newState,expected;;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:((null===symbol||"undefined"==typeof symbol)&&(symbol=lex()),action=table[state]&&table[state][symbol]),"undefined"==typeof action||!action.length||!action[0]){var errStr="";for(p in expected=[],table[state])this.terminals_[p]&&p>2&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&1<action.length)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer.yytext),lstack.push(lexer.yylloc),stack.push(action[1]),symbol=null,preErrorSymbol?(symbol=preErrorSymbol,preErrorSymbol=null):(yyleng=lexer.yyleng,yytext=lexer.yytext,yylineno=lexer.yylineno,yyloc=lexer.yylloc,0<recovering&&recovering--);break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args)),"undefined"!=typeof r)return r;len&&(stack=stack.slice(0,2*(-1*len)),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0;}}return!0}};return Parser.prototype=parser,parser.Parser=Parser,new Parser}();return"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(){},require.main===module&&exports.main(process.argv.slice(1))),module.exports}(),require["./scope"]=function(){var exports={};return function(){var indexOf=[].indexOf,Scope;exports.Scope=Scope=function(){"use strict";function Scope(parent,expressions,method,referencedVars){_classCallCheck(this,Scope);var ref,ref1;this.parent=parent,this.expressions=expressions,this.method=method,this.referencedVars=referencedVars,this.variables=[{name:"arguments",type:"arguments"}],this.comments={},this.positions={},this.parent||(this.utilities={}),this.root=null==(ref=null==(ref1=this.parent)?void 0:ref1.root)?this:ref}return _createClass(Scope,[{key:"add",value:function add(name,type,immediate){return this.shared&&!immediate?this.parent.add(name,type,immediate):Object.prototype.hasOwnProperty.call(this.positions,name)?this.variables[this.positions[name]].type=type:this.positions[name]=this.variables.push({name:name,type:type})-1}},{key:"namedMethod",value:function namedMethod(){var ref;return(null==(ref=this.method)?void 0:ref.name)||!this.parent?this.method:this.parent.namedMethod()}},{key:"find",value:function find(name){var type=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"var";return!!this.check(name)||(this.add(name,type),!1)}},{key:"parameter",value:function parameter(name){return this.shared&&this.parent.check(name,!0)?void 0:this.add(name,"param")}},{key:"check",value:function check(name){var ref;return!!(this.type(name)||(null==(ref=this.parent)?void 0:ref.check(name)))}},{key:"temporary",value:function temporary(name,index){var single=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],diff,endCode,letter,newCode,num,startCode;return single?(startCode=name.charCodeAt(0),endCode="z".charCodeAt(0),diff=endCode-startCode,newCode=startCode+index%(diff+1),letter=_StringfromCharCode(newCode),num=_Mathfloor(index/(diff+1)),"".concat(letter).concat(num||"")):"".concat(name).concat(index||"")}},{key:"type",value:function type(name){var i,len,ref,v;for(ref=this.variables,i=0,len=ref.length;i<len;i++)if(v=ref[i],v.name===name)return v.type;return null}},{key:"freeVariable",value:function freeVariable(name){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},index,ref,temp;for(index=0;temp=this.temporary(name,index,options.single),!!(this.check(temp)||0<=indexOf.call(this.root.referencedVars,temp));)index++;return(null==(ref=options.reserve)||ref)&&this.add(temp,"var",!0),temp}},{key:"assign",value:function assign(name,value){return this.add(name,{value:value,assigned:!0},!0),this.hasAssignments=!0}},{key:"hasDeclarations",value:function hasDeclarations(){return!!this.declaredVariables().length}},{key:"declaredVariables",value:function declaredVariables(){var v;return function(){var i,len,ref,results;for(ref=this.variables,results=[],(i=0,len=ref.length);i<len;i++)v=ref[i],"var"===v.type&&results.push(v.name);return results}.call(this).sort()}},{key:"assignedVariables",value:function assignedVariables(){var i,len,ref,results,v;for(ref=this.variables,results=[],(i=0,len=ref.length);i<len;i++)v=ref[i],v.type.assigned&&results.push("".concat(v.name," = ").concat(v.type.value));return results}}]),Scope}()}.call(this),{exports:exports}.exports}(),require["./nodes"]=function(){var exports={};return function(){var indexOf=[].indexOf,splice=[].splice,slice1=[].slice,Access,Arr,Assign,AwaitReturn,Base,Block,BooleanLiteral,Call,Catch,Class,ClassProperty,ClassPrototypeProperty,Code,CodeFragment,ComputedPropertyName,DefaultLiteral,Directive,DynamicImport,DynamicImportCall,Elision,EmptyInterpolation,ExecutableClassBody,Existence,Expansion,ExportAllDeclaration,ExportDeclaration,ExportDefaultDeclaration,ExportNamedDeclaration,ExportSpecifier,ExportSpecifierList,Extends,For,FuncDirectiveReturn,FuncGlyph,HEREGEX_OMIT,HereComment,HoistTarget,IdentifierLiteral,If,ImportClause,ImportDeclaration,ImportDefaultSpecifier,ImportNamespaceSpecifier,ImportSpecifier,ImportSpecifierList,In,Index,InfinityLiteral,Interpolation,JSXAttribute,JSXAttributes,JSXElement,JSXEmptyExpression,JSXExpressionContainer,JSXIdentifier,JSXNamespacedName,JSXTag,JSXText,JS_FORBIDDEN,LEADING_BLANK_LINE,LEVEL_ACCESS,LEVEL_COND,LEVEL_LIST,LEVEL_OP,LEVEL_PAREN,LEVEL_TOP,LineComment,Literal,MetaProperty,ModuleDeclaration,ModuleSpecifier,ModuleSpecifierList,NEGATE,NO,NaNLiteral,NullLiteral,NumberLiteral,Obj,ObjectProperty,Op,Param,Parens,PassthroughLiteral,PropertyName,Range,RegexLiteral,RegexWithInterpolations,Return,Root,SIMPLENUM,SIMPLE_STRING_OMIT,STRING_OMIT,Scope,Sequence,Slice,Splat,StatementLiteral,StringLiteral,StringWithInterpolations,Super,SuperCall,Switch,SwitchCase,SwitchWhen,TAB,THIS,TRAILING_BLANK_LINE,TaggedTemplateCall,TemplateElement,ThisLiteral,Throw,Try,UTILITIES,UndefinedLiteral,Value,While,YES,YieldReturn,addDataToNode,astAsBlockIfNeeded,attachCommentsToNode,compact,del,emptyExpressionLocationData,ends,extend,extractSameLineLocationDataFirst,extractSameLineLocationDataLast,flatten,fragmentsToText,greater,hasLineComments,indentInitial,isAstLocGreater,isFunction,isLiteralArguments,isLiteralThis,isLocationDataEndGreater,isLocationDataStartGreater,isNumber,isPlainObject,isUnassignable,jisonLocationDataToAstLocationData,lesser,locationDataToString,makeDelimitedLiteral,merge,mergeAstLocationData,mergeLocationData,moveComments,multident,parseNumber,replaceUnicodeCodePointEscapes,shouldCacheOrIsAssignable,sniffDirectives,some,starts,throwSyntaxError,_unfoldSoak,unshiftAfterComments,utility,zeroWidthLocationDataFromEndLocation;Error.stackTraceLimit=2e308;var _require4=require("./scope");Scope=_require4.Scope;var _require5=require("./lexer");isUnassignable=_require5.isUnassignable,JS_FORBIDDEN=_require5.JS_FORBIDDEN;var _require6=require("./helpers");compact=_require6.compact,flatten=_require6.flatten,extend=_require6.extend,merge=_require6.merge,del=_require6.del,starts=_require6.starts,ends=_require6.ends,some=_require6.some,addDataToNode=_require6.addDataToNode,attachCommentsToNode=_require6.attachCommentsToNode,locationDataToString=_require6.locationDataToString,throwSyntaxError=_require6.throwSyntaxError,replaceUnicodeCodePointEscapes=_require6.replaceUnicodeCodePointEscapes,isFunction=_require6.isFunction,isPlainObject=_require6.isPlainObject,isNumber=_require6.isNumber,parseNumber=_require6.parseNumber,exports.extend=extend,exports.addDataToNode=addDataToNode,YES=function(){return!0},NO=function(){return!1},THIS=function(){return this},NEGATE=function(){return this.negated=!this.negated,this},exports.CodeFragment=CodeFragment=function(){"use strict";function CodeFragment(parent,code){_classCallCheck(this,CodeFragment);var ref1;this.code="".concat(code),this.type=(null==parent||null==(ref1=parent.constructor)?void 0:ref1.name)||"unknown",this.locationData=null==parent?void 0:parent.locationData,this.comments=null==parent?void 0:parent.comments}return _createClass(CodeFragment,[{key:"toString",value:function toString(){return"".concat(this.code).concat(this.locationData?": "+locationDataToString(this.locationData):"")}}]),CodeFragment}(),fragmentsToText=function(fragments){var fragment;return function(){var j,len1,results1;for(results1=[],j=0,len1=fragments.length;j<len1;j++)fragment=fragments[j],results1.push(fragment.code);return results1}().join("")},exports.Base=Base=function(){var Base=function(){"use strict";function Base(){_classCallCheck(this,Base)}return _createClass(Base,[{key:"compile",value:function compile(o,lvl){return fragmentsToText(this.compileToFragments(o,lvl))}},{key:"compileWithoutComments",value:function compileWithoutComments(o,lvl){var method=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"compile",fragments,unwrapped;return this.comments&&(this.ignoreTheseCommentsTemporarily=this.comments,delete this.comments),unwrapped=this.unwrapAll(),unwrapped.comments&&(unwrapped.ignoreTheseCommentsTemporarily=unwrapped.comments,delete unwrapped.comments),fragments=this[method](o,lvl),this.ignoreTheseCommentsTemporarily&&(this.comments=this.ignoreTheseCommentsTemporarily,delete this.ignoreTheseCommentsTemporarily),unwrapped.ignoreTheseCommentsTemporarily&&(unwrapped.comments=unwrapped.ignoreTheseCommentsTemporarily,delete unwrapped.ignoreTheseCommentsTemporarily),fragments}},{key:"compileNodeWithoutComments",value:function compileNodeWithoutComments(o,lvl){return this.compileWithoutComments(o,lvl,"compileNode")}},{key:"compileToFragments",value:function compileToFragments(o,lvl){var fragments,node;return o=extend({},o),lvl&&(o.level=lvl),node=this.unfoldSoak(o)||this,node.tab=o.indent,fragments=o.level!==LEVEL_TOP&&node.isStatement(o)?node.compileClosure(o):node.compileNode(o),this.compileCommentFragments(o,node,fragments),fragments}},{key:"compileToFragmentsWithoutComments",value:function compileToFragmentsWithoutComments(o,lvl){return this.compileWithoutComments(o,lvl,"compileToFragments")}},{key:"compileClosure",value:function compileClosure(o){var args,argumentsNode,func,meth,parts,ref1,ref2;switch(this.checkForPureStatementInExpression(),o.sharedScope=!0,func=new Code([],Block.wrap([this])),args=[],this.contains(function(node){return node instanceof SuperCall})?func.bound=!0:((argumentsNode=this.contains(isLiteralArguments))||this.contains(isLiteralThis))&&(args=[new ThisLiteral],argumentsNode?(meth="apply",args.push(new IdentifierLiteral("arguments"))):meth="call",func=new Value(func,[new Access(new PropertyName(meth))])),parts=new Call(func,args).compileNode(o),!1){case!(func.isGenerator||(null==(ref1=func.base)?void 0:ref1.isGenerator)):parts.unshift(this.makeCode("(yield* ")),parts.push(this.makeCode(")"));break;case!(func.isAsync||(null==(ref2=func.base)?void 0:ref2.isAsync)):parts.unshift(this.makeCode("(await ")),parts.push(this.makeCode(")"));}return parts}},{key:"compileCommentFragments",value:function compileCommentFragments(o,node,fragments){var base1,base2,comment,commentFragment,j,len1,ref1,unshiftCommentFragment;if(!node.comments)return fragments;for(unshiftCommentFragment=function(commentFragment){var precedingFragment;return commentFragment.unshift?unshiftAfterComments(fragments,commentFragment):(0!==fragments.length&&(precedingFragment=fragments[fragments.length-1],commentFragment.newLine&&""!==precedingFragment.code&&!/\n\s*$/.test(precedingFragment.code)&&(commentFragment.code="\n".concat(commentFragment.code))),fragments.push(commentFragment))},ref1=node.comments,(j=0,len1=ref1.length);j<len1;j++)(comment=ref1[j],!!(0>indexOf.call(this.compiledComments,comment)))&&(this.compiledComments.push(comment),commentFragment=comment.here?new HereComment(comment).compileNode(o):new LineComment(comment).compileNode(o),commentFragment.isHereComment&&!commentFragment.newLine||node.includeCommentFragments()?unshiftCommentFragment(commentFragment):(0===fragments.length&&fragments.push(this.makeCode("")),commentFragment.unshift?(null==(base1=fragments[0]).precedingComments&&(base1.precedingComments=[]),fragments[0].precedingComments.push(commentFragment)):(null==(base2=fragments[fragments.length-1]).followingComments&&(base2.followingComments=[]),fragments[fragments.length-1].followingComments.push(commentFragment))));return fragments}},{key:"cache",value:function cache(o,level,shouldCache){var complex,ref,sub;return complex=null==shouldCache?this.shouldCache():shouldCache(this),complex?(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),sub=new Assign(ref,this),level?[sub.compileToFragments(o,level),[this.makeCode(ref.value)]]:[sub,ref]):(ref=level?this.compileToFragments(o,level):this,[ref,ref])}},{key:"hoist",value:function hoist(){var compileNode,compileToFragments,target;return this.hoisted=!0,target=new HoistTarget(this),compileNode=this.compileNode,compileToFragments=this.compileToFragments,this.compileNode=function(o){return target.update(compileNode,o)},this.compileToFragments=function(o){return target.update(compileToFragments,o)},target}},{key:"cacheToCodeFragments",value:function cacheToCodeFragments(cacheValues){return[fragmentsToText(cacheValues[0]),fragmentsToText(cacheValues[1])]}},{key:"makeReturn",value:function makeReturn(results,mark){var node;return mark?void(this.canBeReturned=!0):(node=this.unwrapAll(),results?new Call(new Literal("".concat(results,".push")),[node]):new Return(node))}},{key:"contains",value:function contains(pred){var node;return node=void 0,this.traverseChildren(!1,function(n){if(pred(n))return node=n,!1}),node}},{key:"lastNode",value:function lastNode(list){return 0===list.length?null:list[list.length-1]}},{key:"toString",value:function toString(){var idt=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",name=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this.constructor.name,tree;return tree="\n"+idt+name,this.soak&&(tree+="?"),this.eachChild(function(node){return tree+=node.toString(idt+TAB)}),tree}},{key:"checkForPureStatementInExpression",value:function checkForPureStatementInExpression(){var jumpNode;if(jumpNode=this.jumps())return jumpNode.error("cannot use a pure statement in an expression")}},{key:"ast",value:function ast(o,level){var astNode;return o=this.astInitialize(o,level),astNode=this.astNode(o),null!=this.astNode&&this.canBeReturned&&Object.assign(astNode,{returns:!0}),astNode}},{key:"astInitialize",value:function astInitialize(o,level){return o=Object.assign({},o),null!=level&&(o.level=level),o.level>LEVEL_TOP&&this.checkForPureStatementInExpression(),this.isStatement(o)&&o.level!==LEVEL_TOP&&null!=o.scope&&this.makeReturn(null,!0),o}},{key:"astNode",value:function astNode(o){return Object.assign({},{type:this.astType(o)},this.astProperties(o),this.astLocationData())}},{key:"astProperties",value:function astProperties(){return{}}},{key:"astType",value:function astType(){return this.constructor.name}},{key:"astLocationData",value:function astLocationData(){return jisonLocationDataToAstLocationData(this.locationData)}},{key:"isStatementAst",value:function isStatementAst(o){return this.isStatement(o)}},{key:"eachChild",value:function eachChild(func){var attr,child,j,k,len1,len2,ref1,ref2;if(!this.children)return this;for(ref1=this.children,j=0,len1=ref1.length;j<len1;j++)if(attr=ref1[j],this[attr])for(ref2=flatten([this[attr]]),k=0,len2=ref2.length;k<len2;k++)if(child=ref2[k],!1===func(child))return this;return this}},{key:"traverseChildren",value:function traverseChildren(crossScope,func){return this.eachChild(function(child){var recur;if(recur=func(child),!1!==recur)return child.traverseChildren(crossScope,func)})}},{key:"replaceInContext",value:function replaceInContext(match,replacement){var attr,child,children,i,j,k,len1,len2,ref1,ref2;if(!this.children)return!1;for(ref1=this.children,j=0,len1=ref1.length;j<len1;j++)if(attr=ref1[j],children=this[attr])if(Array.isArray(children))for(i=k=0,len2=children.length;k<len2;i=++k){if(child=children[i],match(child))return splice.apply(children,[i,i-i+1].concat(ref2=replacement(child,this))),ref2,!0;if(child.replaceInContext(match,replacement))return!0}else{if(match(children))return this[attr]=replacement(children,this),!0;if(children.replaceInContext(match,replacement))return!0}}},{key:"invert",value:function invert(){return new Op("!",this)}},{key:"unwrapAll",value:function unwrapAll(){var node;for(node=this;node!==(node=node.unwrap());)continue;return node}},{key:"updateLocationDataIfMissing",value:function updateLocationDataIfMissing(locationData,force){return(force&&(this.forceUpdateLocation=!0),this.locationData&&!this.forceUpdateLocation)?this:(delete this.forceUpdateLocation,this.locationData=locationData,this.eachChild(function(child){return child.updateLocationDataIfMissing(locationData)}))}},{key:"withLocationDataFrom",value:function withLocationDataFrom(_ref19){var locationData=_ref19.locationData;return this.updateLocationDataIfMissing(locationData)}},{key:"withLocationDataAndCommentsFrom",value:function withLocationDataAndCommentsFrom(node){var comments;return this.withLocationDataFrom(node),comments=node.comments,(null==comments?void 0:comments.length)&&(this.comments=comments),this}},{key:"error",value:function error(message){return throwSyntaxError(message,this.locationData)}},{key:"makeCode",value:function makeCode(code){return new CodeFragment(this,code)}},{key:"wrapInParentheses",value:function wrapInParentheses(fragments){return[this.makeCode("(")].concat(_toConsumableArray(fragments),[this.makeCode(")")])}},{key:"wrapInBraces",value:function wrapInBraces(fragments){return[this.makeCode("{")].concat(_toConsumableArray(fragments),[this.makeCode("}")])}},{key:"joinFragmentArrays",value:function joinFragmentArrays(fragmentsList,joinStr){var answer,fragments,i,j,len1;for(answer=[],i=j=0,len1=fragmentsList.length;j<len1;i=++j)fragments=fragmentsList[i],i&&answer.push(this.makeCode(joinStr)),answer=answer.concat(fragments);return answer}}]),Base}();return Base.prototype.children=[],Base.prototype.isStatement=NO,Base.prototype.compiledComments=[],Base.prototype.includeCommentFragments=NO,Base.prototype.jumps=NO,Base.prototype.shouldCache=YES,Base.prototype.isChainable=NO,Base.prototype.isAssignable=NO,Base.prototype.isNumber=NO,Base.prototype.unwrap=THIS,Base.prototype.unfoldSoak=NO,Base.prototype.assigns=NO,Base}.call(this),exports.HoistTarget=HoistTarget=function(_Base){"use strict";function HoistTarget(source1){var _this8;return _classCallCheck(this,HoistTarget),_this8=_super.call(this),_this8.source=source1,_this8.options={},_this8.targetFragments={fragments:[]},_this8}_inherits(HoistTarget,_Base);var _super=_createSuper(HoistTarget);return _createClass(HoistTarget,[{key:"isStatement",value:function isStatement(o){return this.source.isStatement(o)}},{key:"update",value:function update(compile,o){return this.targetFragments.fragments=compile.call(this.source,merge(o,this.options))}},{key:"compileToFragments",value:function compileToFragments(o,level){return this.options.indent=o.indent,this.options.level=null==level?o.level:level,[this.targetFragments]}},{key:"compileNode",value:function compileNode(o){return this.compileToFragments(o)}},{key:"compileClosure",value:function compileClosure(o){return this.compileToFragments(o)}}],[{key:"expand",value:function expand(fragments){var fragment,i,j,ref1;for(i=j=fragments.length-1;0<=j;i=j+=-1)fragment=fragments[i],fragment.fragments&&(splice.apply(fragments,[i,i-i+1].concat(ref1=this.expand(fragment.fragments))),ref1);return fragments}}]),HoistTarget}(Base),exports.Root=Root=function(){var Root=function(_Base2){"use strict";function Root(body1){var _this9;return _classCallCheck(this,Root),_this9=_super2.call(this),_this9.body=body1,_this9.isAsync=new Code([],_this9.body).isAsync,_this9}_inherits(Root,_Base2);var _super2=_createSuper(Root);return _createClass(Root,[{key:"compileNode",value:function compileNode(o){var fragments,functionKeyword;return(o.indent=o.bare?"":TAB,o.level=LEVEL_TOP,o.compiling=!0,this.initializeScope(o),fragments=this.body.compileRoot(o),o.bare)?fragments:(functionKeyword="".concat(this.isAsync?"async ":"","function"),[].concat(this.makeCode("(".concat(functionKeyword,"() {\n")),fragments,this.makeCode("\n}).call(this);\n")))}},{key:"initializeScope",value:function initializeScope(o){var j,len1,name,ref1,ref2,results1;for(o.scope=new Scope(null,this.body,null,null==(ref1=o.referencedVars)?[]:ref1),ref2=o.locals||[],results1=[],(j=0,len1=ref2.length);j<len1;j++)name=ref2[j],results1.push(o.scope.parameter(name));return results1}},{key:"commentsAst",value:function commentsAst(){var comment,commentToken,j,len1,ref1,results1;for(null==this.allComments&&(this.allComments=function(){var j,len1,ref1,ref2,results1;for(ref2=null==(ref1=this.allCommentTokens)?[]:ref1,results1=[],(j=0,len1=ref2.length);j<len1;j++)commentToken=ref2[j],commentToken.heregex||(commentToken.here?results1.push(new HereComment(commentToken)):results1.push(new LineComment(commentToken)));return results1}.call(this)),ref1=this.allComments,results1=[],(j=0,len1=ref1.length);j<len1;j++)comment=ref1[j],results1.push(comment.ast());return results1}},{key:"astNode",value:function astNode(o){return o.level=LEVEL_TOP,this.initializeScope(o),_get(_getPrototypeOf(Root.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"File"}},{key:"astProperties",value:function astProperties(o){return this.body.isRootBlock=!0,{program:Object.assign(this.body.ast(o),this.astLocationData()),comments:this.commentsAst()}}}]),Root}(Base);return Root.prototype.children=["body"],Root}.call(this),exports.Block=Block=function(){var Block=function(_Base3){"use strict";function Block(nodes){var _this10;return _classCallCheck(this,Block),_this10=_super3.call(this),_this10.expressions=compact(flatten(nodes||[])),_this10}_inherits(Block,_Base3);var _super3=_createSuper(Block);return _createClass(Block,[{key:"push",value:function push(node){return this.expressions.push(node),this}},{key:"pop",value:function pop(){return this.expressions.pop()}},{key:"unshift",value:function unshift(node){return this.expressions.unshift(node),this}},{key:"unwrap",value:function unwrap(){return 1===this.expressions.length?this.expressions[0]:this}},{key:"isEmpty",value:function isEmpty(){return!this.expressions.length}},{key:"isStatement",value:function isStatement(o){var exp,j,len1,ref1;for(ref1=this.expressions,j=0,len1=ref1.length;j<len1;j++)if(exp=ref1[j],exp.isStatement(o))return!0;return!1}},{key:"jumps",value:function jumps(o){var exp,j,jumpNode,len1,ref1;for(ref1=this.expressions,j=0,len1=ref1.length;j<len1;j++)if(exp=ref1[j],jumpNode=exp.jumps(o))return jumpNode}},{key:"makeReturn",value:function makeReturn(results,mark){var _slice1$call,_slice1$call2,expr,expressions,last,lastExp,len,penult,ref1,ref2;if(len=this.expressions.length,ref1=this.expressions,_slice1$call=slice1.call(ref1,-1),_slice1$call2=_slicedToArray(_slice1$call,1),lastExp=_slice1$call2[0],_slice1$call,lastExp=(null==lastExp?void 0:lastExp.unwrap())||!1,lastExp&&lastExp instanceof Parens&&1<lastExp.body.expressions.length){var _lastExp=lastExp;expressions=_lastExp.body.expressions;var _slice1$call3=slice1.call(expressions,-2),_slice1$call4=_slicedToArray(_slice1$call3,2);penult=_slice1$call4[0],last=_slice1$call4[1],penult=penult.unwrap(),last=last.unwrap(),penult instanceof JSXElement&&last instanceof JSXElement&&expressions[expressions.length-1].error("Adjacent JSX elements must be wrapped in an enclosing tag")}if(mark)return void(null!=(ref2=this.expressions[len-1])&&ref2.makeReturn(results,mark));for(;len--;){expr=this.expressions[len],this.expressions[len]=expr.makeReturn(results),expr instanceof Return&&!expr.expression&&this.expressions.splice(len,1);break}return this}},{key:"compile",value:function compile(o,lvl){return o.scope?_get(_getPrototypeOf(Block.prototype),"compile",this).call(this,o,lvl):new Root(this).withLocationDataFrom(this).compile(o,lvl)}},{key:"compileNode",value:function compileNode(o){var answer,compiledNodes,fragments,index,j,lastFragment,len1,node,ref1,top;for(this.tab=o.indent,top=o.level===LEVEL_TOP,compiledNodes=[],ref1=this.expressions,(index=j=0,len1=ref1.length);j<len1;index=++j){if(node=ref1[index],node.hoisted){node.compileToFragments(o);continue}if(node=node.unfoldSoak(o)||node,node instanceof Block)compiledNodes.push(node.compileNode(o));else if(top){if(node.front=!0,fragments=node.compileToFragments(o),!node.isStatement(o)){fragments=indentInitial(fragments,this);var _slice1$call5=slice1.call(fragments,-1),_slice1$call6=_slicedToArray(_slice1$call5,1);lastFragment=_slice1$call6[0],""===lastFragment.code||lastFragment.isComment||fragments.push(this.makeCode(";"))}compiledNodes.push(fragments)}else compiledNodes.push(node.compileToFragments(o,LEVEL_LIST))}return top?this.spaced?[].concat(this.joinFragmentArrays(compiledNodes,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(compiledNodes,"\n"):(answer=compiledNodes.length?this.joinFragmentArrays(compiledNodes,", "):[this.makeCode("void 0")],1<compiledNodes.length&&o.level>=LEVEL_LIST?this.wrapInParentheses(answer):answer)}},{key:"compileRoot",value:function compileRoot(o){var fragments;return this.spaced=!0,fragments=this.compileWithDeclarations(o),HoistTarget.expand(fragments),this.compileComments(fragments)}},{key:"compileWithDeclarations",value:function compileWithDeclarations(o){var assigns,declaredVariable,declaredVariables,declaredVariablesIndex,declars,exp,fragments,i,j,k,len1,len2,post,ref1,rest,scope,spaced;for(fragments=[],post=[],ref1=this.expressions,(i=j=0,len1=ref1.length);j<len1&&(exp=ref1[i],exp=exp.unwrap(),!!(exp instanceof Literal));i=++j);if(o=merge(o,{level:LEVEL_TOP}),i){rest=this.expressions.splice(i,9e9);var _ref20=[this.spaced,!1];spaced=_ref20[0],this.spaced=_ref20[1];var _ref21=[this.compileNode(o),spaced];fragments=_ref21[0],this.spaced=_ref21[1],this.expressions=rest}post=this.compileNode(o);var _o2=o;if(scope=_o2.scope,scope.expressions===this)if(declars=o.scope.hasDeclarations(),assigns=scope.hasAssignments,declars||assigns){if(i&&fragments.push(this.makeCode("\n")),fragments.push(this.makeCode("".concat(this.tab,"var "))),declars)for(declaredVariables=scope.declaredVariables(),declaredVariablesIndex=k=0,len2=declaredVariables.length;k<len2;declaredVariablesIndex=++k){if(declaredVariable=declaredVariables[declaredVariablesIndex],fragments.push(this.makeCode(declaredVariable)),Object.prototype.hasOwnProperty.call(o.scope.comments,declaredVariable)){var _fragments;(_fragments=fragments).push.apply(_fragments,_toConsumableArray(o.scope.comments[declaredVariable]))}declaredVariablesIndex!==declaredVariables.length-1&&fragments.push(this.makeCode(", "))}assigns&&(declars&&fragments.push(this.makeCode(",\n".concat(this.tab+TAB))),fragments.push(this.makeCode(scope.assignedVariables().join(",\n".concat(this.tab+TAB))))),fragments.push(this.makeCode(";\n".concat(this.spaced?"\n":"")))}else fragments.length&&post.length&&fragments.push(this.makeCode("\n"));return fragments.concat(post)}},{key:"compileComments",value:function compileComments(fragments){var code,commentFragment,fragment,fragmentIndent,fragmentIndex,indent,j,k,l,len1,len2,len3,newLineIndex,onNextLine,p,pastFragment,pastFragmentIndex,q,ref1,ref2,ref3,ref4,trail,upcomingFragment,upcomingFragmentIndex;for(fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j){if(fragment=fragments[fragmentIndex],fragment.precedingComments){for(fragmentIndent="",ref1=fragments.slice(0,fragmentIndex+1),k=ref1.length-1;0<=k;k+=-1)if(pastFragment=ref1[k],indent=/^ {2,}/m.exec(pastFragment.code),indent){fragmentIndent=indent[0];break}else if(0<=indexOf.call(pastFragment.code,"\n"))break;for(code="\n".concat(fragmentIndent)+function(){var l,len2,ref2,results1;for(ref2=fragment.precedingComments,results1=[],(l=0,len2=ref2.length);l<len2;l++)commentFragment=ref2[l],commentFragment.isHereComment&&commentFragment.multiline?results1.push(multident(commentFragment.code,fragmentIndent,!1)):results1.push(commentFragment.code);return results1}().join("\n".concat(fragmentIndent)).replace(/^(\s*)$/gm,""),ref2=fragments.slice(0,fragmentIndex+1),pastFragmentIndex=l=ref2.length-1;0<=l;pastFragmentIndex=l+=-1){if(pastFragment=ref2[pastFragmentIndex],newLineIndex=pastFragment.code.lastIndexOf("\n"),-1===newLineIndex)if(0===pastFragmentIndex)pastFragment.code="\n"+pastFragment.code,newLineIndex=0;else if(pastFragment.isStringWithInterpolations&&"{"===pastFragment.code)code=code.slice(1)+"\n",newLineIndex=1;else continue;delete fragment.precedingComments,pastFragment.code=pastFragment.code.slice(0,newLineIndex)+code+pastFragment.code.slice(newLineIndex);break}}if(fragment.followingComments){if(trail=fragment.followingComments[0].trail,fragmentIndent="",!(trail&&1===fragment.followingComments.length))for(onNextLine=!1,ref3=fragments.slice(fragmentIndex),(p=0,len2=ref3.length);p<len2;p++)if(upcomingFragment=ref3[p],!onNextLine){if(0<=indexOf.call(upcomingFragment.code,"\n"))onNextLine=!0;else continue;}else if(indent=/^ {2,}/m.exec(upcomingFragment.code),indent){fragmentIndent=indent[0];break}else if(0<=indexOf.call(upcomingFragment.code,"\n"))break;for(code=1===fragmentIndex&&/^\s+$/.test(fragments[0].code)?"":trail?" ":"\n".concat(fragmentIndent),code+=function(){var len3,q,ref4,results1;for(ref4=fragment.followingComments,results1=[],(q=0,len3=ref4.length);q<len3;q++)commentFragment=ref4[q],commentFragment.isHereComment&&commentFragment.multiline?results1.push(multident(commentFragment.code,fragmentIndent,!1)):results1.push(commentFragment.code);return results1}().join("\n".concat(fragmentIndent)).replace(/^(\s*)$/gm,""),ref4=fragments.slice(fragmentIndex),(upcomingFragmentIndex=q=0,len3=ref4.length);q<len3;upcomingFragmentIndex=++q){if(upcomingFragment=ref4[upcomingFragmentIndex],newLineIndex=upcomingFragment.code.indexOf("\n"),-1===newLineIndex)if(upcomingFragmentIndex===fragments.length-1)upcomingFragment.code+="\n",newLineIndex=upcomingFragment.code.length;else if(upcomingFragment.isStringWithInterpolations&&"}"===upcomingFragment.code)code="".concat(code,"\n"),newLineIndex=0;else continue;delete fragment.followingComments,"\n"===upcomingFragment.code&&(code=code.replace(/^\n/,"")),upcomingFragment.code=upcomingFragment.code.slice(0,newLineIndex)+code+upcomingFragment.code.slice(newLineIndex);break}}}return fragments}},{key:"astNode",value:function astNode(o){return null!=o.level&&o.level!==LEVEL_TOP&&this.expressions.length?new Sequence(this.expressions).withLocationDataFrom(this).ast(o):_get(_getPrototypeOf(Block.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isRootBlock?"Program":this.isClassBody?"ClassBody":"BlockStatement"}},{key:"astProperties",value:function astProperties(o){var body,checkForDirectives,directives,expression,expressionAst,j,len1,ref1;for(checkForDirectives=del(o,"checkForDirectives"),(this.isRootBlock||checkForDirectives)&&sniffDirectives(this.expressions,{notFinalExpression:checkForDirectives}),directives=[],body=[],ref1=this.expressions,(j=0,len1=ref1.length);j<len1;j++)if(expression=ref1[j],expressionAst=expression.ast(o),null==expressionAst)continue;else expression instanceof Directive?directives.push(expressionAst):expression.isStatementAst(o)?body.push(expressionAst):body.push(Object.assign({type:"ExpressionStatement",expression:expressionAst},expression.astLocationData()));return{body:body,directives:directives}}},{key:"astLocationData",value:function astLocationData(){return this.isRootBlock&&null==this.locationData?void 0:_get(_getPrototypeOf(Block.prototype),"astLocationData",this).call(this)}}],[{key:"wrap",value:function wrap(nodes){return 1===nodes.length&&nodes[0]instanceof Block?nodes[0]:new Block(nodes)}}]),Block}(Base);return Block.prototype.children=["expressions"],Block}.call(this),exports.Directive=Directive=function(_Base4){"use strict";function Directive(value1){var _this11;return _classCallCheck(this,Directive),_this11=_super4.call(this),_this11.value=value1,_this11}_inherits(Directive,_Base4);var _super4=_createSuper(Directive);return _createClass(Directive,[{key:"astProperties",value:function astProperties(o){return{value:Object.assign({},this.value.ast(o),{type:"DirectiveLiteral"})}}}]),Directive}(Base),exports.Literal=Literal=function(){var Literal=function(_Base5){"use strict";function Literal(value1){var _this12;return _classCallCheck(this,Literal),_this12=_super5.call(this),_this12.value=value1,_this12}_inherits(Literal,_Base5);var _super5=_createSuper(Literal);return _createClass(Literal,[{key:"assigns",value:function assigns(name){return name===this.value}},{key:"compileNode",value:function compileNode(){return[this.makeCode(this.value)]}},{key:"astProperties",value:function astProperties(){return{value:this.value}}},{key:"toString",value:function toString(){return" ".concat(this.isStatement()?_get(_getPrototypeOf(Literal.prototype),"toString",this).call(this):this.constructor.name,": ").concat(this.value)}}]),Literal}(Base);return Literal.prototype.shouldCache=NO,Literal}.call(this),exports.NumberLiteral=NumberLiteral=function(_Literal){"use strict";function NumberLiteral(value1){var _ref22=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},parsedValue=_ref22.parsedValue,_this13;return _classCallCheck(this,NumberLiteral),_this13=_super6.call(this),_this13.value=value1,_this13.parsedValue=parsedValue,null==_this13.parsedValue&&(isNumber(_this13.value)?(_this13.parsedValue=_this13.value,_this13.value="".concat(_this13.value)):_this13.parsedValue=parseNumber(_this13.value)),_this13}_inherits(NumberLiteral,_Literal);var _super6=_createSuper(NumberLiteral);return _createClass(NumberLiteral,[{key:"isBigInt",value:function isBigInt(){return /n$/.test(this.value)}},{key:"astType",value:function astType(){return this.isBigInt()?"BigIntLiteral":"NumericLiteral"}},{key:"astProperties",value:function astProperties(){return{value:this.isBigInt()?this.parsedValue.toString():this.parsedValue,extra:{rawValue:this.isBigInt()?this.parsedValue.toString():this.parsedValue,raw:this.value}}}}]),NumberLiteral}(Literal),exports.InfinityLiteral=InfinityLiteral=function(_NumberLiteral){"use strict";function InfinityLiteral(value1){var _ref23=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref23$originalValue=_ref23.originalValue,originalValue=void 0===_ref23$originalValue?"Infinity":_ref23$originalValue,_this14;return _classCallCheck(this,InfinityLiteral),_this14=_super7.call(this),_this14.value=value1,_this14.originalValue=originalValue,_this14}_inherits(InfinityLiteral,_NumberLiteral);var _super7=_createSuper(InfinityLiteral);return _createClass(InfinityLiteral,[{key:"compileNode",value:function compileNode(){return[this.makeCode("2e308")]}},{key:"astNode",value:function astNode(o){return"Infinity"===this.originalValue?_get(_getPrototypeOf(InfinityLiteral.prototype),"astNode",this).call(this,o):new NumberLiteral(this.value).withLocationDataFrom(this).ast(o)}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"Infinity",declaration:!1}}}]),InfinityLiteral}(NumberLiteral),exports.NaNLiteral=NaNLiteral=function(_NumberLiteral2){"use strict";function NaNLiteral(){return _classCallCheck(this,NaNLiteral),_super8.call(this,"NaN")}_inherits(NaNLiteral,_NumberLiteral2);var _super8=_createSuper(NaNLiteral);return _createClass(NaNLiteral,[{key:"compileNode",value:function compileNode(o){var code;return code=[this.makeCode("0/0")],o.level>=LEVEL_OP?this.wrapInParentheses(code):code}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"NaN",declaration:!1}}}]),NaNLiteral}(NumberLiteral),exports.StringLiteral=StringLiteral=function(_Literal2){"use strict";function StringLiteral(originalValue){var _ref24=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},quote=_ref24.quote,initialChunk=_ref24.initialChunk,finalChunk=_ref24.finalChunk,indent1=_ref24.indent,double1=_ref24.double,heregex1=_ref24.heregex,_this15;_classCallCheck(this,StringLiteral);var heredoc,indentRegex,val;return _this15=_super9.call(this,""),_this15.originalValue=originalValue,_this15.quote=quote,_this15.initialChunk=initialChunk,_this15.finalChunk=finalChunk,_this15.indent=indent1,_this15.double=double1,_this15.heregex=heregex1,"///"===_this15.quote&&(_this15.quote=null),_this15.fromSourceString=null!=_this15.quote,null==_this15.quote&&(_this15.quote="\""),heredoc=_this15.isFromHeredoc(),val=_this15.originalValue,_this15.heregex?(val=val.replace(HEREGEX_OMIT,"$1$2"),val=replaceUnicodeCodePointEscapes(val,{flags:_this15.heregex.flags})):(val=val.replace(STRING_OMIT,"$1"),val=_this15.fromSourceString?heredoc?(_this15.indent?indentRegex=RegExp("\\n".concat(_this15.indent),"g"):void 0,indentRegex?val=val.replace(indentRegex,"\n"):void 0,_this15.initialChunk?val=val.replace(LEADING_BLANK_LINE,""):void 0,_this15.finalChunk?val=val.replace(TRAILING_BLANK_LINE,""):void 0,val):val.replace(SIMPLE_STRING_OMIT,function(match,offset){return _this15.initialChunk&&0===offset||_this15.finalChunk&&offset+match.length===val.length?"":" "}):val),_this15.delimiter=_this15.quote.charAt(0),_this15.value=makeDelimitedLiteral(val,{delimiter:_this15.delimiter,double:_this15.double}),_this15.unquotedValueForTemplateLiteral=makeDelimitedLiteral(val,{delimiter:"`",double:_this15.double,escapeNewlines:!1,includeDelimiters:!1,convertTrailingNullEscapes:!0}),_this15.unquotedValueForJSX=makeDelimitedLiteral(val,{double:_this15.double,escapeNewlines:!1,includeDelimiters:!1,escapeDelimiter:!1}),_this15}_inherits(StringLiteral,_Literal2);var _super9=_createSuper(StringLiteral);return _createClass(StringLiteral,[{key:"compileNode",value:function compileNode(o){return this.shouldGenerateTemplateLiteral()?StringWithInterpolations.fromStringLiteral(this).compileNode(o):this.jsx?[this.makeCode(this.unquotedValueForJSX)]:_get(_getPrototypeOf(StringLiteral.prototype),"compileNode",this).call(this,o)}},{key:"withoutQuotesInLocationData",value:function withoutQuotesInLocationData(){var copy,endsWithNewline,locationData;return endsWithNewline="\n"===this.originalValue.slice(-1),locationData=Object.assign({},this.locationData),locationData.first_column+=this.quote.length,endsWithNewline?(locationData.last_line-=1,locationData.last_column=locationData.last_line===locationData.first_line?locationData.first_column+this.originalValue.length-"\n".length:this.originalValue.slice(0,-1).length-"\n".length-this.originalValue.slice(0,-1).lastIndexOf("\n")):locationData.last_column-=this.quote.length,locationData.last_column_exclusive-=this.quote.length,locationData.range=[locationData.range[0]+this.quote.length,locationData.range[1]-this.quote.length],copy=new StringLiteral(this.originalValue,{quote:this.quote,initialChunk:this.initialChunk,finalChunk:this.finalChunk,indent:this.indent,double:this.double,heregex:this.heregex}),copy.locationData=locationData,copy}},{key:"isFromHeredoc",value:function isFromHeredoc(){return 3===this.quote.length}},{key:"shouldGenerateTemplateLiteral",value:function shouldGenerateTemplateLiteral(){return this.isFromHeredoc()}},{key:"astNode",value:function astNode(o){return this.shouldGenerateTemplateLiteral()?StringWithInterpolations.fromStringLiteral(this).ast(o):_get(_getPrototypeOf(StringLiteral.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(){return{value:this.originalValue,extra:{raw:"".concat(this.delimiter).concat(this.originalValue).concat(this.delimiter)}}}}]),StringLiteral}(Literal),exports.RegexLiteral=RegexLiteral=function(){var RegexLiteral=function(_Literal3){"use strict";function RegexLiteral(value){var _ref25=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref25$delimiter=_ref25.delimiter,delimiter1=void 0===_ref25$delimiter?"/":_ref25$delimiter,_ref25$heregexComment=_ref25.heregexCommentTokens,heregexCommentTokens=void 0===_ref25$heregexComment?[]:_ref25$heregexComment,_this16;_classCallCheck(this,RegexLiteral);var endDelimiterIndex,heregex,val;return _this16=_super10.call(this,""),_this16.delimiter=delimiter1,_this16.heregexCommentTokens=heregexCommentTokens,heregex="///"===_this16.delimiter,endDelimiterIndex=value.lastIndexOf("/"),_this16.flags=value.slice(endDelimiterIndex+1),val=_this16.originalValue=value.slice(1,endDelimiterIndex),heregex&&(val=val.replace(HEREGEX_OMIT,"$1$2")),val=replaceUnicodeCodePointEscapes(val,{flags:_this16.flags}),_this16.value="".concat(makeDelimitedLiteral(val,{delimiter:"/"})).concat(_this16.flags),_this16}_inherits(RegexLiteral,_Literal3);var _super10=_createSuper(RegexLiteral);return _createClass(RegexLiteral,[{key:"astType",value:function astType(){return"RegExpLiteral"}},{key:"astProperties",value:function astProperties(o){var _this$REGEX_REGEX$exe=this.REGEX_REGEX.exec(this.value),_this$REGEX_REGEX$exe2=_slicedToArray(_this$REGEX_REGEX$exe,2),heregexCommentToken,pattern;return pattern=_this$REGEX_REGEX$exe2[1],{value:void 0,pattern:pattern,flags:this.flags,delimiter:this.delimiter,originalPattern:this.originalValue,extra:{raw:this.value,originalRaw:"".concat(this.delimiter).concat(this.originalValue).concat(this.delimiter).concat(this.flags),rawValue:void 0},comments:function(){var j,len1,ref1,results1;for(ref1=this.heregexCommentTokens,results1=[],(j=0,len1=ref1.length);j<len1;j++)heregexCommentToken=ref1[j],heregexCommentToken.here?results1.push(new HereComment(heregexCommentToken).ast(o)):results1.push(new LineComment(heregexCommentToken).ast(o));return results1}.call(this)}}}]),RegexLiteral}(Literal);return RegexLiteral.prototype.REGEX_REGEX=/^\/(.*)\/\w*$/,RegexLiteral}.call(this),exports.PassthroughLiteral=PassthroughLiteral=function(_Literal4){"use strict";function PassthroughLiteral(originalValue){var _ref26=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},here=_ref26.here,generated=_ref26.generated,_this17;return _classCallCheck(this,PassthroughLiteral),_this17=_super11.call(this,""),_this17.originalValue=originalValue,_this17.here=here,_this17.generated=generated,_this17.value=_this17.originalValue.replace(/\\+(`|$)/g,function(string){var _Mathceil=Math.ceil;return string.slice(-_Mathceil(string.length/2))}),_this17}_inherits(PassthroughLiteral,_Literal4);var _super11=_createSuper(PassthroughLiteral);return _createClass(PassthroughLiteral,[{key:"astNode",value:function astNode(o){return this.generated?null:_get(_getPrototypeOf(PassthroughLiteral.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(){return{value:this.originalValue,here:!!this.here}}}]),PassthroughLiteral}(Literal),exports.IdentifierLiteral=IdentifierLiteral=function(){var IdentifierLiteral=function(_Literal5){"use strict";function IdentifierLiteral(){return _classCallCheck(this,IdentifierLiteral),_super12.apply(this,arguments)}_inherits(IdentifierLiteral,_Literal5);var _super12=_createSuper(IdentifierLiteral);return _createClass(IdentifierLiteral,[{key:"eachName",value:function eachName(iterator){return iterator(this)}},{key:"astType",value:function astType(){return this.jsx?"JSXIdentifier":"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!!this.isDeclaration}}}]),IdentifierLiteral}(Literal);return IdentifierLiteral.prototype.isAssignable=YES,IdentifierLiteral}.call(this),exports.PropertyName=PropertyName=function(){var PropertyName=function(_Literal6){"use strict";function PropertyName(){return _classCallCheck(this,PropertyName),_super13.apply(this,arguments)}_inherits(PropertyName,_Literal6);var _super13=_createSuper(PropertyName);return _createClass(PropertyName,[{key:"astType",value:function astType(){return this.jsx?"JSXIdentifier":"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!1}}}]),PropertyName}(Literal);return PropertyName.prototype.isAssignable=YES,PropertyName}.call(this),exports.ComputedPropertyName=ComputedPropertyName=function(_PropertyName){"use strict";function ComputedPropertyName(){return _classCallCheck(this,ComputedPropertyName),_super14.apply(this,arguments)}_inherits(ComputedPropertyName,_PropertyName);var _super14=_createSuper(ComputedPropertyName);return _createClass(ComputedPropertyName,[{key:"compileNode",value:function compileNode(o){return[this.makeCode("[")].concat(_toConsumableArray(this.value.compileToFragments(o,LEVEL_LIST)),[this.makeCode("]")])}},{key:"astNode",value:function astNode(o){return this.value.ast(o)}}]),ComputedPropertyName}(PropertyName),exports.StatementLiteral=StatementLiteral=function(){var StatementLiteral=function(_Literal7){"use strict";function StatementLiteral(){return _classCallCheck(this,StatementLiteral),_super15.apply(this,arguments)}_inherits(StatementLiteral,_Literal7);var _super15=_createSuper(StatementLiteral);return _createClass(StatementLiteral,[{key:"jumps",value:function jumps(o){return"break"!==this.value||(null==o?void 0:o.loop)||(null==o?void 0:o.block)?"continue"!==this.value||null!=o&&o.loop?void 0:this:this}},{key:"compileNode",value:function compileNode(){return[this.makeCode("".concat(this.tab).concat(this.value,";"))]}},{key:"astType",value:function astType(){switch(this.value){case"continue":return"ContinueStatement";case"break":return"BreakStatement";case"debugger":return"DebuggerStatement";}}}]),StatementLiteral}(Literal);return StatementLiteral.prototype.isStatement=YES,StatementLiteral.prototype.makeReturn=THIS,StatementLiteral}.call(this),exports.ThisLiteral=ThisLiteral=function(_Literal8){"use strict";function ThisLiteral(value){var _this18;return _classCallCheck(this,ThisLiteral),_this18=_super16.call(this,"this"),_this18.shorthand="@"===value,_this18}_inherits(ThisLiteral,_Literal8);var _super16=_createSuper(ThisLiteral);return _createClass(ThisLiteral,[{key:"compileNode",value:function compileNode(o){var code,ref1;return code=(null==(ref1=o.scope.method)?void 0:ref1.bound)?o.scope.method.context:this.value,[this.makeCode(code)]}},{key:"astType",value:function astType(){return"ThisExpression"}},{key:"astProperties",value:function astProperties(){return{shorthand:this.shorthand}}}]),ThisLiteral}(Literal),exports.UndefinedLiteral=UndefinedLiteral=function(_Literal9){"use strict";function UndefinedLiteral(){return _classCallCheck(this,UndefinedLiteral),_super17.call(this,"undefined")}_inherits(UndefinedLiteral,_Literal9);var _super17=_createSuper(UndefinedLiteral);return _createClass(UndefinedLiteral,[{key:"compileNode",value:function compileNode(o){return[this.makeCode(o.level>=LEVEL_ACCESS?"(void 0)":"void 0")]}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!1}}}]),UndefinedLiteral}(Literal),exports.NullLiteral=NullLiteral=function(_Literal10){"use strict";function NullLiteral(){return _classCallCheck(this,NullLiteral),_super18.call(this,"null")}_inherits(NullLiteral,_Literal10);var _super18=_createSuper(NullLiteral);return _createClass(NullLiteral)}(Literal),exports.BooleanLiteral=BooleanLiteral=function(_Literal11){"use strict";function BooleanLiteral(value){var _ref27=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},originalValue=_ref27.originalValue,_this19;return _classCallCheck(this,BooleanLiteral),_this19=_super19.call(this,value),_this19.originalValue=originalValue,null==_this19.originalValue&&(_this19.originalValue=_this19.value),_this19}_inherits(BooleanLiteral,_Literal11);var _super19=_createSuper(BooleanLiteral);return _createClass(BooleanLiteral,[{key:"astProperties",value:function astProperties(){return{value:"true"===this.value,name:this.originalValue}}}]),BooleanLiteral}(Literal),exports.DefaultLiteral=DefaultLiteral=function(_Literal12){"use strict";function DefaultLiteral(){return _classCallCheck(this,DefaultLiteral),_super20.apply(this,arguments)}_inherits(DefaultLiteral,_Literal12);var _super20=_createSuper(DefaultLiteral);return _createClass(DefaultLiteral,[{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"default",declaration:!1}}}]),DefaultLiteral}(Literal),exports.Return=Return=function(){var Return=function(_Base6){"use strict";function Return(expression1){var _ref28=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},belongsToFuncDirectiveReturn=_ref28.belongsToFuncDirectiveReturn,_this20;return _classCallCheck(this,Return),_this20=_super21.call(this),_this20.expression=expression1,_this20.belongsToFuncDirectiveReturn=belongsToFuncDirectiveReturn,_this20}_inherits(Return,_Base6);var _super21=_createSuper(Return);return _createClass(Return,[{key:"compileToFragments",value:function compileToFragments(o,level){var expr,ref1;return expr=null==(ref1=this.expression)?void 0:ref1.makeReturn(),expr&&!(expr instanceof Return)?expr.compileToFragments(o,level):_get(_getPrototypeOf(Return.prototype),"compileToFragments",this).call(this,o,level)}},{key:"compileNode",value:function compileNode(o){var answer,fragment,j,len1;if(answer=[],this.expression){for(answer=this.expression.compileToFragments(o,LEVEL_PAREN),unshiftAfterComments(answer,this.makeCode("".concat(this.tab,"return "))),(j=0,len1=answer.length);j<len1;j++)if(fragment=answer[j],fragment.isHereComment&&0<=indexOf.call(fragment.code,"\n"))fragment.code=multident(fragment.code,this.tab);else if(fragment.isLineComment)fragment.code="".concat(this.tab).concat(fragment.code);else break;}else answer.push(this.makeCode("".concat(this.tab,"return")));return answer.push(this.makeCode(";")),answer}},{key:"checkForPureStatementInExpression",value:function checkForPureStatementInExpression(){return this.belongsToFuncDirectiveReturn?void 0:_get(_getPrototypeOf(Return.prototype),"checkForPureStatementInExpression",this).call(this)}},{key:"astType",value:function astType(){return"ReturnStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{argument:null==(ref1=null==(ref2=this.expression)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1}}}]),Return}(Base);return Return.prototype.children=["expression"],Return.prototype.isStatement=YES,Return.prototype.makeReturn=THIS,Return.prototype.jumps=THIS,Return}.call(this),exports.FuncDirectiveReturn=FuncDirectiveReturn=function(){var FuncDirectiveReturn=function(_Return){"use strict";function FuncDirectiveReturn(expression,_ref29){var returnKeyword=_ref29.returnKeyword,_this21;return _classCallCheck(this,FuncDirectiveReturn),_this21=_super22.call(this,expression),_this21.returnKeyword=returnKeyword,_this21}_inherits(FuncDirectiveReturn,_Return);var _super22=_createSuper(FuncDirectiveReturn);return _createClass(FuncDirectiveReturn,[{key:"compileNode",value:function compileNode(o){return this.checkScope(o),_get(_getPrototypeOf(FuncDirectiveReturn.prototype),"compileNode",this).call(this,o)}},{key:"checkScope",value:function checkScope(o){if(null==o.scope.parent)return this.error("".concat(this.keyword," can only occur inside functions"))}},{key:"astNode",value:function astNode(o){return this.checkScope(o),new Op(this.keyword,new Return(this.expression,{belongsToFuncDirectiveReturn:!0}).withLocationDataFrom(null==this.expression?this.returnKeyword:{locationData:mergeLocationData(this.returnKeyword.locationData,this.expression.locationData)})).withLocationDataFrom(this).ast(o)}}]),FuncDirectiveReturn}(Return);return FuncDirectiveReturn.prototype.isStatementAst=NO,FuncDirectiveReturn}.call(this),exports.YieldReturn=YieldReturn=function(){var YieldReturn=function(_FuncDirectiveReturn){"use strict";function YieldReturn(){return _classCallCheck(this,YieldReturn),_super23.apply(this,arguments)}_inherits(YieldReturn,_FuncDirectiveReturn);var _super23=_createSuper(YieldReturn);return _createClass(YieldReturn)}(FuncDirectiveReturn);return YieldReturn.prototype.keyword="yield",YieldReturn}.call(this),exports.AwaitReturn=AwaitReturn=function(){var AwaitReturn=function(_FuncDirectiveReturn2){"use strict";function AwaitReturn(){return _classCallCheck(this,AwaitReturn),_super24.apply(this,arguments)}_inherits(AwaitReturn,_FuncDirectiveReturn2);var _super24=_createSuper(AwaitReturn);return _createClass(AwaitReturn)}(FuncDirectiveReturn);return AwaitReturn.prototype.keyword="await",AwaitReturn}.call(this),exports.Value=Value=function(){var Value=function(_Base7){"use strict";function Value(base,props,tag){var isDefaultValue=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],_this22;_classCallCheck(this,Value);var ref1,ref2;return(_this22=_super25.call(this),!props&&base instanceof Value)?_possibleConstructorReturn(_this22,base):(_this22.base=base,_this22.properties=props||[],_this22.tag=tag,tag&&(_this22[tag]=!0),_this22.isDefaultValue=isDefaultValue,(null==(ref1=_this22.base)?void 0:ref1.comments)&&_this22.base instanceof ThisLiteral&&null!=(null==(ref2=_this22.properties[0])?void 0:ref2.name)&&moveComments(_this22.base,_this22.properties[0].name),_this22)}_inherits(Value,_Base7);var _super25=_createSuper(Value);return _createClass(Value,[{key:"add",value:function add(props){return this.properties=this.properties.concat(props),this.forceUpdateLocation=!0,this}},{key:"hasProperties",value:function hasProperties(){return 0!==this.properties.length}},{key:"bareLiteral",value:function bareLiteral(type){return!this.properties.length&&this.base instanceof type}},{key:"isArray",value:function isArray(){return this.bareLiteral(Arr)}},{key:"isRange",value:function isRange(){return this.bareLiteral(Range)}},{key:"shouldCache",value:function shouldCache(){return this.hasProperties()||this.base.shouldCache()}},{key:"isAssignable",value:function isAssignable(opts){return this.hasProperties()||this.base.isAssignable(opts)}},{key:"isNumber",value:function(){return this.bareLiteral(NumberLiteral)}},{key:"isString",value:function isString(){return this.bareLiteral(StringLiteral)}},{key:"isRegex",value:function isRegex(){return this.bareLiteral(RegexLiteral)}},{key:"isUndefined",value:function isUndefined(){return this.bareLiteral(UndefinedLiteral)}},{key:"isNull",value:function isNull(){return this.bareLiteral(NullLiteral)}},{key:"isBoolean",value:function isBoolean(){return this.bareLiteral(BooleanLiteral)}},{key:"isAtomic",value:function isAtomic(){var j,len1,node,ref1;for(ref1=this.properties.concat(this.base),j=0,len1=ref1.length;j<len1;j++)if(node=ref1[j],node.soak||node instanceof Call||node instanceof Op&&"do"===node.operator)return!1;return!0}},{key:"isNotCallable",value:function isNotCallable(){return this.isNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()||this.isUndefined()||this.isNull()||this.isBoolean()}},{key:"isStatement",value:function isStatement(o){return!this.properties.length&&this.base.isStatement(o)}},{key:"isJSXTag",value:function isJSXTag(){return this.base instanceof JSXTag}},{key:"assigns",value:function assigns(name){return!this.properties.length&&this.base.assigns(name)}},{key:"jumps",value:function jumps(o){return!this.properties.length&&this.base.jumps(o)}},{key:"isObject",value:function isObject(onlyGenerated){return!this.properties.length&&this.base instanceof Obj&&(!onlyGenerated||this.base.generated)}},{key:"isElision",value:function isElision(){return!!(this.base instanceof Arr)&&this.base.hasElision()}},{key:"isSplice",value:function isSplice(){var _slice1$call7,_slice1$call8,lastProperty,ref1;return ref1=this.properties,_slice1$call7=slice1.call(ref1,-1),_slice1$call8=_slicedToArray(_slice1$call7,1),lastProperty=_slice1$call8[0],_slice1$call7,lastProperty instanceof Slice}},{key:"looksStatic",value:function looksStatic(className){var name,ref1,thisLiteral;return!!(((thisLiteral=this.base)instanceof ThisLiteral||(name=this.base).value===className)&&1===this.properties.length&&"prototype"!==(null==(ref1=this.properties[0].name)?void 0:ref1.value))&&{staticClassName:null==thisLiteral?name:thisLiteral}}},{key:"unwrap",value:function unwrap(){return this.properties.length?this:this.base}},{key:"cacheReference",value:function cacheReference(o){var _slice1$call9,_slice1$call10,base,bref,name,nref,ref1;return(ref1=this.properties,_slice1$call9=slice1.call(ref1,-1),_slice1$call10=_slicedToArray(_slice1$call9,1),name=_slice1$call10[0],_slice1$call9,2>this.properties.length&&!this.base.shouldCache()&&(null==name||!name.shouldCache()))?[this,this]:(base=new Value(this.base,this.properties.slice(0,-1)),base.shouldCache()&&(bref=new IdentifierLiteral(o.scope.freeVariable("base")),base=new Value(new Parens(new Assign(bref,base)))),!name)?[base,bref]:(name.shouldCache()&&(nref=new IdentifierLiteral(o.scope.freeVariable("name")),name=new Index(new Assign(nref,name.index)),nref=new Index(nref)),[base.add(name),new Value(bref||base.base,[nref||name])])}},{key:"compileNode",value:function compileNode(o){var fragments,j,len1,prop,props;for(this.base.front=this.front,props=this.properties,fragments=props.length&&null!=this.base.cached?this.base.cached:this.base.compileToFragments(o,props.length?LEVEL_ACCESS:null),props.length&&SIMPLENUM.test(fragmentsToText(fragments))&&fragments.push(this.makeCode(".")),(j=0,len1=props.length);j<len1;j++){var _fragments2;prop=props[j],(_fragments2=fragments).push.apply(_fragments2,_toConsumableArray(prop.compileToFragments(o)))}return fragments}},{key:"unfoldSoak",value:function unfoldSoak(o){var _this23=this;return null==this.unfoldedSoak?this.unfoldedSoak=function(){var fst,i,ifn,j,len1,prop,ref,ref1,snd;if(ifn=_this23.base.unfoldSoak(o),ifn){var _ifn$body$properties;return(_ifn$body$properties=ifn.body.properties).push.apply(_ifn$body$properties,_toConsumableArray(_this23.properties)),ifn}for(ref1=_this23.properties,i=j=0,len1=ref1.length;j<len1;i=++j)if(prop=ref1[i],!!prop.soak)return prop.soak=!1,fst=new Value(_this23.base,_this23.properties.slice(0,i)),snd=new Value(_this23.base,_this23.properties.slice(i)),fst.shouldCache()&&(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),fst=new Parens(new Assign(ref,fst)),snd.base=ref),new If(new Existence(fst),snd,{soak:!0});return!1}():this.unfoldedSoak}},{key:"eachName",value:function eachName(iterator){var _ref30=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref30$checkAssignabi=_ref30.checkAssignability;return this.hasProperties()?iterator(this):!(void 0===_ref30$checkAssignabi||_ref30$checkAssignabi)||this.base.isAssignable()?this.base.eachName(iterator):this.error("tried to assign to unassignable value")}},{key:"object",value:function(){var initialProperties,object;return this.hasProperties()?(initialProperties=this.properties.slice(0,this.properties.length-1),object=new Value(this.base,initialProperties,this.tag,this.isDefaultValue),object.locationData=0===initialProperties.length?this.base.locationData:mergeLocationData(this.base.locationData,initialProperties[initialProperties.length-1].locationData),object):this}},{key:"containsSoak",value:function containsSoak(){var j,len1,property,ref1;if(!this.hasProperties())return!1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(property=ref1[j],property.soak)return!0;return!!(this.base instanceof Call&&this.base.soak)}},{key:"astNode",value:function astNode(o){return this.hasProperties()?_get(_getPrototypeOf(Value.prototype),"astNode",this).call(this,o):this.base.ast(o)}},{key:"astType",value:function astType(){return this.isJSXTag()?"JSXMemberExpression":this.containsSoak()?"OptionalMemberExpression":"MemberExpression"}},{key:"astProperties",value:function astProperties(o){var _slice1$call11,_slice1$call12,computed,property,ref1,ref2;return ref1=this.properties,_slice1$call11=slice1.call(ref1,-1),_slice1$call12=_slicedToArray(_slice1$call11,1),property=_slice1$call12[0],_slice1$call11,this.isJSXTag()&&(property.name.jsx=!0),computed=property instanceof Index||!((null==(ref2=property.name)?void 0:ref2.unwrap())instanceof PropertyName),{object:this.object().ast(o,LEVEL_ACCESS),property:property.ast(o,computed?LEVEL_PAREN:void 0),computed:computed,optional:!!property.soak,shorthand:!!property.shorthand}}},{key:"astLocationData",value:function astLocationData(){return this.isJSXTag()?mergeAstLocationData(jisonLocationDataToAstLocationData(this.base.tagNameLocationData),jisonLocationDataToAstLocationData(this.properties[this.properties.length-1].locationData)):_get(_getPrototypeOf(Value.prototype),"astLocationData",this).call(this)}}]),Value}(Base);return Value.prototype.children=["base","properties"],Value}.call(this),exports.MetaProperty=MetaProperty=function(){var MetaProperty=function(_Base8){"use strict";function MetaProperty(meta,property1){var _this24;return _classCallCheck(this,MetaProperty),_this24=_super26.call(this),_this24.meta=meta,_this24.property=property1,_this24}_inherits(MetaProperty,_Base8);var _super26=_createSuper(MetaProperty);return _createClass(MetaProperty,[{key:"checkValid",value:function checkValid(o){if("new"===this.meta.value){if(!(this.property instanceof Access&&"target"===this.property.name.value))return this.error("the only valid meta property for new is new.target");if(null==o.scope.parent)return this.error("new.target can only occur inside functions")}else if("import"===this.meta.value&&!(this.property instanceof Access&&"meta"===this.property.name.value))return this.error("the only valid meta property for import is import.meta")}},{key:"compileNode",value:function compileNode(o){var _fragments3,_fragments4,fragments;return this.checkValid(o),fragments=[],(_fragments3=fragments).push.apply(_fragments3,_toConsumableArray(this.meta.compileToFragments(o,LEVEL_ACCESS))),(_fragments4=fragments).push.apply(_fragments4,_toConsumableArray(this.property.compileToFragments(o))),fragments}},{key:"astProperties",value:function astProperties(o){return this.checkValid(o),{meta:this.meta.ast(o,LEVEL_ACCESS),property:this.property.ast(o)}}}]),MetaProperty}(Base);return MetaProperty.prototype.children=["meta","property"],MetaProperty}.call(this),exports.HereComment=HereComment=function(_Base9){"use strict";function HereComment(_ref31){var content1=_ref31.content,newLine=_ref31.newLine,unshift=_ref31.unshift,locationData1=_ref31.locationData,_this25;return _classCallCheck(this,HereComment),_this25=_super27.call(this),_this25.content=content1,_this25.newLine=newLine,_this25.unshift=unshift,_this25.locationData=locationData1,_this25}_inherits(HereComment,_Base9);var _super27=_createSuper(HereComment);return _createClass(HereComment,[{key:"compileNode",value:function compileNode(){var fragment,hasLeadingMarks,indent,j,leadingWhitespace,len1,line,multiline,ref1;if(multiline=0<=indexOf.call(this.content,"\n"),multiline){for(indent=null,ref1=this.content.split("\n"),(j=0,len1=ref1.length);j<len1;j++)line=ref1[j],leadingWhitespace=/^\s*/.exec(line)[0],(!indent||leadingWhitespace.length<indent.length)&&(indent=leadingWhitespace);indent&&(this.content=this.content.replace(RegExp("\\n".concat(indent),"g"),"\n"))}return hasLeadingMarks=/\n\s*[#|\*]/.test(this.content),hasLeadingMarks&&(this.content=this.content.replace(/^([ \t]*)#(?=\s)/gm," *")),this.content="/*".concat(this.content).concat(hasLeadingMarks?" ":"","*/"),fragment=this.makeCode(this.content),fragment.newLine=this.newLine,fragment.unshift=this.unshift,fragment.multiline=multiline,fragment.isComment=fragment.isHereComment=!0,fragment}},{key:"astType",value:function astType(){return"CommentBlock"}},{key:"astProperties",value:function astProperties(){return{value:this.content}}}]),HereComment}(Base),exports.LineComment=LineComment=function(_Base10){"use strict";function LineComment(_ref32){var content1=_ref32.content,newLine=_ref32.newLine,unshift=_ref32.unshift,locationData1=_ref32.locationData,precededByBlankLine=_ref32.precededByBlankLine,_this26;return _classCallCheck(this,LineComment),_this26=_super28.call(this),_this26.content=content1,_this26.newLine=newLine,_this26.unshift=unshift,_this26.locationData=locationData1,_this26.precededByBlankLine=precededByBlankLine,_this26}_inherits(LineComment,_Base10);var _super28=_createSuper(LineComment);return _createClass(LineComment,[{key:"compileNode",value:function compileNode(o){var fragment;return fragment=this.makeCode(/^\s*$/.test(this.content)?"":"".concat(this.precededByBlankLine?"\n".concat(o.indent):"","//").concat(this.content)),fragment.newLine=this.newLine,fragment.unshift=this.unshift,fragment.trail=!this.newLine&&!this.unshift,fragment.isComment=fragment.isLineComment=!0,fragment}},{key:"astType",value:function astType(){return"CommentLine"}},{key:"astProperties",value:function astProperties(){return{value:this.content}}}]),LineComment}(Base),exports.JSXIdentifier=JSXIdentifier=function(_IdentifierLiteral){"use strict";function JSXIdentifier(){return _classCallCheck(this,JSXIdentifier),_super29.apply(this,arguments)}_inherits(JSXIdentifier,_IdentifierLiteral);var _super29=_createSuper(JSXIdentifier);return _createClass(JSXIdentifier,[{key:"astType",value:function astType(){return"JSXIdentifier"}}]),JSXIdentifier}(IdentifierLiteral),exports.JSXTag=JSXTag=function(_JSXIdentifier){"use strict";function JSXTag(value,_ref33){var tagNameLocationData=_ref33.tagNameLocationData,closingTagOpeningBracketLocationData=_ref33.closingTagOpeningBracketLocationData,closingTagSlashLocationData=_ref33.closingTagSlashLocationData,closingTagNameLocationData=_ref33.closingTagNameLocationData,closingTagClosingBracketLocationData=_ref33.closingTagClosingBracketLocationData,_this27;return _classCallCheck(this,JSXTag),_this27=_super30.call(this,value),_this27.tagNameLocationData=tagNameLocationData,_this27.closingTagOpeningBracketLocationData=closingTagOpeningBracketLocationData,_this27.closingTagSlashLocationData=closingTagSlashLocationData,_this27.closingTagNameLocationData=closingTagNameLocationData,_this27.closingTagClosingBracketLocationData=closingTagClosingBracketLocationData,_this27}_inherits(JSXTag,_JSXIdentifier);var _super30=_createSuper(JSXTag);return _createClass(JSXTag,[{key:"astProperties",value:function astProperties(){return{name:this.value}}}]),JSXTag}(JSXIdentifier),exports.JSXExpressionContainer=JSXExpressionContainer=function(){var JSXExpressionContainer=function(_Base11){"use strict";function JSXExpressionContainer(expression1){var _ref34=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},locationData=_ref34.locationData,_this28;return _classCallCheck(this,JSXExpressionContainer),_this28=_super31.call(this),_this28.expression=expression1,_this28.expression.jsxAttribute=!0,_this28.locationData=null==locationData?_this28.expression.locationData:locationData,_this28}_inherits(JSXExpressionContainer,_Base11);var _super31=_createSuper(JSXExpressionContainer);return _createClass(JSXExpressionContainer,[{key:"compileNode",value:function compileNode(o){return this.expression.compileNode(o)}},{key:"astProperties",value:function astProperties(o){return{expression:astAsBlockIfNeeded(this.expression,o)}}}]),JSXExpressionContainer}(Base);return JSXExpressionContainer.prototype.children=["expression"],JSXExpressionContainer}.call(this),exports.JSXEmptyExpression=JSXEmptyExpression=function(_Base12){"use strict";function JSXEmptyExpression(){return _classCallCheck(this,JSXEmptyExpression),_super32.apply(this,arguments)}_inherits(JSXEmptyExpression,_Base12);var _super32=_createSuper(JSXEmptyExpression);return _createClass(JSXEmptyExpression)}(Base),exports.JSXText=JSXText=function(_Base13){"use strict";function JSXText(stringLiteral){var _this29;return _classCallCheck(this,JSXText),_this29=_super33.call(this),_this29.value=stringLiteral.unquotedValueForJSX,_this29.locationData=stringLiteral.locationData,_this29}_inherits(JSXText,_Base13);var _super33=_createSuper(JSXText);return _createClass(JSXText,[{key:"astProperties",value:function astProperties(){return{value:this.value,extra:{raw:this.value}}}}]),JSXText}(Base),exports.JSXAttribute=JSXAttribute=function(){var JSXAttribute=function(_Base14){"use strict";function JSXAttribute(_ref35){var name1=_ref35.name,value=_ref35.value,_this30;_classCallCheck(this,JSXAttribute);var ref1;return _this30=_super34.call(this),_this30.name=name1,_this30.value=null==value?null:(value=value.base,value instanceof StringLiteral&&!value.shouldGenerateTemplateLiteral()?value:new JSXExpressionContainer(value)),null!=(ref1=_this30.value)&&(ref1.comments=value.comments),_this30}_inherits(JSXAttribute,_Base14);var _super34=_createSuper(JSXAttribute);return _createClass(JSXAttribute,[{key:"compileNode",value:function compileNode(o){var compiledName,val;return(compiledName=this.name.compileToFragments(o,LEVEL_LIST),null==this.value)?compiledName:(val=this.value.compileToFragments(o,LEVEL_LIST),compiledName.concat(this.makeCode("="),val))}},{key:"astProperties",value:function astProperties(o){var name,ref1,ref2;return name=this.name,0<=indexOf.call(name.value,":")&&(name=new JSXNamespacedName(name)),{name:name.ast(o),value:null==(ref1=null==(ref2=this.value)?void 0:ref2.ast(o))?null:ref1}}}]),JSXAttribute}(Base);return JSXAttribute.prototype.children=["name","value"],JSXAttribute}.call(this),exports.JSXAttributes=JSXAttributes=function(){var JSXAttributes=function(_Base15){"use strict";function JSXAttributes(arr){var _this31;_classCallCheck(this,JSXAttributes);var attribute,base,j,k,len1,len2,object,property,ref1,ref2,value,variable;for(_this31=_super35.call(this),_this31.attributes=[],ref1=arr.objects,(j=0,len1=ref1.length);j<len1;j++){object=ref1[j],_this31.checkValidAttribute(object);var _object=object;if(base=_object.base,base instanceof IdentifierLiteral)attribute=new JSXAttribute({name:new JSXIdentifier(base.value).withLocationDataAndCommentsFrom(base)}),attribute.locationData=base.locationData,_this31.attributes.push(attribute);else if(!base.generated)attribute=base.properties[0],attribute.jsx=!0,attribute.locationData=base.locationData,_this31.attributes.push(attribute);else for(ref2=base.properties,k=0,len2=ref2.length;k<len2;k++){property=ref2[k];var _property=property;variable=_property.variable,value=_property.value,attribute=new JSXAttribute({name:new JSXIdentifier(variable.base.value).withLocationDataAndCommentsFrom(variable.base),value:value}),attribute.locationData=property.locationData,_this31.attributes.push(attribute)}}return _this31.locationData=arr.locationData,_this31}_inherits(JSXAttributes,_Base15);var _super35=_createSuper(JSXAttributes);return _createClass(JSXAttributes,[{key:"checkValidAttribute",value:function checkValidAttribute(object){var attribute,properties;if(attribute=object.base,properties=(null==attribute?void 0:attribute.properties)||[],!(attribute instanceof Obj||attribute instanceof IdentifierLiteral)||attribute instanceof Obj&&!attribute.generated&&(1<properties.length||!(properties[0]instanceof Splat)))return object.error("Unexpected token. Allowed JSX attributes are: id=\"val\", src={source}, {props...} or attribute.")}},{key:"compileNode",value:function compileNode(o){var attribute,fragments,j,len1,ref1;for(fragments=[],ref1=this.attributes,(j=0,len1=ref1.length);j<len1;j++){var _fragments5;attribute=ref1[j],fragments.push(this.makeCode(" ")),(_fragments5=fragments).push.apply(_fragments5,_toConsumableArray(attribute.compileToFragments(o,LEVEL_TOP)))}return fragments}},{key:"astNode",value:function astNode(o){var attribute,j,len1,ref1,results1;for(ref1=this.attributes,results1=[],(j=0,len1=ref1.length);j<len1;j++)attribute=ref1[j],results1.push(attribute.ast(o));return results1}}]),JSXAttributes}(Base);return JSXAttributes.prototype.children=["attributes"],JSXAttributes}.call(this),exports.JSXNamespacedName=JSXNamespacedName=function(){var JSXNamespacedName=function(_Base16){"use strict";function JSXNamespacedName(tag){var _this32;_classCallCheck(this,JSXNamespacedName);var name,namespace;_this32=_super36.call(this);var _tag$value$split=tag.value.split(":"),_tag$value$split2=_slicedToArray(_tag$value$split,2);return namespace=_tag$value$split2[0],name=_tag$value$split2[1],_this32.namespace=new JSXIdentifier(namespace).withLocationDataFrom({locationData:extractSameLineLocationDataFirst(namespace.length)(tag.locationData)}),_this32.name=new JSXIdentifier(name).withLocationDataFrom({locationData:extractSameLineLocationDataLast(name.length)(tag.locationData)}),_this32.locationData=tag.locationData,_this32}_inherits(JSXNamespacedName,_Base16);var _super36=_createSuper(JSXNamespacedName);return _createClass(JSXNamespacedName,[{key:"astProperties",value:function astProperties(o){return{namespace:this.namespace.ast(o),name:this.name.ast(o)}}}]),JSXNamespacedName}(Base);return JSXNamespacedName.prototype.children=["namespace","name"],JSXNamespacedName}.call(this),exports.JSXElement=JSXElement=function(){var JSXElement=function(_Base17){"use strict";function JSXElement(_ref36){var tagName1=_ref36.tagName,attributes=_ref36.attributes,content1=_ref36.content,_this33;return _classCallCheck(this,JSXElement),_this33=_super37.call(this),_this33.tagName=tagName1,_this33.attributes=attributes,_this33.content=content1,_this33}_inherits(JSXElement,_Base17);var _super37=_createSuper(JSXElement);return _createClass(JSXElement,[{key:"compileNode",value:function compileNode(o){var _fragments6,_fragments7,fragments,ref1,tag;if(null!=(ref1=this.content)&&(ref1.base.jsx=!0),fragments=[this.makeCode("<")],(_fragments6=fragments).push.apply(_fragments6,_toConsumableArray(tag=this.tagName.compileToFragments(o,LEVEL_ACCESS))),(_fragments7=fragments).push.apply(_fragments7,_toConsumableArray(this.attributes.compileToFragments(o))),this.content){var _fragments8,_fragments9;fragments.push(this.makeCode(">")),(_fragments8=fragments).push.apply(_fragments8,_toConsumableArray(this.content.compileNode(o,LEVEL_LIST))),(_fragments9=fragments).push.apply(_fragments9,[this.makeCode("</")].concat(_toConsumableArray(tag),[this.makeCode(">")]))}else fragments.push(this.makeCode(" />"));return fragments}},{key:"isFragment",value:function isFragment(){return!this.tagName.base.value.length}},{key:"astNode",value:function astNode(o){var tagName;return this.openingElementLocationData=jisonLocationDataToAstLocationData(this.attributes.locationData),tagName=this.tagName.base,tagName.locationData=tagName.tagNameLocationData,null!=this.content&&(this.closingElementLocationData=mergeAstLocationData(jisonLocationDataToAstLocationData(tagName.closingTagOpeningBracketLocationData),jisonLocationDataToAstLocationData(tagName.closingTagClosingBracketLocationData))),_get(_getPrototypeOf(JSXElement.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isFragment()?"JSXFragment":"JSXElement"}},{key:"elementAstProperties",value:function elementAstProperties(o){var _this34=this,closingElement,columnDiff,currentExpr,openingElement,rangeDiff,ref1,shiftAstLocationData,tagNameAst;if(tagNameAst=function(){var tag;return tag=_this34.tagName.unwrap(),(null==tag?void 0:tag.value)&&0<=indexOf.call(tag.value,":")&&(tag=new JSXNamespacedName(tag)),tag.ast(o)},openingElement=Object.assign({type:"JSXOpeningElement",name:tagNameAst(),selfClosing:null==this.closingElementLocationData,attributes:this.attributes.ast(o)},this.openingElementLocationData),closingElement=null,null!=this.closingElementLocationData&&(closingElement=Object.assign({type:"JSXClosingElement",name:Object.assign(tagNameAst(),jisonLocationDataToAstLocationData(this.tagName.base.closingTagNameLocationData))},this.closingElementLocationData),"JSXMemberExpression"===(ref1=closingElement.name.type)||"JSXNamespacedName"===ref1))if(rangeDiff=closingElement.range[0]-openingElement.range[0]+"/".length,columnDiff=closingElement.loc.start.column-openingElement.loc.start.column+"/".length,shiftAstLocationData=function(node){return node.range=[node.range[0]+rangeDiff,node.range[1]+rangeDiff],node.start+=rangeDiff,node.end+=rangeDiff,node.loc.start={line:_this34.closingElementLocationData.loc.start.line,column:node.loc.start.column+columnDiff},node.loc.end={line:_this34.closingElementLocationData.loc.start.line,column:node.loc.end.column+columnDiff}},"JSXMemberExpression"===closingElement.name.type){for(currentExpr=closingElement.name;"JSXMemberExpression"===currentExpr.type;)currentExpr!==closingElement.name&&shiftAstLocationData(currentExpr),shiftAstLocationData(currentExpr.property),currentExpr=currentExpr.object;shiftAstLocationData(currentExpr)}else shiftAstLocationData(closingElement.name.namespace),shiftAstLocationData(closingElement.name.name);return{openingElement:openingElement,closingElement:closingElement}}},{key:"fragmentAstProperties",value:function fragmentAstProperties(){var closingFragment,openingFragment;return openingFragment=Object.assign({type:"JSXOpeningFragment"},this.openingElementLocationData),closingFragment=Object.assign({type:"JSXClosingFragment"},this.closingElementLocationData),{openingFragment:openingFragment,closingFragment:closingFragment}}},{key:"contentAst",value:function contentAst(o){var base1,child,children,content,element,emptyExpression,expression,j,len1,results1,unwrapped;if(!this.content||("function"==typeof(base1=this.content.base).isEmpty?base1.isEmpty():void 0))return[];for(content=this.content.unwrapAll(),children=function(){var j,len1,ref1,results1;if(content instanceof StringLiteral)return[new JSXText(content)];for(ref1=this.content.unwrapAll().extractElements(o,{includeInterpolationWrappers:!0,isJsx:!0}),results1=[],(j=0,len1=ref1.length);j<len1;j++)if(element=ref1[j],element instanceof StringLiteral)results1.push(new JSXText(element));else{var _element=element;expression=_element.expression,null==expression?(emptyExpression=new JSXEmptyExpression,emptyExpression.locationData=emptyExpressionLocationData({interpolationNode:element,openingBrace:"{",closingBrace:"}"}),results1.push(new JSXExpressionContainer(emptyExpression,{locationData:element.locationData}))):(unwrapped=expression.unwrapAll(),unwrapped instanceof JSXElement&&unwrapped.locationData.range[0]===element.locationData.range[0]?results1.push(unwrapped):results1.push(new JSXExpressionContainer(unwrapped,{locationData:element.locationData})))}return results1}.call(this),results1=[],(j=0,len1=children.length);j<len1;j++)child=children[j],child instanceof JSXText&&0===child.value.length||results1.push(child.ast(o));return results1}},{key:"astProperties",value:function astProperties(o){return Object.assign(this.isFragment()?this.fragmentAstProperties(o):this.elementAstProperties(o),{children:this.contentAst(o)})}},{key:"astLocationData",value:function astLocationData(){return null==this.closingElementLocationData?this.openingElementLocationData:mergeAstLocationData(this.openingElementLocationData,this.closingElementLocationData)}}]),JSXElement}(Base);return JSXElement.prototype.children=["tagName","attributes","content"],JSXElement}.call(this),exports.Call=Call=function(){var Call=function(_Base18){"use strict";function Call(variable1){var args1=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],soak1=2<arguments.length?arguments[2]:void 0,token1=3<arguments.length?arguments[3]:void 0,_this35;_classCallCheck(this,Call);var ref1;return(_this35=_super38.call(this),_this35.variable=variable1,_this35.args=args1,_this35.soak=soak1,_this35.token=token1,_this35.implicit=_this35.args.implicit,_this35.isNew=!1,_this35.variable instanceof Value&&_this35.variable.isNotCallable()&&_this35.variable.error("literal is not a function"),_this35.variable.base instanceof JSXTag)?_possibleConstructorReturn(_this35,new JSXElement({tagName:_this35.variable,attributes:new JSXAttributes(_this35.args[0].base),content:_this35.args[1]})):("RegExp"===(null==(ref1=_this35.variable.base)?void 0:ref1.value)&&0!==_this35.args.length&&moveComments(_this35.variable,_this35.args[0]),_this35)}_inherits(Call,_Base18);var _super38=_createSuper(Call);return _createClass(Call,[{key:"updateLocationDataIfMissing",value:function updateLocationDataIfMissing(locationData){var base,ref1;return this.locationData&&this.needsUpdatedStartLocation&&(this.locationData=Object.assign({},this.locationData,{first_line:locationData.first_line,first_column:locationData.first_column,range:[locationData.range[0],this.locationData.range[1]]}),base=(null==(ref1=this.variable)?void 0:ref1.base)||this.variable,base.needsUpdatedStartLocation&&(this.variable.locationData=Object.assign({},this.variable.locationData,{first_line:locationData.first_line,first_column:locationData.first_column,range:[locationData.range[0],this.variable.locationData.range[1]]}),base.updateLocationDataIfMissing(locationData)),delete this.needsUpdatedStartLocation),_get(_getPrototypeOf(Call.prototype),"updateLocationDataIfMissing",this).call(this,locationData)}},{key:"newInstance",value:function newInstance(){var base,ref1;return base=(null==(ref1=this.variable)?void 0:ref1.base)||this.variable,base instanceof Call&&!base.isNew?base.newInstance():this.isNew=!0,this.needsUpdatedStartLocation=!0,this}},{key:"unfoldSoak",value:function unfoldSoak(o){var call,ifn,j,left,len1,list,ref1,rite;if(this.soak){if(this.variable instanceof Super)left=new Literal(this.variable.compile(o)),rite=new Value(left),null==this.variable.accessor&&this.variable.error("Unsupported reference to 'super'");else{if(ifn=_unfoldSoak(o,this,"variable"))return ifn;var _Value$cacheReference=new Value(this.variable).cacheReference(o),_Value$cacheReference2=_slicedToArray(_Value$cacheReference,2);left=_Value$cacheReference2[0],rite=_Value$cacheReference2[1]}return rite=new Call(rite,this.args),rite.isNew=this.isNew,left=new Literal("typeof ".concat(left.compile(o)," === \"function\"")),new If(left,new Value(rite),{soak:!0})}for(call=this,list=[];;){if(call.variable instanceof Call){list.push(call),call=call.variable;continue}if(!(call.variable instanceof Value))break;if(list.push(call),!((call=call.variable.base)instanceof Call))break}for(ref1=list.reverse(),j=0,len1=ref1.length;j<len1;j++)call=ref1[j],ifn&&(call.variable instanceof Call?call.variable=ifn:call.variable.base=ifn),ifn=_unfoldSoak(o,call,"variable");return ifn}},{key:"compileNode",value:function compileNode(o){var _fragments10,_fragments11,arg,argCode,argIndex,cache,compiledArgs,fragments,j,len1,ref1,ref2,ref3,ref4,varAccess;if(this.checkForNewSuper(),null!=(ref1=this.variable)&&(ref1.front=this.front),compiledArgs=[],varAccess=(null==(ref2=this.variable)||null==(ref3=ref2.properties)?void 0:ref3[0])instanceof Access,argCode=function(){var j,len1,ref4,results1;for(ref4=this.args||[],results1=[],(j=0,len1=ref4.length);j<len1;j++)arg=ref4[j],arg instanceof Code&&results1.push(arg);return results1}.call(this),0<argCode.length&&varAccess&&!this.variable.base.cached){var _this$variable$base$c=this.variable.base.cache(o,LEVEL_ACCESS,function(){return!1}),_this$variable$base$c2=_slicedToArray(_this$variable$base$c,1);cache=_this$variable$base$c2[0],this.variable.base.cached=cache}for(ref4=this.args,argIndex=j=0,len1=ref4.length;j<len1;argIndex=++j){var _compiledArgs;arg=ref4[argIndex],argIndex&&compiledArgs.push(this.makeCode(", ")),(_compiledArgs=compiledArgs).push.apply(_compiledArgs,_toConsumableArray(arg.compileToFragments(o,LEVEL_LIST)))}return fragments=[],this.isNew&&fragments.push(this.makeCode("new ")),(_fragments10=fragments).push.apply(_fragments10,_toConsumableArray(this.variable.compileToFragments(o,LEVEL_ACCESS))),(_fragments11=fragments).push.apply(_fragments11,[this.makeCode("(")].concat(_toConsumableArray(compiledArgs),[this.makeCode(")")])),fragments}},{key:"checkForNewSuper",value:function checkForNewSuper(){if(this.isNew&&this.variable instanceof Super)return this.variable.error("Unsupported reference to 'super'")}},{key:"containsSoak",value:function containsSoak(){var ref1;return!!this.soak||null!=(ref1=this.variable)&&"function"==typeof ref1.containsSoak&&ref1.containsSoak()}},{key:"astNode",value:function astNode(o){var ref1;return this.soak&&this.variable instanceof Super&&(null==(ref1=o.scope.namedMethod())?void 0:ref1.ctor)&&this.variable.error("Unsupported reference to 'super'"),this.checkForNewSuper(),_get(_getPrototypeOf(Call.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isNew?"NewExpression":this.containsSoak()?"OptionalCallExpression":"CallExpression"}},{key:"astProperties",value:function astProperties(o){var arg;return{callee:this.variable.ast(o,LEVEL_ACCESS),arguments:function(){var j,len1,ref1,results1;for(ref1=this.args,results1=[],(j=0,len1=ref1.length);j<len1;j++)arg=ref1[j],results1.push(arg.ast(o,LEVEL_LIST));return results1}.call(this),optional:!!this.soak,implicit:!!this.implicit}}}]),Call}(Base);return Call.prototype.children=["variable","args"],Call}.call(this),exports.SuperCall=SuperCall=function(){var SuperCall=function(_Call){"use strict";function SuperCall(){return _classCallCheck(this,SuperCall),_super39.apply(this,arguments)}_inherits(SuperCall,_Call);var _super39=_createSuper(SuperCall);return _createClass(SuperCall,[{key:"isStatement",value:function isStatement(o){var ref1;return(null==(ref1=this.expressions)?void 0:ref1.length)&&o.level===LEVEL_TOP}},{key:"compileNode",value:function compileNode(o){var ref,ref1,replacement,superCall;if(null==(ref1=this.expressions)||!ref1.length)return _get(_getPrototypeOf(SuperCall.prototype),"compileNode",this).call(this,o);if(superCall=new Literal(fragmentsToText(_get(_getPrototypeOf(SuperCall.prototype),"compileNode",this).call(this,o))),replacement=new Block(this.expressions.slice()),o.level>LEVEL_TOP){var _superCall$cache=superCall.cache(o,null,YES),_superCall$cache2=_slicedToArray(_superCall$cache,2);superCall=_superCall$cache2[0],ref=_superCall$cache2[1],replacement.push(ref)}return replacement.unshift(superCall),replacement.compileToFragments(o,o.level===LEVEL_TOP?o.level:LEVEL_LIST)}}]),SuperCall}(Call);return SuperCall.prototype.children=Call.prototype.children.concat(["expressions"]),SuperCall}.call(this),exports.Super=Super=function(){var Super=function(_Base19){"use strict";function Super(accessor,superLiteral){var _this36;return _classCallCheck(this,Super),_this36=_super40.call(this),_this36.accessor=accessor,_this36.superLiteral=superLiteral,_this36}_inherits(Super,_Base19);var _super40=_createSuper(Super);return _createClass(Super,[{key:"compileNode",value:function compileNode(o){var fragments,method,name,nref,ref1,ref2,salvagedComments,variable;if(this.checkInInstanceMethod(o),method=o.scope.namedMethod(),null==method.ctor&&null==this.accessor){var _method=method;name=_method.name,variable=_method.variable,(name.shouldCache()||name instanceof Index&&name.index.isAssignable())&&(nref=new IdentifierLiteral(o.scope.parent.freeVariable("name")),name.index=new Assign(nref,name.index)),this.accessor=null==nref?name:new Index(nref)}return(null==(ref1=this.accessor)||null==(ref2=ref1.name)?void 0:ref2.comments)&&(salvagedComments=this.accessor.name.comments,delete this.accessor.name.comments),fragments=new Value(new Literal("super"),this.accessor?[this.accessor]:[]).compileToFragments(o),salvagedComments&&attachCommentsToNode(salvagedComments,this.accessor.name),fragments}},{key:"checkInInstanceMethod",value:function checkInInstanceMethod(o){var method;if(method=o.scope.namedMethod(),null==method||!method.isMethod)return this.error("cannot use super outside of an instance method")}},{key:"astNode",value:function astNode(o){var ref1;return this.checkInInstanceMethod(o),null==this.accessor?_get(_getPrototypeOf(Super.prototype),"astNode",this).call(this,o):new Value(new Super().withLocationDataFrom(null==(ref1=this.superLiteral)?this:ref1),[this.accessor]).withLocationDataFrom(this).ast(o)}}]),Super}(Base);return Super.prototype.children=["accessor"],Super}.call(this),exports.RegexWithInterpolations=RegexWithInterpolations=function(){var RegexWithInterpolations=function(_Base20){"use strict";function RegexWithInterpolations(call1){var _ref37=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref37$heregexComment=_ref37.heregexCommentTokens,heregexCommentTokens=void 0===_ref37$heregexComment?[]:_ref37$heregexComment,_this37;return _classCallCheck(this,RegexWithInterpolations),_this37=_super41.call(this),_this37.call=call1,_this37.heregexCommentTokens=heregexCommentTokens,_this37}_inherits(RegexWithInterpolations,_Base20);var _super41=_createSuper(RegexWithInterpolations);return _createClass(RegexWithInterpolations,[{key:"compileNode",value:function compileNode(o){return this.call.compileNode(o)}},{key:"astType",value:function astType(){return"InterpolatedRegExpLiteral"}},{key:"astProperties",value:function astProperties(o){var heregexCommentToken,ref1,ref2;return{interpolatedPattern:this.call.args[0].ast(o),flags:null==(ref1=null==(ref2=this.call.args[1])?void 0:ref2.unwrap().originalValue)?"":ref1,comments:function(){var j,len1,ref3,results1;for(ref3=this.heregexCommentTokens,results1=[],(j=0,len1=ref3.length);j<len1;j++)heregexCommentToken=ref3[j],heregexCommentToken.here?results1.push(new HereComment(heregexCommentToken).ast(o)):results1.push(new LineComment(heregexCommentToken).ast(o));return results1}.call(this)}}}]),RegexWithInterpolations}(Base);return RegexWithInterpolations.prototype.children=["call"],RegexWithInterpolations}.call(this),exports.TaggedTemplateCall=TaggedTemplateCall=function(_Call2){"use strict";function TaggedTemplateCall(variable,arg,soak){return _classCallCheck(this,TaggedTemplateCall),arg instanceof StringLiteral&&(arg=StringWithInterpolations.fromStringLiteral(arg)),_super42.call(this,variable,[arg],soak)}_inherits(TaggedTemplateCall,_Call2);var _super42=_createSuper(TaggedTemplateCall);return _createClass(TaggedTemplateCall,[{key:"compileNode",value:function compileNode(o){return this.variable.compileToFragments(o,LEVEL_ACCESS).concat(this.args[0].compileToFragments(o,LEVEL_LIST))}},{key:"astType",value:function astType(){return"TaggedTemplateExpression"}},{key:"astProperties",value:function astProperties(o){return{tag:this.variable.ast(o,LEVEL_ACCESS),quasi:this.args[0].ast(o,LEVEL_LIST)}}}]),TaggedTemplateCall}(Call),exports.Extends=Extends=function(){var Extends=function(_Base21){"use strict";function Extends(child1,parent1){var _this38;return _classCallCheck(this,Extends),_this38=_super43.call(this),_this38.child=child1,_this38.parent=parent1,_this38}_inherits(Extends,_Base21);var _super43=_createSuper(Extends);return _createClass(Extends,[{key:"compileToFragments",value:function compileToFragments(o){return new Call(new Value(new Literal(utility("extend",o))),[this.child,this.parent]).compileToFragments(o)}}]),Extends}(Base);return Extends.prototype.children=["child","parent"],Extends}.call(this),exports.Access=Access=function(){var Access=function(_Base22){"use strict";function Access(name1){var _ref38=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},soak1=_ref38.soak,shorthand=_ref38.shorthand,_this39;return _classCallCheck(this,Access),_this39=_super44.call(this),_this39.name=name1,_this39.soak=soak1,_this39.shorthand=shorthand,_this39}_inherits(Access,_Base22);var _super44=_createSuper(Access);return _createClass(Access,[{key:"compileToFragments",value:function compileToFragments(o){var name,node;return name=this.name.compileToFragments(o),node=this.name.unwrap(),node instanceof PropertyName?[this.makeCode(".")].concat(_toConsumableArray(name)):[this.makeCode("[")].concat(_toConsumableArray(name),[this.makeCode("]")])}},{key:"astNode",value:function astNode(o){return this.name.ast(o)}}]),Access}(Base);return Access.prototype.children=["name"],Access.prototype.shouldCache=NO,Access}.call(this),exports.Index=Index=function(){var Index=function(_Base23){"use strict";function Index(index1){var _this40;return _classCallCheck(this,Index),_this40=_super45.call(this),_this40.index=index1,_this40}_inherits(Index,_Base23);var _super45=_createSuper(Index);return _createClass(Index,[{key:"compileToFragments",value:function compileToFragments(o){return[].concat(this.makeCode("["),this.index.compileToFragments(o,LEVEL_PAREN),this.makeCode("]"))}},{key:"shouldCache",value:function shouldCache(){return this.index.shouldCache()}},{key:"astNode",value:function astNode(o){return this.index.ast(o)}}]),Index}(Base);return Index.prototype.children=["index"],Index}.call(this),exports.Range=Range=function(){var Range=function(_Base24){"use strict";function Range(from1,to1,tag){var _this41;return _classCallCheck(this,Range),_this41=_super46.call(this),_this41.from=from1,_this41.to=to1,_this41.exclusive="exclusive"===tag,_this41.equals=_this41.exclusive?"":"=",_this41}_inherits(Range,_Base24);var _super46=_createSuper(Range);return _createClass(Range,[{key:"compileVariables",value:function compileVariables(o){var shouldCache,step;o=merge(o,{top:!0}),shouldCache=del(o,"shouldCache");var _this$cacheToCodeFrag=this.cacheToCodeFragments(this.from.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag2=_slicedToArray(_this$cacheToCodeFrag,2);this.fromC=_this$cacheToCodeFrag2[0],this.fromVar=_this$cacheToCodeFrag2[1];var _this$cacheToCodeFrag3=this.cacheToCodeFragments(this.to.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag4=_slicedToArray(_this$cacheToCodeFrag3,2);if(this.toC=_this$cacheToCodeFrag4[0],this.toVar=_this$cacheToCodeFrag4[1],step=del(o,"step")){var _this$cacheToCodeFrag5=this.cacheToCodeFragments(step.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag6=_slicedToArray(_this$cacheToCodeFrag5,2);this.step=_this$cacheToCodeFrag6[0],this.stepVar=_this$cacheToCodeFrag6[1]}return this.fromNum=this.from.isNumber()?parseNumber(this.fromVar):null,this.toNum=this.to.isNumber()?parseNumber(this.toVar):null,this.stepNum=(null==step?void 0:step.isNumber())?parseNumber(this.stepVar):null}},{key:"compileNode",value:function compileNode(o){var cond,condPart,from,gt,idx,idxName,known,lowerBound,lt,namedIndex,ref1,ref2,stepCond,stepNotZero,stepPart,to,upperBound,varPart;if(this.fromVar||this.compileVariables(o),!o.index)return this.compileArray(o);known=null!=this.fromNum&&null!=this.toNum,idx=del(o,"index"),idxName=del(o,"name"),namedIndex=idxName&&idxName!==idx,varPart=known&&!namedIndex?"var ".concat(idx," = ").concat(this.fromC):"".concat(idx," = ").concat(this.fromC),this.toC!==this.toVar&&(varPart+=", ".concat(this.toC)),this.step!==this.stepVar&&(varPart+=", ".concat(this.step)),lt="".concat(idx," <").concat(this.equals),gt="".concat(idx," >").concat(this.equals);var _ref39=[this.fromNum,this.toNum];return from=_ref39[0],to=_ref39[1],stepNotZero="".concat(null==(ref1=this.stepNum)?this.stepVar:ref1," !== 0"),stepCond="".concat(null==(ref2=this.stepNum)?this.stepVar:ref2," > 0"),lowerBound="".concat(lt," ").concat(known?to:this.toVar),upperBound="".concat(gt," ").concat(known?to:this.toVar),condPart=null==this.step?known?"".concat(from<=to?lt:gt," ").concat(to):"(".concat(this.fromVar," <= ").concat(this.toVar," ? ").concat(lowerBound," : ").concat(upperBound,")"):null!=this.stepNum&&0!==this.stepNum?0<this.stepNum?"".concat(lowerBound):"".concat(upperBound):"".concat(stepNotZero," && (").concat(stepCond," ? ").concat(lowerBound," : ").concat(upperBound,")"),cond=this.stepVar?"".concat(this.stepVar," > 0"):"".concat(this.fromVar," <= ").concat(this.toVar),stepPart=this.stepVar?"".concat(idx," += ").concat(this.stepVar):known?namedIndex?from<=to?"++".concat(idx):"--".concat(idx):from<=to?"".concat(idx,"++"):"".concat(idx,"--"):namedIndex?"".concat(cond," ? ++").concat(idx," : --").concat(idx):"".concat(cond," ? ").concat(idx,"++ : ").concat(idx,"--"),namedIndex&&(varPart="".concat(idxName," = ").concat(varPart)),namedIndex&&(stepPart="".concat(idxName," = ").concat(stepPart)),[this.makeCode("".concat(varPart,"; ").concat(condPart,"; ").concat(stepPart))]}},{key:"compileArray",value:function compileArray(o){var args,body,cond,hasArgs,i,idt,known,post,pre,range,ref1,result,vars;return(known=null!=this.fromNum&&null!=this.toNum,known&&20>=_Mathabs(this.fromNum-this.toNum))?(range=function(){for(var results1=[],j=ref1=this.fromNum,ref2=this.toNum;ref1<=ref2?j<=ref2:j>=ref2;ref1<=ref2?j++:j--)results1.push(j);return results1}.apply(this),this.exclusive&&range.pop(),[this.makeCode("[".concat(range.join(", "),"]"))]):(idt=this.tab+TAB,i=o.scope.freeVariable("i",{single:!0,reserve:!1}),result=o.scope.freeVariable("results",{reserve:!1}),pre="\n".concat(idt,"var ").concat(result," = [];"),known?(o.index=i,body=fragmentsToText(this.compileNode(o))):(vars="".concat(i," = ").concat(this.fromC)+(this.toC===this.toVar?"":", ".concat(this.toC)),cond="".concat(this.fromVar," <= ").concat(this.toVar),body="var ".concat(vars,"; ").concat(cond," ? ").concat(i," <").concat(this.equals," ").concat(this.toVar," : ").concat(i," >").concat(this.equals," ").concat(this.toVar,"; ").concat(cond," ? ").concat(i,"++ : ").concat(i,"--")),post="{ ".concat(result,".push(").concat(i,"); }\n").concat(idt,"return ").concat(result,";\n").concat(o.indent),hasArgs=function(node){return null==node?void 0:node.contains(isLiteralArguments)},(hasArgs(this.from)||hasArgs(this.to))&&(args=", arguments"),[this.makeCode("(function() {".concat(pre,"\n").concat(idt,"for (").concat(body,")").concat(post,"}).apply(this").concat(null==args?"":args,")"))])}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{from:null==(ref1=null==(ref2=this.from)?void 0:ref2.ast(o))?null:ref1,to:null==(ref3=null==(ref4=this.to)?void 0:ref4.ast(o))?null:ref3,exclusive:this.exclusive}}}]),Range}(Base);return Range.prototype.children=["from","to"],Range}.call(this),exports.Slice=Slice=function(){var Slice=function(_Base25){"use strict";function Slice(range1){var _this42;return _classCallCheck(this,Slice),_this42=_super47.call(this),_this42.range=range1,_this42}_inherits(Slice,_Base25);var _super47=_createSuper(Slice);return _createClass(Slice,[{key:"compileNode",value:function compileNode(o){var _this$range=this.range,compiled,compiledText,from,fromCompiled,to,toStr;return to=_this$range.to,from=_this$range.from,(null==from?void 0:from.shouldCache())&&(from=new Value(new Parens(from))),(null==to?void 0:to.shouldCache())&&(to=new Value(new Parens(to))),fromCompiled=(null==from?void 0:from.compileToFragments(o,LEVEL_PAREN))||[this.makeCode("0")],to&&(compiled=to.compileToFragments(o,LEVEL_PAREN),compiledText=fragmentsToText(compiled),(this.range.exclusive||-1!=+compiledText)&&(toStr=", "+(this.range.exclusive?compiledText:to.isNumber()?"".concat(+compiledText+1):(compiled=to.compileToFragments(o,LEVEL_ACCESS),"+".concat(fragmentsToText(compiled)," + 1 || 9e9"))))),[this.makeCode(".slice(".concat(fragmentsToText(fromCompiled)).concat(toStr||"",")"))]}},{key:"astNode",value:function astNode(o){return this.range.ast(o)}}]),Slice}(Base);return Slice.prototype.children=["range"],Slice}.call(this),exports.Obj=Obj=function(){var Obj=function(_Base26){"use strict";function Obj(props){var generated=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this43;return _classCallCheck(this,Obj),_this43=_super48.call(this),_this43.generated=generated,_this43.objects=_this43.properties=props||[],_this43}_inherits(Obj,_Base26);var _super48=_createSuper(Obj);return _createClass(Obj,[{key:"isAssignable",value:function isAssignable(opts){var j,len1,message,prop,ref1,ref2;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],message=isUnassignable(prop.unwrapAll().value),message&&prop.error(message),prop instanceof Assign&&"object"===prop.context&&!((null==(ref2=prop.value)?void 0:ref2.base)instanceof Arr)&&(prop=prop.value),!prop.isAssignable(opts))return!1;return!0}},{key:"shouldCache",value:function shouldCache(){return!this.isAssignable()}},{key:"hasSplat",value:function hasSplat(){var j,len1,prop,ref1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],prop instanceof Splat)return!0;return!1}},{key:"reorderProperties",value:function reorderProperties(){var props,splatProp,splatProps;return props=this.properties,splatProps=this.getAndCheckSplatProps(),splatProp=props.splice(splatProps[0],1),this.objects=this.properties=[].concat(props,splatProp)}},{key:"compileNode",value:function compileNode(o){var answer,i,idt,indent,isCompact,j,join,k,key,l,lastNode,len1,len2,len3,node,prop,props,ref1,value;if(this.hasSplat()&&this.lhs&&this.reorderProperties(),props=this.properties,this.generated)for(j=0,len1=props.length;j<len1;j++)node=props[j],node instanceof Value&&node.error("cannot have an implicit value in an implicit object");for(idt=o.indent+=TAB,lastNode=this.lastNode(this.properties),this.propagateLhs(),isCompact=!0,ref1=this.properties,(k=0,len2=ref1.length);k<len2;k++)prop=ref1[k],prop instanceof Assign&&"object"===prop.context&&(isCompact=!1);for(answer=[],answer.push(this.makeCode(isCompact?"":"\n")),(i=l=0,len3=props.length);l<len3;i=++l){var _answer;if(prop=props[i],join=i===props.length-1?"":isCompact?", ":prop===lastNode?"\n":",\n",indent=isCompact?"":idt,key=prop instanceof Assign&&"object"===prop.context?prop.variable:prop instanceof Assign?(this.lhs?void 0:prop.operatorToken.error("unexpected ".concat(prop.operatorToken.value)),prop.variable):prop,key instanceof Value&&key.hasProperties()&&(("object"===prop.context||!key["this"])&&key.error("invalid object key"),key=key.properties[0].name,prop=new Assign(key,prop,"object")),key===prop)if(prop.shouldCache()){var _prop$base$cache=prop.base.cache(o),_prop$base$cache2=_slicedToArray(_prop$base$cache,2);key=_prop$base$cache2[0],value=_prop$base$cache2[1],key instanceof IdentifierLiteral&&(key=new PropertyName(key.value)),prop=new Assign(key,value,"object")}else if(!(key instanceof Value&&key.base instanceof ComputedPropertyName))"function"==typeof prop.bareLiteral&&prop.bareLiteral(IdentifierLiteral)||prop instanceof Splat||(prop=new Assign(prop,prop,"object"));else if(prop.base.value.shouldCache()){var _prop$base$value$cach=prop.base.value.cache(o),_prop$base$value$cach2=_slicedToArray(_prop$base$value$cach,2);key=_prop$base$value$cach2[0],value=_prop$base$value$cach2[1],key instanceof IdentifierLiteral&&(key=new ComputedPropertyName(key.value)),prop=new Assign(key,value,"object")}else prop=new Assign(key,prop.base.value,"object");indent&&answer.push(this.makeCode(indent)),(_answer=answer).push.apply(_answer,_toConsumableArray(prop.compileToFragments(o,LEVEL_TOP))),join&&answer.push(this.makeCode(join))}return answer.push(this.makeCode(isCompact?"":"\n".concat(this.tab))),answer=this.wrapInBraces(answer),this.front?this.wrapInParentheses(answer):answer}},{key:"getAndCheckSplatProps",value:function getAndCheckSplatProps(){var i,prop,props,splatProps;if(this.hasSplat()&&this.lhs)return props=this.properties,splatProps=function(){var j,len1,results1;for(results1=[],i=j=0,len1=props.length;j<len1;i=++j)prop=props[i],prop instanceof Splat&&results1.push(i);return results1}(),1<(null==splatProps?void 0:splatProps.length)&&props[splatProps[1]].error("multiple spread elements are disallowed"),splatProps}},{key:"assigns",value:function assigns(name){var j,len1,prop,ref1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],prop.assigns(name))return!0;return!1}},{key:"eachName",value:function eachName(iterator){var j,len1,prop,ref1,results1;for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)prop=ref1[j],prop instanceof Assign&&"object"===prop.context&&(prop=prop.value),prop=prop.unwrapAll(),null==prop.eachName?results1.push(void 0):results1.push(prop.eachName(iterator));return results1}},{key:"expandProperty",value:function expandProperty(property){var context,key,operatorToken,variable;return variable=property.variable,context=property.context,operatorToken=property.operatorToken,key=property instanceof Assign&&"object"===context?variable:property instanceof Assign?(this.lhs?void 0:operatorToken.error("unexpected ".concat(operatorToken.value)),variable):property,key instanceof Value&&key.hasProperties()?("object"!==context&&key["this"]||key.error("invalid object key"),property instanceof Assign?new ObjectProperty({fromAssign:property}):new ObjectProperty({key:property})):key===property?property instanceof Splat?property:new ObjectProperty({key:property}):new ObjectProperty({fromAssign:property})}},{key:"expandProperties",value:function expandProperties(){var j,len1,property,ref1,results1;for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)property=ref1[j],results1.push(this.expandProperty(property));return results1}},{key:"propagateLhs",value:function propagateLhs(setLhs){var j,len1,property,ref1,results1,unwrappedValue,value;if(setLhs&&(this.lhs=!0),!!this.lhs){for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)if(property=ref1[j],property instanceof Assign&&"object"===property.context){var _property2=property;value=_property2.value,unwrappedValue=value.unwrapAll(),unwrappedValue instanceof Arr||unwrappedValue instanceof Obj?results1.push(unwrappedValue.propagateLhs(!0)):unwrappedValue instanceof Assign?results1.push(unwrappedValue.nestedLhs=!0):results1.push(void 0)}else property instanceof Assign?results1.push(property.nestedLhs=!0):property instanceof Splat?results1.push(property.propagateLhs(!0)):results1.push(void 0);return results1}}},{key:"astNode",value:function astNode(o){return this.getAndCheckSplatProps(),_get(_getPrototypeOf(Obj.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.lhs?"ObjectPattern":"ObjectExpression"}},{key:"astProperties",value:function astProperties(o){var property;return{implicit:!!this.generated,properties:function(){var j,len1,ref1,results1;for(ref1=this.expandProperties(),results1=[],(j=0,len1=ref1.length);j<len1;j++)property=ref1[j],results1.push(property.ast(o));return results1}.call(this)}}}]),Obj}(Base);return Obj.prototype.children=["properties"],Obj}.call(this),exports.ObjectProperty=ObjectProperty=function(_Base27){"use strict";function ObjectProperty(_ref40){var key=_ref40.key,fromAssign=_ref40.fromAssign,_this44;_classCallCheck(this,ObjectProperty);var context,value;return _this44=_super49.call(this),fromAssign?(_this44.key=fromAssign.variable,value=fromAssign.value,context=fromAssign.context,"object"===context?_this44.value=value:(_this44.value=fromAssign,_this44.shorthand=!0),_this44.locationData=fromAssign.locationData):(_this44.key=key,_this44.shorthand=!0,_this44.locationData=key.locationData),_this44}_inherits(ObjectProperty,_Base27);var _super49=_createSuper(ObjectProperty);return _createClass(ObjectProperty,[{key:"astProperties",value:function astProperties(o){var isComputedPropertyName,keyAst,ref1,ref2;return isComputedPropertyName=this.key instanceof Value&&this.key.base instanceof ComputedPropertyName||this.key.unwrap()instanceof StringWithInterpolations,keyAst=this.key.ast(o,LEVEL_LIST),{key:(null==keyAst?void 0:keyAst.declaration)?Object.assign({},keyAst,{declaration:!1}):keyAst,value:null==(ref1=null==(ref2=this.value)?void 0:ref2.ast(o,LEVEL_LIST))?keyAst:ref1,shorthand:!!this.shorthand,computed:!!isComputedPropertyName,method:!1}}}]),ObjectProperty}(Base),exports.Arr=Arr=function(){var Arr=function(_Base28){"use strict";function Arr(objs){var lhs1=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this45;return _classCallCheck(this,Arr),_this45=_super50.call(this),_this45.lhs=lhs1,_this45.objects=objs||[],_this45.propagateLhs(),_this45}_inherits(Arr,_Base28);var _super50=_createSuper(Arr);return _createClass(Arr,[{key:"hasElision",value:function hasElision(){var j,len1,obj,ref1;for(ref1=this.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],obj instanceof Elision)return!0;return!1}},{key:"isAssignable",value:function isAssignable(opts){var _ref41=null==opts?{}:opts,allowEmptyArray,allowExpansion,allowNontrailingSplat,i,j,len1,obj,ref1;allowExpansion=_ref41.allowExpansion,allowNontrailingSplat=_ref41.allowNontrailingSplat;var _ref41$allowEmptyArra=_ref41.allowEmptyArray;if(allowEmptyArray=void 0!==_ref41$allowEmptyArra&&_ref41$allowEmptyArra,!this.objects.length)return allowEmptyArray;for(ref1=this.objects,i=j=0,len1=ref1.length;j<len1;i=++j){if(obj=ref1[i],!allowNontrailingSplat&&obj instanceof Splat&&i+1!==this.objects.length)return!1;if(!(allowExpansion&&obj instanceof Expansion||obj.isAssignable(opts)&&(!obj.isAtomic||obj.isAtomic())))return!1}return!0}},{key:"shouldCache",value:function shouldCache(){return!this.isAssignable()}},{key:"compileNode",value:function compileNode(o){var answer,compiledObjs,fragment,fragmentIndex,fragmentIsElision,fragments,includesLineCommentsOnNonFirstElement,index,j,k,l,len1,len2,len3,len4,len5,obj,objIndex,olen,p,passedElision,q,ref1,ref2,unwrappedObj;if(!this.objects.length)return[this.makeCode("[]")];for(o.indent+=TAB,fragmentIsElision=function(_ref42){var _ref43=_slicedToArray(_ref42,1),fragment=_ref43[0];return"Elision"===fragment.type&&","===fragment.code.trim()},passedElision=!1,answer=[],ref1=this.objects,(objIndex=j=0,len1=ref1.length);j<len1;objIndex=++j)obj=ref1[objIndex],unwrappedObj=obj.unwrapAll(),unwrappedObj.comments&&0===unwrappedObj.comments.filter(function(comment){return!comment.here}).length&&(unwrappedObj.includeCommentFragments=YES);for(compiledObjs=function(){var k,len2,ref2,results1;for(ref2=this.objects,results1=[],(k=0,len2=ref2.length);k<len2;k++)obj=ref2[k],results1.push(obj.compileToFragments(o,LEVEL_LIST));return results1}.call(this),olen=compiledObjs.length,includesLineCommentsOnNonFirstElement=!1,(index=k=0,len2=compiledObjs.length);k<len2;index=++k){var _answer2;for(fragments=compiledObjs[index],l=0,len3=fragments.length;l<len3;l++)fragment=fragments[l],fragment.isHereComment?fragment.code=fragment.code.trim():0!==index&&!1===includesLineCommentsOnNonFirstElement&&hasLineComments(fragment)&&(includesLineCommentsOnNonFirstElement=!0);0!==index&&passedElision&&(!fragmentIsElision(fragments)||index===olen-1)&&answer.push(this.makeCode(", ")),passedElision=passedElision||!fragmentIsElision(fragments),(_answer2=answer).push.apply(_answer2,_toConsumableArray(fragments))}if(includesLineCommentsOnNonFirstElement||0<=indexOf.call(fragmentsToText(answer),"\n")){for(fragmentIndex=p=0,len4=answer.length;p<len4;fragmentIndex=++p)fragment=answer[fragmentIndex],fragment.isHereComment?fragment.code="".concat(multident(fragment.code,o.indent,!1),"\n").concat(o.indent):", "===fragment.code&&(null==fragment||!fragment.isElision)&&"StringLiteral"!==(ref2=fragment.type)&&"StringWithInterpolations"!==ref2&&(fragment.code=",\n".concat(o.indent));answer.unshift(this.makeCode("[\n".concat(o.indent))),answer.push(this.makeCode("\n".concat(this.tab,"]")))}else{for(q=0,len5=answer.length;q<len5;q++)fragment=answer[q],fragment.isHereComment&&(fragment.code="".concat(fragment.code," "));answer.unshift(this.makeCode("[")),answer.push(this.makeCode("]"))}return answer}},{key:"assigns",value:function assigns(name){var j,len1,obj,ref1;for(ref1=this.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],obj.assigns(name))return!0;return!1}},{key:"eachName",value:function eachName(iterator){var j,len1,obj,ref1,results1;for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)obj=ref1[j],obj=obj.unwrapAll(),results1.push(obj.eachName(iterator));return results1}},{key:"propagateLhs",value:function propagateLhs(setLhs){var j,len1,object,ref1,results1,unwrappedObject;if(setLhs&&(this.lhs=!0),!!this.lhs){for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)object=ref1[j],(object instanceof Splat||object instanceof Expansion)&&(object.lhs=!0),unwrappedObject=object.unwrapAll(),unwrappedObject instanceof Arr||unwrappedObject instanceof Obj?results1.push(unwrappedObject.propagateLhs(!0)):unwrappedObject instanceof Assign?results1.push(unwrappedObject.nestedLhs=!0):results1.push(void 0);return results1}}},{key:"astType",value:function astType(){return this.lhs?"ArrayPattern":"ArrayExpression"}},{key:"astProperties",value:function astProperties(o){var object;return{elements:function(){var j,len1,ref1,results1;for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)object=ref1[j],results1.push(object.ast(o,LEVEL_LIST));return results1}.call(this)}}}]),Arr}(Base);return Arr.prototype.children=["objects"],Arr}.call(this),exports.Class=Class=function(){var Class=function(_Base29){"use strict";function Class(variable1,parent1,body1){var _this46;return _classCallCheck(this,Class),_this46=_super51.call(this),_this46.variable=variable1,_this46.parent=parent1,_this46.body=body1,null==_this46.body&&(_this46.body=new Block,_this46.hasGeneratedBody=!0),_this46}_inherits(Class,_Base29);var _super51=_createSuper(Class);return _createClass(Class,[{key:"compileNode",value:function compileNode(o){var executableBody,node,parentName;if(this.name=this.determineName(),executableBody=this.walkBody(o),this.parent instanceof Value&&!this.parent.hasProperties()&&(parentName=this.parent.base.value),this.hasNameClash=null!=this.name&&this.name===parentName,node=this,executableBody||this.hasNameClash?node=new ExecutableClassBody(node,executableBody):null==this.name&&o.level===LEVEL_TOP&&(node=new Parens(node)),this.boundMethods.length&&this.parent&&(null==this.variable&&(this.variable=new IdentifierLiteral(o.scope.freeVariable("_class"))),null==this.variableRef)){var _this$variable$cache=this.variable.cache(o),_this$variable$cache2=_slicedToArray(_this$variable$cache,2);this.variable=_this$variable$cache2[0],this.variableRef=_this$variable$cache2[1]}this.variable&&(node=new Assign(this.variable,node,null,{moduleDeclaration:this.moduleDeclaration})),this.compileNode=this.compileClassDeclaration;try{return node.compileToFragments(o)}finally{delete this.compileNode}}},{key:"compileClassDeclaration",value:function compileClassDeclaration(o){var ref1,ref2,result;if((this.externalCtor||this.boundMethods.length)&&null==this.ctor&&(this.ctor=this.makeDefaultConstructor()),null!=(ref1=this.ctor)&&(ref1.noReturn=!0),this.boundMethods.length&&this.proxyBoundMethods(),o.indent+=TAB,result=[],result.push(this.makeCode("class ")),this.name&&result.push(this.makeCode(this.name)),null!=(null==(ref2=this.variable)?void 0:ref2.comments)&&this.compileCommentFragments(o,this.variable,result),this.name&&result.push(this.makeCode(" ")),this.parent){var _result;(_result=result).push.apply(_result,[this.makeCode("extends ")].concat(_toConsumableArray(this.parent.compileToFragments(o)),[this.makeCode(" ")]))}if(result.push(this.makeCode("{")),!this.body.isEmpty()){var _result2;this.body.spaced=!0,result.push(this.makeCode("\n")),(_result2=result).push.apply(_result2,_toConsumableArray(this.body.compileToFragments(o,LEVEL_TOP))),result.push(this.makeCode("\n".concat(this.tab)))}return result.push(this.makeCode("}")),result}},{key:"determineName",value:function determineName(){var _slice1$call13,_slice1$call14,message,name,node,ref1,tail;return this.variable?(ref1=this.variable.properties,_slice1$call13=slice1.call(ref1,-1),_slice1$call14=_slicedToArray(_slice1$call13,1),tail=_slice1$call14[0],_slice1$call13,node=tail?tail instanceof Access&&tail.name:this.variable.base,!(node instanceof IdentifierLiteral||node instanceof PropertyName))?null:(name=node.value,tail||(message=isUnassignable(name),message&&this.variable.error(message)),0<=indexOf.call(JS_FORBIDDEN,name)?"_".concat(name):name):null}},{key:"walkBody",value:function walkBody(o){var assign,end,executableBody,expression,expressions,exprs,i,initializer,initializerExpression,j,k,len1,len2,method,properties,pushSlice,ref1,start;for(this.ctor=null,this.boundMethods=[],executableBody=null,initializer=[],expressions=this.body.expressions,i=0,ref1=expressions.slice(),(j=0,len1=ref1.length);j<len1;j++)if(expression=ref1[j],expression instanceof Value&&expression.isObject(!0)){for(properties=expression.base.properties,exprs=[],end=0,start=0,pushSlice=function(){if(end>start)return exprs.push(new Value(new Obj(properties.slice(start,end),!0)))};assign=properties[end];)(initializerExpression=this.addInitializerExpression(assign,o))&&(pushSlice(),exprs.push(initializerExpression),initializer.push(initializerExpression),start=end+1),end++;pushSlice(),splice.apply(expressions,[i,i-i+1].concat(exprs)),exprs,i+=exprs.length}else(initializerExpression=this.addInitializerExpression(expression,o))&&(initializer.push(initializerExpression),expressions[i]=initializerExpression),i+=1;for(k=0,len2=initializer.length;k<len2;k++)method=initializer[k],method instanceof Code&&(method.ctor?(this.ctor&&method.error("Cannot define more than one constructor in a class"),this.ctor=method):method.isStatic&&method.bound?method.context=this.name:method.bound&&this.boundMethods.push(method));return o.compiling?initializer.length===expressions.length?void 0:(this.body.expressions=function(){var l,len3,results1;for(results1=[],l=0,len3=initializer.length;l<len3;l++)expression=initializer[l],results1.push(expression.hoist());return results1}(),new Block(expressions)):void 0}},{key:"addInitializerExpression",value:function addInitializerExpression(node,o){return node.unwrapAll()instanceof PassthroughLiteral?node:this.validInitializerMethod(node)?this.addInitializerMethod(node):!o.compiling&&this.validClassProperty(node)?this.addClassProperty(node):!o.compiling&&this.validClassPrototypeProperty(node)?this.addClassPrototypeProperty(node):null}},{key:"validInitializerMethod",value:function validInitializerMethod(node){return!!(node instanceof Assign&&node.value instanceof Code)&&(!("object"!==node.context||node.variable.hasProperties())||node.variable.looksStatic(this.name)&&(this.name||!node.value.bound))}},{key:"addInitializerMethod",value:function addInitializerMethod(assign){var isConstructor,method,methodName,operatorToken,variable;return variable=assign.variable,method=assign.value,operatorToken=assign.operatorToken,method.isMethod=!0,method.isStatic=variable.looksStatic(this.name),method.isStatic?method.name=variable.properties[0]:(methodName=variable.base,method.name=new(methodName.shouldCache()?Index:Access)(methodName),method.name.updateLocationDataIfMissing(methodName.locationData),isConstructor=methodName instanceof StringLiteral?"constructor"===methodName.originalValue:"constructor"===methodName.value,isConstructor&&(method.ctor=this.parent?"derived":"base"),method.bound&&method.ctor&&method.error("Cannot define a constructor as a bound (fat arrow) function")),method.operatorToken=operatorToken,method}},{key:"validClassProperty",value:function validClassProperty(node){return!!(node instanceof Assign)&&node.variable.looksStatic(this.name)}},{key:"addClassProperty",value:function addClassProperty(assign){var operatorToken,staticClassName,value,variable;variable=assign.variable,value=assign.value,operatorToken=assign.operatorToken;var _variable$looksStatic=variable.looksStatic(this.name);return staticClassName=_variable$looksStatic.staticClassName,new ClassProperty({name:variable.properties[0],isStatic:!0,staticClassName:staticClassName,value:value,operatorToken:operatorToken}).withLocationDataFrom(assign)}},{key:"validClassPrototypeProperty",value:function validClassPrototypeProperty(node){return!!(node instanceof Assign)&&"object"===node.context&&!node.variable.hasProperties()}},{key:"addClassPrototypeProperty",value:function addClassPrototypeProperty(assign){var value,variable;return variable=assign.variable,value=assign.value,new ClassPrototypeProperty({name:variable.base,value:value}).withLocationDataFrom(assign)}},{key:"makeDefaultConstructor",value:function makeDefaultConstructor(){var applyArgs,applyCtor,ctor;return ctor=this.addInitializerMethod(new Assign(new Value(new PropertyName("constructor")),new Code())),this.body.unshift(ctor),this.parent&&ctor.body.push(new SuperCall(new Super(),[new Splat(new IdentifierLiteral("arguments"))])),this.externalCtor&&(applyCtor=new Value(this.externalCtor,[new Access(new PropertyName("apply"))]),applyArgs=[new ThisLiteral,new IdentifierLiteral("arguments")],ctor.body.push(new Call(applyCtor,applyArgs)),ctor.body.makeReturn()),ctor}},{key:"proxyBoundMethods",value:function proxyBoundMethods(){var method,name;return this.ctor.thisAssignments=function(){var j,len1,ref1,results1;for(ref1=this.boundMethods,results1=[],(j=0,len1=ref1.length);j<len1;j++)method=ref1[j],this.parent&&(method.classVariable=this.variableRef),name=new Value(new ThisLiteral(),[method.name]),results1.push(new Assign(name,new Call(new Value(name,[new Access(new PropertyName("bind"))]),[new ThisLiteral])));return results1}.call(this),null}},{key:"declareName",value:function declareName(o){var alreadyDeclared,name,ref1;if((name=null==(ref1=this.variable)?void 0:ref1.unwrap())instanceof IdentifierLiteral)return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared}},{key:"isStatementAst",value:function isStatementAst(){return!0}},{key:"astNode",value:function astNode(o){var argumentsNode,jumpNode,ref1;return(jumpNode=this.body.jumps())&&jumpNode.error("Class bodies cannot contain pure statements"),(argumentsNode=this.body.contains(isLiteralArguments))&&argumentsNode.error("Class bodies shouldn't reference arguments"),this.declareName(o),this.name=this.determineName(),this.body.isClassBody=!0,this.hasGeneratedBody&&(this.body.locationData=zeroWidthLocationDataFromEndLocation(this.locationData)),this.walkBody(o),sniffDirectives(this.body.expressions),null!=(ref1=this.ctor)&&(ref1.noReturn=!0),_get(_getPrototypeOf(Class.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(o){return o.level===LEVEL_TOP?"ClassDeclaration":"ClassExpression"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{id:null==(ref1=null==(ref2=this.variable)?void 0:ref2.ast(o))?null:ref1,superClass:null==(ref3=null==(ref4=this.parent)?void 0:ref4.ast(o,LEVEL_PAREN))?null:ref3,body:this.body.ast(o,LEVEL_TOP)}}}]),Class}(Base);return Class.prototype.children=["variable","parent","body"],Class}.call(this),exports.ExecutableClassBody=ExecutableClassBody=function(){var ExecutableClassBody=function(_Base30){"use strict";function ExecutableClassBody(_class){var body1=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Block,_this47;return _classCallCheck(this,ExecutableClassBody),_this47=_super52.call(this),_this47["class"]=_class,_this47.body=body1,_this47}_inherits(ExecutableClassBody,_Base30);var _super52=_createSuper(ExecutableClassBody);return _createClass(ExecutableClassBody,[{key:"compileNode",value:function compileNode(o){var _this$body$expression,args,argumentsNode,directives,externalCtor,ident,jumpNode,klass,params,parent,ref1,wrapper;return(jumpNode=this.body.jumps())&&jumpNode.error("Class bodies cannot contain pure statements"),(argumentsNode=this.body.contains(isLiteralArguments))&&argumentsNode.error("Class bodies shouldn't reference arguments"),params=[],args=[new ThisLiteral],wrapper=new Code(params,this.body),klass=new Parens(new Call(new Value(wrapper,[new Access(new PropertyName("call"))]),args)),this.body.spaced=!0,o.classScope=wrapper.makeScope(o.scope),this.name=null==(ref1=this["class"].name)?o.classScope.freeVariable(this.defaultClassVariableName):ref1,ident=new IdentifierLiteral(this.name),directives=this.walkBody(),this.setContext(),this["class"].hasNameClash&&(parent=new IdentifierLiteral(o.classScope.freeVariable("superClass")),wrapper.params.push(new Param(parent)),args.push(this["class"].parent),this["class"].parent=parent),this.externalCtor&&(externalCtor=new IdentifierLiteral(o.classScope.freeVariable("ctor",{reserve:!1})),this["class"].externalCtor=externalCtor,this.externalCtor.variable.base=externalCtor),this.name===this["class"].name?this.body.expressions.unshift(this["class"]):this.body.expressions.unshift(new Assign(new IdentifierLiteral(this.name),this["class"])),(_this$body$expression=this.body.expressions).unshift.apply(_this$body$expression,_toConsumableArray(directives)),this.body.push(ident),klass.compileToFragments(o)}},{key:"walkBody",value:function walkBody(){var _this48=this,directives,expr,index;for(directives=[],index=0;(expr=this.body.expressions[index])&&!!(expr instanceof Value&&expr.isString());)if(expr.hoisted)index++;else{var _directives;(_directives=directives).push.apply(_directives,_toConsumableArray(this.body.expressions.splice(index,1)))}return this.traverseChildren(!1,function(child){var cont,i,j,len1,node,ref1;if(child instanceof Class||child instanceof HoistTarget)return!1;if(cont=!0,child instanceof Block){for(ref1=child.expressions,i=j=0,len1=ref1.length;j<len1;i=++j)node=ref1[i],node instanceof Value&&node.isObject(!0)?(cont=!1,child.expressions[i]=_this48.addProperties(node.base.properties)):node instanceof Assign&&node.variable.looksStatic(_this48.name)&&(node.value.isStatic=!0);child.expressions=flatten(child.expressions)}return cont}),directives}},{key:"setContext",value:function setContext(){var _this49=this;return this.body.traverseChildren(!1,function(node){return node instanceof ThisLiteral?node.value=_this49.name:node instanceof Code&&node.bound&&(node.isStatic||!node.name)?node.context=_this49.name:void 0})}},{key:"addProperties",value:function addProperties(assigns){var assign,base,name,prototype,result,value,variable;return result=function(){var j,len1,results1;for(results1=[],j=0,len1=assigns.length;j<len1;j++)assign=assigns[j],variable=assign.variable,base=null==variable?void 0:variable.base,value=assign.value,delete assign.context,"constructor"===base.value?(value instanceof Code&&base.error("constructors must be defined at the top level of a class body"),assign=this.externalCtor=new Assign(new Value(),value)):assign.variable["this"]?assign.value instanceof Code&&(assign.value.isStatic=!0):(name=base instanceof ComputedPropertyName?new Index(base.value):new(base.shouldCache()?Index:Access)(base),prototype=new Access(new PropertyName("prototype")),variable=new Value(new ThisLiteral(),[prototype,name]),assign.variable=variable),results1.push(assign);return results1}.call(this),compact(result)}}]),ExecutableClassBody}(Base);return ExecutableClassBody.prototype.children=["class","body"],ExecutableClassBody.prototype.defaultClassVariableName="_Class",ExecutableClassBody}.call(this),exports.ClassProperty=ClassProperty=function(){var ClassProperty=function(_Base31){"use strict";function ClassProperty(_ref44){var name1=_ref44.name,isStatic=_ref44.isStatic,staticClassName1=_ref44.staticClassName,value1=_ref44.value,operatorToken1=_ref44.operatorToken,_this50;return _classCallCheck(this,ClassProperty),_this50=_super53.call(this),_this50.name=name1,_this50.isStatic=isStatic,_this50.staticClassName=staticClassName1,_this50.value=value1,_this50.operatorToken=operatorToken1,_this50}_inherits(ClassProperty,_Base31);var _super53=_createSuper(ClassProperty);return _createClass(ClassProperty,[{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{key:this.name.ast(o,LEVEL_LIST),value:this.value.ast(o,LEVEL_LIST),static:!!this.isStatic,computed:this.name instanceof Index||this.name instanceof ComputedPropertyName,operator:null==(ref1=null==(ref2=this.operatorToken)?void 0:ref2.value)?"=":ref1,staticClassName:null==(ref3=null==(ref4=this.staticClassName)?void 0:ref4.ast(o))?null:ref3}}}]),ClassProperty}(Base);return ClassProperty.prototype.children=["name","value","staticClassName"],ClassProperty.prototype.isStatement=YES,ClassProperty}.call(this),exports.ClassPrototypeProperty=ClassPrototypeProperty=function(){var ClassPrototypeProperty=function(_Base32){"use strict";function ClassPrototypeProperty(_ref45){var name1=_ref45.name,value1=_ref45.value,_this51;return _classCallCheck(this,ClassPrototypeProperty),_this51=_super54.call(this),_this51.name=name1,_this51.value=value1,_this51}_inherits(ClassPrototypeProperty,_Base32);var _super54=_createSuper(ClassPrototypeProperty);return _createClass(ClassPrototypeProperty,[{key:"astProperties",value:function astProperties(o){return{key:this.name.ast(o,LEVEL_LIST),value:this.value.ast(o,LEVEL_LIST),computed:this.name instanceof ComputedPropertyName||this.name instanceof StringWithInterpolations}}}]),ClassPrototypeProperty}(Base);return ClassPrototypeProperty.prototype.children=["name","value"],ClassPrototypeProperty.prototype.isStatement=YES,ClassPrototypeProperty}.call(this),exports.ModuleDeclaration=ModuleDeclaration=function(){var ModuleDeclaration=function(_Base33){"use strict";function ModuleDeclaration(clause,source1,assertions){var _this52;return _classCallCheck(this,ModuleDeclaration),_this52=_super55.call(this),_this52.clause=clause,_this52.source=source1,_this52.assertions=assertions,_this52.checkSource(),_this52}_inherits(ModuleDeclaration,_Base33);var _super55=_createSuper(ModuleDeclaration);return _createClass(ModuleDeclaration,[{key:"checkSource",value:function checkSource(){if(null!=this.source&&this.source instanceof StringWithInterpolations)return this.source.error("the name of the module to be imported from must be an uninterpolated string")}},{key:"checkScope",value:function checkScope(o,moduleDeclarationType){if(0!==o.indent.length)return this.error("".concat(moduleDeclarationType," statements must be at top-level scope"))}},{key:"astAssertions",value:function astAssertions(o){var ref1;return null==(null==(ref1=this.assertions)?void 0:ref1.properties)?[]:this.assertions.properties.map(function(assertion){var _assertion$ast=assertion.ast(o),end,left,loc,right,start;return start=_assertion$ast.start,end=_assertion$ast.end,loc=_assertion$ast.loc,left=_assertion$ast.left,right=_assertion$ast.right,{type:"ImportAttribute",start:start,end:end,loc:loc,key:left,value:right}})}}]),ModuleDeclaration}(Base);return ModuleDeclaration.prototype.children=["clause","source","assertions"],ModuleDeclaration.prototype.isStatement=YES,ModuleDeclaration.prototype.jumps=THIS,ModuleDeclaration.prototype.makeReturn=THIS,ModuleDeclaration}.call(this),exports.ImportDeclaration=ImportDeclaration=function(_ModuleDeclaration){"use strict";function ImportDeclaration(){return _classCallCheck(this,ImportDeclaration),_super56.apply(this,arguments)}_inherits(ImportDeclaration,_ModuleDeclaration);var _super56=_createSuper(ImportDeclaration);return _createClass(ImportDeclaration,[{key:"compileNode",value:function compileNode(o){var code,ref1;if(this.checkScope(o,"import"),o.importedSymbols=[],code=[],code.push(this.makeCode("".concat(this.tab,"import "))),null!=this.clause){var _code;(_code=code).push.apply(_code,_toConsumableArray(this.clause.compileNode(o)))}if(null!=(null==(ref1=this.source)?void 0:ref1.value)&&(null!==this.clause&&code.push(this.makeCode(" from ")),code.push(this.makeCode(this.source.value)),null!=this.assertions)){var _code2;code.push(this.makeCode(" assert ")),(_code2=code).push.apply(_code2,_toConsumableArray(this.assertions.compileToFragments(o)))}return code.push(this.makeCode(";")),code}},{key:"astNode",value:function astNode(o){return o.importedSymbols=[],_get(_getPrototypeOf(ImportDeclaration.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ret;return ret={specifiers:null==(ref1=null==(ref2=this.clause)?void 0:ref2.ast(o))?[]:ref1,source:this.source.ast(o),assertions:this.astAssertions(o)},this.clause&&(ret.importKind="value"),ret}}]),ImportDeclaration}(ModuleDeclaration),exports.ImportClause=ImportClause=function(){var ImportClause=function(_Base34){"use strict";function ImportClause(defaultBinding,namedImports){var _this53;return _classCallCheck(this,ImportClause),_this53=_super57.call(this),_this53.defaultBinding=defaultBinding,_this53.namedImports=namedImports,_this53}_inherits(ImportClause,_Base34);var _super57=_createSuper(ImportClause);return _createClass(ImportClause,[{key:"compileNode",value:function compileNode(o){var code;if(code=[],null!=this.defaultBinding){var _code3;(_code3=code).push.apply(_code3,_toConsumableArray(this.defaultBinding.compileNode(o))),null!=this.namedImports&&code.push(this.makeCode(", "))}if(null!=this.namedImports){var _code4;(_code4=code).push.apply(_code4,_toConsumableArray(this.namedImports.compileNode(o)))}return code}},{key:"astNode",value:function astNode(o){var ref1,ref2;return compact(flatten([null==(ref1=this.defaultBinding)?void 0:ref1.ast(o),null==(ref2=this.namedImports)?void 0:ref2.ast(o)]))}}]),ImportClause}(Base);return ImportClause.prototype.children=["defaultBinding","namedImports"],ImportClause}.call(this),exports.ExportDeclaration=ExportDeclaration=function(_ModuleDeclaration2){"use strict";function ExportDeclaration(){return _classCallCheck(this,ExportDeclaration),_super58.apply(this,arguments)}_inherits(ExportDeclaration,_ModuleDeclaration2);var _super58=_createSuper(ExportDeclaration);return _createClass(ExportDeclaration,[{key:"compileNode",value:function compileNode(o){var code,ref1;if(this.checkScope(o,"export"),this.checkForAnonymousClassExport(),code=[],code.push(this.makeCode("".concat(this.tab,"export "))),this instanceof ExportDefaultDeclaration&&code.push(this.makeCode("default ")),!(this instanceof ExportDefaultDeclaration)&&(this.clause instanceof Assign||this.clause instanceof Class)&&(code.push(this.makeCode("var ")),this.clause.moduleDeclaration="export"),code=null!=this.clause.body&&this.clause.body instanceof Block?code.concat(this.clause.compileToFragments(o,LEVEL_TOP)):code.concat(this.clause.compileNode(o)),null!=(null==(ref1=this.source)?void 0:ref1.value)&&(code.push(this.makeCode(" from ".concat(this.source.value))),null!=this.assertions)){var _code5;code.push(this.makeCode(" assert ")),(_code5=code).push.apply(_code5,_toConsumableArray(this.assertions.compileToFragments(o)))}return code.push(this.makeCode(";")),code}},{key:"checkForAnonymousClassExport",value:function checkForAnonymousClassExport(){if(!(this instanceof ExportDefaultDeclaration)&&this.clause instanceof Class&&!this.clause.variable)return this.clause.error("anonymous classes cannot be exported")}},{key:"astNode",value:function astNode(o){return this.checkForAnonymousClassExport(),_get(_getPrototypeOf(ExportDeclaration.prototype),"astNode",this).call(this,o)}}]),ExportDeclaration}(ModuleDeclaration),exports.ExportNamedDeclaration=ExportNamedDeclaration=function(_ExportDeclaration){"use strict";function ExportNamedDeclaration(){return _classCallCheck(this,ExportNamedDeclaration),_super59.apply(this,arguments)}_inherits(ExportNamedDeclaration,_ExportDeclaration);var _super59=_createSuper(ExportNamedDeclaration);return _createClass(ExportNamedDeclaration,[{key:"astProperties",value:function astProperties(o){var clauseAst,ref1,ref2,ret;return ret={source:null==(ref1=null==(ref2=this.source)?void 0:ref2.ast(o))?null:ref1,assertions:this.astAssertions(o),exportKind:"value"},clauseAst=this.clause.ast(o),this.clause instanceof ExportSpecifierList?(ret.specifiers=clauseAst,ret.declaration=null):(ret.specifiers=[],ret.declaration=clauseAst),ret}}]),ExportNamedDeclaration}(ExportDeclaration),exports.ExportDefaultDeclaration=ExportDefaultDeclaration=function(_ExportDeclaration2){"use strict";function ExportDefaultDeclaration(){return _classCallCheck(this,ExportDefaultDeclaration),_super60.apply(this,arguments)}_inherits(ExportDefaultDeclaration,_ExportDeclaration2);var _super60=_createSuper(ExportDefaultDeclaration);return _createClass(ExportDefaultDeclaration,[{key:"astProperties",value:function astProperties(o){return{declaration:this.clause.ast(o),assertions:this.astAssertions(o)}}}]),ExportDefaultDeclaration}(ExportDeclaration),exports.ExportAllDeclaration=ExportAllDeclaration=function(_ExportDeclaration3){"use strict";function ExportAllDeclaration(){return _classCallCheck(this,ExportAllDeclaration),_super61.apply(this,arguments)}_inherits(ExportAllDeclaration,_ExportDeclaration3);var _super61=_createSuper(ExportAllDeclaration);return _createClass(ExportAllDeclaration,[{key:"astProperties",value:function astProperties(o){return{source:this.source.ast(o),assertions:this.astAssertions(o),exportKind:"value"}}}]),ExportAllDeclaration}(ExportDeclaration),exports.ModuleSpecifierList=ModuleSpecifierList=function(){var ModuleSpecifierList=function(_Base35){"use strict";function ModuleSpecifierList(specifiers){var _this54;return _classCallCheck(this,ModuleSpecifierList),_this54=_super62.call(this),_this54.specifiers=specifiers,_this54}_inherits(ModuleSpecifierList,_Base35);var _super62=_createSuper(ModuleSpecifierList);return _createClass(ModuleSpecifierList,[{key:"compileNode",value:function compileNode(o){var code,compiledList,fragments,index,j,len1,specifier;if(code=[],o.indent+=TAB,compiledList=function(){var j,len1,ref1,results1;for(ref1=this.specifiers,results1=[],(j=0,len1=ref1.length);j<len1;j++)specifier=ref1[j],results1.push(specifier.compileToFragments(o,LEVEL_LIST));return results1}.call(this),0!==this.specifiers.length){for(code.push(this.makeCode("{\n".concat(o.indent))),index=j=0,len1=compiledList.length;j<len1;index=++j){var _code6;fragments=compiledList[index],index&&code.push(this.makeCode(",\n".concat(o.indent))),(_code6=code).push.apply(_code6,_toConsumableArray(fragments))}code.push(this.makeCode("\n}"))}else code.push(this.makeCode("{}"));return code}},{key:"astNode",value:function astNode(o){var j,len1,ref1,results1,specifier;for(ref1=this.specifiers,results1=[],(j=0,len1=ref1.length);j<len1;j++)specifier=ref1[j],results1.push(specifier.ast(o));return results1}}]),ModuleSpecifierList}(Base);return ModuleSpecifierList.prototype.children=["specifiers"],ModuleSpecifierList}.call(this),exports.ImportSpecifierList=ImportSpecifierList=function(_ModuleSpecifierList){"use strict";function ImportSpecifierList(){return _classCallCheck(this,ImportSpecifierList),_super63.apply(this,arguments)}_inherits(ImportSpecifierList,_ModuleSpecifierList);var _super63=_createSuper(ImportSpecifierList);return _createClass(ImportSpecifierList)}(ModuleSpecifierList),exports.ExportSpecifierList=ExportSpecifierList=function(_ModuleSpecifierList2){"use strict";function ExportSpecifierList(){return _classCallCheck(this,ExportSpecifierList),_super64.apply(this,arguments)}_inherits(ExportSpecifierList,_ModuleSpecifierList2);var _super64=_createSuper(ExportSpecifierList);return _createClass(ExportSpecifierList)}(ModuleSpecifierList),exports.ModuleSpecifier=ModuleSpecifier=function(){var ModuleSpecifier=function(_Base36){"use strict";function ModuleSpecifier(original,alias,moduleDeclarationType1){var _this55;_classCallCheck(this,ModuleSpecifier);var ref1,ref2;if(_this55=_super65.call(this),_this55.original=original,_this55.alias=alias,_this55.moduleDeclarationType=moduleDeclarationType1,_this55.original.comments||(null==(ref1=_this55.alias)?void 0:ref1.comments)){if(_this55.comments=[],_this55.original.comments){var _this55$comments;(_this55$comments=_this55.comments).push.apply(_this55$comments,_toConsumableArray(_this55.original.comments))}if(null==(ref2=_this55.alias)?void 0:ref2.comments){var _this55$comments2;(_this55$comments2=_this55.comments).push.apply(_this55$comments2,_toConsumableArray(_this55.alias.comments))}}return _this55.identifier=null==_this55.alias?_this55.original.value:_this55.alias.value,_this55}_inherits(ModuleSpecifier,_Base36);var _super65=_createSuper(ModuleSpecifier);return _createClass(ModuleSpecifier,[{key:"compileNode",value:function compileNode(o){var code;return this.addIdentifierToScope(o),code=[],code.push(this.makeCode(this.original.value)),null!=this.alias&&code.push(this.makeCode(" as ".concat(this.alias.value))),code}},{key:"addIdentifierToScope",value:function addIdentifierToScope(o){return o.scope.find(this.identifier,this.moduleDeclarationType)}},{key:"astNode",value:function astNode(o){return this.addIdentifierToScope(o),_get(_getPrototypeOf(ModuleSpecifier.prototype),"astNode",this).call(this,o)}}]),ModuleSpecifier}(Base);return ModuleSpecifier.prototype.children=["original","alias"],ModuleSpecifier}.call(this),exports.ImportSpecifier=ImportSpecifier=function(_ModuleSpecifier){"use strict";function ImportSpecifier(imported,local){return _classCallCheck(this,ImportSpecifier),_super66.call(this,imported,local,"import")}_inherits(ImportSpecifier,_ModuleSpecifier);var _super66=_createSuper(ImportSpecifier);return _createClass(ImportSpecifier,[{key:"addIdentifierToScope",value:function addIdentifierToScope(o){var ref1;return(ref1=this.identifier,0<=indexOf.call(o.importedSymbols,ref1))||o.scope.check(this.identifier)?this.error("'".concat(this.identifier,"' has already been declared")):o.importedSymbols.push(this.identifier),_get(_getPrototypeOf(ImportSpecifier.prototype),"addIdentifierToScope",this).call(this,o)}},{key:"astProperties",value:function astProperties(o){var originalAst,ref1,ref2;return originalAst=this.original.ast(o),{imported:originalAst,local:null==(ref1=null==(ref2=this.alias)?void 0:ref2.ast(o))?originalAst:ref1,importKind:null}}}]),ImportSpecifier}(ModuleSpecifier),exports.ImportDefaultSpecifier=ImportDefaultSpecifier=function(_ImportSpecifier){"use strict";function ImportDefaultSpecifier(){return _classCallCheck(this,ImportDefaultSpecifier),_super67.apply(this,arguments)}_inherits(ImportDefaultSpecifier,_ImportSpecifier);var _super67=_createSuper(ImportDefaultSpecifier);return _createClass(ImportDefaultSpecifier,[{key:"astProperties",value:function astProperties(o){return{local:this.original.ast(o)}}}]),ImportDefaultSpecifier}(ImportSpecifier),exports.ImportNamespaceSpecifier=ImportNamespaceSpecifier=function(_ImportSpecifier2){"use strict";function ImportNamespaceSpecifier(){return _classCallCheck(this,ImportNamespaceSpecifier),_super68.apply(this,arguments)}_inherits(ImportNamespaceSpecifier,_ImportSpecifier2);var _super68=_createSuper(ImportNamespaceSpecifier);return _createClass(ImportNamespaceSpecifier,[{key:"astProperties",value:function astProperties(o){return{local:this.alias.ast(o)}}}]),ImportNamespaceSpecifier}(ImportSpecifier),exports.ExportSpecifier=ExportSpecifier=function(_ModuleSpecifier2){"use strict";function ExportSpecifier(local,exported){return _classCallCheck(this,ExportSpecifier),_super69.call(this,local,exported,"export")}_inherits(ExportSpecifier,_ModuleSpecifier2);var _super69=_createSuper(ExportSpecifier);return _createClass(ExportSpecifier,[{key:"astProperties",value:function astProperties(o){var originalAst,ref1,ref2;return originalAst=this.original.ast(o),{local:originalAst,exported:null==(ref1=null==(ref2=this.alias)?void 0:ref2.ast(o))?originalAst:ref1}}}]),ExportSpecifier}(ModuleSpecifier),exports.DynamicImport=DynamicImport=function(_Base37){"use strict";function DynamicImport(){return _classCallCheck(this,DynamicImport),_super70.apply(this,arguments)}_inherits(DynamicImport,_Base37);var _super70=_createSuper(DynamicImport);return _createClass(DynamicImport,[{key:"compileNode",value:function compileNode(){return[this.makeCode("import")]}},{key:"astType",value:function astType(){return"Import"}}]),DynamicImport}(Base),exports.DynamicImportCall=DynamicImportCall=function(_Call3){"use strict";function DynamicImportCall(){return _classCallCheck(this,DynamicImportCall),_super71.apply(this,arguments)}_inherits(DynamicImportCall,_Call3);var _super71=_createSuper(DynamicImportCall);return _createClass(DynamicImportCall,[{key:"compileNode",value:function compileNode(o){return this.checkArguments(),_get(_getPrototypeOf(DynamicImportCall.prototype),"compileNode",this).call(this,o)}},{key:"checkArguments",value:function checkArguments(){var ref1;if(!(1<=(ref1=this.args.length)&&2>=ref1))return this.error("import() accepts either one or two arguments")}},{key:"astNode",value:function astNode(o){return this.checkArguments(),_get(_getPrototypeOf(DynamicImportCall.prototype),"astNode",this).call(this,o)}}]),DynamicImportCall}(Call),exports.Assign=Assign=function(){var Assign=function(_Base38){"use strict";function Assign(variable1,value1,context1){var options=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},_this56;_classCallCheck(this,Assign),_this56=_super72.call(this),_this56.variable=variable1,_this56.value=value1,_this56.context=context1,_this56.param=options.param,_this56.subpattern=options.subpattern,_this56.operatorToken=options.operatorToken,_this56.moduleDeclaration=options.moduleDeclaration;var _options$originalCont=options.originalContext;return _this56.originalContext=void 0===_options$originalCont?_this56.context:_options$originalCont,_this56.propagateLhs(),_this56}_inherits(Assign,_Base38);var _super72=_createSuper(Assign);return _createClass(Assign,[{key:"isStatement",value:function isStatement(o){return(null==o?void 0:o.level)===LEVEL_TOP&&null!=this.context&&(this.moduleDeclaration||0<=indexOf.call(this.context,"?"))}},{key:"checkNameAssignability",value:function checkNameAssignability(o,varBase){if("import"===o.scope.type(varBase.value))return varBase.error("'".concat(varBase.value,"' is read-only"))}},{key:"assigns",value:function assigns(name){return this["object"===this.context?"value":"variable"].assigns(name)}},{key:"unfoldSoak",value:function unfoldSoak(o){return _unfoldSoak(o,this,"variable")}},{key:"addScopeVariables",value:function addScopeVariables(o){var _this57=this,_ref46=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref46$allowAssignmen=_ref46.allowAssignmentToExpansion,_ref46$allowAssignmen2=_ref46.allowAssignmentToNontrailingSplat,_ref46$allowAssignmen3=_ref46.allowAssignmentToEmptyArray,_ref46$allowAssignmen4=_ref46.allowAssignmentToComplexSplat,varBase;if(!(this.context&&"**="!==this.context))return varBase=this.variable.unwrapAll(),varBase.isAssignable({allowExpansion:void 0!==_ref46$allowAssignmen&&_ref46$allowAssignmen,allowNontrailingSplat:void 0!==_ref46$allowAssignmen2&&_ref46$allowAssignmen2,allowEmptyArray:void 0!==_ref46$allowAssignmen3&&_ref46$allowAssignmen3,allowComplexSplat:void 0!==_ref46$allowAssignmen4&&_ref46$allowAssignmen4})||this.variable.error("'".concat(this.variable.compile(o),"' can't be assigned")),varBase.eachName(function(name){var alreadyDeclared,commentFragments,commentsNode,message;if("function"!=typeof name.hasProperties||!name.hasProperties())return(message=isUnassignable(name.value),message&&name.error(message),_this57.checkNameAssignability(o,name),_this57.moduleDeclaration)?(o.scope.add(name.value,_this57.moduleDeclaration),name.isDeclaration=!0):_this57.param?o.scope.add(name.value,"alwaysDeclare"===_this57.param?"var":"param"):(alreadyDeclared=o.scope.find(name.value),null==name.isDeclaration&&(name.isDeclaration=!alreadyDeclared),name.comments&&!o.scope.comments[name.value]&&!(_this57.value instanceof Class)&&name.comments.every(function(comment){return comment.here&&!comment.multiline}))?(commentsNode=new IdentifierLiteral(name.value),commentsNode.comments=name.comments,commentFragments=[],_this57.compileCommentFragments(o,commentsNode,commentFragments),o.scope.comments[name.value]=commentFragments):void 0})}},{key:"compileNode",value:function compileNode(o){var answer,compiledName,isValue,name,properties,prototype,ref1,ref2,ref3,ref4,val;if(isValue=this.variable instanceof Value,isValue){if((this.variable.isArray()||this.variable.isObject())&&!this.variable.isAssignable())return this.variable.isObject()&&this.variable.base.hasSplat()?this.compileObjectDestruct(o):this.compileDestructuring(o);if(this.variable.isSplice())return this.compileSplice(o);if(this.isConditional())return this.compileConditional(o);if("//="===(ref1=this.context)||"%%="===ref1)return this.compileSpecialMath(o)}if(this.addScopeVariables(o),this.value instanceof Code)if(this.value.isStatic)this.value.name=this.variable.properties[0];else if(2<=(null==(ref2=this.variable.properties)?void 0:ref2.length)){var _ref47,_ref48,_splice$call,_splice$call2;ref3=this.variable.properties,_ref47=ref3,_ref48=_toArray(_ref47),properties=_ref48.slice(0),_ref47,_splice$call=splice.call(properties,-2),_splice$call2=_slicedToArray(_splice$call,2),prototype=_splice$call2[0],name=_splice$call2[1],_splice$call,"prototype"===(null==(ref4=prototype.name)?void 0:ref4.value)&&(this.value.name=name)}return(val=this.value.compileToFragments(o,LEVEL_LIST),compiledName=this.variable.compileToFragments(o,LEVEL_LIST),"object"===this.context)?(this.variable.shouldCache()&&(compiledName.unshift(this.makeCode("[")),compiledName.push(this.makeCode("]"))),compiledName.concat(this.makeCode(": "),val)):(answer=compiledName.concat(this.makeCode(" ".concat(this.context||"="," ")),val),o.level>LEVEL_LIST||isValue&&this.variable.base instanceof Obj&&!this.nestedLhs&&!0!==this.param?this.wrapInParentheses(answer):answer)}},{key:"compileObjectDestruct",value:function compileObjectDestruct(o){var assigns,props,refVal,splat,splatProp;this.variable.base.reorderProperties(),props=this.variable.base.properties;var _slice1$call15=slice1.call(props,-1),_slice1$call16=_slicedToArray(_slice1$call15,1);return splat=_slice1$call16[0],splatProp=splat.name,assigns=[],refVal=new Value(new IdentifierLiteral(o.scope.freeVariable("ref"))),props.splice(-1,1,new Splat(refVal)),assigns.push(new Assign(new Value(new Obj(props)),this.value).compileToFragments(o,LEVEL_LIST)),assigns.push(new Assign(new Value(splatProp),refVal).compileToFragments(o,LEVEL_LIST)),this.joinFragmentArrays(assigns,", ")}},{key:"compileDestructuring",value:function compileDestructuring(o){var _this58=this,assignObjects,assigns,code,compSlice,compSplice,complexObjects,expIdx,expans,fragments,hasObjAssigns,isExpans,isSplat,leftObjs,loopObjects,obj,objIsUnassignable,objects,olen,processObjects,pushAssign,ref,refExp,restVar,rightObjs,slicer,splatVar,splatVarAssign,splatVarRef,splats,splatsAndExpans,top,value,vvar,vvarText;if(top=o.level===LEVEL_TOP,value=this.value,objects=this.variable.base.objects,olen=objects.length,0===olen)return code=value.compileToFragments(o),o.level>=LEVEL_OP?this.wrapInParentheses(code):code;var _objects=objects,_objects2=_slicedToArray(_objects,1);obj=_objects2[0],this.disallowLoneExpansion();var _this$getAndCheckSpla=this.getAndCheckSplatsAndExpansions();return splats=_this$getAndCheckSpla.splats,expans=_this$getAndCheckSpla.expans,splatsAndExpans=_this$getAndCheckSpla.splatsAndExpans,isSplat=0<(null==splats?void 0:splats.length),isExpans=0<(null==expans?void 0:expans.length),vvar=value.compileToFragments(o,LEVEL_LIST),vvarText=fragmentsToText(vvar),assigns=[],pushAssign=function(variable,val){return assigns.push(new Assign(variable,val,null,{param:_this58.param,subpattern:!0}).compileToFragments(o,LEVEL_LIST))},isSplat&&(splatVar=objects[splats[0]].name.unwrap(),(splatVar instanceof Arr||splatVar instanceof Obj)&&(splatVarRef=new IdentifierLiteral(o.scope.freeVariable("ref")),objects[splats[0]].name=splatVarRef,splatVarAssign=function(){return pushAssign(new Value(splatVar),splatVarRef)})),(!(value.unwrap()instanceof IdentifierLiteral)||this.variable.assigns(vvarText))&&(ref=o.scope.freeVariable("ref"),assigns.push([this.makeCode(ref+" = ")].concat(_toConsumableArray(vvar))),vvar=[this.makeCode(ref)],vvarText=ref),slicer=function(type){return function(vvar,start){var end=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],args,slice;return vvar instanceof Value||(vvar=new IdentifierLiteral(vvar)),args=[vvar,new NumberLiteral(start)],end&&args.push(new NumberLiteral(end)),slice=new Value(new IdentifierLiteral(utility(type,o)),[new Access(new PropertyName("call"))]),new Value(new Call(slice,args))}},compSlice=slicer("slice"),compSplice=slicer("splice"),hasObjAssigns=function(objs){var i,j,len1,results1;for(results1=[],i=j=0,len1=objs.length;j<len1;i=++j)obj=objs[i],obj instanceof Assign&&"object"===obj.context&&results1.push(i);return results1},objIsUnassignable=function(objs){var j,len1;for(j=0,len1=objs.length;j<len1;j++)if(obj=objs[j],!obj.isAssignable())return!0;return!1},complexObjects=function(objs){return hasObjAssigns(objs).length||objIsUnassignable(objs)||1===olen},loopObjects=function(objs,vvar,vvarTxt){var acc,i,idx,j,len1,message,results1,vval;for(results1=[],i=j=0,len1=objs.length;j<len1;i=++j)if(obj=objs[i],!(obj instanceof Elision)){if(obj instanceof Assign&&"object"===obj.context){var _obj=obj;if(idx=_obj.variable.base,vvar=_obj.value,vvar instanceof Assign){var _vvar=vvar;vvar=_vvar.variable}idx=vvar["this"]?vvar.properties[0].name:new PropertyName(vvar.unwrap().value),acc=idx.unwrap()instanceof PropertyName,vval=new Value(value,[new(acc?Access:Index)(idx)])}else vvar=function(){switch(!1){case!(obj instanceof Splat):return new Value(obj.name);default:return obj;}}(),vval=function(){switch(!1){case!(obj instanceof Splat):return compSlice(vvarTxt,i);default:return new Value(new Literal(vvarTxt),[new Index(new NumberLiteral(i))]);}}();message=isUnassignable(vvar.unwrap().value),message&&vvar.error(message),results1.push(pushAssign(vvar,vval))}return results1},assignObjects=function(objs,vvar,vvarTxt){var vval;return vvar=new Value(new Arr(objs,!0)),vval=vvarTxt instanceof Value?vvarTxt:new Value(new Literal(vvarTxt)),pushAssign(vvar,vval)},processObjects=function(objs,vvar,vvarTxt){return complexObjects(objs)?loopObjects(objs,vvar,vvarTxt):assignObjects(objs,vvar,vvarTxt)},splatsAndExpans.length?(expIdx=splatsAndExpans[0],leftObjs=objects.slice(0,expIdx+(isSplat?1:0)),rightObjs=objects.slice(expIdx+1),0!==leftObjs.length&&processObjects(leftObjs,vvar,vvarText),0!==rightObjs.length&&(refExp=function(){switch(!1){case!isSplat:return compSplice(new Value(objects[expIdx].name),-1*rightObjs.length);case!isExpans:return compSlice(vvarText,-1*rightObjs.length);}}(),complexObjects(rightObjs)&&(restVar=refExp,refExp=o.scope.freeVariable("ref"),assigns.push([this.makeCode(refExp+" = ")].concat(_toConsumableArray(restVar.compileToFragments(o,LEVEL_LIST))))),processObjects(rightObjs,vvar,refExp))):processObjects(objects,vvar,vvarText),"function"==typeof splatVarAssign&&splatVarAssign(),top||this.subpattern||assigns.push(vvar),fragments=this.joinFragmentArrays(assigns,", "),o.level<LEVEL_LIST?fragments:this.wrapInParentheses(fragments)}},{key:"disallowLoneExpansion",value:function disallowLoneExpansion(){var loneObject,objects;if(this.variable.base instanceof Arr&&(objects=this.variable.base.objects,1===(null==objects?void 0:objects.length))){var _objects3=objects,_objects4=_slicedToArray(_objects3,1);if(loneObject=_objects4[0],loneObject instanceof Expansion)return loneObject.error("Destructuring assignment has no target")}}},{key:"getAndCheckSplatsAndExpansions",value:function getAndCheckSplatsAndExpansions(){var expans,i,obj,objects,splats,splatsAndExpans;return this.variable.base instanceof Arr?(objects=this.variable.base.objects,splats=function(){var j,len1,results1;for(results1=[],i=j=0,len1=objects.length;j<len1;i=++j)obj=objects[i],obj instanceof Splat&&results1.push(i);return results1}(),expans=function(){var j,len1,results1;for(results1=[],i=j=0,len1=objects.length;j<len1;i=++j)obj=objects[i],obj instanceof Expansion&&results1.push(i);return results1}(),splatsAndExpans=[].concat(_toConsumableArray(splats),_toConsumableArray(expans)),1<splatsAndExpans.length&&objects[splatsAndExpans.sort()[1]].error("multiple splats/expansions are disallowed in an assignment"),{splats:splats,expans:expans,splatsAndExpans:splatsAndExpans}):{splats:[],expans:[],splatsAndExpans:[]}}},{key:"compileConditional",value:function compileConditional(o){var _this$variable$cacheR=this.variable.cacheReference(o),_this$variable$cacheR2=_slicedToArray(_this$variable$cacheR,2),fragments,left,right;return left=_this$variable$cacheR2[0],right=_this$variable$cacheR2[1],left.properties.length||!(left.base instanceof Literal)||left.base instanceof ThisLiteral||o.scope.check(left.base.value)||this.throwUnassignableConditionalError(left.base.value),0<=indexOf.call(this.context,"?")?(o.isExistentialEquals=!0,new If(new Existence(left),right,{type:"if"}).addElse(new Assign(right,this.value,"=")).compileToFragments(o)):(fragments=new Op(this.context.slice(0,-1),left,new Assign(right,this.value,"=")).compileToFragments(o),o.level<=LEVEL_LIST?fragments:this.wrapInParentheses(fragments))}},{key:"compileSpecialMath",value:function compileSpecialMath(o){var _this$variable$cacheR3=this.variable.cacheReference(o),_this$variable$cacheR4=_slicedToArray(_this$variable$cacheR3,2),left,right;return left=_this$variable$cacheR4[0],right=_this$variable$cacheR4[1],new Assign(left,new Op(this.context.slice(0,-1),right,this.value)).compileToFragments(o)}},{key:"compileSplice",value:function compileSplice(o){var _this$variable$proper=this.variable.properties.pop(),_this$variable$proper2=_this$variable$proper.range,answer,exclusive,from,fromDecl,fromRef,name,to,unwrappedVar,valDef,valRef;if(from=_this$variable$proper2.from,to=_this$variable$proper2.to,exclusive=_this$variable$proper2.exclusive,unwrappedVar=this.variable.unwrapAll(),unwrappedVar.comments&&(moveComments(unwrappedVar,this),delete this.variable.comments),name=this.variable.compile(o),from){var _this$cacheToCodeFrag7=this.cacheToCodeFragments(from.cache(o,LEVEL_OP)),_this$cacheToCodeFrag8=_slicedToArray(_this$cacheToCodeFrag7,2);fromDecl=_this$cacheToCodeFrag8[0],fromRef=_this$cacheToCodeFrag8[1]}else fromDecl=fromRef="0";to?(null==from?void 0:from.isNumber())&&to.isNumber()?(to=to.compile(o)-fromRef,!exclusive&&(to+=1)):(to=to.compile(o,LEVEL_ACCESS)+" - "+fromRef,!exclusive&&(to+=" + 1")):to="9e9";var _this$value$cache=this.value.cache(o,LEVEL_LIST),_this$value$cache2=_slicedToArray(_this$value$cache,2);return valDef=_this$value$cache2[0],valRef=_this$value$cache2[1],answer=[].concat(this.makeCode("".concat(utility("splice",o),".apply(").concat(name,", [").concat(fromDecl,", ").concat(to,"].concat(")),valDef,this.makeCode(")), "),valRef),o.level>LEVEL_TOP?this.wrapInParentheses(answer):answer}},{key:"eachName",value:function eachName(iterator){return this.variable.unwrapAll().eachName(iterator)}},{key:"isDefaultAssignment",value:function isDefaultAssignment(){return this.param||this.nestedLhs}},{key:"propagateLhs",value:function propagateLhs(){var ref1,ref2;return(null==(ref1=this.variable)?void 0:"function"==typeof ref1.isArray?ref1.isArray():void 0)||(null==(ref2=this.variable)?void 0:"function"==typeof ref2.isObject?ref2.isObject():void 0)?this.variable.base.propagateLhs(!0):void 0}},{key:"throwUnassignableConditionalError",value:function throwUnassignableConditionalError(name){return this.variable.error("the variable \"".concat(name,"\" can't be assigned with ").concat(this.context," because it has not been declared before"))}},{key:"isConditional",value:function isConditional(){var ref1;return"||="===(ref1=this.context)||"&&="===ref1||"?="===ref1}},{key:"astNode",value:function astNode(o){var variable;return this.disallowLoneExpansion(),this.getAndCheckSplatsAndExpansions(),this.isConditional()&&(variable=this.variable.unwrap(),variable instanceof IdentifierLiteral&&!o.scope.check(variable.value)&&this.throwUnassignableConditionalError(variable.value)),this.addScopeVariables(o,{allowAssignmentToExpansion:!0,allowAssignmentToNontrailingSplat:!0,allowAssignmentToEmptyArray:!0,allowAssignmentToComplexSplat:!0}),_get(_getPrototypeOf(Assign.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isDefaultAssignment()?"AssignmentPattern":"AssignmentExpression"}},{key:"astProperties",value:function astProperties(o){var ref1,ret;return ret={right:this.value.ast(o,LEVEL_LIST),left:this.variable.ast(o,LEVEL_LIST)},this.isDefaultAssignment()||(ret.operator=null==(ref1=this.originalContext)?"=":ref1),ret}}]),Assign}(Base);return Assign.prototype.children=["variable","value"],Assign.prototype.isAssignable=YES,Assign.prototype.isStatementAst=NO,Assign}.call(this),exports.FuncGlyph=FuncGlyph=function(_Base39){"use strict";function FuncGlyph(glyph){var _this59;return _classCallCheck(this,FuncGlyph),_this59=_super73.call(this),_this59.glyph=glyph,_this59}_inherits(FuncGlyph,_Base39);var _super73=_createSuper(FuncGlyph);return _createClass(FuncGlyph)}(Base),exports.Code=Code=function(){var Code=function(_Base40){"use strict";function Code(params,body,funcGlyph,paramStart){var _this60;_classCallCheck(this,Code);var ref1;return _this60=_super74.call(this),_this60.funcGlyph=funcGlyph,_this60.paramStart=paramStart,_this60.params=params||[],_this60.body=body||new Block,_this60.bound="=>"===(null==(ref1=_this60.funcGlyph)?void 0:ref1.glyph),_this60.isGenerator=!1,_this60.isAsync=!1,_this60.isMethod=!1,_this60.body.traverseChildren(!1,function(node){if((node instanceof Op&&node.isYield()||node instanceof YieldReturn)&&(_this60.isGenerator=!0),(node instanceof Op&&node.isAwait()||node instanceof AwaitReturn)&&(_this60.isAsync=!0),node instanceof For&&node.isAwait())return _this60.isAsync=!0}),_this60.propagateLhs(),_this60}_inherits(Code,_Base40);var _super74=_createSuper(Code);return _createClass(Code,[{key:"isStatement",value:function isStatement(){return this.isMethod}},{key:"makeScope",value:function makeScope(parentScope){return new Scope(parentScope,this.body,this)}},{key:"compileNode",value:function compileNode(o){var _this$body$expression3,_answer4,answer,body,boundMethodCheck,comment,condition,exprs,generatedVariables,haveBodyParam,haveSplatParam,i,ifTrue,j,k,l,len1,len2,len3,m,methodScope,modifiers,name,param,paramToAddToScope,params,paramsAfterSplat,ref,ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,scopeVariablesCount,signature,splatParamName,thisAssignments,wasEmpty,yieldNode;for(this.checkForAsyncOrGeneratorConstructor(),this.bound&&((null==(ref1=o.scope.method)?void 0:ref1.bound)&&(this.context=o.scope.method.context),!this.context&&(this.context="this")),this.updateOptions(o),params=[],exprs=[],thisAssignments=null==(ref2=null==(ref3=this.thisAssignments)?void 0:ref3.slice())?[]:ref2,paramsAfterSplat=[],haveSplatParam=!1,haveBodyParam=!1,this.checkForDuplicateParams(),this.disallowLoneExpansionAndMultipleSplats(),this.eachParamName(function(name,node,param,obj){var replacement,target;if(node["this"])return name=node.properties[0].name.value,0<=indexOf.call(JS_FORBIDDEN,name)&&(name="_".concat(name)),target=new IdentifierLiteral(o.scope.freeVariable(name,{reserve:!1})),replacement=param.name instanceof Obj&&obj instanceof Assign&&"="===obj.operatorToken.value?new Assign(new IdentifierLiteral(name),target,"object"):target,param.renameParam(node,replacement),thisAssignments.push(new Assign(node,target))}),ref4=this.params,(i=j=0,len1=ref4.length);j<len1;i=++j)param=ref4[i],param.splat||param instanceof Expansion?(haveSplatParam=!0,param.splat?(param.name instanceof Arr||param.name instanceof Obj?(splatParamName=o.scope.freeVariable("arg"),params.push(ref=new Value(new IdentifierLiteral(splatParamName))),exprs.push(new Assign(new Value(param.name),ref))):(params.push(ref=param.asReference(o)),splatParamName=fragmentsToText(ref.compileNodeWithoutComments(o))),param.shouldCache()&&exprs.push(new Assign(new Value(param.name),ref))):(splatParamName=o.scope.freeVariable("args"),params.push(new Value(new IdentifierLiteral(splatParamName)))),o.scope.parameter(splatParamName)):((param.shouldCache()||haveBodyParam)&&(param.assignedInBody=!0,haveBodyParam=!0,null==param.value?exprs.push(new Assign(new Value(param.name),param.asReference(o),null,{param:"alwaysDeclare"})):(condition=new Op("===",param,new UndefinedLiteral()),ifTrue=new Assign(new Value(param.name),param.value),exprs.push(new If(condition,ifTrue)))),haveSplatParam?(paramsAfterSplat.push(param),null!=param.value&&!param.shouldCache()&&(condition=new Op("===",param,new UndefinedLiteral()),ifTrue=new Assign(new Value(param.name),param.value),exprs.push(new If(condition,ifTrue))),null!=(null==(ref5=param.name)?void 0:ref5.value)&&o.scope.add(param.name.value,"var",!0)):(ref=param.shouldCache()?param.asReference(o):null==param.value||param.assignedInBody?param:new Assign(new Value(param.name),param.value,null,{param:!0}),param.name instanceof Arr||param.name instanceof Obj?(param.name.lhs=!0,!param.shouldCache()&&param.name.eachName(function(prop){return o.scope.parameter(prop.value)})):(paramToAddToScope=null==param.value?ref:param,o.scope.parameter(fragmentsToText(paramToAddToScope.compileToFragmentsWithoutComments(o)))),params.push(ref)));if(0!==paramsAfterSplat.length&&exprs.unshift(new Assign(new Value(new Arr([new Splat(new IdentifierLiteral(splatParamName))].concat(_toConsumableArray(function(){var k,len2,results1;for(results1=[],k=0,len2=paramsAfterSplat.length;k<len2;k++)param=paramsAfterSplat[k],results1.push(param.asReference(o));return results1}())))),new Value(new IdentifierLiteral(splatParamName)))),wasEmpty=this.body.isEmpty(),this.disallowSuperInParamDefaults(),this.checkSuperCallsInConstructorBody(),!this.expandCtorSuper(thisAssignments)){var _this$body$expression2;(_this$body$expression2=this.body.expressions).unshift.apply(_this$body$expression2,_toConsumableArray(thisAssignments))}for((_this$body$expression3=this.body.expressions).unshift.apply(_this$body$expression3,_toConsumableArray(exprs)),this.isMethod&&this.bound&&!this.isStatic&&this.classVariable&&(boundMethodCheck=new Value(new Literal(utility("boundMethodCheck",o))),this.body.expressions.unshift(new Call(boundMethodCheck,[new Value(new ThisLiteral()),this.classVariable]))),wasEmpty||this.noReturn||this.body.makeReturn(),this.bound&&this.isGenerator&&(yieldNode=this.body.contains(function(node){return node instanceof Op&&"yield"===node.operator}),(yieldNode||this).error("yield cannot occur inside bound (fat arrow) functions")),modifiers=[],this.isMethod&&this.isStatic&&modifiers.push("static"),this.isAsync&&modifiers.push("async"),this.isMethod||this.bound?this.isGenerator&&modifiers.push("*"):modifiers.push("function".concat(this.isGenerator?"*":"")),signature=[this.makeCode("(")],null!=(null==(ref6=this.paramStart)?void 0:ref6.comments)&&this.compileCommentFragments(o,this.paramStart,signature),(i=k=0,len2=params.length);k<len2;i=++k){var _signature;if(param=params[i],0!==i&&signature.push(this.makeCode(", ")),haveSplatParam&&i===params.length-1&&signature.push(this.makeCode("...")),scopeVariablesCount=o.scope.variables.length,(_signature=signature).push.apply(_signature,_toConsumableArray(param.compileToFragments(o,LEVEL_PAREN))),scopeVariablesCount!==o.scope.variables.length){var _o$scope$parent$varia;generatedVariables=o.scope.variables.splice(scopeVariablesCount),(_o$scope$parent$varia=o.scope.parent.variables).push.apply(_o$scope$parent$varia,_toConsumableArray(generatedVariables))}}if(signature.push(this.makeCode(")")),null!=(null==(ref7=this.funcGlyph)?void 0:ref7.comments)){for(ref8=this.funcGlyph.comments,l=0,len3=ref8.length;l<len3;l++)comment=ref8[l],comment.unshift=!1;this.compileCommentFragments(o,this.funcGlyph,signature)}if(this.body.isEmpty()||(body=this.body.compileWithDeclarations(o)),this.isMethod){var _ref49=[o.scope,o.scope.parent];methodScope=_ref49[0],o.scope=_ref49[1],name=this.name.compileToFragments(o),"."===name[0].code&&name.shift(),o.scope=methodScope}if(answer=this.joinFragmentArrays(function(){var len4,p,results1;for(results1=[],p=0,len4=modifiers.length;p<len4;p++)m=modifiers[p],results1.push(this.makeCode(m));return results1}.call(this)," "),modifiers.length&&name&&answer.push(this.makeCode(" ")),name){var _answer3;(_answer3=answer).push.apply(_answer3,_toConsumableArray(name))}if((_answer4=answer).push.apply(_answer4,_toConsumableArray(signature)),this.bound&&!this.isMethod&&answer.push(this.makeCode(" =>")),answer.push(this.makeCode(" {")),null==body?void 0:body.length){var _answer5;(_answer5=answer).push.apply(_answer5,[this.makeCode("\n")].concat(_toConsumableArray(body),[this.makeCode("\n".concat(this.tab))]))}return answer.push(this.makeCode("}")),this.isMethod?indentInitial(answer,this):this.front||o.level>=LEVEL_ACCESS?this.wrapInParentheses(answer):answer}},{key:"updateOptions",value:function updateOptions(o){return o.scope=del(o,"classScope")||this.makeScope(o.scope),o.scope.shared=del(o,"sharedScope"),o.indent+=TAB,delete o.bare,delete o.isExistentialEquals}},{key:"checkForDuplicateParams",value:function checkForDuplicateParams(){var paramNames;return paramNames=[],this.eachParamName(function(name,node){return 0<=indexOf.call(paramNames,name)&&node.error("multiple parameters named '".concat(name,"'")),paramNames.push(name)})}},{key:"eachParamName",value:function eachParamName(iterator){var j,len1,param,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],results1.push(param.eachName(iterator));return results1}},{key:"traverseChildren",value:function traverseChildren(crossScope,func){if(crossScope)return _get(_getPrototypeOf(Code.prototype),"traverseChildren",this).call(this,crossScope,func)}},{key:"replaceInContext",value:function replaceInContext(child,replacement){return!!this.bound&&_get(_getPrototypeOf(Code.prototype),"replaceInContext",this).call(this,child,replacement)}},{key:"disallowSuperInParamDefaults",value:function disallowSuperInParamDefaults(){var _ref50=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},forAst=_ref50.forAst;return!!this.ctor&&this.eachSuperCall(Block.wrap(this.params),function(superCall){return superCall.error("'super' is not allowed in constructor parameter defaults")},{checkForThisBeforeSuper:!forAst})}},{key:"checkSuperCallsInConstructorBody",value:function checkSuperCallsInConstructorBody(){var _this61=this,seenSuper;return!!this.ctor&&(seenSuper=this.eachSuperCall(this.body,function(superCall){if("base"===_this61.ctor)return superCall.error("'super' is only allowed in derived class constructors")}),seenSuper)}},{key:"flagThisParamInDerivedClassConstructorWithoutCallingSuper",value:function flagThisParamInDerivedClassConstructorWithoutCallingSuper(param){return param.error("Can't use @params in derived class constructors without calling super")}},{key:"checkForAsyncOrGeneratorConstructor",value:function checkForAsyncOrGeneratorConstructor(){if(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator))return this.name.error("Class constructor may not be a generator")}},{key:"disallowLoneExpansionAndMultipleSplats",value:function disallowLoneExpansionAndMultipleSplats(){var j,len1,param,ref1,results1,seenSplatParam;for(seenSplatParam=!1,ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],param.splat||param instanceof Expansion?(seenSplatParam?param.error("only one splat or expansion parameter is allowed per function definition"):param instanceof Expansion&&1===this.params.length&&param.error("an expansion parameter cannot be the only parameter in a function definition"),results1.push(seenSplatParam=!0)):results1.push(void 0);return results1}},{key:"expandCtorSuper",value:function expandCtorSuper(thisAssignments){var haveThisParam,param,ref1,seenSuper;return!!this.ctor&&(seenSuper=this.eachSuperCall(this.body,function(superCall){return superCall.expressions=thisAssignments}),haveThisParam=thisAssignments.length&&thisAssignments.length!==(null==(ref1=this.thisAssignments)?void 0:ref1.length),"derived"===this.ctor&&!seenSuper&&haveThisParam&&(param=thisAssignments[0].variable,this.flagThisParamInDerivedClassConstructorWithoutCallingSuper(param)),seenSuper)}},{key:"eachSuperCall",value:function eachSuperCall(context,iterator){var _this62=this,_ref51=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_ref51$checkForThisBe=_ref51.checkForThisBeforeSuper,seenSuper;return seenSuper=!1,context.traverseChildren(!0,function(child){var childArgs;return child instanceof SuperCall?(!child.variable.accessor&&(childArgs=child.args.filter(function(arg){return!(arg instanceof Class)&&(!(arg instanceof Code)||arg.bound)}),Block.wrap(childArgs).traverseChildren(!0,function(node){if(node["this"])return node.error("Can't call super with @params in derived class constructors")})),seenSuper=!0,iterator(child)):(void 0===_ref51$checkForThisBe||_ref51$checkForThisBe)&&child instanceof ThisLiteral&&"derived"===_this62.ctor&&!seenSuper&&child.error("Can't reference 'this' before calling super in derived class constructors"),!(child instanceof SuperCall)&&(!(child instanceof Code)||child.bound)}),seenSuper}},{key:"propagateLhs",value:function propagateLhs(){var j,len1,name,param,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++){param=ref1[j];var _param=param;name=_param.name,name instanceof Arr||name instanceof Obj?results1.push(name.propagateLhs(!0)):param instanceof Expansion?results1.push(param.lhs=!0):results1.push(void 0)}return results1}},{key:"astAddParamsToScope",value:function astAddParamsToScope(o){return this.eachParamName(function(name){return o.scope.add(name,"param")})}},{key:"astNode",value:function astNode(o){var _this63=this,seenSuper;return this.updateOptions(o),this.checkForAsyncOrGeneratorConstructor(),this.checkForDuplicateParams(),this.disallowSuperInParamDefaults({forAst:!0}),this.disallowLoneExpansionAndMultipleSplats(),seenSuper=this.checkSuperCallsInConstructorBody(),"derived"!==this.ctor||seenSuper||this.eachParamName(function(name,node){if(node["this"])return _this63.flagThisParamInDerivedClassConstructorWithoutCallingSuper(node)}),this.astAddParamsToScope(o),this.body.isEmpty()||this.noReturn||this.body.makeReturn(null,!0),_get(_getPrototypeOf(Code.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isMethod?"ClassMethod":this.bound?"ArrowFunctionExpression":"FunctionExpression"}},{key:"paramForAst",value:function paramForAst(param){var name,splat,value;return param instanceof Expansion?param:(name=param.name,value=param.value,splat=param.splat,splat?new Splat(name,{lhs:!0,postfix:splat.postfix}).withLocationDataFrom(param):null==value?name:new Assign(name,value,null,{param:!0}).withLocationDataFrom({locationData:mergeLocationData(name.locationData,value.locationData)}))}},{key:"methodAstProperties",value:function methodAstProperties(o){var _this64=this,getIsComputed,ref1,ref2,ref3,ref4;return getIsComputed=function(){return!!(_this64.name instanceof Index)||!!(_this64.name instanceof ComputedPropertyName)||!!(_this64.name.name instanceof ComputedPropertyName)},{static:!!this.isStatic,key:this.name.ast(o),computed:getIsComputed(),kind:this.ctor?"constructor":"method",operator:null==(ref1=null==(ref2=this.operatorToken)?void 0:ref2.value)?"=":ref1,staticClassName:null==(ref3=null==(ref4=this.isStatic.staticClassName)?void 0:ref4.ast(o))?null:ref3,bound:!!this.bound}}},{key:"astProperties",value:function astProperties(o){var param,ref1;return Object.assign({params:function(){var j,len1,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],results1.push(this.paramForAst(param).ast(o));return results1}.call(this),body:this.body.ast(Object.assign({},o,{checkForDirectives:!0}),LEVEL_TOP),generator:!!this.isGenerator,async:!!this.isAsync,id:null,hasIndentedBody:this.body.locationData.first_line>(null==(ref1=this.funcGlyph)?void 0:ref1.locationData.first_line)},this.isMethod?this.methodAstProperties(o):{})}},{key:"astLocationData",value:function(){var astLocationData,functionLocationData;return(functionLocationData=_get(_getPrototypeOf(Code.prototype),"astLocationData",this).call(this),!this.isMethod)?functionLocationData:(astLocationData=mergeAstLocationData(this.name.astLocationData(),functionLocationData),null!=this.isStatic.staticClassName&&(astLocationData=mergeAstLocationData(this.isStatic.staticClassName.astLocationData(),astLocationData)),astLocationData)}}]),Code}(Base);return Code.prototype.children=["params","body"],Code.prototype.jumps=NO,Code}.call(this),exports.Param=Param=function(){var Param=function(_Base41){"use strict";function Param(name1,value1,splat1){var _this65;_classCallCheck(this,Param);var message,token;return _this65=_super75.call(this),_this65.name=name1,_this65.value=value1,_this65.splat=splat1,message=isUnassignable(_this65.name.unwrapAll().value),message&&_this65.name.error(message),_this65.name instanceof Obj&&_this65.name.generated&&(token=_this65.name.objects[0].operatorToken,token.error("unexpected ".concat(token.value))),_this65}_inherits(Param,_Base41);var _super75=_createSuper(Param);return _createClass(Param,[{key:"compileToFragments",value:function compileToFragments(o){return this.name.compileToFragments(o,LEVEL_LIST)}},{key:"compileToFragmentsWithoutComments",value:function compileToFragmentsWithoutComments(o){return this.name.compileToFragmentsWithoutComments(o,LEVEL_LIST)}},{key:"asReference",value:function asReference(o){var name,node;return this.reference?this.reference:(node=this.name,node["this"]?(name=node.properties[0].name.value,0<=indexOf.call(JS_FORBIDDEN,name)&&(name="_".concat(name)),node=new IdentifierLiteral(o.scope.freeVariable(name))):node.shouldCache()&&(node=new IdentifierLiteral(o.scope.freeVariable("arg"))),node=new Value(node),node.updateLocationDataIfMissing(this.locationData),this.reference=node)}},{key:"shouldCache",value:function shouldCache(){return this.name.shouldCache()}},{key:"eachName",value:function eachName(iterator){var _this66=this,name=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this.name,atParam,checkAssignabilityOfLiteral,j,len1,nObj,node,obj,ref1,ref2;if(checkAssignabilityOfLiteral=function(literal){var message;if(message=isUnassignable(literal.value),message&&literal.error(message),!literal.isAssignable())return literal.error("'".concat(literal.value,"' can't be assigned"))},atParam=function(obj){var originalObj=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return iterator("@".concat(obj.properties[0].name.value),obj,_this66,originalObj)},name instanceof Call&&name.error("Function invocation can't be assigned"),name instanceof Literal)return checkAssignabilityOfLiteral(name),iterator(name.value,name,this);if(name instanceof Value)return atParam(name);for(ref2=null==(ref1=name.objects)?[]:ref1,j=0,len1=ref2.length;j<len1;j++)obj=ref2[j],nObj=obj,obj instanceof Assign&&null==obj.context&&(obj=obj.variable),obj instanceof Assign?(obj=obj.value instanceof Assign?obj.value.variable:obj.value,this.eachName(iterator,obj.unwrap())):obj instanceof Splat?(node=obj.name.unwrap(),iterator(node.value,node,this)):obj instanceof Value?obj.isArray()||obj.isObject()?this.eachName(iterator,obj.base):obj["this"]?atParam(obj,nObj):(checkAssignabilityOfLiteral(obj.base),iterator(obj.base.value,obj.base,this)):obj instanceof Elision?obj:!(obj instanceof Expansion)&&obj.error("illegal parameter ".concat(obj.compile()))}},{key:"renameParam",value:function renameParam(node,newNode){var isNode,replacement;return isNode=function(candidate){return candidate===node},replacement=function(node,parent){var key;return parent instanceof Obj?(key=node,node["this"]&&(key=node.properties[0].name),node["this"]&&key.value===newNode.value?new Value(newNode):new Assign(new Value(key),newNode,"object")):newNode},this.replaceInContext(isNode,replacement)}}]),Param}(Base);return Param.prototype.children=["name","value"],Param}.call(this),exports.Splat=Splat=function(){var Splat=function(_Base42){"use strict";function Splat(name){var _ref52=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},lhs1=_ref52.lhs,_ref52$postfix=_ref52.postfix,_this67;return _classCallCheck(this,Splat),_this67=_super76.call(this),_this67.lhs=lhs1,_this67.postfix=void 0===_ref52$postfix||_ref52$postfix,_this67.name=name.compile?name:new Literal(name),_this67}_inherits(Splat,_Base42);var _super76=_createSuper(Splat);return _createClass(Splat,[{key:"shouldCache",value:function shouldCache(){return!1}},{key:"isAssignable",value:function isAssignable(){var _ref53=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},_ref53$allowComplexSp=_ref53.allowComplexSplat;return this.name instanceof Obj||this.name instanceof Parens?void 0!==_ref53$allowComplexSp&&_ref53$allowComplexSp:this.name.isAssignable()&&(!this.name.isAtomic||this.name.isAtomic())}},{key:"assigns",value:function assigns(name){return this.name.assigns(name)}},{key:"compileNode",value:function compileNode(o){var compiledSplat;return compiledSplat=[this.makeCode("...")].concat(_toConsumableArray(this.name.compileToFragments(o,LEVEL_OP))),this.jsx?[this.makeCode("{")].concat(_toConsumableArray(compiledSplat),[this.makeCode("}")]):compiledSplat}},{key:"unwrap",value:function unwrap(){return this.name}},{key:"propagateLhs",value:function propagateLhs(setLhs){var base1;return setLhs&&(this.lhs=!0),this.lhs?"function"==typeof(base1=this.name).propagateLhs?base1.propagateLhs(!0):void 0:void 0}},{key:"astType",value:function astType(){return this.jsx?"JSXSpreadAttribute":this.lhs?"RestElement":"SpreadElement"}},{key:"astProperties",value:function astProperties(o){return{argument:this.name.ast(o,LEVEL_OP),postfix:this.postfix}}}]),Splat}(Base);return Splat.prototype.children=["name"],Splat}.call(this),exports.Expansion=Expansion=function(){var Expansion=function(_Base43){"use strict";function Expansion(){return _classCallCheck(this,Expansion),_super77.apply(this,arguments)}_inherits(Expansion,_Base43);var _super77=_createSuper(Expansion);return _createClass(Expansion,[{key:"compileNode",value:function compileNode(){return this.throwLhsError()}},{key:"asReference",value:function asReference(){return this}},{key:"eachName",value:function eachName(){}},{key:"throwLhsError",value:function throwLhsError(){return this.error("Expansion must be used inside a destructuring assignment or parameter list")}},{key:"astNode",value:function astNode(o){return this.lhs||this.throwLhsError(),_get(_getPrototypeOf(Expansion.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"RestElement"}},{key:"astProperties",value:function astProperties(){return{argument:null}}}]),Expansion}(Base);return Expansion.prototype.shouldCache=NO,Expansion}.call(this),exports.Elision=Elision=function(){var Elision=function(_Base44){"use strict";function Elision(){return _classCallCheck(this,Elision),_super78.apply(this,arguments)}_inherits(Elision,_Base44);var _super78=_createSuper(Elision);return _createClass(Elision,[{key:"compileToFragments",value:function compileToFragments(o,level){var fragment;return fragment=_get(_getPrototypeOf(Elision.prototype),"compileToFragments",this).call(this,o,level),fragment.isElision=!0,fragment}},{key:"compileNode",value:function compileNode(){return[this.makeCode(", ")]}},{key:"asReference",value:function asReference(){return this}},{key:"eachName",value:function eachName(){}},{key:"astNode",value:function astNode(){return null}}]),Elision}(Base);return Elision.prototype.isAssignable=YES,Elision.prototype.shouldCache=NO,Elision}.call(this),exports.While=While=function(){var While=function(_Base45){"use strict";function While(condition1){var _ref54=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},inverted=_ref54.invert,guard=_ref54.guard,isLoop=_ref54.isLoop,_this68;return _classCallCheck(this,While),_this68=_super79.call(this),_this68.condition=condition1,_this68.inverted=inverted,_this68.guard=guard,_this68.isLoop=isLoop,_this68}_inherits(While,_Base45);var _super79=_createSuper(While);return _createClass(While,[{key:"makeReturn",value:function makeReturn(results,mark){return results?_get(_getPrototypeOf(While.prototype),"makeReturn",this).call(this,results,mark):(this.returns=!this.jumps(),mark?void(this.returns&&this.body.makeReturn(results,mark)):this)}},{key:"addBody",value:function addBody(body1){return this.body=body1,this}},{key:"jumps",value:function jumps(){var expressions,j,jumpNode,len1,node;if(expressions=this.body.expressions,!expressions.length)return!1;for(j=0,len1=expressions.length;j<len1;j++)if(node=expressions[j],jumpNode=node.jumps({loop:!0}))return jumpNode;return!1}},{key:"compileNode",value:function compileNode(o){var answer,body,rvar,set;return o.indent+=TAB,set="",body=this.body,body.isEmpty()?body=this.makeCode(""):(this.returns&&(body.makeReturn(rvar=o.scope.freeVariable("results")),set="".concat(this.tab).concat(rvar," = [];\n")),this.guard&&(1<body.expressions.length?body.expressions.unshift(new If(new Parens(this.guard).invert(),new StatementLiteral("continue"))):this.guard&&(body=Block.wrap([new If(this.guard,body)]))),body=[].concat(this.makeCode("\n"),body.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab)))),answer=[].concat(this.makeCode(set+this.tab+"while ("),this.processedCondition().compileToFragments(o,LEVEL_PAREN),this.makeCode(") {"),body,this.makeCode("}")),this.returns&&answer.push(this.makeCode("\n".concat(this.tab,"return ").concat(rvar,";"))),answer}},{key:"processedCondition",value:function processedCondition(){return null==this.processedConditionCache?this.processedConditionCache=this.inverted?this.condition.invert():this.condition:this.processedConditionCache}},{key:"astType",value:function astType(){return"WhileStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{test:this.condition.ast(o,LEVEL_PAREN),body:this.body.ast(o,LEVEL_TOP),guard:null==(ref1=null==(ref2=this.guard)?void 0:ref2.ast(o))?null:ref1,inverted:!!this.inverted,postfix:!!this.postfix,loop:!!this.isLoop}}}]),While}(Base);return While.prototype.children=["condition","guard","body"],While.prototype.isStatement=YES,While}.call(this),exports.Op=Op=function(){var Op=function(_Base46){"use strict";function Op(op,first,second,flip){var _ref55=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},invertOperator=_ref55.invertOperator,_ref55$originalOperat=_ref55.originalOperator,originalOperator=void 0===_ref55$originalOperat?op:_ref55$originalOperat,_this69;_classCallCheck(this,Op);var call,firstCall,message,ref1,unwrapped;return(_this69=_super80.call(this),_this69.invertOperator=invertOperator,_this69.originalOperator=originalOperator,"new"===op)?((firstCall=unwrapped=first.unwrap())instanceof Call||(firstCall=unwrapped.base)instanceof Call)&&!firstCall["do"]&&!firstCall.isNew?_possibleConstructorReturn(_this69,new Value(firstCall.newInstance(),firstCall===unwrapped?[]:unwrapped.properties)):(first instanceof Parens||first.unwrap()instanceof IdentifierLiteral||("function"==typeof first.hasProperties?first.hasProperties():void 0)||(first=new Parens(first)),call=new Call(first,[]),call.locationData=_this69.locationData,call.isNew=!0,_possibleConstructorReturn(_this69,call)):(_this69.operator=CONVERSIONS[op]||op,_this69.first=first,_this69.second=second,_this69.flip=!!flip,("--"===(ref1=_this69.operator)||"++"===ref1)&&(message=isUnassignable(_this69.first.unwrapAll().value),message&&_this69.first.error(message)),_possibleConstructorReturn(_this69,_assertThisInitialized(_this69)))}_inherits(Op,_Base46);var _super80=_createSuper(Op);return _createClass(Op,[{key:"isNumber",value:function(){var ref1;return this.isUnary()&&("+"===(ref1=this.operator)||"-"===ref1)&&this.first instanceof Value&&this.first.isNumber()}},{key:"isAwait",value:function isAwait(){return"await"===this.operator}},{key:"isYield",value:function isYield(){var ref1;return"yield"===(ref1=this.operator)||"yield*"===ref1}},{key:"isUnary",value:function isUnary(){return!this.second}},{key:"shouldCache",value:function shouldCache(){return!this.isNumber()}},{key:"isChainable",value:function isChainable(){var ref1;return"<"===(ref1=this.operator)||">"===ref1||">="===ref1||"<="===ref1||"==="===ref1||"!=="===ref1}},{key:"isChain",value:function isChain(){return this.isChainable()&&this.first.isChainable()}},{key:"invert",value:function invert(){var allInvertable,curr,fst,op,ref1;if(this.isInOperator())return this.invertOperator="!",this;if(this.isChain()){for(allInvertable=!0,curr=this;curr&&curr.operator;)allInvertable&&(allInvertable=curr.operator in INVERSIONS),curr=curr.first;if(!allInvertable)return new Parens(this).invert();for(curr=this;curr&&curr.operator;)curr.invert=!curr.invert,curr.operator=INVERSIONS[curr.operator],curr=curr.first;return this}return(op=INVERSIONS[this.operator])?(this.operator=op,this.first.unwrap()instanceof Op&&this.first.invert(),this):this.second?new Parens(this).invert():"!"===this.operator&&(fst=this.first.unwrap())instanceof Op&&("!"===(ref1=fst.operator)||"in"===ref1||"instanceof"===ref1)?fst:new Op("!",this)}},{key:"unfoldSoak",value:function unfoldSoak(o){var ref1;return("++"===(ref1=this.operator)||"--"===ref1||"delete"===ref1)&&_unfoldSoak(o,this,"first")}},{key:"generateDo",value:function generateDo(exp){var call,func,j,len1,param,passedParams,ref,ref1;for(passedParams=[],func=exp instanceof Assign&&(ref=exp.value.unwrap())instanceof Code?ref:exp,ref1=func.params||[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],param.value?(passedParams.push(param.value),delete param.value):passedParams.push(param);return call=new Call(exp,passedParams),call["do"]=!0,call}},{key:"isInOperator",value:function isInOperator(){return"in"===this.originalOperator}},{key:"compileNode",value:function compileNode(o){var answer,inNode,isChain,lhs,rhs;if(this.isInOperator())return inNode=new In(this.first,this.second),(this.invertOperator?inNode.invert():inNode).compileNode(o);if(this.invertOperator)return this.invertOperator=null,this.invert().compileNode(o);if("do"===this.operator)return Op.prototype.generateDo(this.first).compileNode(o);if(isChain=this.isChain(),isChain||(this.first.front=this.front),this.checkDeleteOperand(o),this.isYield()||this.isAwait())return this.compileContinuation(o);if(this.isUnary())return this.compileUnary(o);if(isChain)return this.compileChain(o);switch(this.operator){case"?":return this.compileExistence(o,this.second.isDefaultValue);case"//":return this.compileFloorDivision(o);case"%%":return this.compileModulo(o);default:return lhs=this.first.compileToFragments(o,LEVEL_OP),rhs=this.second.compileToFragments(o,LEVEL_OP),answer=[].concat(lhs,this.makeCode(" ".concat(this.operator," ")),rhs),o.level<=LEVEL_OP?answer:this.wrapInParentheses(answer);}}},{key:"compileChain",value:function compileChain(o){var _this$first$second$ca=this.first.second.cache(o),_this$first$second$ca2=_slicedToArray(_this$first$second$ca,2),fragments,fst,shared;return this.first.second=_this$first$second$ca2[0],shared=_this$first$second$ca2[1],fst=this.first.compileToFragments(o,LEVEL_OP),fragments=fst.concat(this.makeCode(" ".concat(this.invert?"&&":"||"," ")),shared.compileToFragments(o),this.makeCode(" ".concat(this.operator," ")),this.second.compileToFragments(o,LEVEL_OP)),this.wrapInParentheses(fragments)}},{key:"compileExistence",value:function compileExistence(o,checkOnlyUndefined){var fst,ref;return this.first.shouldCache()?(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),fst=new Parens(new Assign(ref,this.first))):(fst=this.first,ref=fst),new If(new Existence(fst,checkOnlyUndefined),ref,{type:"if"}).addElse(this.second).compileToFragments(o)}},{key:"compileUnary",value:function compileUnary(o){var op,parts,plusMinus;return(parts=[],op=this.operator,parts.push([this.makeCode(op)]),"!"===op&&this.first instanceof Existence)?(this.first.negated=!this.first.negated,this.first.compileToFragments(o)):o.level>=LEVEL_ACCESS?new Parens(this).compileToFragments(o):(plusMinus="+"===op||"-"===op,("typeof"===op||"delete"===op||plusMinus&&this.first instanceof Op&&this.first.operator===op)&&parts.push([this.makeCode(" ")]),plusMinus&&this.first instanceof Op&&(this.first=new Parens(this.first)),parts.push(this.first.compileToFragments(o,LEVEL_OP)),this.flip&&parts.reverse(),this.joinFragmentArrays(parts,""))}},{key:"compileContinuation",value:function compileContinuation(o){var op,parts,ref1;return parts=[],op=this.operator,this.isAwait()||this.checkContinuation(o),0<=indexOf.call(Object.keys(this.first),"expression")&&!(this.first instanceof Throw)?null!=this.first.expression&&parts.push(this.first.expression.compileToFragments(o,LEVEL_OP)):(o.level>=LEVEL_PAREN&&parts.push([this.makeCode("(")]),parts.push([this.makeCode(op)]),""!==(null==(ref1=this.first.base)?void 0:ref1.value)&&parts.push([this.makeCode(" ")]),parts.push(this.first.compileToFragments(o,LEVEL_OP)),o.level>=LEVEL_PAREN&&parts.push([this.makeCode(")")])),this.joinFragmentArrays(parts,"")}},{key:"checkContinuation",value:function checkContinuation(o){var ref1;if(null==o.scope.parent&&this.error("".concat(this.operator," can only occur inside functions")),(null==(ref1=o.scope.method)?void 0:ref1.bound)&&o.scope.method.isGenerator)return this.error("yield cannot occur inside bound (fat arrow) functions")}},{key:"compileFloorDivision",value:function compileFloorDivision(o){var div,floor,second;return floor=new Value(new IdentifierLiteral("Math"),[new Access(new PropertyName("floor"))]),second=this.second.shouldCache()?new Parens(this.second):this.second,div=new Op("/",this.first,second),new Call(floor,[div]).compileToFragments(o)}},{key:"compileModulo",value:function compileModulo(o){var mod;return mod=new Value(new Literal(utility("modulo",o))),new Call(mod,[this.first,this.second]).compileToFragments(o)}},{key:"toString",value:function toString(idt){return _get(_getPrototypeOf(Op.prototype),"toString",this).call(this,idt,this.constructor.name+" "+this.operator)}},{key:"checkDeleteOperand",value:function checkDeleteOperand(o){if("delete"===this.operator&&o.scope.check(this.first.unwrapAll().value))return this.error("delete operand may not be argument or var")}},{key:"astNode",value:function astNode(o){return this.isYield()&&this.checkContinuation(o),this.checkDeleteOperand(o),_get(_getPrototypeOf(Op.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){if(this.isAwait())return"AwaitExpression";if(this.isYield())return"YieldExpression";if(this.isChain())return"ChainedComparison";switch(this.operator){case"||":case"&&":case"?":return"LogicalExpression";case"++":case"--":return"UpdateExpression";default:return this.isUnary()?"UnaryExpression":"BinaryExpression";}}},{key:"operatorAst",value:function operatorAst(){return"".concat(this.invertOperator?"".concat(this.invertOperator," "):"").concat(this.originalOperator)}},{key:"chainAstProperties",value:function chainAstProperties(o){var currentOp,operand,operands,operators;for(operators=[this.operatorAst()],operands=[this.second],currentOp=this.first;;)if(operators.unshift(currentOp.operatorAst()),operands.unshift(currentOp.second),currentOp=currentOp.first,!currentOp.isChainable()){operands.unshift(currentOp);break}return{operators:operators,operands:function(){var j,len1,results1;for(results1=[],j=0,len1=operands.length;j<len1;j++)operand=operands[j],results1.push(operand.ast(o,LEVEL_OP));return results1}()}}},{key:"astProperties",value:function astProperties(o){var argument,firstAst,operatorAst,ref1,secondAst;if(this.isChain())return this.chainAstProperties(o);switch(firstAst=this.first.ast(o,LEVEL_OP),secondAst=null==(ref1=this.second)?void 0:ref1.ast(o,LEVEL_OP),operatorAst=this.operatorAst(),!1){case!this.isUnary():return argument=this.isYield()&&""===this.first.unwrap().value?null:firstAst,this.isAwait()?{argument:argument}:this.isYield()?{argument:argument,delegate:"yield*"===this.operator}:{argument:argument,operator:operatorAst,prefix:!this.flip};default:return{left:firstAst,right:secondAst,operator:operatorAst};}}}]),Op}(Base),CONVERSIONS,INVERSIONS;return CONVERSIONS={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},INVERSIONS={"!==":"===","===":"!=="},Op.prototype.children=["first","second"],Op}.call(this),exports.In=In=function(){var In=function(_Base47){"use strict";function In(object1,array){var _this70;return _classCallCheck(this,In),_this70=_super81.call(this),_this70.object=object1,_this70.array=array,_this70}_inherits(In,_Base47);var _super81=_createSuper(In);return _createClass(In,[{key:"compileNode",value:function compileNode(o){var hasSplat,j,len1,obj,ref1;if(this.array instanceof Value&&this.array.isArray()&&this.array.base.objects.length){for(ref1=this.array.base.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],!!(obj instanceof Splat)){hasSplat=!0;break}if(!hasSplat)return this.compileOrTest(o)}return this.compileLoopTest(o)}},{key:"compileOrTest",value:function compileOrTest(o){var _this$object$cache=this.object.cache(o,LEVEL_OP),_this$object$cache2=_slicedToArray(_this$object$cache,2),cmp,cnj,i,item,j,len1,ref,ref1,sub,tests;sub=_this$object$cache2[0],ref=_this$object$cache2[1];var _ref56=this.negated?[" !== "," && "]:[" === "," || "],_ref57=_slicedToArray(_ref56,2);for(cmp=_ref57[0],cnj=_ref57[1],tests=[],ref1=this.array.base.objects,(i=j=0,len1=ref1.length);j<len1;i=++j)item=ref1[i],i&&tests.push(this.makeCode(cnj)),tests=tests.concat(i?ref:sub,this.makeCode(cmp),item.compileToFragments(o,LEVEL_ACCESS));return o.level<LEVEL_OP?tests:this.wrapInParentheses(tests)}},{key:"compileLoopTest",value:function compileLoopTest(o){var _this$object$cache3=this.object.cache(o,LEVEL_LIST),_this$object$cache4=_slicedToArray(_this$object$cache3,2),fragments,ref,sub;return(sub=_this$object$cache4[0],ref=_this$object$cache4[1],fragments=[].concat(this.makeCode(utility("indexOf",o)+".call("),this.array.compileToFragments(o,LEVEL_LIST),this.makeCode(", "),ref,this.makeCode(") "+(this.negated?"< 0":">= 0"))),fragmentsToText(sub)===fragmentsToText(ref))?fragments:(fragments=sub.concat(this.makeCode(", "),fragments),o.level<LEVEL_LIST?fragments:this.wrapInParentheses(fragments))}},{key:"toString",value:function toString(idt){return _get(_getPrototypeOf(In.prototype),"toString",this).call(this,idt,this.constructor.name+(this.negated?"!":""))}}]),In}(Base);return In.prototype.children=["object","array"],In.prototype.invert=NEGATE,In}.call(this),exports.Try=Try=function(){var Try=function(_Base48){"use strict";function Try(attempt,_catch,ensure,finallyTag){var _this71;return _classCallCheck(this,Try),_this71=_super82.call(this),_this71.attempt=attempt,_this71["catch"]=_catch,_this71.ensure=ensure,_this71.finallyTag=finallyTag,_this71}_inherits(Try,_Base48);var _super82=_createSuper(Try);return _createClass(Try,[{key:"jumps",value:function jumps(o){var ref1;return this.attempt.jumps(o)||(null==(ref1=this["catch"])?void 0:ref1.jumps(o))}},{key:"makeReturn",value:function makeReturn(results,mark){var ref1,ref2;return mark?(null!=(ref1=this.attempt)&&ref1.makeReturn(results,mark),void(null!=(ref2=this["catch"])&&ref2.makeReturn(results,mark))):(this.attempt&&(this.attempt=this.attempt.makeReturn(results)),this["catch"]&&(this["catch"]=this["catch"].makeReturn(results)),this)}},{key:"compileNode",value:function compileNode(o){var catchPart,ensurePart,generatedErrorVariableName,originalIndent,tryPart;return originalIndent=o.indent,o.indent+=TAB,tryPart=this.attempt.compileToFragments(o,LEVEL_TOP),catchPart=this["catch"]?this["catch"].compileToFragments(merge(o,{indent:originalIndent}),LEVEL_TOP):this.ensure||this["catch"]?[]:(generatedErrorVariableName=o.scope.freeVariable("error",{reserve:!1}),[this.makeCode(" catch (".concat(generatedErrorVariableName,") {}"))]),ensurePart=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}"))):[],[].concat(this.makeCode("".concat(this.tab,"try {\n")),tryPart,this.makeCode("\n".concat(this.tab,"}")),catchPart,ensurePart)}},{key:"astType",value:function astType(){return"TryStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{block:this.attempt.ast(o,LEVEL_TOP),handler:null==(ref1=null==(ref2=this["catch"])?void 0:ref2.ast(o))?null:ref1,finalizer:null==this.ensure?null:Object.assign(this.ensure.ast(o,LEVEL_TOP),mergeAstLocationData(jisonLocationDataToAstLocationData(this.finallyTag.locationData),this.ensure.astLocationData()))}}}]),Try}(Base);return Try.prototype.children=["attempt","catch","ensure"],Try.prototype.isStatement=YES,Try}.call(this),exports.Catch=Catch=function(){var Catch=function(_Base49){"use strict";function Catch(recovery,errorVariable){var _this72;_classCallCheck(this,Catch);var base1,ref1;return _this72=_super83.call(this),_this72.recovery=recovery,_this72.errorVariable=errorVariable,null!=(ref1=_this72.errorVariable)&&"function"==typeof(base1=ref1.unwrap()).propagateLhs&&base1.propagateLhs(!0),_this72}_inherits(Catch,_Base49);var _super83=_createSuper(Catch);return _createClass(Catch,[{key:"jumps",value:function jumps(o){return this.recovery.jumps(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var ret;if(ret=this.recovery.makeReturn(results,mark),!mark)return this.recovery=ret,this}},{key:"compileNode",value:function compileNode(o){var generatedErrorVariableName,placeholder;return o.indent+=TAB,generatedErrorVariableName=o.scope.freeVariable("error",{reserve:!1}),placeholder=new IdentifierLiteral(generatedErrorVariableName),this.checkUnassignable(),this.errorVariable&&this.recovery.unshift(new Assign(this.errorVariable,placeholder)),[].concat(this.makeCode(" catch ("),placeholder.compileToFragments(o),this.makeCode(") {\n"),this.recovery.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}")))}},{key:"checkUnassignable",value:function checkUnassignable(){var message;if(this.errorVariable&&(message=isUnassignable(this.errorVariable.unwrapAll().value),message))return this.errorVariable.error(message)}},{key:"astNode",value:function astNode(o){var ref1;return this.checkUnassignable(),null!=(ref1=this.errorVariable)&&ref1.eachName(function(name){var alreadyDeclared;return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared}),_get(_getPrototypeOf(Catch.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"CatchClause"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{param:null==(ref1=null==(ref2=this.errorVariable)?void 0:ref2.ast(o))?null:ref1,body:this.recovery.ast(o,LEVEL_TOP)}}}]),Catch}(Base);return Catch.prototype.children=["recovery","errorVariable"],Catch.prototype.isStatement=YES,Catch}.call(this),exports.Throw=Throw=function(){var Throw=function(_Base50){"use strict";function Throw(expression1){var _this73;return _classCallCheck(this,Throw),_this73=_super84.call(this),_this73.expression=expression1,_this73}_inherits(Throw,_Base50);var _super84=_createSuper(Throw);return _createClass(Throw,[{key:"compileNode",value:function compileNode(o){var fragments;return fragments=this.expression.compileToFragments(o,LEVEL_LIST),unshiftAfterComments(fragments,this.makeCode("throw ")),fragments.unshift(this.makeCode(this.tab)),fragments.push(this.makeCode(";")),fragments}},{key:"astType",value:function astType(){return"ThrowStatement"}},{key:"astProperties",value:function astProperties(o){return{argument:this.expression.ast(o,LEVEL_LIST)}}}]),Throw}(Base);return Throw.prototype.children=["expression"],Throw.prototype.isStatement=YES,Throw.prototype.jumps=NO,Throw.prototype.makeReturn=THIS,Throw}.call(this),exports.Existence=Existence=function(){var Existence=function(_Base51){"use strict";function Existence(expression1){var onlyNotUndefined=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this74;_classCallCheck(this,Existence);var salvagedComments;return _this74=_super85.call(this),_this74.expression=expression1,_this74.comparisonTarget=onlyNotUndefined?"undefined":"null",salvagedComments=[],_this74.expression.traverseChildren(!0,function(child){var comment,j,len1,ref1;if(child.comments){for(ref1=child.comments,j=0,len1=ref1.length;j<len1;j++)comment=ref1[j],0>indexOf.call(salvagedComments,comment)&&salvagedComments.push(comment);return delete child.comments}}),attachCommentsToNode(salvagedComments,_assertThisInitialized(_this74)),moveComments(_this74.expression,_assertThisInitialized(_this74)),_this74}_inherits(Existence,_Base51);var _super85=_createSuper(Existence);return _createClass(Existence,[{key:"compileNode",value:function compileNode(o){var cmp,cnj,code;if(this.expression.front=this.front,code=this.expression.compile(o,LEVEL_OP),this.expression.unwrap()instanceof IdentifierLiteral&&!o.scope.check(code)){var _ref58=this.negated?["===","||"]:["!==","&&"],_ref59=_slicedToArray(_ref58,2);cmp=_ref59[0],cnj=_ref59[1],code="typeof ".concat(code," ").concat(cmp," \"undefined\"")+("undefined"===this.comparisonTarget?"":" ".concat(cnj," ").concat(code," ").concat(cmp," ").concat(this.comparisonTarget))}else cmp="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",code="".concat(code," ").concat(cmp," ").concat(this.comparisonTarget);return[this.makeCode(o.level<=LEVEL_COND?code:"(".concat(code,")"))]}},{key:"astType",value:function astType(){return"UnaryExpression"}},{key:"astProperties",value:function astProperties(o){return{argument:this.expression.ast(o),operator:"?",prefix:!1}}}]),Existence}(Base);return Existence.prototype.children=["expression"],Existence.prototype.invert=NEGATE,Existence}.call(this),exports.Parens=Parens=function(){var Parens=function(_Base52){"use strict";function Parens(body1){var _this75;return _classCallCheck(this,Parens),_this75=_super86.call(this),_this75.body=body1,_this75}_inherits(Parens,_Base52);var _super86=_createSuper(Parens);return _createClass(Parens,[{key:"unwrap",value:function unwrap(){return this.body}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(o){var bare,expr,fragments,ref1,shouldWrapComment;return(expr=this.body.unwrap(),shouldWrapComment=null==(ref1=expr.comments)?void 0:ref1.some(function(comment){return comment.here&&!comment.unshift&&!comment.newLine}),expr instanceof Value&&expr.isAtomic()&&!this.jsxAttribute&&!shouldWrapComment)?(expr.front=this.front,expr.compileToFragments(o)):(fragments=expr.compileToFragments(o,LEVEL_PAREN),bare=o.level<LEVEL_OP&&!shouldWrapComment&&(expr instanceof Op&&!expr.isInOperator()||expr.unwrap()instanceof Call||expr instanceof For&&expr.returns)&&(o.level<LEVEL_COND||3>=fragments.length),this.jsxAttribute?this.wrapInBraces(fragments):bare?fragments:this.wrapInParentheses(fragments))}},{key:"astNode",value:function astNode(o){return this.body.unwrap().ast(o,LEVEL_PAREN)}}]),Parens}(Base);return Parens.prototype.children=["body"],Parens}.call(this),exports.StringWithInterpolations=StringWithInterpolations=function(){var StringWithInterpolations=function(_Base53){"use strict";function StringWithInterpolations(body1){var _ref60=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},quote=_ref60.quote,startQuote=_ref60.startQuote,jsxAttribute=_ref60.jsxAttribute,_this76;return _classCallCheck(this,StringWithInterpolations),_this76=_super87.call(this),_this76.body=body1,_this76.quote=quote,_this76.startQuote=startQuote,_this76.jsxAttribute=jsxAttribute,_this76}_inherits(StringWithInterpolations,_Base53);var _super87=_createSuper(StringWithInterpolations);return _createClass(StringWithInterpolations,[{key:"unwrap",value:function unwrap(){return this}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"extractElements",value:function extractElements(o){var _ref61=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},includeInterpolationWrappers=_ref61.includeInterpolationWrappers,isJsx=_ref61.isJsx,elements,expr,salvagedComments;return expr=this.body.unwrap(),elements=[],salvagedComments=[],expr.traverseChildren(!1,function(node){var comment,commentPlaceholder,empty,j,k,len1,len2,ref1,ref2,ref3,unwrapped;if(node instanceof StringLiteral){if(node.comments){var _salvagedComments;(_salvagedComments=salvagedComments).push.apply(_salvagedComments,_toConsumableArray(node.comments)),delete node.comments}return elements.push(node),!0}if(node instanceof Interpolation){if(0!==salvagedComments.length){for(j=0,len1=salvagedComments.length;j<len1;j++)comment=salvagedComments[j],comment.unshift=!0,comment.newLine=!0;attachCommentsToNode(salvagedComments,node)}if((unwrapped=null==(ref1=node.expression)?void 0:ref1.unwrapAll())instanceof PassthroughLiteral&&unwrapped.generated&&!(isJsx&&o.compiling)){if(o.compiling){if(commentPlaceholder=new StringLiteral("").withLocationDataFrom(node),commentPlaceholder.comments=unwrapped.comments,node.comments){var _ref62;(_ref62=null==commentPlaceholder.comments?commentPlaceholder.comments=[]:commentPlaceholder.comments).push.apply(_ref62,_toConsumableArray(node.comments))}elements.push(new Value(commentPlaceholder))}else empty=new Interpolation().withLocationDataFrom(node),empty.comments=node.comments,elements.push(empty);}else if(node.expression||includeInterpolationWrappers){if(node.comments){var _ref63;(_ref63=null==(ref2=node.expression)?void 0:null==ref2.comments?ref2.comments=[]:ref2.comments).push.apply(_ref63,_toConsumableArray(node.comments))}elements.push(includeInterpolationWrappers?node:node.expression)}return!1}if(node.comments){if(0!==elements.length&&!(elements[elements.length-1]instanceof StringLiteral)){for(ref3=node.comments,k=0,len2=ref3.length;k<len2;k++)comment=ref3[k],comment.unshift=!1,comment.newLine=!0;attachCommentsToNode(node.comments,elements[elements.length-1])}else{var _salvagedComments2;(_salvagedComments2=salvagedComments).push.apply(_salvagedComments2,_toConsumableArray(node.comments))}delete node.comments}return!0}),elements}},{key:"compileNode",value:function compileNode(o){var code,element,elements,fragments,j,len1,ref1,unquotedElementValue,wrapped;if(null==this.comments&&(this.comments=null==(ref1=this.startQuote)?void 0:ref1.comments),this.jsxAttribute)return wrapped=new Parens(new StringWithInterpolations(this.body)),wrapped.jsxAttribute=!0,wrapped.compileNode(o);for(elements=this.extractElements(o,{isJsx:this.jsx}),fragments=[],this.jsx||fragments.push(this.makeCode("`")),(j=0,len1=elements.length);j<len1;j++)if(element=elements[j],element instanceof StringLiteral)unquotedElementValue=this.jsx?element.unquotedValueForJSX:element.unquotedValueForTemplateLiteral,fragments.push(this.makeCode(unquotedElementValue));else{var _fragments12;this.jsx||fragments.push(this.makeCode("$")),code=element.compileToFragments(o,LEVEL_PAREN),(!this.isNestedTag(element)||code.some(function(fragment){var ref2;return null==(ref2=fragment.comments)?void 0:ref2.some(function(comment){return!1===comment.here})}))&&(code=this.wrapInBraces(code),code[0].isStringWithInterpolations=!0,code[code.length-1].isStringWithInterpolations=!0),(_fragments12=fragments).push.apply(_fragments12,_toConsumableArray(code))}return this.jsx||fragments.push(this.makeCode("`")),fragments}},{key:"isNestedTag",value:function isNestedTag(element){var call;return call="function"==typeof element.unwrapAll?element.unwrapAll():void 0,this.jsx&&call instanceof JSXElement}},{key:"astType",value:function astType(){return"TemplateLiteral"}},{key:"astProperties",value:function astProperties(o){var element,elements,emptyInterpolation,expression,expressions,index,j,last,len1,node,quasis;elements=this.extractElements(o,{includeInterpolationWrappers:!0});var _slice1$call17=slice1.call(elements,-1),_slice1$call18=_slicedToArray(_slice1$call17,1);for(last=_slice1$call18[0],quasis=[],expressions=[],(index=j=0,len1=elements.length);j<len1;index=++j)if(element=elements[index],element instanceof StringLiteral)quasis.push(new TemplateElement(element.originalValue,{tail:element===last}).withLocationDataFrom(element).ast(o));else{var _element2=element;expression=_element2.expression,node=null==expression?(emptyInterpolation=new EmptyInterpolation,emptyInterpolation.locationData=emptyExpressionLocationData({interpolationNode:element,openingBrace:"#{",closingBrace:"}"}),emptyInterpolation):expression.unwrapAll(),expressions.push(astAsBlockIfNeeded(node,o))}return{expressions:expressions,quasis:quasis,quote:this.quote}}}],[{key:"fromStringLiteral",value:function fromStringLiteral(stringLiteral){var updatedString,updatedStringValue;return updatedString=stringLiteral.withoutQuotesInLocationData(),updatedStringValue=new Value(updatedString).withLocationDataFrom(updatedString),new StringWithInterpolations(Block.wrap([updatedStringValue]),{quote:stringLiteral.quote,jsxAttribute:stringLiteral.jsxAttribute}).withLocationDataFrom(stringLiteral)}}]),StringWithInterpolations}(Base);return StringWithInterpolations.prototype.children=["body"],StringWithInterpolations}.call(this),exports.TemplateElement=TemplateElement=function(_Base54){"use strict";function TemplateElement(value1){var _ref64=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},tail1=_ref64.tail,_this77;return _classCallCheck(this,TemplateElement),_this77=_super88.call(this),_this77.value=value1,_this77.tail=tail1,_this77}_inherits(TemplateElement,_Base54);var _super88=_createSuper(TemplateElement);return _createClass(TemplateElement,[{key:"astProperties",value:function astProperties(){return{value:{raw:this.value},tail:!!this.tail}}}]),TemplateElement}(Base),exports.Interpolation=Interpolation=function(){var Interpolation=function(_Base55){"use strict";function Interpolation(expression1){var _this78;return _classCallCheck(this,Interpolation),_this78=_super89.call(this),_this78.expression=expression1,_this78}_inherits(Interpolation,_Base55);var _super89=_createSuper(Interpolation);return _createClass(Interpolation)}(Base);return Interpolation.prototype.children=["expression"],Interpolation}.call(this),exports.EmptyInterpolation=EmptyInterpolation=function(_Base56){"use strict";function EmptyInterpolation(){return _classCallCheck(this,EmptyInterpolation),_super90.call(this)}_inherits(EmptyInterpolation,_Base56);var _super90=_createSuper(EmptyInterpolation);return _createClass(EmptyInterpolation)}(Base),exports.For=For=function(){var For=function(_While){"use strict";function For(body,source){var _this79;return _classCallCheck(this,For),_this79=_super91.call(this),_this79.addBody(body),_this79.addSource(source),_this79}_inherits(For,_While);var _super91=_createSuper(For);return _createClass(For,[{key:"isAwait",value:function isAwait(){var ref1;return null!=(ref1=this["await"])&&ref1}},{key:"addBody",value:function addBody(body){var base1,expressions;return this.body=Block.wrap([body]),expressions=this.body.expressions,expressions.length&&null==(base1=this.body).locationData&&(base1.locationData=mergeLocationData(expressions[0].locationData,expressions[expressions.length-1].locationData)),this}},{key:"addSource",value:function addSource(source){var _this80=this,_source$source=source.source,attr,attribs,attribute,base1,j,k,len1,len2,ref1,ref2,ref3,ref4;for(this.source=void 0!==_source$source&&_source$source,attribs=["name","index","guard","step","own","ownTag","await","awaitTag","object","from"],(j=0,len1=attribs.length);j<len1;j++)attr=attribs[j],this[attr]=null==(ref1=source[attr])?this[attr]:ref1;if(!this.source)return this;if(this.from&&this.index&&this.index.error("cannot use index with for-from"),this.own&&!this.object&&this.ownTag.error("cannot use own with for-".concat(this.from?"from":"in")),this.object){var _ref65=[this.index,this.name];this.name=_ref65[0],this.index=_ref65[1]}for(((null==(ref2=this.index)?void 0:"function"==typeof ref2.isArray?ref2.isArray():void 0)||(null==(ref3=this.index)?void 0:"function"==typeof ref3.isObject?ref3.isObject():void 0))&&this.index.error("index cannot be a pattern matching expression"),this["await"]&&!this.from&&this.awaitTag.error("await must be used with for-from"),this.range=this.source instanceof Value&&this.source.base instanceof Range&&!this.source.properties.length&&!this.from,this.pattern=this.name instanceof Value,this.pattern&&"function"==typeof(base1=this.name.unwrap()).propagateLhs&&base1.propagateLhs(!0),this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.returns=!1,ref4=["source","guard","step","name","index"],(k=0,len2=ref4.length);k<len2;k++)(attribute=ref4[k],!!this[attribute])&&(this[attribute].traverseChildren(!0,function(node){var comment,l,len3,ref5;if(node.comments){for(ref5=node.comments,l=0,len3=ref5.length;l<len3;l++)comment=ref5[l],comment.newLine=comment.unshift=!0;return moveComments(node,_this80[attribute])}}),moveComments(this[attribute],this));return this}},{key:"compileNode",value:function compileNode(o){var _slice1$call19,_slice1$call20,body,bodyFragments,compare,compareDown,declare,declareDown,defPart,down,forClose,forCode,forPartFragments,fragments,guardPart,idt1,increment,index,ivar,kvar,kvarAssign,last,lvar,name,namePart,ref,ref1,resultPart,returnResult,rvar,scope,source,step,stepNum,stepVar,svar,varPart;if(body=Block.wrap([this.body]),ref1=body.expressions,_slice1$call19=slice1.call(ref1,-1),_slice1$call20=_slicedToArray(_slice1$call19,1),last=_slice1$call20[0],_slice1$call19,(null==last?void 0:last.jumps())instanceof Return&&(this.returns=!1),source=this.range?this.source.base:this.source,scope=o.scope,this.pattern||(name=this.name&&this.name.compile(o,LEVEL_LIST)),index=this.index&&this.index.compile(o,LEVEL_LIST),name&&!this.pattern&&scope.find(name),index&&!(this.index instanceof Value)&&scope.find(index),this.returns&&(rvar=scope.freeVariable("results")),this.from?this.pattern&&(ivar=scope.freeVariable("x",{single:!0})):ivar=this.object&&index||scope.freeVariable("i",{single:!0}),kvar=(this.range||this.from)&&name||index||ivar,kvarAssign=kvar===ivar?"":"".concat(kvar," = "),this.step&&!this.range){var _this$cacheToCodeFrag9=this.cacheToCodeFragments(this.step.cache(o,LEVEL_LIST,shouldCacheOrIsAssignable)),_this$cacheToCodeFrag10=_slicedToArray(_this$cacheToCodeFrag9,2);step=_this$cacheToCodeFrag10[0],stepVar=_this$cacheToCodeFrag10[1],this.step.isNumber()&&(stepNum=parseNumber(stepVar))}return this.pattern&&(name=ivar),varPart="",guardPart="",defPart="",idt1=this.tab+TAB,this.range?forPartFragments=source.compileToFragments(merge(o,{index:ivar,name:name,step:this.step,shouldCache:shouldCacheOrIsAssignable})):(svar=this.source.compile(o,LEVEL_LIST),(name||this.own)&&!this.from&&!(this.source.unwrap()instanceof IdentifierLiteral)&&(defPart+="".concat(this.tab).concat(ref=scope.freeVariable("ref")," = ").concat(svar,";\n"),svar=ref),name&&!this.pattern&&!this.from&&(namePart="".concat(name," = ").concat(svar,"[").concat(kvar,"]")),!this.object&&!this.from&&(step!==stepVar&&(defPart+="".concat(this.tab).concat(step,";\n")),down=0>stepNum,!(this.step&&null!=stepNum&&down)&&(lvar=scope.freeVariable("len")),declare="".concat(kvarAssign).concat(ivar," = 0, ").concat(lvar," = ").concat(svar,".length"),declareDown="".concat(kvarAssign).concat(ivar," = ").concat(svar,".length - 1"),compare="".concat(ivar," < ").concat(lvar),compareDown="".concat(ivar," >= 0"),this.step?(null==stepNum?(compare="".concat(stepVar," > 0 ? ").concat(compare," : ").concat(compareDown),declare="(".concat(stepVar," > 0 ? (").concat(declare,") : ").concat(declareDown,")")):down&&(compare=compareDown,declare=declareDown),increment="".concat(ivar," += ").concat(stepVar)):increment="".concat(kvar===ivar?"".concat(ivar,"++"):"++".concat(ivar)),forPartFragments=[this.makeCode("".concat(declare,"; ").concat(compare,"; ").concat(kvarAssign).concat(increment))])),this.returns&&(resultPart="".concat(this.tab).concat(rvar," = [];\n"),returnResult="\n".concat(this.tab,"return ").concat(rvar,";"),body.makeReturn(rvar)),this.guard&&(1<body.expressions.length?body.expressions.unshift(new If(new Parens(this.guard).invert(),new StatementLiteral("continue"))):this.guard&&(body=Block.wrap([new If(this.guard,body)]))),this.pattern&&body.expressions.unshift(new Assign(this.name,this.from?new IdentifierLiteral(kvar):new Literal("".concat(svar,"[").concat(kvar,"]")))),namePart&&(varPart="\n".concat(idt1).concat(namePart,";")),this.object?(forPartFragments=[this.makeCode("".concat(kvar," in ").concat(svar))],this.own&&(guardPart="\n".concat(idt1,"if (!").concat(utility("hasProp",o),".call(").concat(svar,", ").concat(kvar,")) continue;"))):this.from&&(this["await"]?(forPartFragments=new Op("await",new Parens(new Literal("".concat(kvar," of ").concat(svar)))),forPartFragments=forPartFragments.compileToFragments(o,LEVEL_TOP)):forPartFragments=[this.makeCode("".concat(kvar," of ").concat(svar))]),bodyFragments=body.compileToFragments(merge(o,{indent:idt1}),LEVEL_TOP),bodyFragments&&0<bodyFragments.length&&(bodyFragments=[].concat(this.makeCode("\n"),bodyFragments,this.makeCode("\n"))),fragments=[this.makeCode(defPart)],resultPart&&fragments.push(this.makeCode(resultPart)),forCode=this["await"]?"for ":"for (",forClose=this["await"]?"":")",fragments=fragments.concat(this.makeCode(this.tab),this.makeCode(forCode),forPartFragments,this.makeCode("".concat(forClose," {").concat(guardPart).concat(varPart)),bodyFragments,this.makeCode(this.tab),this.makeCode("}")),returnResult&&fragments.push(this.makeCode(returnResult)),fragments}},{key:"astNode",value:function astNode(o){var addToScope,ref1,ref2;return addToScope=function(name){var alreadyDeclared;return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared},null!=(ref1=this.name)&&ref1.eachName(addToScope,{checkAssignability:!1}),null!=(ref2=this.index)&&ref2.eachName(addToScope,{checkAssignability:!1}),_get(_getPrototypeOf(For.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"For"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9;return{source:null==(ref1=this.source)?void 0:ref1.ast(o),body:this.body.ast(o,LEVEL_TOP),guard:null==(ref2=null==(ref3=this.guard)?void 0:ref3.ast(o))?null:ref2,name:null==(ref4=null==(ref5=this.name)?void 0:ref5.ast(o))?null:ref4,index:null==(ref6=null==(ref7=this.index)?void 0:ref7.ast(o))?null:ref6,step:null==(ref8=null==(ref9=this.step)?void 0:ref9.ast(o))?null:ref8,postfix:!!this.postfix,own:!!this.own,await:!!this["await"],style:function(){switch(!1){case!this.from:return"from";case!this.object:return"of";case!this.name:return"in";default:return"range";}}.call(this)}}}]),For}(While);return For.prototype.children=["body","source","guard","step"],For}.call(this),exports.Switch=Switch=function(){var Switch=function(_Base57){"use strict";function Switch(subject,cases1,otherwise){var _this81;return _classCallCheck(this,Switch),_this81=_super92.call(this),_this81.subject=subject,_this81.cases=cases1,_this81.otherwise=otherwise,_this81}_inherits(Switch,_Base57);var _super92=_createSuper(Switch);return _createClass(Switch,[{key:"jumps",value:function jumps(){var o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{block:!0},block,j,jumpNode,len1,ref1,ref2;for(ref1=this.cases,j=0,len1=ref1.length;j<len1;j++)if(block=ref1[j].block,jumpNode=block.jumps(o))return jumpNode;return null==(ref2=this.otherwise)?void 0:ref2.jumps(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var block,j,len1,ref1,ref2;for(ref1=this.cases,j=0,len1=ref1.length;j<len1;j++)block=ref1[j].block,block.makeReturn(results,mark);return results&&(this.otherwise||(this.otherwise=new Block([new Literal("void 0")]))),null!=(ref2=this.otherwise)&&ref2.makeReturn(results,mark),this}},{key:"compileNode",value:function compileNode(o){var block,body,cond,conditions,expr,fragments,i,idt1,idt2,j,k,len1,len2,ref1,ref2;for(idt1=o.indent+TAB,idt2=o.indent=idt1+TAB,fragments=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(o,LEVEL_PAREN):this.makeCode("false"),this.makeCode(") {\n")),ref1=this.cases,(i=j=0,len1=ref1.length);j<len1;i=++j){var _ref1$i=ref1[i];for(conditions=_ref1$i.conditions,block=_ref1$i.block,ref2=flatten([conditions]),(k=0,len2=ref2.length);k<len2;k++)cond=ref2[k],this.subject||(cond=cond.invert()),fragments=fragments.concat(this.makeCode(idt1+"case "),cond.compileToFragments(o,LEVEL_PAREN),this.makeCode(":\n"));if(0<(body=block.compileToFragments(o,LEVEL_TOP)).length&&(fragments=fragments.concat(body,this.makeCode("\n"))),i===this.cases.length-1&&!this.otherwise)break;(expr=this.lastNode(block.expressions),!(expr instanceof Return||expr instanceof Throw||expr instanceof Literal&&expr.jumps()&&"debugger"!==expr.value))&&fragments.push(cond.makeCode(idt2+"break;\n"))}if(this.otherwise&&this.otherwise.expressions.length){var _fragments13;(_fragments13=fragments).push.apply(_fragments13,[this.makeCode(idt1+"default:\n")].concat(_toConsumableArray(this.otherwise.compileToFragments(o,LEVEL_TOP)),[this.makeCode("\n")]))}return fragments.push(this.makeCode(this.tab+"}")),fragments}},{key:"astType",value:function astType(){return"SwitchStatement"}},{key:"casesAst",value:function casesAst(o){var caseIndex,caseLocationData,cases,consequent,j,k,kase,l,lastTestIndex,len1,len2,len3,ref1,ref2,results1,test,testConsequent,testIndex,tests;for(cases=[],ref1=this.cases,(caseIndex=j=0,len1=ref1.length);j<len1;caseIndex=++j){kase=ref1[caseIndex];var _kase=kase;for(tests=_kase.conditions,consequent=_kase.block,tests=flatten([tests]),lastTestIndex=tests.length-1,(testIndex=k=0,len2=tests.length);k<len2;testIndex=++k)test=tests[testIndex],testConsequent=testIndex===lastTestIndex?consequent:null,caseLocationData=test.locationData,(null==testConsequent?void 0:testConsequent.expressions.length)&&(caseLocationData=mergeLocationData(caseLocationData,testConsequent.expressions[testConsequent.expressions.length-1].locationData)),0===testIndex&&(caseLocationData=mergeLocationData(caseLocationData,kase.locationData,{justLeading:!0})),testIndex===lastTestIndex&&(caseLocationData=mergeLocationData(caseLocationData,kase.locationData,{justEnding:!0})),cases.push(new SwitchCase(test,testConsequent,{trailing:testIndex===lastTestIndex}).withLocationDataFrom({locationData:caseLocationData}))}for((null==(ref2=this.otherwise)?void 0:ref2.expressions.length)&&cases.push(new SwitchCase(null,this.otherwise).withLocationDataFrom(this.otherwise)),results1=[],(l=0,len3=cases.length);l<len3;l++)kase=cases[l],results1.push(kase.ast(o));return results1}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{discriminant:null==(ref1=null==(ref2=this.subject)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1,cases:this.casesAst(o)}}}]),Switch}(Base);return Switch.prototype.children=["subject","cases","otherwise"],Switch.prototype.isStatement=YES,Switch}.call(this),SwitchCase=function(){var SwitchCase=function(_Base58){"use strict";function SwitchCase(test1,block1){var _ref66=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},trailing=_ref66.trailing,_this82;return _classCallCheck(this,SwitchCase),_this82=_super93.call(this),_this82.test=test1,_this82.block=block1,_this82.trailing=trailing,_this82}_inherits(SwitchCase,_Base58);var _super93=_createSuper(SwitchCase);return _createClass(SwitchCase,[{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{test:null==(ref1=null==(ref2=this.test)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1,consequent:null==(ref3=null==(ref4=this.block)?void 0:ref4.ast(o,LEVEL_TOP).body)?[]:ref3,trailing:!!this.trailing}}}]),SwitchCase}(Base);return SwitchCase.prototype.children=["test","block"],SwitchCase}.call(this),exports.SwitchWhen=SwitchWhen=function(){var SwitchWhen=function(_Base59){"use strict";function SwitchWhen(conditions1,block1){var _this83;return _classCallCheck(this,SwitchWhen),_this83=_super94.call(this),_this83.conditions=conditions1,_this83.block=block1,_this83}_inherits(SwitchWhen,_Base59);var _super94=_createSuper(SwitchWhen);return _createClass(SwitchWhen)}(Base);return SwitchWhen.prototype.children=["conditions","block"],SwitchWhen}.call(this),exports.If=If=function(){var If=function(_Base60){"use strict";function If(condition1,body1){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_this84;return _classCallCheck(this,If),_this84=_super95.call(this),_this84.condition=condition1,_this84.body=body1,_this84.elseBody=null,_this84.isChain=!1,_this84.soak=options.soak,_this84.postfix=options.postfix,_this84.type=options.type,_this84.condition.comments&&moveComments(_this84.condition,_assertThisInitialized(_this84)),_this84}_inherits(If,_Base60);var _super95=_createSuper(If);return _createClass(If,[{key:"bodyNode",value:function bodyNode(){var ref1;return null==(ref1=this.body)?void 0:ref1.unwrap()}},{key:"elseBodyNode",value:function elseBodyNode(){var ref1;return null==(ref1=this.elseBody)?void 0:ref1.unwrap()}},{key:"addElse",value:function addElse(elseBody){return this.isChain?(this.elseBodyNode().addElse(elseBody),this.locationData=mergeLocationData(this.locationData,this.elseBodyNode().locationData)):(this.isChain=elseBody instanceof If,this.elseBody=this.ensureBlock(elseBody),this.elseBody.updateLocationDataIfMissing(elseBody.locationData),null!=this.locationData&&null!=this.elseBody.locationData&&(this.locationData=mergeLocationData(this.locationData,this.elseBody.locationData))),this}},{key:"isStatement",value:function isStatement(o){var ref1;return(null==o?void 0:o.level)===LEVEL_TOP||this.bodyNode().isStatement(o)||(null==(ref1=this.elseBodyNode())?void 0:ref1.isStatement(o))}},{key:"jumps",value:function jumps(o){var ref1;return this.body.jumps(o)||(null==(ref1=this.elseBody)?void 0:ref1.jumps(o))}},{key:"compileNode",value:function compileNode(o){return this.isStatement(o)?this.compileStatement(o):this.compileExpression(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var ref1,ref2;return mark?(null!=(ref1=this.body)&&ref1.makeReturn(results,mark),void(null!=(ref2=this.elseBody)&&ref2.makeReturn(results,mark))):(results&&(this.elseBody||(this.elseBody=new Block([new Literal("void 0")]))),this.body&&(this.body=new Block([this.body.makeReturn(results)])),this.elseBody&&(this.elseBody=new Block([this.elseBody.makeReturn(results)])),this)}},{key:"ensureBlock",value:function ensureBlock(node){return node instanceof Block?node:new Block([node])}},{key:"compileStatement",value:function compileStatement(o){var answer,body,child,cond,exeq,ifPart,indent;return(child=del(o,"chainChild"),exeq=del(o,"isExistentialEquals"),exeq)?new If(this.processedCondition().invert(),this.elseBodyNode(),{type:"if"}).compileToFragments(o):(indent=o.indent+TAB,cond=this.processedCondition().compileToFragments(o,LEVEL_PAREN),body=this.ensureBlock(this.body).compileToFragments(merge(o,{indent:indent})),ifPart=[].concat(this.makeCode("if ("),cond,this.makeCode(") {\n"),body,this.makeCode("\n".concat(this.tab,"}"))),child||ifPart.unshift(this.makeCode(this.tab)),!this.elseBody)?ifPart:(answer=ifPart.concat(this.makeCode(" else ")),this.isChain?(o.chainChild=!0,answer=answer.concat(this.elseBody.unwrap().compileToFragments(o,LEVEL_TOP))):answer=answer.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(merge(o,{indent:indent}),LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}"))),answer)}},{key:"compileExpression",value:function compileExpression(o){var alt,body,cond,fragments;return cond=this.processedCondition().compileToFragments(o,LEVEL_COND),body=this.bodyNode().compileToFragments(o,LEVEL_LIST),alt=this.elseBodyNode()?this.elseBodyNode().compileToFragments(o,LEVEL_LIST):[this.makeCode("void 0")],fragments=cond.concat(this.makeCode(" ? "),body,this.makeCode(" : "),alt),o.level>=LEVEL_COND?this.wrapInParentheses(fragments):fragments}},{key:"unfoldSoak",value:function unfoldSoak(){return this.soak&&this}},{key:"processedCondition",value:function processedCondition(){return null==this.processedConditionCache?this.processedConditionCache="unless"===this.type?this.condition.invert():this.condition:this.processedConditionCache}},{key:"isStatementAst",value:function isStatementAst(o){return o.level===LEVEL_TOP}},{key:"astType",value:function astType(o){return this.isStatementAst(o)?"IfStatement":"ConditionalExpression"}},{key:"astProperties",value:function astProperties(o){var isStatement,ref1,ref2,ref3,ref4;return isStatement=this.isStatementAst(o),{test:this.condition.ast(o,isStatement?LEVEL_PAREN:LEVEL_COND),consequent:isStatement?this.body.ast(o,LEVEL_TOP):this.bodyNode().ast(o,LEVEL_TOP),alternate:this.isChain?this.elseBody.unwrap().ast(o,isStatement?LEVEL_TOP:LEVEL_COND):isStatement||1!==(null==(ref1=this.elseBody)||null==(ref2=ref1.expressions)?void 0:ref2.length)?null==(ref3=null==(ref4=this.elseBody)?void 0:ref4.ast(o,LEVEL_TOP))?null:ref3:this.elseBody.expressions[0].ast(o,LEVEL_TOP),postfix:!!this.postfix,inverted:"unless"===this.type}}}]),If}(Base);return If.prototype.children=["condition","body","elseBody"],If}.call(this),exports.Sequence=Sequence=function(){var Sequence=function(_Base61){"use strict";function Sequence(expressions1){var _this85;return _classCallCheck(this,Sequence),_this85=_super96.call(this),_this85.expressions=expressions1,_this85}_inherits(Sequence,_Base61);var _super96=_createSuper(Sequence);return _createClass(Sequence,[{key:"astNode",value:function astNode(o){return 1===this.expressions.length?this.expressions[0].ast(o):_get(_getPrototypeOf(Sequence.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"SequenceExpression"}},{key:"astProperties",value:function astProperties(o){var expression;return{expressions:function(){var j,len1,ref1,results1;for(ref1=this.expressions,results1=[],(j=0,len1=ref1.length);j<len1;j++)expression=ref1[j],results1.push(expression.ast(o));return results1}.call(this)}}}]),Sequence}(Base);return Sequence.prototype.children=["expressions"],Sequence}.call(this),UTILITIES={modulo:function modulo(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},boundMethodCheck:function boundMethodCheck(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},hasProp:function hasProp(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function slice(){return"[].slice"},splice:function(){return"[].splice"}},LEVEL_TOP=1,LEVEL_PAREN=2,LEVEL_LIST=3,LEVEL_COND=4,LEVEL_OP=5,LEVEL_ACCESS=6,TAB="  ",SIMPLENUM=/^[+-]?\d+(?:_\d+)*$/,SIMPLE_STRING_OMIT=/\s*\n\s*/g,LEADING_BLANK_LINE=/^[^\n\S]*\n/,TRAILING_BLANK_LINE=/\n[^\n\S]*$/,STRING_OMIT=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,HEREGEX_OMIT=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,utility=function(name,o){var ref,root;return root=o.scope.root,name in root.utilities?root.utilities[name]:(ref=root.freeVariable(name),root.assign(ref,UTILITIES[name](o)),root.utilities[name]=ref)},multident=function(code,tab){var includingFirstLine=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],endsWithNewLine;return endsWithNewLine="\n"===code[code.length-1],code=(includingFirstLine?tab:"")+code.replace(/\n/g,"$&".concat(tab)),code=code.replace(/\s+$/,""),endsWithNewLine&&(code+="\n"),code},indentInitial=function(fragments,node){var fragment,fragmentIndex,j,len1;for(fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j)if(fragment=fragments[fragmentIndex],fragment.isHereComment)fragment.code=multident(fragment.code,node.tab);else{fragments.splice(fragmentIndex,0,node.makeCode("".concat(node.tab)));break}return fragments},hasLineComments=function(node){var comment,j,len1,ref1;if(!node.comments)return!1;for(ref1=node.comments,j=0,len1=ref1.length;j<len1;j++)if(comment=ref1[j],!1===comment.here)return!0;return!1},moveComments=function(from,to){if(null!=from&&from.comments)return attachCommentsToNode(from.comments,to),delete from.comments},unshiftAfterComments=function(fragments,fragmentToInsert){var fragment,fragmentIndex,inserted,j,len1;for(inserted=!1,fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j)if(fragment=fragments[fragmentIndex],!!!fragment.isComment){fragments.splice(fragmentIndex,0,fragmentToInsert),inserted=!0;break}return inserted||fragments.push(fragmentToInsert),fragments},isLiteralArguments=function(node){return node instanceof IdentifierLiteral&&"arguments"===node.value},isLiteralThis=function(node){return node instanceof ThisLiteral||node instanceof Code&&node.bound},shouldCacheOrIsAssignable=function(node){return node.shouldCache()||("function"==typeof node.isAssignable?node.isAssignable():void 0)},_unfoldSoak=function(o,parent,name){var ifn;if(ifn=parent[name].unfoldSoak(o))return parent[name]=ifn.body,ifn.body=new Value(parent),ifn},makeDelimitedLiteral=function(body){var _ref67=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},delimiterOption=_ref67.delimiter,escapeNewlines=_ref67.escapeNewlines,_double2=_ref67.double,_ref67$includeDelimit=_ref67.includeDelimiters,_ref67$escapeDelimite=_ref67.escapeDelimiter,escapeDelimiter=void 0===_ref67$escapeDelimite||_ref67$escapeDelimite,convertTrailingNullEscapes=_ref67.convertTrailingNullEscapes,escapeTemplateLiteralCurlies,printedDelimiter,regex;return""===body&&"/"===delimiterOption&&(body="(?:)"),escapeTemplateLiteralCurlies="`"===delimiterOption,regex=RegExp("(\\\\\\\\)|(\\\\0(?=\\d))".concat(convertTrailingNullEscapes?/|(\\0)$/.source:"").concat(escapeDelimiter?RegExp("|\\\\?(".concat(delimiterOption,")")).source:"").concat(escapeTemplateLiteralCurlies?/|\\?(\$\{)/.source:"","|\\\\?(?:").concat(escapeNewlines?"(\n)|":"","(\\r)|(\\u2028)|(\\u2029))|(\\\\.)"),"g"),body=body.replace(regex,function(match,backslash,nul){for(var _len2=arguments.length,args=Array(3<_len2?_len2-3:0),_key2=3,cr,delimiter,lf,ls,other,ps,templateLiteralCurly,trailingNullEscape;_key2<_len2;_key2++)args[_key2-3]=arguments[_key2];switch(trailingNullEscape=convertTrailingNullEscapes?args.shift():void 0,delimiter=escapeDelimiter?args.shift():void 0,templateLiteralCurly=escapeTemplateLiteralCurlies?args.shift():void 0,lf=escapeNewlines?args.shift():void 0,cr=args[0],ls=args[1],ps=args[2],other=args[3],!1){case!backslash:return _double2?backslash+backslash:backslash;case!nul:return"\\x00";case!trailingNullEscape:return"\\x00";case!delimiter:return"\\".concat(delimiter);case!templateLiteralCurly:return"\\${";case!lf:return"\\n";case!cr:return"\\r";case!ls:return"\\u2028";case!ps:return"\\u2029";case!other:return _double2?"\\".concat(other):other;}}),printedDelimiter=void 0===_ref67$includeDelimit||_ref67$includeDelimit?delimiterOption:"","".concat(printedDelimiter).concat(body).concat(printedDelimiter)},sniffDirectives=function(expressions){var _ref68=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},notFinalExpression=_ref68.notFinalExpression,expression,index,lastIndex,results1,unwrapped;for(index=0,lastIndex=expressions.length-1,results1=[];index<=lastIndex&&!(index===lastIndex&&notFinalExpression);){if(expression=expressions[index],(unwrapped=null==expression?void 0:"function"==typeof expression.unwrap?expression.unwrap():void 0)instanceof PassthroughLiteral&&unwrapped.generated){index++;continue}if(!(expression instanceof Value&&expression.isString()&&!expression.unwrap().shouldGenerateTemplateLiteral()))break;expressions[index]=new Directive(expression).withLocationDataFrom(expression),results1.push(index++)}return results1},astAsBlockIfNeeded=function(node,o){var unwrapped;return unwrapped=node.unwrap(),unwrapped instanceof Block&&1<unwrapped.expressions.length?(unwrapped.makeReturn(null,!0),unwrapped.ast(o,LEVEL_TOP)):node.ast(o,LEVEL_PAREN)},lesser=function(a,b){return a<b?a:b},greater=function(a,b){return a>b?a:b},isAstLocGreater=function(a,b){return!!(a.line>b.line)||a.line===b.line&&a.column>b.column},isLocationDataStartGreater=function(a,b){return!!(a.first_line>b.first_line)||a.first_line===b.first_line&&a.first_column>b.first_column},isLocationDataEndGreater=function(a,b){return!!(a.last_line>b.last_line)||a.last_line===b.last_line&&a.last_column>b.last_column},exports.mergeLocationData=mergeLocationData=function(locationDataA,locationDataB){var _ref69=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},justLeading=_ref69.justLeading,justEnding=_ref69.justEnding;return Object.assign(justEnding?{first_line:locationDataA.first_line,first_column:locationDataA.first_column}:isLocationDataStartGreater(locationDataA,locationDataB)?{first_line:locationDataB.first_line,first_column:locationDataB.first_column}:{first_line:locationDataA.first_line,first_column:locationDataA.first_column},justLeading?{last_line:locationDataA.last_line,last_column:locationDataA.last_column,last_line_exclusive:locationDataA.last_line_exclusive,last_column_exclusive:locationDataA.last_column_exclusive}:isLocationDataEndGreater(locationDataA,locationDataB)?{last_line:locationDataA.last_line,last_column:locationDataA.last_column,last_line_exclusive:locationDataA.last_line_exclusive,last_column_exclusive:locationDataA.last_column_exclusive}:{last_line:locationDataB.last_line,last_column:locationDataB.last_column,last_line_exclusive:locationDataB.last_line_exclusive,last_column_exclusive:locationDataB.last_column_exclusive},{range:[justEnding?locationDataA.range[0]:lesser(locationDataA.range[0],locationDataB.range[0]),justLeading?locationDataA.range[1]:greater(locationDataA.range[1],locationDataB.range[1])]})},exports.mergeAstLocationData=mergeAstLocationData=function(nodeA,nodeB){var _ref70=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},justLeading=_ref70.justLeading,justEnding=_ref70.justEnding;return{loc:{start:justEnding?nodeA.loc.start:isAstLocGreater(nodeA.loc.start,nodeB.loc.start)?nodeB.loc.start:nodeA.loc.start,end:justLeading?nodeA.loc.end:isAstLocGreater(nodeA.loc.end,nodeB.loc.end)?nodeA.loc.end:nodeB.loc.end},range:[justEnding?nodeA.range[0]:lesser(nodeA.range[0],nodeB.range[0]),justLeading?nodeA.range[1]:greater(nodeA.range[1],nodeB.range[1])],start:justEnding?nodeA.start:lesser(nodeA.start,nodeB.start),end:justLeading?nodeA.end:greater(nodeA.end,nodeB.end)}},exports.jisonLocationDataToAstLocationData=jisonLocationDataToAstLocationData=function(_ref71){var first_line=_ref71.first_line,first_column=_ref71.first_column,last_line_exclusive=_ref71.last_line_exclusive,last_column_exclusive=_ref71.last_column_exclusive,range=_ref71.range;return{loc:{start:{line:first_line+1,column:first_column},end:{line:last_line_exclusive+1,column:last_column_exclusive}},range:[range[0],range[1]],start:range[0],end:range[1]}},zeroWidthLocationDataFromEndLocation=function(_ref72){var _ref72$range=_slicedToArray(_ref72.range,2),endRange=_ref72$range[1],last_line_exclusive=_ref72.last_line_exclusive,last_column_exclusive=_ref72.last_column_exclusive;return{first_line:last_line_exclusive,first_column:last_column_exclusive,last_line:last_line_exclusive,last_column:last_column_exclusive,last_line_exclusive:last_line_exclusive,last_column_exclusive:last_column_exclusive,range:[endRange,endRange]}},extractSameLineLocationDataFirst=function(numChars){return function(_ref73){var _ref73$range=_slicedToArray(_ref73.range,1),startRange=_ref73$range[0],first_line=_ref73.first_line,first_column=_ref73.first_column;return{first_line:first_line,first_column:first_column,last_line:first_line,last_column:first_column+numChars-1,last_line_exclusive:first_line,last_column_exclusive:first_column+numChars,range:[startRange,startRange+numChars]}}},extractSameLineLocationDataLast=function(numChars){return function(_ref74){var _ref74$range=_slicedToArray(_ref74.range,2),endRange=_ref74$range[1],last_line=_ref74.last_line,last_column=_ref74.last_column,last_line_exclusive=_ref74.last_line_exclusive,last_column_exclusive=_ref74.last_column_exclusive;return{first_line:last_line,first_column:last_column-(numChars-1),last_line:last_line,last_column:last_column,last_line_exclusive:last_line_exclusive,last_column_exclusive:last_column_exclusive,range:[endRange-numChars,endRange]}}},emptyExpressionLocationData=function(_ref75){var element=_ref75.interpolationNode,openingBrace=_ref75.openingBrace,closingBrace=_ref75.closingBrace;return{first_line:element.locationData.first_line,first_column:element.locationData.first_column+openingBrace.length,last_line:element.locationData.last_line,last_column:element.locationData.last_column-closingBrace.length,last_line_exclusive:element.locationData.last_line,last_column_exclusive:element.locationData.last_column,range:[element.locationData.range[0]+openingBrace.length,element.locationData.range[1]-closingBrace.length]}}}.call(this),{exports:exports}.exports}(),require["./sourcemap"]=function(){var module={exports:{}};return function(){var LineMap,SourceMap;LineMap=function(){"use strict";function LineMap(line1){_classCallCheck(this,LineMap),this.line=line1,this.columns=[]}return _createClass(LineMap,[{key:"add",value:function add(column,_ref76){var _ref77=_slicedToArray(_ref76,2),sourceLine=_ref77[0],sourceColumn=_ref77[1],options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return this.columns[column]&&options.noReplace?void 0:this.columns[column]={line:this.line,column:column,sourceLine:sourceLine,sourceColumn:sourceColumn}}},{key:"sourceLocation",value:function sourceLocation(column){for(var mapping;!((mapping=this.columns[column])||0>=column);)column--;return mapping&&[mapping.sourceLine,mapping.sourceColumn]}}]),LineMap}(),SourceMap=function(){var SourceMap=function(){"use strict";function SourceMap(){_classCallCheck(this,SourceMap),this.lines=[]}return _createClass(SourceMap,[{key:"add",value:function add(sourceLocation,generatedLocation){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_generatedLocation=_slicedToArray(generatedLocation,2),base,column,line,lineMap;return line=_generatedLocation[0],column=_generatedLocation[1],lineMap=(base=this.lines)[line]||(base[line]=new LineMap(line)),lineMap.add(column,sourceLocation,options)}},{key:"sourceLocation",value:function sourceLocation(_ref78){for(var _ref79=_slicedToArray(_ref78,2),line=_ref79[0],column=_ref79[1],lineMap;!((lineMap=this.lines[line])||0>=line);)line--;return lineMap&&lineMap.sourceLocation(column)}},{key:"generate",value:function generate(){var options=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},code=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,buffer,i,j,lastColumn,lastSourceColumn,lastSourceLine,len,len1,lineMap,lineNumber,mapping,needComma,ref,ref1,sources,v3,writingline;for(writingline=0,lastColumn=0,lastSourceLine=0,lastSourceColumn=0,needComma=!1,buffer="",ref=this.lines,(lineNumber=i=0,len=ref.length);i<len;lineNumber=++i)if(lineMap=ref[lineNumber],lineMap)for(ref1=lineMap.columns,j=0,len1=ref1.length;j<len1;j++)if(mapping=ref1[j],!!mapping){for(;writingline<mapping.line;)lastColumn=0,needComma=!1,buffer+=";",writingline++;needComma&&(buffer+=",",needComma=!1),buffer+=this.encodeVlq(mapping.column-lastColumn),lastColumn=mapping.column,buffer+=this.encodeVlq(0),buffer+=this.encodeVlq(mapping.sourceLine-lastSourceLine),lastSourceLine=mapping.sourceLine,buffer+=this.encodeVlq(mapping.sourceColumn-lastSourceColumn),lastSourceColumn=mapping.sourceColumn,needComma=!0}return sources=options.sourceFiles?options.sourceFiles:options.filename?[options.filename]:["<anonymous>"],v3={version:3,file:options.generatedFile||"",sourceRoot:options.sourceRoot||"",sources:sources,names:[],mappings:buffer},(options.sourceMap||options.inlineMap)&&(v3.sourcesContent=[code]),v3}},{key:"encodeVlq",value:function encodeVlq(value){var answer,nextChunk,signBit,valueToEncode;for(answer="",signBit=0>value?1:0,valueToEncode=(_Mathabs(value)<<1)+signBit;valueToEncode||!answer;)nextChunk=valueToEncode&VLQ_VALUE_MASK,valueToEncode>>=VLQ_SHIFT,valueToEncode&&(nextChunk|=VLQ_CONTINUATION_BIT),answer+=this.encodeBase64(nextChunk);return answer}},{key:"encodeBase64",value:function encodeBase64(value){return BASE64_CHARS[value]||function(){throw new Error("Cannot Base64 encode value: ".concat(value))}()}}],[{key:"registerCompiled",value:function registerCompiled(filename,source,sourcemap){if(null!=sourcemap)return SourceMap.sourceMaps[filename]=sourcemap}},{key:"getSourceMap",value:function getSourceMap(filename){return SourceMap.sourceMaps[filename]}}]),SourceMap}(),BASE64_CHARS,VLQ_CONTINUATION_BIT,VLQ_SHIFT,VLQ_VALUE_MASK;return SourceMap.sourceMaps=Object.create(null),VLQ_SHIFT=5,VLQ_CONTINUATION_BIT=1<<VLQ_SHIFT,VLQ_VALUE_MASK=VLQ_CONTINUATION_BIT-1,BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",SourceMap}.call(this),module.exports=SourceMap}.call(this),module.exports}(),require["./coffeescript"]=function(){var exports={};return function(){var _require7=require("./lexer"),FILE_EXTENSIONS,Lexer,SourceMap,base64encode,checkShebangLine,compile,getSourceMap,helpers,lexer,packageJson,parser,registerCompiled,withPrettyErrors;Lexer=_require7.Lexer;var _require8=require("./parser");parser=_require8.parser,helpers=require("./helpers"),SourceMap=require("./sourcemap"),packageJson=require("../../package.json"),exports.VERSION=packageJson.version,exports.FILE_EXTENSIONS=FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"],exports.helpers=helpers;var _SourceMap=SourceMap;getSourceMap=_SourceMap.getSourceMap,registerCompiled=_SourceMap.registerCompiled,exports.registerCompiled=registerCompiled,base64encode=function(src){switch(!1){case"function"!=typeof Buffer:return Buffer.from(src).toString("base64");case"function"!=typeof btoa:return btoa(encodeURIComponent(src).replace(/%([0-9A-F]{2})/g,function(match,p1){return _StringfromCharCode("0x"+p1)}));default:throw new Error("Unable to base64 encode inline sourcemap.");}},withPrettyErrors=function(fn){return function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},err;try{return fn.call(this,code,options)}catch(error){if(err=error,"string"!=typeof code)throw err;throw helpers.updateSyntaxError(err,code,options.filename)}}},exports.compile=compile=withPrettyErrors(function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},ast,currentColumn,currentLine,encoded,filename,fragment,fragments,generateSourceMap,header,i,j,js,len,len1,map,newLines,nodes,range,ref,sourceCodeLastLine,sourceCodeNumberOfLines,sourceMapDataURI,sourceURL,token,tokens,transpiler,transpilerOptions,transpilerOutput,v3SourceMap;if(options=Object.assign({},options),generateSourceMap=options.sourceMap||options.inlineMap||null==options.filename,filename=options.filename||helpers.anonymousFileName(),checkShebangLine(filename,code),generateSourceMap&&(map=new SourceMap),tokens=lexer.tokenize(code,options),options.referencedVars=function(){var i,len,results;for(results=[],i=0,len=tokens.length;i<len;i++)token=tokens[i],"IDENTIFIER"===token[0]&&results.push(token[1]);return results}(),null==options.bare||!0!==options.bare)for(i=0,len=tokens.length;i<len;i++)if(token=tokens[i],"IMPORT"===(ref=token[0])||"EXPORT"===ref){options.bare=!0;break}if(nodes=parser.parse(tokens),options.ast)return nodes.allCommentTokens=helpers.extractAllCommentTokens(tokens),sourceCodeNumberOfLines=(code.match(/\r?\n/g)||"").length+1,sourceCodeLastLine=/.*$/.exec(code)[0],ast=nodes.ast(options),range=[0,code.length],ast.start=ast.program.start=range[0],ast.end=ast.program.end=range[1],ast.range=ast.program.range=range,ast.loc.start=ast.program.loc.start={line:1,column:0},ast.loc.end.line=ast.program.loc.end.line=sourceCodeNumberOfLines,ast.loc.end.column=ast.program.loc.end.column=sourceCodeLastLine.length,ast.tokens=tokens,ast;for(fragments=nodes.compileToFragments(options),currentLine=0,options.header&&(currentLine+=1),options.shiftLine&&(currentLine+=1),currentColumn=0,js="",(j=0,len1=fragments.length);j<len1;j++)fragment=fragments[j],generateSourceMap&&(fragment.locationData&&!/^[;\s]*$/.test(fragment.code)&&map.add([fragment.locationData.first_line,fragment.locationData.first_column],[currentLine,currentColumn],{noReplace:!0}),newLines=helpers.count(fragment.code,"\n"),currentLine+=newLines,newLines?currentColumn=fragment.code.length-(fragment.code.lastIndexOf("\n")+1):currentColumn+=fragment.code.length),js+=fragment.code;if(options.header&&(header="Generated by CoffeeScript ".concat(this.VERSION),js="// ".concat(header,"\n").concat(js)),generateSourceMap&&(v3SourceMap=map.generate(options,code)),options.transpile){if("object"!==_typeof(options.transpile))throw new Error("The transpile option must be given an object with options to pass to Babel");transpiler=options.transpile.transpile,delete options.transpile.transpile,transpilerOptions=Object.assign({},options.transpile),v3SourceMap&&null==transpilerOptions.inputSourceMap&&(transpilerOptions.inputSourceMap=v3SourceMap),transpilerOutput=transpiler(js,transpilerOptions),js=transpilerOutput.code,v3SourceMap&&transpilerOutput.map&&(v3SourceMap=transpilerOutput.map)}return options.inlineMap&&(encoded=base64encode(JSON.stringify(v3SourceMap)),sourceMapDataURI="//# sourceMappingURL=data:application/json;base64,".concat(encoded),sourceURL="//# sourceURL=".concat(filename),js="".concat(js,"\n").concat(sourceMapDataURI,"\n").concat(sourceURL)),registerCompiled(filename,code,map),options.sourceMap?{js:js,sourceMap:map,v3SourceMap:JSON.stringify(v3SourceMap,null,2)}:js}),exports.tokens=withPrettyErrors(function(code,options){return lexer.tokenize(code,options)}),exports.nodes=withPrettyErrors(function(source,options){return"string"==typeof source&&(source=lexer.tokenize(source,options)),parser.parse(source)}),exports.run=exports.eval=exports.register=function(){throw new Error("require index.coffee, not this file")},lexer=new Lexer,parser.lexer={yylloc:{range:[]},options:{ranges:!0},lex:function lex(){var tag,token;if(token=parser.tokens[this.pos++],token){var _token6=token,_token7=_slicedToArray(_token6,3);tag=_token7[0],this.yytext=_token7[1],this.yylloc=_token7[2],parser.errorToken=token.origin||token,this.yylineno=this.yylloc.first_line}else tag="";return tag},setInput:function setInput(tokens){return parser.tokens=tokens,this.pos=0},upcomingInput:function upcomingInput(){return""}},parser.yy=require("./nodes"),parser.yy.parseError=function(message,_ref80){var token=_ref80.token,_parser=parser,errorLoc,errorTag,errorText,errorToken,tokens;errorToken=_parser.errorToken,tokens=_parser.tokens;var _errorToken=errorToken,_errorToken2=_slicedToArray(_errorToken,3);return errorTag=_errorToken2[0],errorText=_errorToken2[1],errorLoc=_errorToken2[2],errorText=function(){switch(!1){case errorToken!==tokens[tokens.length-1]:return"end of input";case"INDENT"!==errorTag&&"OUTDENT"!==errorTag:return"indentation";case"IDENTIFIER"!==errorTag&&"NUMBER"!==errorTag&&"INFINITY"!==errorTag&&"STRING"!==errorTag&&"STRING_START"!==errorTag&&"REGEX"!==errorTag&&"REGEX_START"!==errorTag:return errorTag.replace(/_START$/,"").toLowerCase();default:return helpers.nameWhitespaceCharacter(errorText);}}(),helpers.throwSyntaxError("unexpected ".concat(errorText),errorLoc)},exports.patchStackTrace=function(){var formatSourcePosition,getSourceMapping;return formatSourcePosition=function(frame,getSourceMapping){var as,column,fileLocation,filename,functionName,isConstructor,isMethodCall,line,methodName,source,tp,typeName;return filename=void 0,fileLocation="",frame.isNative()?fileLocation="native":(frame.isEval()?(filename=frame.getScriptNameOrSourceURL(),!filename&&(fileLocation="".concat(frame.getEvalOrigin(),", "))):filename=frame.getFileName(),filename||(filename="<anonymous>"),line=frame.getLineNumber(),column=frame.getColumnNumber(),source=getSourceMapping(filename,line,column),fileLocation=source?"".concat(filename,":").concat(source[0],":").concat(source[1]):"".concat(filename,":").concat(line,":").concat(column)),functionName=frame.getFunctionName(),isConstructor=frame.isConstructor(),isMethodCall=!(frame.isToplevel()||isConstructor),isMethodCall?(methodName=frame.getMethodName(),typeName=frame.getTypeName(),functionName?(tp=as="",typeName&&functionName.indexOf(typeName)&&(tp="".concat(typeName,".")),methodName&&functionName.indexOf(".".concat(methodName))!==functionName.length-methodName.length-1&&(as=" [as ".concat(methodName,"]")),"".concat(tp).concat(functionName).concat(as," (").concat(fileLocation,")")):"".concat(typeName,".").concat(methodName||"<anonymous>"," (").concat(fileLocation,")")):isConstructor?"new ".concat(functionName||"<anonymous>"," (").concat(fileLocation,")"):functionName?"".concat(functionName," (").concat(fileLocation,")"):fileLocation},getSourceMapping=function(filename,line,column){var answer,sourceMap;return sourceMap=getSourceMap(filename,line,column),null!=sourceMap&&(answer=sourceMap.sourceLocation([line-1,column-1])),null==answer?null:[answer[0]+1,answer[1]+1]},Error.prepareStackTrace=function(err,stack){var frame,frames;return frames=function(){var i,len,results;for(results=[],i=0,len=stack.length;i<len&&(frame=stack[i],frame.getFunction()!==exports.run);i++)results.push("    at ".concat(formatSourcePosition(frame,getSourceMapping)));return results}(),"".concat(err.toString(),"\n").concat(frames.join("\n"),"\n")}},checkShebangLine=function(file,input){var args,firstLine,ref,rest;if(firstLine=input.split(/$/m)[0],rest=null==firstLine?void 0:firstLine.match(/^#!\s*([^\s]+\s*)(.*)/),args=null==rest||null==(ref=rest[2])?void 0:ref.split(/\s/).filter(function(s){return""!==s}),1<(null==args?void 0:args.length))return console.error("The script to be run begins with a shebang line with more than one\nargument. This script will fail on platforms such as Linux which only\nallow a single argument."),console.error("The shebang line was: '".concat(firstLine,"' in file '").concat(file,"'")),console.error("The arguments were: ".concat(JSON.stringify(args)))}}.call(this),{exports:exports}.exports}(),require["./browser"]=function(){var module={exports:{}};return function(){var indexOf=[].indexOf,CoffeeScript,compile;CoffeeScript=require("./coffeescript");var _CoffeeScript=CoffeeScript;compile=_CoffeeScript.compile,CoffeeScript.eval=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},globalRoot;return null==options.bare&&(options.bare=!0),globalRoot="undefined"!=typeof window&&null!==window?window:global,globalRoot.eval(compile(code,options))},CoffeeScript.run=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return options.bare=!0,options.shiftLine=!0,Function(compile(code,options))()},module.exports=CoffeeScript,"undefined"==typeof window||null===window||("undefined"!=typeof btoa&&null!==btoa&&"undefined"!=typeof JSON&&null!==JSON&&(compile=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return options.inlineMap=!0,CoffeeScript.compile(code,options)}),CoffeeScript.load=function(url,callback){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},hold=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],xhr;return options.sourceFiles=[url],xhr=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest,xhr.open("GET",url,!0),"overrideMimeType"in xhr&&xhr.overrideMimeType("text/plain"),xhr.onreadystatechange=function(){var param,ref;if(4===xhr.readyState){if(0!==(ref=xhr.status)&&200!==ref)throw new Error("Could not load ".concat(url));else if(param=[xhr.responseText,options],!hold){var _CoffeeScript2;(_CoffeeScript2=CoffeeScript).run.apply(_CoffeeScript2,_toConsumableArray(param))}if(callback)return callback(param)}},xhr.send(null)},CoffeeScript.runScripts=function(){var coffees,coffeetypes,_execute,i,index,j,len,s,script,scripts;for(scripts=window.document.getElementsByTagName("script"),coffeetypes=["text/coffeescript","text/literate-coffeescript"],coffees=function(){var j,len,ref,results;for(results=[],j=0,len=scripts.length;j<len;j++)s=scripts[j],(ref=s.type,0<=indexOf.call(coffeetypes,ref))&&results.push(s);return results}(),index=0,_execute=function execute(){var param;if(param=coffees[index],param instanceof Array){var _CoffeeScript3;return(_CoffeeScript3=CoffeeScript).run.apply(_CoffeeScript3,_toConsumableArray(param)),index++,_execute()}},(i=j=0,len=coffees.length);j<len;i=++j)script=coffees[i],function(script,i){var options,source;return options={literate:script.type===coffeetypes[1]},source=script.src||script.getAttribute("data-src"),source?(options.filename=source,CoffeeScript.load(source,function(param){return coffees[i]=param,_execute()},options,!0)):(options.filename=script.id&&""!==script.id?script.id:"coffeescript".concat(0===i?"":i),options.sourceFiles=["embedded"],coffees[i]=[script.innerHTML,options])}(script,i);return _execute()},this===window&&(window.addEventListener?window.addEventListener("DOMContentLoaded",CoffeeScript.runScripts,!1):window.attachEvent("onload",CoffeeScript.runScripts)))}.call(this),module.exports}(),require["./browser"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript})(this);
\ No newline at end of file
diff --git a/lib/coffeescript-browser-compiler-modern/coffeescript.js b/lib/coffeescript-browser-compiler-modern/coffeescript.js
new file mode 100644
index 00000000..7134c335
--- /dev/null
+++ b/lib/coffeescript-browser-compiler-modern/coffeescript.js
@@ -0,0 +1,8 @@
+/**
+ * CoffeeScript Compiler v2.7.0
+ * https://coffeescript.org
+ *
+ * Copyright 2011-2022, Jeremy Ashkenas
+ * Released under the MIT License
+ */
+function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(target,property,receiver){var base=_superPropBase(target,property);if(base){var desc=Object.getOwnPropertyDescriptor(base,property);return desc.get?desc.get.call(3>arguments.length?target:receiver):desc.value}},_get.apply(this,arguments)}function _superPropBase(object,property){for(;!Object.prototype.hasOwnProperty.call(object,property)&&(object=_getPrototypeOf(object),null!==object););return object}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),Object.defineProperty(subClass,"prototype",{writable:!1}),superClass&&_setPrototypeOf(subClass,superClass)}function _setPrototypeOf(o,p){return _setPrototypeOf=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_setPrototypeOf(o,p)}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget)}else result=Super.apply(this,arguments);return _possibleConstructorReturn(this,result)}}function _possibleConstructorReturn(self,call){if(call&&("object"===_typeof(call)||"function"==typeof call))return call;if(void 0!==call)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(self)}function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function _getPrototypeOf(o){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_getPrototypeOf(o)}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(arr,i){var _i=null==arr?null:"undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"];if(null!=_i){var _arr=[],_n=!0,_d=!1,_s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!(i&&_arr.length===i));_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i["return"]||_i["return"]()}finally{if(_d)throw _e}}return _arr}}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0,descriptor;i<props.length;i++)descriptor=props[i],descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Object.defineProperty(Constructor,"prototype",{writable:!1}),Constructor}function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _iterableToArray(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=Array(len);i<len;i++)arr2[i]=arr[i];return arr2}var CoffeeScript=function(){var _Mathabs=Math.abs,_StringfromCharCode=String.fromCharCode,_Mathfloor=Math.floor;function require(path){return require[path]}return require["../../package.json"]=function(){return{name:"coffeescript",description:"Unfancy JavaScript",keywords:["javascript","language","coffeescript","compiler"],author:"Jeremy Ashkenas",version:"2.7.0",license:"MIT",engines:{node:">=6"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",module:"./lib/coffeescript-browser-compiler-modern/coffeescript.js",browser:"./lib/coffeescript-browser-compiler-legacy/coffeescript.js",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"https://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"@babel/core":"~7.17.9","@babel/preset-env":"~7.16.11","babel-preset-minify":"~0.5.1",codemirror:"~5.65.3",docco:"~0.9.1","highlight.js":"~11.5.1",jison:"~0.4.18","markdown-it":"~13.0.0",puppeteer:"~13.6.0",underscore:"~1.13.3",webpack:"~5.72.0"}}}(),require["./helpers"]=function(){var exports={};return function(){var indexOf=[].indexOf,UNICODE_CODE_POINT_ESCAPE,attachCommentsToNode,buildLocationData,buildLocationHash,buildTokenDataDictionary,extend,_flatten,isBoolean,isNumber,isString,ref,repeat,syntaxErrorToString,unicodeCodePointToUnicodeEscapes;exports.starts=function(string,literal,start){return literal===string.substr(start,literal.length)},exports.ends=function(string,literal,back){var len;return len=literal.length,literal===string.substr(string.length-len-(back||0),len)},exports.repeat=repeat=function(str,n){var res;for(res="";0<n;)1&n&&(res+=str),n>>>=1,str+=str;return res},exports.compact=function(array){var i,item,len1,results;for(results=[],i=0,len1=array.length;i<len1;i++)item=array[i],item&&results.push(item);return results},exports.count=function(string,substr){var num,pos;if(num=pos=0,!substr.length)return 1/0;for(;pos=1+string.indexOf(substr,pos);)num++;return num},exports.merge=function(options,overrides){return extend(extend({},options),overrides)},extend=exports.extend=function(object,properties){var key,val;for(key in properties)val=properties[key],object[key]=val;return object},exports.flatten=_flatten=function flatten(array){var element,flattened,i,len1;for(flattened=[],i=0,len1=array.length;i<len1;i++)element=array[i],"[object Array]"===Object.prototype.toString.call(element)?flattened=flattened.concat(_flatten(element)):flattened.push(element);return flattened},exports.del=function(obj,key){var val;return val=obj[key],delete obj[key],val},exports.some=null==(ref=Array.prototype.some)?function(fn){var e,i,len1,ref1;for(ref1=this,i=0,len1=ref1.length;i<len1;i++)if(e=ref1[i],fn(e))return!0;return!1}:ref,exports.invertLiterate=function(code){var blankLine,i,indented,insideComment,len1,line,listItemStart,out,ref1;for(out=[],blankLine=/^\s*$/,indented=/^[\t ]/,listItemStart=/^(?:\t?| {0,3})(?:[\*\-\+]|[0-9]{1,9}\.)[ \t]/,insideComment=!1,ref1=code.split("\n"),(i=0,len1=ref1.length);i<len1;i++)line=ref1[i],blankLine.test(line)?(insideComment=!1,out.push(line)):insideComment||listItemStart.test(line)?(insideComment=!0,out.push("# ".concat(line))):!insideComment&&indented.test(line)?out.push(line):(insideComment=!0,out.push("# ".concat(line)));return out.join("\n")},buildLocationData=function(first,last){return last?{first_line:first.first_line,first_column:first.first_column,last_line:last.last_line,last_column:last.last_column,last_line_exclusive:last.last_line_exclusive,last_column_exclusive:last.last_column_exclusive,range:[first.range[0],last.range[1]]}:first},exports.extractAllCommentTokens=function(tokens){var allCommentsObj,comment,commentKey,i,j,k,key,len1,len2,len3,ref1,results,sortedKeys,token;for(allCommentsObj={},i=0,len1=tokens.length;i<len1;i++)if(token=tokens[i],token.comments)for(ref1=token.comments,j=0,len2=ref1.length;j<len2;j++)comment=ref1[j],commentKey=comment.locationData.range[0],allCommentsObj[commentKey]=comment;for(sortedKeys=Object.keys(allCommentsObj).sort(function(a,b){return a-b}),results=[],(k=0,len3=sortedKeys.length);k<len3;k++)key=sortedKeys[k],results.push(allCommentsObj[key]);return results},buildLocationHash=function(loc){return"".concat(loc.range[0],"-").concat(loc.range[1])},exports.buildTokenDataDictionary=buildTokenDataDictionary=function(tokens){var base1,i,len1,token,tokenData,tokenHash;for(tokenData={},i=0,len1=tokens.length;i<len1;i++)if((token=tokens[i],!!token.comments)&&(tokenHash=buildLocationHash(token[2]),null==tokenData[tokenHash]&&(tokenData[tokenHash]={}),token.comments)){var _ref;(_ref=null==(base1=tokenData[tokenHash]).comments?base1.comments=[]:base1.comments).push.apply(_ref,_toConsumableArray(token.comments))}return tokenData},exports.addDataToNode=function(parserState,firstLocationData,firstValue,lastLocationData,lastValue){var forceUpdateLocation=!(5<arguments.length&&void 0!==arguments[5])||arguments[5];return function(obj){var locationData,objHash,ref1,ref2,ref3;return locationData=buildLocationData(null==(ref1=null==firstValue?void 0:firstValue.locationData)?firstLocationData:ref1,null==(ref2=null==lastValue?void 0:lastValue.locationData)?lastLocationData:ref2),null!=(null==obj?void 0:obj.updateLocationDataIfMissing)&&null!=firstLocationData?obj.updateLocationDataIfMissing(locationData,forceUpdateLocation):obj.locationData=locationData,null==parserState.tokenData&&(parserState.tokenData=buildTokenDataDictionary(parserState.parser.tokens)),null!=obj.locationData&&(objHash=buildLocationHash(obj.locationData),null!=(null==(ref3=parserState.tokenData[objHash])?void 0:ref3.comments)&&attachCommentsToNode(parserState.tokenData[objHash].comments,obj)),obj}},exports.attachCommentsToNode=attachCommentsToNode=function(comments,node){var _node$comments;if(null!=comments&&0!==comments.length)return null==node.comments&&(node.comments=[]),(_node$comments=node.comments).push.apply(_node$comments,_toConsumableArray(comments))},exports.locationDataToString=function(obj){var locationData;return"2"in obj&&"first_line"in obj[2]?locationData=obj[2]:"first_line"in obj&&(locationData=obj),locationData?"".concat(locationData.first_line+1,":").concat(locationData.first_column+1,"-")+"".concat(locationData.last_line+1,":").concat(locationData.last_column+1):"No location data"},exports.anonymousFileName=function(){var n;return n=0,function(){return"<anonymous-".concat(n++,">")}}(),exports.baseFileName=function(file){var stripExt=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],useWinPathSep=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],parts,pathSep;return(pathSep=useWinPathSep?/\\|\//:/\//,parts=file.split(pathSep),file=parts[parts.length-1],!(stripExt&&0<=file.indexOf(".")))?file:(parts=file.split("."),parts.pop(),"coffee"===parts[parts.length-1]&&1<parts.length&&parts.pop(),parts.join("."))},exports.isCoffee=function(file){return /\.((lit)?coffee|coffee\.md)$/.test(file)},exports.isLiterate=function(file){return /\.(litcoffee|coffee\.md)$/.test(file)},exports.throwSyntaxError=function(message,location){var error;throw error=new SyntaxError(message),error.location=location,error.toString=syntaxErrorToString,error.stack=error.toString(),error},exports.updateSyntaxError=function(error,code,filename){return error.toString===syntaxErrorToString&&(error.code||(error.code=code),error.filename||(error.filename=filename),error.stack=error.toString()),error},syntaxErrorToString=function(){var codeLine,colorize,colorsEnabled,end,filename,first_column,first_line,last_column,last_line,marker,ref1,ref2,ref3,ref4,start;if(!(this.code&&this.location))return Error.prototype.toString.call(this);var _this$location=this.location;return first_line=_this$location.first_line,first_column=_this$location.first_column,last_line=_this$location.last_line,last_column=_this$location.last_column,null==last_line&&(last_line=first_line),null==last_column&&(last_column=first_column),filename=(null==(ref1=this.filename)?void 0:ref1.startsWith("<anonymous"))?"[stdin]":this.filename||"[stdin]",codeLine=this.code.split("\n")[first_line],start=first_column,end=first_line===last_line?last_column+1:codeLine.length,marker=codeLine.slice(0,start).replace(/[^\s]/g," ")+repeat("^",end-start),"undefined"!=typeof process&&null!==process&&(colorsEnabled=(null==(ref2=process.stdout)?void 0:ref2.isTTY)&&(null==(ref3=process.env)||!ref3.NODE_DISABLE_COLORS)),(null==(ref4=this.colorful)?colorsEnabled:ref4)&&(colorize=function(str){return"\x1B[1;31m".concat(str,"\x1B[0m")},codeLine=codeLine.slice(0,start)+colorize(codeLine.slice(start,end))+codeLine.slice(end),marker=colorize(marker)),"".concat(filename,":").concat(first_line+1,":").concat(first_column+1,": error: ").concat(this.message,"\n").concat(codeLine,"\n").concat(marker)},exports.nameWhitespaceCharacter=function(string){return" "===string?"space":"\n"===string?"newline":"\r"===string?"carriage return":"\t"===string?"tab":string},exports.parseNumber=function(string){var base;return null==string?0/0:(base=function(){switch(string.charAt(1)){case"b":return 2;case"o":return 8;case"x":return 16;default:return null;}}(),null==base?parseFloat(string.replace(/_/g,"")):parseInt(string.slice(2).replace(/_/g,""),base))},exports.isFunction=function(obj){return"[object Function]"===Object.prototype.toString.call(obj)},exports.isNumber=isNumber=function(obj){return"[object Number]"===Object.prototype.toString.call(obj)},exports.isString=isString=function(obj){return"[object String]"===Object.prototype.toString.call(obj)},exports.isBoolean=isBoolean=function(obj){return!0===obj||!1===obj||"[object Boolean]"===Object.prototype.toString.call(obj)},exports.isPlainObject=function(obj){return"object"===_typeof(obj)&&!!obj&&!Array.isArray(obj)&&!isNumber(obj)&&!isString(obj)&&!isBoolean(obj)},unicodeCodePointToUnicodeEscapes=function(codePoint){var high,low,toUnicodeEscape;return(toUnicodeEscape=function(val){var str;return str=val.toString(16),"\\u".concat(repeat("0",4-str.length)).concat(str)},65536>codePoint)?toUnicodeEscape(codePoint):(high=_Mathfloor((codePoint-65536)/1024)+55296,low=(codePoint-65536)%1024+56320,"".concat(toUnicodeEscape(high)).concat(toUnicodeEscape(low)))},exports.replaceUnicodeCodePointEscapes=function(str){var _ref2=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},flags=_ref2.flags,error=_ref2.error,_ref2$delimiter=_ref2.delimiter,delimiter=void 0===_ref2$delimiter?"":_ref2$delimiter,shouldReplace;return shouldReplace=null!=flags&&0>indexOf.call(flags,"u"),str.replace(UNICODE_CODE_POINT_ESCAPE,function(match,escapedBackslash,codePointHex,offset){var codePointDecimal;return escapedBackslash?escapedBackslash:(codePointDecimal=parseInt(codePointHex,16),1114111<codePointDecimal&&error("unicode code point escapes greater than \\u{10ffff} are not allowed",{offset:offset+delimiter.length,length:codePointHex.length+4}),shouldReplace?unicodeCodePointToUnicodeEscapes(codePointDecimal):match)})},UNICODE_CODE_POINT_ESCAPE=/(\\\\)|\\u\{([\da-fA-F]+)\}/g}.call(this),{exports:exports}.exports}(),require["./rewriter"]=function(){var exports={};return function(){var indexOf=[].indexOf,hasProp={}.hasOwnProperty,_require=require("./helpers"),BALANCED_PAIRS,CALL_CLOSERS,CONTROL_IN_IMPLICIT,DISCARDED,EXPRESSION_CLOSE,EXPRESSION_END,EXPRESSION_START,IMPLICIT_CALL,IMPLICIT_END,IMPLICIT_FUNC,IMPLICIT_UNSPACED_CALL,INVERSES,LINEBREAKS,Rewriter,SINGLE_CLOSERS,SINGLE_LINERS,UNFINISHED,extractAllCommentTokens,generate,k,left,len,moveComments,right,throwSyntaxError;for(throwSyntaxError=_require.throwSyntaxError,extractAllCommentTokens=_require.extractAllCommentTokens,moveComments=function(fromToken,toToken){var comment,k,len,ref,unshiftedComments;if(fromToken.comments){if(toToken.comments&&0!==toToken.comments.length){for(unshiftedComments=[],ref=fromToken.comments,(k=0,len=ref.length);k<len;k++)comment=ref[k],comment.unshift?unshiftedComments.push(comment):toToken.comments.push(comment);toToken.comments=unshiftedComments.concat(toToken.comments)}else toToken.comments=fromToken.comments;return delete fromToken.comments}},generate=function(tag,value,origin,commentsToken){var token;return token=[tag,value],token.generated=!0,origin&&(token.origin=origin),commentsToken&&moveComments(commentsToken,token),token},exports.Rewriter=Rewriter=function(){var Rewriter=function(){function Rewriter(){_classCallCheck(this,Rewriter)}return _createClass(Rewriter,[{key:"rewrite",value:function rewrite(tokens1){var ref,ref1,t;return this.tokens=tokens1,("undefined"!=typeof process&&null!==process?null==(ref=process.env)?void 0:ref.DEBUG_TOKEN_STREAM:void 0)&&(process.env.DEBUG_REWRITTEN_TOKEN_STREAM&&console.log("Initial token stream:"),console.log(function(){var k,len,ref1,results;for(ref1=this.tokens,results=[],(k=0,len=ref1.length);k<len;k++)t=ref1[k],results.push(t[0]+"/"+t[1]+(t.comments?"*":""));return results}.call(this).join(" "))),this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.rescueStowawayComments(),this.addLocationDataToGeneratedTokens(),this.enforceValidJSXAttributes(),this.fixIndentationLocationData(),this.exposeTokenDataToGrammar(),("undefined"!=typeof process&&null!==process?null==(ref1=process.env)?void 0:ref1.DEBUG_REWRITTEN_TOKEN_STREAM:void 0)&&(process.env.DEBUG_TOKEN_STREAM&&console.log("Rewritten token stream:"),console.log(function(){var k,len,ref2,results;for(ref2=this.tokens,results=[],(k=0,len=ref2.length);k<len;k++)t=ref2[k],results.push(t[0]+"/"+t[1]+(t.comments?"*":""));return results}.call(this).join(" "))),this.tokens}},{key:"scanTokens",value:function scanTokens(block){var i,token,tokens;for(tokens=this.tokens,i=0;token=tokens[i];)i+=block.call(this,token,i,tokens);return!0}},{key:"detectEnd",value:function detectEnd(i,condition,action){var opts=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},levels,ref,ref1,token,tokens;for(tokens=this.tokens,levels=0;token=tokens[i];){if(0===levels&&condition.call(this,token,i))return action.call(this,token,i);if((ref=token[0],0<=indexOf.call(EXPRESSION_START,ref))?levels+=1:(ref1=token[0],0<=indexOf.call(EXPRESSION_END,ref1))&&(levels-=1),0>levels)return opts.returnOnNegativeLevel?void 0:action.call(this,token,i);i+=1}return i-1}},{key:"removeLeadingNewlines",value:function removeLeadingNewlines(){var i,k,l,leadingNewlineToken,len,len1,ref,ref1,tag;for(ref=this.tokens,i=k=0,len=ref.length;k<len;i=++k){var _ref$i=_slicedToArray(ref[i],1);if(tag=_ref$i[0],"TERMINATOR"!==tag)break}if(0!==i){for(ref1=this.tokens.slice(0,i),l=0,len1=ref1.length;l<len1;l++)leadingNewlineToken=ref1[l],moveComments(leadingNewlineToken,this.tokens[i]);return this.tokens.splice(0,i)}}},{key:"closeOpenCalls",value:function closeOpenCalls(){var action,condition;return condition=function(token){var ref;return")"===(ref=token[0])||"CALL_END"===ref},action=function(token){return token[0]="CALL_END"},this.scanTokens(function(token,i){return"CALL_START"===token[0]&&this.detectEnd(i+1,condition,action),1})}},{key:"closeOpenIndexes",value:function closeOpenIndexes(){var action,condition,startToken;return startToken=null,condition=function(token){var ref;return"]"===(ref=token[0])||"INDEX_END"===ref},action=function(token,i){return this.tokens.length>=i&&":"===this.tokens[i+1][0]?(startToken[0]="[",token[0]="]"):token[0]="INDEX_END"},this.scanTokens(function(token,i){return"INDEX_START"===token[0]&&(startToken=token,this.detectEnd(i+1,condition,action)),1})}},{key:"indexOfTag",value:function indexOfTag(i){var fuzz,j,k,ref,ref1;fuzz=0;for(var _len=arguments.length,pattern=Array(1<_len?_len-1:0),_key=1;_key<_len;_key++)pattern[_key-1]=arguments[_key];for(j=k=0,ref=pattern.length;0<=ref?k<ref:k>ref;j=0<=ref?++k:--k)if(null!=pattern[j]&&("string"==typeof pattern[j]&&(pattern[j]=[pattern[j]]),ref1=this.tag(i+j+fuzz),0>indexOf.call(pattern[j],ref1)))return-1;return i+j+fuzz-1}},{key:"looksObjectish",value:function looksObjectish(j){var end,index;return-1!==this.indexOfTag(j,"@",null,":")||-1!==this.indexOfTag(j,null,":")||(index=this.indexOfTag(j,EXPRESSION_START),!!(-1!==index&&(end=null,this.detectEnd(index+1,function(token){var ref;return ref=token[0],0<=indexOf.call(EXPRESSION_END,ref)},function(token,i){return end=i}),":"===this.tag(end+1))))}},{key:"findTagsBackwards",value:function findTagsBackwards(i,tags){var backStack,ref,ref1,ref2,ref3,ref4,ref5;for(backStack=[];0<=i&&(backStack.length||(ref2=this.tag(i),0>indexOf.call(tags,ref2))&&((ref3=this.tag(i),0>indexOf.call(EXPRESSION_START,ref3))||this.tokens[i].generated)&&(ref4=this.tag(i),0>indexOf.call(LINEBREAKS,ref4)));)(ref=this.tag(i),0<=indexOf.call(EXPRESSION_END,ref))&&backStack.push(this.tag(i)),(ref1=this.tag(i),0<=indexOf.call(EXPRESSION_START,ref1))&&backStack.length&&backStack.pop(),i-=1;return ref5=this.tag(i),0<=indexOf.call(tags,ref5)}},{key:"addImplicitBracesAndParens",value:function addImplicitBracesAndParens(){var stack,start;return stack=[],start=null,this.scanTokens(function(token,i,tokens){var _this=this,_token=_slicedToArray(token,1),endImplicitCall,endImplicitObject,forward,implicitObjectContinues,implicitObjectIndent,inControlFlow,inImplicit,inImplicitCall,inImplicitControl,inImplicitObject,isImplicit,isImplicitCall,isImplicitObject,k,newLine,nextTag,nextToken,offset,preContinuationLineIndent,preObjectToken,prevTag,prevToken,ref,ref1,ref2,ref3,ref4,ref5,s,sameLine,stackIdx,stackItem,stackNext,stackTag,stackTop,startIdx,startImplicitCall,startImplicitObject,startIndex,startTag,startsLine,tag;tag=_token[0];var _prevToken=prevToken=0<i?tokens[i-1]:[],_prevToken2=_slicedToArray(_prevToken,1);prevTag=_prevToken2[0];var _nextToken=nextToken=i<tokens.length-1?tokens[i+1]:[],_nextToken2=_slicedToArray(_nextToken,1);if(nextTag=_nextToken2[0],stackTop=function(){return stack[stack.length-1]},startIdx=i,forward=function(n){return i-startIdx+n},isImplicit=function(stackItem){var ref;return null==stackItem||null==(ref=stackItem[2])?void 0:ref.ours},isImplicitObject=function(stackItem){return isImplicit(stackItem)&&"{"===(null==stackItem?void 0:stackItem[0])},isImplicitCall=function(stackItem){return isImplicit(stackItem)&&"("===(null==stackItem?void 0:stackItem[0])},inImplicit=function(){return isImplicit(stackTop())},inImplicitCall=function(){return isImplicitCall(stackTop())},inImplicitObject=function(){return isImplicitObject(stackTop())},inImplicitControl=function(){var ref;return inImplicit()&&"CONTROL"===(null==(ref=stackTop())?void 0:ref[0])},startImplicitCall=function(idx){return stack.push(["(",idx,{ours:!0}]),tokens.splice(idx,0,generate("CALL_START","(",["","implicit function call",token[2]],prevToken))},endImplicitCall=function(){return stack.pop(),tokens.splice(i,0,generate("CALL_END",")",["","end of input",token[2]],prevToken)),i+=1},startImplicitObject=function(idx){var _ref3=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref3$startsLine=_ref3.startsLine,continuationLineIndent=_ref3.continuationLineIndent,val;return stack.push(["{",idx,{sameLine:!0,startsLine:void 0===_ref3$startsLine||_ref3$startsLine,ours:!0,continuationLineIndent:continuationLineIndent}]),val=new String("{"),val.generated=!0,tokens.splice(idx,0,generate("{",val,token,prevToken))},endImplicitObject=function(j){return j=null==j?i:j,stack.pop(),tokens.splice(j,0,generate("}","}",token,prevToken)),i+=1},implicitObjectContinues=function(j){var nextTerminatorIdx;return nextTerminatorIdx=null,_this.detectEnd(j,function(token){return"TERMINATOR"===token[0]},function(token,i){return nextTerminatorIdx=i},{returnOnNegativeLevel:!0}),null!=nextTerminatorIdx&&_this.looksObjectish(nextTerminatorIdx+1)},(inImplicitCall()||inImplicitObject())&&0<=indexOf.call(CONTROL_IN_IMPLICIT,tag)||inImplicitObject()&&":"===prevTag&&"FOR"===tag)return stack.push(["CONTROL",i,{ours:!0}]),forward(1);if("INDENT"===tag&&inImplicit()){if("=>"!==prevTag&&"->"!==prevTag&&"["!==prevTag&&"("!==prevTag&&","!==prevTag&&"{"!==prevTag&&"ELSE"!==prevTag&&"="!==prevTag)for(;inImplicitCall()||inImplicitObject()&&":"!==prevTag;)inImplicitCall()?endImplicitCall():endImplicitObject();return inImplicitControl()&&stack.pop(),stack.push([tag,i]),forward(1)}if(0<=indexOf.call(EXPRESSION_START,tag))return stack.push([tag,i]),forward(1);if(0<=indexOf.call(EXPRESSION_END,tag)){for(;inImplicit();)inImplicitCall()?endImplicitCall():inImplicitObject()?endImplicitObject():stack.pop();start=stack.pop()}if(inControlFlow=function(){var controlFlow,isFunc,seenFor,tagCurrentLine;return(seenFor=_this.findTagsBackwards(i,["FOR"])&&_this.findTagsBackwards(i,["FORIN","FOROF","FORFROM"]),controlFlow=seenFor||_this.findTagsBackwards(i,["WHILE","UNTIL","LOOP","LEADING_WHEN"]),!!controlFlow)&&(isFunc=!1,tagCurrentLine=token[2].first_line,_this.detectEnd(i,function(token){var ref;return ref=token[0],0<=indexOf.call(LINEBREAKS,ref)},function(token,i){var _ref4=tokens[i-1]||[],_ref5=_slicedToArray(_ref4,3),first_line;return prevTag=_ref5[0],first_line=_ref5[2].first_line,isFunc=tagCurrentLine===first_line&&("->"===prevTag||"=>"===prevTag)},{returnOnNegativeLevel:!0}),isFunc)},(0<=indexOf.call(IMPLICIT_FUNC,tag)&&token.spaced||"?"===tag&&0<i&&!tokens[i-1].spaced)&&(0<=indexOf.call(IMPLICIT_CALL,nextTag)||"..."===nextTag&&(ref=this.tag(i+2),0<=indexOf.call(IMPLICIT_CALL,ref))&&!this.findTagsBackwards(i,["INDEX_START","["])||0<=indexOf.call(IMPLICIT_UNSPACED_CALL,nextTag)&&!nextToken.spaced&&!nextToken.newLine)&&!inControlFlow())return"?"===tag&&(tag=token[0]="FUNC_EXIST"),startImplicitCall(i+1),forward(2);if(0<=indexOf.call(IMPLICIT_FUNC,tag)&&-1<this.indexOfTag(i+1,"INDENT")&&this.looksObjectish(i+2)&&!this.findTagsBackwards(i,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"])&&("{"!==(ref1=s=null==(ref2=stackTop())?void 0:ref2[0])&&"["!==ref1||isImplicit(stackTop())||!this.findTagsBackwards(i,s)))return startImplicitCall(i+1),stack.push(["INDENT",i+2]),forward(3);if(":"===tag){if(s=function(){var ref3;switch(!1){case(ref3=this.tag(i-1),0>indexOf.call(EXPRESSION_END,ref3)):var _start=start,_start2=_slicedToArray(_start,2);return startTag=_start2[0],startIndex=_start2[1],"["===startTag&&0<startIndex&&"@"===this.tag(startIndex-1)&&!tokens[startIndex-1].spaced?startIndex-1:startIndex;break;case"@"!==this.tag(i-2):return i-2;default:return i-1;}}.call(this),startsLine=0>=s||(ref3=this.tag(s-1),0<=indexOf.call(LINEBREAKS,ref3))||tokens[s-1].newLine,stackTop()){var _stackTop=stackTop(),_stackTop2=_slicedToArray(_stackTop,2);if(stackTag=_stackTop2[0],stackIdx=_stackTop2[1],stackNext=stack[stack.length-2],("{"===stackTag||"INDENT"===stackTag&&"{"===(null==stackNext?void 0:stackNext[0])&&!isImplicit(stackNext)&&this.findTagsBackwards(stackIdx-1,["{"]))&&(startsLine||","===this.tag(s-1)||"{"===this.tag(s-1))&&(ref4=this.tag(s-1),0>indexOf.call(UNFINISHED,ref4)))return forward(1)}return preObjectToken=1<i?tokens[i-2]:[],startImplicitObject(s,{startsLine:!!startsLine,continuationLineIndent:preObjectToken.continuationLineIndent}),forward(2)}if(0<=indexOf.call(LINEBREAKS,tag))for(k=stack.length-1;0<=k&&(stackItem=stack[k],!!isImplicit(stackItem));k+=-1)isImplicitObject(stackItem)&&(stackItem[2].sameLine=!1);if("TERMINATOR"===tag&&token.endsContinuationLineIndentation)for(preContinuationLineIndent=token.endsContinuationLineIndentation.preContinuationLineIndent;inImplicitObject()&&null!=(implicitObjectIndent=stackTop()[2].continuationLineIndent)&&implicitObjectIndent>preContinuationLineIndent;)endImplicitObject();if(newLine="OUTDENT"===prevTag||prevToken.newLine,0<=indexOf.call(IMPLICIT_END,tag)||0<=indexOf.call(CALL_CLOSERS,tag)&&newLine||(".."===tag||"..."===tag)&&this.findTagsBackwards(i,["INDEX_START"]))for(;inImplicit();){var _stackTop3=stackTop(),_stackTop4=_slicedToArray(_stackTop3,3);stackTag=_stackTop4[0],stackIdx=_stackTop4[1];var _stackTop4$=_stackTop4[2];if(sameLine=_stackTop4$.sameLine,startsLine=_stackTop4$.startsLine,inImplicitCall()&&","!==prevTag||","===prevTag&&"TERMINATOR"===tag&&null==nextTag)endImplicitCall();else if(inImplicitObject()&&sameLine&&"TERMINATOR"!==tag&&":"!==prevTag&&!(("POST_IF"===tag||"FOR"===tag||"WHILE"===tag||"UNTIL"===tag)&&startsLine&&implicitObjectContinues(i+1)))endImplicitObject();else if(inImplicitObject()&&"TERMINATOR"===tag&&","!==prevTag&&!(startsLine&&this.looksObjectish(i+1)))endImplicitObject();else if(inImplicitControl()&&"CLASS"===tokens[stackTop()[1]][0]&&"TERMINATOR"===tag)stack.pop();else break}if(","===tag&&!this.looksObjectish(i+1)&&inImplicitObject()&&"FOROF"!==(ref5=this.tag(i+2))&&"FORIN"!==ref5&&("TERMINATOR"!==nextTag||!this.looksObjectish(i+2)))for(offset="OUTDENT"===nextTag?1:0;inImplicitObject();)endImplicitObject(i+offset);return forward(1)})}},{key:"enforceValidJSXAttributes",value:function enforceValidJSXAttributes(){return this.scanTokens(function(token,i,tokens){var next,ref;return token.jsxColon&&(next=tokens[i+1],"STRING_START"!==(ref=next[0])&&"STRING"!==ref&&"("!==ref&&throwSyntaxError("expected wrapped or quoted JSX attribute",next[2])),1})}},{key:"rescueStowawayComments",value:function rescueStowawayComments(){var dontShiftForward,insertPlaceholder,shiftCommentsBackward,shiftCommentsForward;return insertPlaceholder=function(token,j,tokens,method){return"TERMINATOR"!==tokens[j][0]&&tokens[method](generate("TERMINATOR","\n",tokens[j])),tokens[method](generate("JS","",tokens[j],token))},dontShiftForward=function(i,tokens){var j,ref;for(j=i+1;j!==tokens.length&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));){if("INTERPOLATION_END"===tokens[j][0])return!0;j++}return!1},shiftCommentsForward=function(token,i,tokens){var comment,j,k,len,ref,ref1,ref2;for(j=i;j!==tokens.length&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));)j++;if(!(j===tokens.length||(ref1=tokens[j][0],0<=indexOf.call(DISCARDED,ref1)))){for(ref2=token.comments,k=0,len=ref2.length;k<len;k++)comment=ref2[k],comment.unshift=!0;return moveComments(token,tokens[j]),1}return j=tokens.length-1,insertPlaceholder(token,j,tokens,"push"),1},shiftCommentsBackward=function(token,i,tokens){var j,ref,ref1;for(j=i;-1!==j&&(ref=tokens[j][0],0<=indexOf.call(DISCARDED,ref));)j--;return-1===j||(ref1=tokens[j][0],0<=indexOf.call(DISCARDED,ref1))?(insertPlaceholder(token,0,tokens,"unshift"),3):(moveComments(token,tokens[j]),1)},this.scanTokens(function(token,i,tokens){var dummyToken,j,ref,ref1,ret;if(!token.comments)return 1;if(ret=1,ref=token[0],0<=indexOf.call(DISCARDED,ref)){for(dummyToken={comments:[]},j=token.comments.length-1;-1!==j;)!1===token.comments[j].newLine&&!1===token.comments[j].here&&(dummyToken.comments.unshift(token.comments[j]),token.comments.splice(j,1)),j--;0!==dummyToken.comments.length&&(ret=shiftCommentsBackward(dummyToken,i-1,tokens)),0!==token.comments.length&&shiftCommentsForward(token,i,tokens)}else if(!dontShiftForward(i,tokens)){for(dummyToken={comments:[]},j=token.comments.length-1;-1!==j;)!token.comments[j].newLine||token.comments[j].unshift||"JS"===token[0]&&token.generated||(dummyToken.comments.unshift(token.comments[j]),token.comments.splice(j,1)),j--;0!==dummyToken.comments.length&&(ret=shiftCommentsForward(dummyToken,i+1,tokens))}return 0===(null==(ref1=token.comments)?void 0:ref1.length)&&delete token.comments,ret})}},{key:"addLocationDataToGeneratedTokens",value:function addLocationDataToGeneratedTokens(){return this.scanTokens(function(token,i,tokens){var column,line,nextLocation,prevLocation,rangeIndex,ref,ref1;if(token[2])return 1;if(!(token.generated||token.explicit))return 1;if(token.fromThen&&"INDENT"===token[0])return token[2]=token.origin[2],1;if("{"===token[0]&&(nextLocation=null==(ref=tokens[i+1])?void 0:ref[2])){var _nextLocation=nextLocation;line=_nextLocation.first_line,column=_nextLocation.first_column;var _nextLocation$range=_slicedToArray(_nextLocation.range,1);rangeIndex=_nextLocation$range[0]}else if(prevLocation=null==(ref1=tokens[i-1])?void 0:ref1[2]){var _prevLocation=prevLocation;line=_prevLocation.last_line,column=_prevLocation.last_column;var _prevLocation$range=_slicedToArray(_prevLocation.range,2);rangeIndex=_prevLocation$range[1],column+=1}else line=column=0,rangeIndex=0;return token[2]={first_line:line,first_column:column,last_line:line,last_column:column,last_line_exclusive:line,last_column_exclusive:column,range:[rangeIndex,rangeIndex]},1})}},{key:"fixIndentationLocationData",value:function fixIndentationLocationData(){var _this2=this,findPrecedingComment;return null==this.allComments&&(this.allComments=extractAllCommentTokens(this.tokens)),findPrecedingComment=function(token,_ref6){var afterPosition=_ref6.afterPosition,indentSize=_ref6.indentSize,first=_ref6.first,indented=_ref6.indented,comment,k,l,lastMatching,matches,ref,ref1,tokenStart;if(tokenStart=token[2].range[0],matches=function(comment){return(!comment.outdented||null!=indentSize&&comment.indentSize>indentSize)&&(!indented||comment.indented)&&!!(comment.locationData.range[0]<tokenStart)&&!!(comment.locationData.range[0]>afterPosition)},first){for(lastMatching=null,ref=_this2.allComments,k=ref.length-1;0<=k;k+=-1)if(comment=ref[k],matches(comment))lastMatching=comment;else if(lastMatching)return lastMatching;return lastMatching}for(ref1=_this2.allComments,l=ref1.length-1;0<=l;l+=-1)if(comment=ref1[l],matches(comment))return comment;return null},this.scanTokens(function(token,i,tokens){var isIndent,nextToken,nextTokenIndex,precedingComment,prevLocationData,prevToken,ref,ref1,ref2,useNextToken;if("INDENT"!==(ref=token[0])&&"OUTDENT"!==ref&&(!token.generated||"CALL_END"!==token[0]||null!=(ref1=token.data)&&ref1.closingTagNameToken)&&(!token.generated||"}"!==token[0]))return 1;if(isIndent="INDENT"===token[0],prevToken=null==(ref2=token.prevToken)?tokens[i-1]:ref2,prevLocationData=prevToken[2],useNextToken=token.explicit||token.generated,useNextToken)for(nextToken=token,nextTokenIndex=i;(nextToken.explicit||nextToken.generated)&&nextTokenIndex!==tokens.length-1;)nextToken=tokens[nextTokenIndex++];return(precedingComment=findPrecedingComment(useNextToken?nextToken:token,{afterPosition:prevLocationData.range[0],indentSize:token.indentSize,first:isIndent,indented:useNextToken}),isIndent&&(null==precedingComment||!precedingComment.newLine))?1:token.generated&&"CALL_END"===token[0]&&(null==precedingComment?void 0:precedingComment.indented)?1:(null!=precedingComment&&(prevLocationData=precedingComment.locationData),token[2]={first_line:null==precedingComment?prevLocationData.last_line:prevLocationData.first_line,first_column:null==precedingComment?prevLocationData.last_column:isIndent?0:prevLocationData.first_column,last_line:prevLocationData.last_line,last_column:prevLocationData.last_column,last_line_exclusive:prevLocationData.last_line_exclusive,last_column_exclusive:prevLocationData.last_column_exclusive,range:isIndent&&null!=precedingComment?[prevLocationData.range[0]-precedingComment.indentSize,prevLocationData.range[1]]:prevLocationData.range},1)})}},{key:"normalizeLines",value:function normalizeLines(){var _this3=this,action,closeElseTag,condition,ifThens,indent,leading_if_then,leading_switch_when,outdent,starter;return starter=indent=outdent=null,leading_switch_when=null,leading_if_then=null,ifThens=[],condition=function(token,i){var ref,ref1,ref2,ref3;return";"!==token[1]&&(ref=token[0],0<=indexOf.call(SINGLE_CLOSERS,ref))&&!("TERMINATOR"===token[0]&&(ref1=this.tag(i+1),0<=indexOf.call(EXPRESSION_CLOSE,ref1)))&&!("ELSE"===token[0]&&("THEN"!==starter||leading_if_then||leading_switch_when))&&("CATCH"!==(ref2=token[0])&&"FINALLY"!==ref2||"->"!==starter&&"=>"!==starter)||(ref3=token[0],0<=indexOf.call(CALL_CLOSERS,ref3))&&(this.tokens[i-1].newLine||"OUTDENT"===this.tokens[i-1][0])},action=function(token,i){return"ELSE"===token[0]&&"THEN"===starter&&ifThens.pop(),this.tokens.splice(","===this.tag(i-1)?i-1:i,0,outdent)},closeElseTag=function(tokens,i){var lastThen,outdentElse,tlen;if(tlen=ifThens.length,!(0<tlen))return i;lastThen=ifThens.pop();var _this3$indentation=_this3.indentation(tokens[lastThen]),_this3$indentation2=_slicedToArray(_this3$indentation,2);return outdentElse=_this3$indentation2[1],outdentElse[1]=2*tlen,tokens.splice(i,0,outdentElse),outdentElse[1]=2,tokens.splice(i+1,0,outdentElse),_this3.detectEnd(i+2,function(token){var ref;return"OUTDENT"===(ref=token[0])||"TERMINATOR"===ref},function(token,i){if("OUTDENT"===this.tag(i)&&"OUTDENT"===this.tag(i+1))return tokens.splice(i,2)}),i+2},this.scanTokens(function(token,i,tokens){var _token2=_slicedToArray(token,1),conditionTag,j,k,ref,ref1,ref2,tag;if(tag=_token2[0],conditionTag=("->"===tag||"=>"===tag)&&this.findTagsBackwards(i,["IF","WHILE","FOR","UNTIL","SWITCH","WHEN","LEADING_WHEN","[","INDEX_START"])&&!this.findTagsBackwards(i,["THEN","..","..."]),"TERMINATOR"===tag){if("ELSE"===this.tag(i+1)&&"OUTDENT"!==this.tag(i-1))return tokens.splice.apply(tokens,[i,1].concat(_toConsumableArray(this.indentation()))),1;if(ref=this.tag(i+1),0<=indexOf.call(EXPRESSION_CLOSE,ref))return";"===token[1]&&"OUTDENT"===this.tag(i+1)&&(tokens[i+1].prevToken=token,moveComments(token,tokens[i+1])),tokens.splice(i,1),0}if("CATCH"===tag)for(j=k=1;2>=k;j=++k)if("OUTDENT"===(ref1=this.tag(i+j))||"TERMINATOR"===ref1||"FINALLY"===ref1)return tokens.splice.apply(tokens,[i+j,0].concat(_toConsumableArray(this.indentation()))),2+j;if(("->"===tag||"=>"===tag)&&(","===(ref2=this.tag(i+1))||"]"===ref2||"."===this.tag(i+1)&&token.newLine)){var _this$indentation=this.indentation(tokens[i]),_this$indentation2=_slicedToArray(_this$indentation,2);return indent=_this$indentation2[0],outdent=_this$indentation2[1],tokens.splice(i+1,0,indent,outdent),1}if(0<=indexOf.call(SINGLE_LINERS,tag)&&"INDENT"!==this.tag(i+1)&&("ELSE"!==tag||"IF"!==this.tag(i+1))&&!conditionTag){starter=tag;var _this$indentation3=this.indentation(tokens[i]),_this$indentation4=_slicedToArray(_this$indentation3,2);return indent=_this$indentation4[0],outdent=_this$indentation4[1],"THEN"===starter&&(indent.fromThen=!0),"THEN"===tag&&(leading_switch_when=this.findTagsBackwards(i,["LEADING_WHEN"])&&"IF"===this.tag(i+1),leading_if_then=this.findTagsBackwards(i,["IF"])&&"IF"===this.tag(i+1)),"THEN"===tag&&this.findTagsBackwards(i,["IF"])&&ifThens.push(i),"ELSE"===tag&&"OUTDENT"!==this.tag(i-1)&&(i=closeElseTag(tokens,i)),tokens.splice(i+1,0,indent),this.detectEnd(i+2,condition,action),"THEN"===tag&&tokens.splice(i,1),1}return 1})}},{key:"tagPostfixConditionals",value:function tagPostfixConditionals(){var action,condition,original;return original=null,condition=function(token,i){var _token3=_slicedToArray(token,1),prevTag,tag;tag=_token3[0];var _this$tokens=_slicedToArray(this.tokens[i-1],1);return prevTag=_this$tokens[0],"TERMINATOR"===tag||"INDENT"===tag&&0>indexOf.call(SINGLE_LINERS,prevTag)},action=function(token){if("INDENT"!==token[0]||token.generated&&!token.fromThen)return original[0]="POST_"+original[0]},this.scanTokens(function(token,i){return"IF"===token[0]?(original=token,this.detectEnd(i+1,condition,action),1):1})}},{key:"exposeTokenDataToGrammar",value:function exposeTokenDataToGrammar(){return this.scanTokens(function(token){var key,ref,ref1,val;if(token.generated||token.data&&0!==Object.keys(token.data).length){for(key in token[1]=new String(token[1]),ref1=null==(ref=token.data)?{}:ref,ref1)hasProp.call(ref1,key)&&(val=ref1[key],token[1][key]=val);token.generated&&(token[1].generated=!0)}return 1})}},{key:"indentation",value:function indentation(origin){var indent,outdent;return indent=["INDENT",2],outdent=["OUTDENT",2],origin?(indent.generated=outdent.generated=!0,indent.origin=outdent.origin=origin):indent.explicit=outdent.explicit=!0,[indent,outdent]}},{key:"tag",value:function tag(i){var ref;return null==(ref=this.tokens[i])?void 0:ref[0]}}]),Rewriter}();return Rewriter.prototype.generate=generate,Rewriter}.call(this),BALANCED_PAIRS=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["INTERPOLATION_START","INTERPOLATION_END"],["REGEX_START","REGEX_END"]],exports.INVERSES=INVERSES={},EXPRESSION_START=[],EXPRESSION_END=[],(k=0,len=BALANCED_PAIRS.length);k<len;k++){var _BALANCED_PAIRS$k=_slicedToArray(BALANCED_PAIRS[k],2);left=_BALANCED_PAIRS$k[0],right=_BALANCED_PAIRS$k[1],EXPRESSION_START.push(INVERSES[right]=left),EXPRESSION_END.push(INVERSES[left]=right)}EXPRESSION_CLOSE=["CATCH","THEN","ELSE","FINALLY"].concat(EXPRESSION_END),IMPLICIT_FUNC=["IDENTIFIER","PROPERTY","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],IMPLICIT_CALL=["IDENTIFIER","JSX_TAG","PROPERTY","NUMBER","INFINITY","NAN","STRING","STRING_START","REGEX","REGEX_START","JS","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","DYNAMIC_IMPORT","IMPORT_META","NEW_TARGET","UNDEFINED","NULL","BOOL","UNARY","DO","DO_IIFE","YIELD","AWAIT","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],IMPLICIT_UNSPACED_CALL=["+","-"],IMPLICIT_END=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],SINGLE_LINERS=["ELSE","->","=>","TRY","FINALLY","THEN"],SINGLE_CLOSERS=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],LINEBREAKS=["TERMINATOR","INDENT","OUTDENT"],CALL_CLOSERS=[".","?.","::","?::"],CONTROL_IN_IMPLICIT=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],DISCARDED=["(",")","[","]","{","}",":",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","DO","DO_IIFE","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","INTERPOLATION_START","INTERPOLATION_END","LEADING_WHEN","OUTDENT","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(IMPLICIT_UNSPACED_CALL.concat(IMPLICIT_END.concat(CALL_CLOSERS.concat(CONTROL_IN_IMPLICIT)))),exports.UNFINISHED=UNFINISHED=["\\",".","?.","?::","UNARY","DO","DO_IIFE","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS"]}.call(this),{exports:exports}.exports}(),require["./lexer"]=function(){var exports={};return function(){var indexOf=[].indexOf,slice=[].slice,_require2=require("./rewriter"),BOM,BOOL,CALLABLE,CODE,COFFEE_ALIASES,COFFEE_ALIAS_MAP,COFFEE_KEYWORDS,COMMENT,COMPARABLE_LEFT_SIDE,COMPARE,COMPOUND_ASSIGN,HERECOMMENT_ILLEGAL,HEREDOC_DOUBLE,HEREDOC_INDENT,HEREDOC_SINGLE,HEREGEX,HEREGEX_COMMENT,HERE_JSTOKEN,IDENTIFIER,INDENTABLE_CLOSERS,INDEXABLE,INSIDE_JSX,INVERSES,JSTOKEN,JSX_ATTRIBUTE,JSX_FRAGMENT_IDENTIFIER,JSX_IDENTIFIER,JSX_IDENTIFIER_PART,JSX_INTERPOLATION,JS_KEYWORDS,LINE_BREAK,LINE_CONTINUER,Lexer,MATH,MULTI_DENT,NOT_REGEX,NUMBER,OPERATOR,POSSIBLY_DIVISION,REGEX,REGEX_FLAGS,REGEX_ILLEGAL,REGEX_INVALID_ESCAPE,RELATION,RESERVED,Rewriter,SHIFT,STRICT_PROSCRIBED,STRING_DOUBLE,STRING_INVALID_ESCAPE,STRING_SINGLE,STRING_START,TRAILING_SPACES,UNARY,UNARY_MATH,UNFINISHED,VALID_FLAGS,WHITESPACE,addTokenData,attachCommentsToNode,compact,count,flatten,invertLiterate,isForFrom,isUnassignable,key,locationDataToString,merge,parseNumber,repeat,replaceUnicodeCodePointEscapes,starts,throwSyntaxError;Rewriter=_require2.Rewriter,INVERSES=_require2.INVERSES,UNFINISHED=_require2.UNFINISHED;var _require3=require("./helpers");count=_require3.count,starts=_require3.starts,compact=_require3.compact,repeat=_require3.repeat,invertLiterate=_require3.invertLiterate,merge=_require3.merge,attachCommentsToNode=_require3.attachCommentsToNode,locationDataToString=_require3.locationDataToString,throwSyntaxError=_require3.throwSyntaxError,replaceUnicodeCodePointEscapes=_require3.replaceUnicodeCodePointEscapes,flatten=_require3.flatten,parseNumber=_require3.parseNumber,exports.Lexer=Lexer=function(){function Lexer(){_classCallCheck(this,Lexer),this.error=this.error.bind(this)}return _createClass(Lexer,[{key:"tokenize",value:function tokenize(code){var opts=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},consumed,end,i,ref;for(this.literate=opts.literate,this.indent=0,this.baseIndent=0,this.continuationLineAdditionalIndent=0,this.outdebt=0,this.indents=[],this.indentLiteral="",this.ends=[],this.tokens=[],this.seenFor=!1,this.seenImport=!1,this.seenExport=!1,this.importSpecifierList=!1,this.exportSpecifierList=!1,this.jsxDepth=0,this.jsxObjAttribute={},this.chunkLine=opts.line||0,this.chunkColumn=opts.column||0,this.chunkOffset=opts.offset||0,this.locationDataCompensations=opts.locationDataCompensations||{},code=this.clean(code),i=0;this.chunk=code.slice(i);){consumed=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.jsxToken()||this.regexToken()||this.jsToken()||this.literalToken();var _this$getLineAndColum=this.getLineAndColumnFromChunk(consumed),_this$getLineAndColum2=_slicedToArray(_this$getLineAndColum,3);if(this.chunkLine=_this$getLineAndColum2[0],this.chunkColumn=_this$getLineAndColum2[1],this.chunkOffset=_this$getLineAndColum2[2],i+=consumed,opts.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:i}}return this.closeIndentation(),(end=this.ends.pop())&&this.error("missing ".concat(end.tag),(null==(ref=end.origin)?end:ref)[2]),!1===opts.rewrite?this.tokens:new Rewriter().rewrite(this.tokens)}},{key:"clean",value:function clean(code){var _this4=this,base,thusFar;return thusFar=0,code.charCodeAt(0)===BOM&&(code=code.slice(1),this.locationDataCompensations[0]=1,thusFar+=1),WHITESPACE.test(code)&&(code="\n".concat(code),this.chunkLine--,null==(base=this.locationDataCompensations)[0]&&(base[0]=0),this.locationDataCompensations[0]-=1),code=code.replace(/\r/g,function(match,offset){return _this4.locationDataCompensations[thusFar+offset]=1,""}).replace(TRAILING_SPACES,""),this.literate&&(code=invertLiterate(code)),code}},{key:"identifierToken",value:function identifierToken(){var alias,colon,colonOffset,colonToken,id,idLength,inJSXTag,input,match,poppedToken,prev,prevprev,ref,ref1,ref10,ref11,ref12,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,regExSuper,regex,sup,tag,tagToken,tokenData;if(inJSXTag=this.atJSXTag(),regex=inJSXTag?JSX_ATTRIBUTE:IDENTIFIER,!(match=regex.exec(this.chunk)))return 0;var _match=match,_match2=_slicedToArray(_match,3);if(input=_match2[0],id=_match2[1],colon=_match2[2],idLength=id.length,poppedToken=void 0,"own"===id&&"FOR"===this.tag())return this.token("OWN",id),id.length;if("from"===id&&"YIELD"===this.tag())return this.token("FROM",id),id.length;if("as"===id&&this.seenImport){if("*"===this.value())this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(ref=this.value(!0),0<=indexOf.call(COFFEE_KEYWORDS,ref)){prev=this.prev();var _ref7=["IDENTIFIER",this.value(!0)];prev[0]=_ref7[0],prev[1]=_ref7[1]}if("DEFAULT"===(ref1=this.tag())||"IMPORT_ALL"===ref1||"IDENTIFIER"===ref1)return this.token("AS",id),id.length}if("as"===id&&this.seenExport){if("IDENTIFIER"===(ref2=this.tag())||"DEFAULT"===ref2)return this.token("AS",id),id.length;if(ref3=this.value(!0),0<=indexOf.call(COFFEE_KEYWORDS,ref3)){prev=this.prev();var _ref8=["IDENTIFIER",this.value(!0)];return prev[0]=_ref8[0],prev[1]=_ref8[1],this.token("AS",id),id.length}}if("default"===id&&this.seenExport&&("EXPORT"===(ref4=this.tag())||"AS"===ref4))return this.token("DEFAULT",id),id.length;if("assert"===id&&(this.seenImport||this.seenExport)&&"STRING"===this.tag())return this.token("ASSERT",id),id.length;if("do"===id&&(regExSuper=/^(\s*super)(?!\(\))/.exec(this.chunk.slice(3)))){this.token("SUPER","super"),this.token("CALL_START","("),this.token("CALL_END",")");var _regExSuper=regExSuper,_regExSuper2=_slicedToArray(_regExSuper,2);return input=_regExSuper2[0],sup=_regExSuper2[1],sup.length+3}if(prev=this.prev(),tag=colon||null!=prev&&("."===(ref5=prev[0])||"?."===ref5||"::"===ref5||"?::"===ref5||!prev.spaced&&"@"===prev[0])?"PROPERTY":"IDENTIFIER",tokenData={},"IDENTIFIER"===tag&&(0<=indexOf.call(JS_KEYWORDS,id)||0<=indexOf.call(COFFEE_KEYWORDS,id))&&!(this.exportSpecifierList&&0<=indexOf.call(COFFEE_KEYWORDS,id))?(tag=id.toUpperCase(),"WHEN"===tag&&(ref6=this.tag(),0<=indexOf.call(LINE_BREAK,ref6))?tag="LEADING_WHEN":"FOR"===tag?this.seenFor={endsLength:this.ends.length}:"UNLESS"===tag?tag="IF":"IMPORT"===tag?this.seenImport=!0:"EXPORT"===tag?this.seenExport=!0:0<=indexOf.call(UNARY,tag)?tag="UNARY":0<=indexOf.call(RELATION,tag)&&("INSTANCEOF"!==tag&&this.seenFor?(tag="FOR"+tag,this.seenFor=!1):(tag="RELATION","!"===this.value()&&(poppedToken=this.tokens.pop(),tokenData.invert=null==(ref7=null==(ref8=poppedToken.data)?void 0:ref8.original)?poppedToken[1]:ref7)))):"IDENTIFIER"===tag&&this.seenFor&&"from"===id&&isForFrom(prev)?(tag="FORFROM",this.seenFor=!1):"PROPERTY"===tag&&prev&&(prev.spaced&&(ref9=prev[0],0<=indexOf.call(CALLABLE,ref9))&&/^[gs]et$/.test(prev[1])&&1<this.tokens.length&&"."!==(ref10=this.tokens[this.tokens.length-2][0])&&"?."!==ref10&&"@"!==ref10?this.error("'".concat(prev[1],"' cannot be used as a keyword, or as a function call without parentheses"),prev[2]):"."===prev[0]&&1<this.tokens.length&&"UNARY"===(prevprev=this.tokens[this.tokens.length-2])[0]&&"new"===prevprev[1]?prevprev[0]="NEW_TARGET":"."===prev[0]&&1<this.tokens.length&&"IMPORT"===(prevprev=this.tokens[this.tokens.length-2])[0]&&"import"===prevprev[1]?(this.seenImport=!1,prevprev[0]="IMPORT_META"):2<this.tokens.length&&(prevprev=this.tokens[this.tokens.length-2],("@"===(ref11=prev[0])||"THIS"===ref11)&&prevprev&&prevprev.spaced&&/^[gs]et$/.test(prevprev[1])&&"."!==(ref12=this.tokens[this.tokens.length-3][0])&&"?."!==ref12&&"@"!==ref12&&this.error("'".concat(prevprev[1],"' cannot be used as a keyword, or as a function call without parentheses"),prevprev[2]))),"IDENTIFIER"===tag&&0<=indexOf.call(RESERVED,id)&&!inJSXTag&&this.error("reserved word '".concat(id,"'"),{length:id.length}),"PROPERTY"===tag||this.exportSpecifierList||this.importSpecifierList||(0<=indexOf.call(COFFEE_ALIASES,id)&&(alias=id,id=COFFEE_ALIAS_MAP[id],tokenData.original=alias),tag=function(){return"!"===id?"UNARY":"=="===id||"!="===id?"COMPARE":"true"===id||"false"===id?"BOOL":"break"===id||"continue"===id||"debugger"===id?"STATEMENT":"&&"===id||"||"===id?id:tag}()),tagToken=this.token(tag,id,{length:idLength,data:tokenData}),alias&&(tagToken.origin=[tag,alias,tagToken[2]]),poppedToken){var _ref9=[poppedToken[2].first_line,poppedToken[2].first_column,poppedToken[2].range[0]];tagToken[2].first_line=_ref9[0],tagToken[2].first_column=_ref9[1],tagToken[2].range[0]=_ref9[2]}return colon&&(colonOffset=input.lastIndexOf(inJSXTag?"=":":"),colonToken=this.token(":",":",{offset:colonOffset}),inJSXTag&&(colonToken.jsxColon=!0)),inJSXTag&&"IDENTIFIER"===tag&&":"!==prev[0]&&this.token(",",",",{length:0,origin:tagToken,generated:!0}),input.length}},{key:"numberToken",value:function numberToken(){var lexedLength,match,number,parsedValue,tag,tokenData;if(!(match=NUMBER.exec(this.chunk)))return 0;switch(number=match[0],lexedLength=number.length,!1){case!/^0[BOX]/.test(number):this.error("radix prefix in '".concat(number,"' must be lowercase"),{offset:1});break;case!/^0\d*[89]/.test(number):this.error("decimal literal '".concat(number,"' must not be prefixed with '0'"),{length:lexedLength});break;case!/^0\d+/.test(number):this.error("octal literal '".concat(number,"' must be prefixed with '0o'"),{length:lexedLength});}return parsedValue=parseNumber(number),tokenData={parsedValue:parsedValue},tag=2e308===parsedValue?"INFINITY":"NUMBER","INFINITY"===tag&&(tokenData.original=number),this.token(tag,number,{length:lexedLength,data:tokenData}),lexedLength}},{key:"stringToken",value:function stringToken(){var _this5=this,_ref10=STRING_START.exec(this.chunk)||[],_ref11=_slicedToArray(_ref10,1),attempt,delimiter,doc,end,heredoc,i,indent,match,prev,quote,ref,regex,token,tokens;if(quote=_ref11[0],!quote)return 0;prev=this.prev(),prev&&"from"===this.value()&&(this.seenImport||this.seenExport)&&(prev[0]="FROM"),regex=function(){return"'"===quote?STRING_SINGLE:"\""===quote?STRING_DOUBLE:"'''"===quote?HEREDOC_SINGLE:"\"\"\""===quote?HEREDOC_DOUBLE:void 0}();var _this$matchWithInterp=this.matchWithInterpolations(regex,quote);if(tokens=_this$matchWithInterp.tokens,end=_this$matchWithInterp.index,heredoc=3===quote.length,heredoc)for(indent=null,doc=function(){var j,len,results;for(results=[],i=j=0,len=tokens.length;j<len;i=++j)token=tokens[i],"NEOSTRING"===token[0]&&results.push(token[1]);return results}().join("#{}");match=HEREDOC_INDENT.exec(doc);)attempt=match[1],(null===indent||0<(ref=attempt.length)&&ref<indent.length)&&(indent=attempt);return delimiter=quote.charAt(0),this.mergeInterpolationTokens(tokens,{quote:quote,indent:indent,endOffset:end},function(value){return _this5.validateUnicodeCodePointEscapes(value,{delimiter:quote})}),this.atJSXTag()&&this.token(",",",",{length:0,origin:this.prev,generated:!0}),end}},{key:"commentToken",value:function commentToken(){var chunk=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.chunk,_ref12=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},heregex=_ref12.heregex,_ref12$returnCommentT=_ref12.returnCommentTokens,_ref12$offsetInChunk=_ref12.offsetInChunk,offsetInChunk=void 0===_ref12$offsetInChunk?0:_ref12$offsetInChunk,commentAttachment,commentAttachments,commentWithSurroundingWhitespace,content,contents,getIndentSize,hasSeenFirstCommentLine,hereComment,hereLeadingWhitespace,hereTrailingWhitespace,i,indentSize,leadingNewline,leadingNewlineOffset,leadingNewlines,leadingWhitespace,length,lineComment,match,matchIllegal,noIndent,nonInitial,placeholderToken,precededByBlankLine,precedingNonCommentLines,prev;if(!(match=chunk.match(COMMENT)))return 0;var _match3=match,_match4=_slicedToArray(_match3,5);return commentWithSurroundingWhitespace=_match4[0],hereLeadingWhitespace=_match4[1],hereComment=_match4[2],hereTrailingWhitespace=_match4[3],lineComment=_match4[4],contents=null,leadingNewline=/^\s*\n+\s*#/.test(commentWithSurroundingWhitespace),hereComment?(matchIllegal=HERECOMMENT_ILLEGAL.exec(hereComment),matchIllegal&&this.error("block comments cannot contain ".concat(matchIllegal[0]),{offset:"###".length+matchIllegal.index,length:matchIllegal[0].length}),chunk=chunk.replace("###".concat(hereComment,"###"),""),chunk=chunk.replace(/^\n+/,""),this.lineToken({chunk:chunk}),content=hereComment,contents=[{content:content,length:commentWithSurroundingWhitespace.length-hereLeadingWhitespace.length-hereTrailingWhitespace.length,leadingWhitespace:hereLeadingWhitespace}]):(leadingNewlines="",content=lineComment.replace(/^(\n*)/,function(leading){return leadingNewlines=leading,""}),precedingNonCommentLines="",hasSeenFirstCommentLine=!1,contents=content.split("\n").map(function(line){var comment,leadingWhitespace;return-1<line.indexOf("#")?(leadingWhitespace="",content=line.replace(/^([ |\t]*)#/,function(_,whitespace){return leadingWhitespace=whitespace,""}),comment={content:content,length:"#".length+content.length,leadingWhitespace:"".concat(hasSeenFirstCommentLine?"":leadingNewlines).concat(precedingNonCommentLines).concat(leadingWhitespace),precededByBlankLine:!!precedingNonCommentLines},hasSeenFirstCommentLine=!0,precedingNonCommentLines="",comment):void(precedingNonCommentLines+="\n".concat(line))}).filter(function(comment){return comment})),getIndentSize=function(_ref13){var leadingWhitespace=_ref13.leadingWhitespace,nonInitial=_ref13.nonInitial,lastNewlineIndex;if(lastNewlineIndex=leadingWhitespace.lastIndexOf("\n"),null==hereComment&&nonInitial)null==lastNewlineIndex&&(lastNewlineIndex=-1);else if(!(-1<lastNewlineIndex))return null;return leadingWhitespace.length-1-lastNewlineIndex},commentAttachments=function(){var j,len,results;for(results=[],i=j=0,len=contents.length;j<len;i=++j){var _contents$i=contents[i];content=_contents$i.content,length=_contents$i.length,leadingWhitespace=_contents$i.leadingWhitespace,precededByBlankLine=_contents$i.precededByBlankLine,nonInitial=0!==i,leadingNewlineOffset=nonInitial?1:0,offsetInChunk+=leadingNewlineOffset+leadingWhitespace.length,indentSize=getIndentSize({leadingWhitespace:leadingWhitespace,nonInitial:nonInitial}),noIndent=null==indentSize||-1===indentSize,commentAttachment={content:content,here:null!=hereComment,newLine:leadingNewline||nonInitial,locationData:this.makeLocationData({offsetInChunk:offsetInChunk,length:length}),precededByBlankLine:precededByBlankLine,indentSize:indentSize,indented:!noIndent&&indentSize>this.indent,outdented:!noIndent&&indentSize<this.indent},heregex&&(commentAttachment.heregex=!0),offsetInChunk+=length,results.push(commentAttachment)}return results}.call(this),prev=this.prev(),prev?attachCommentsToNode(commentAttachments,prev):(commentAttachments[0].newLine=!0,this.lineToken({chunk:this.chunk.slice(commentWithSurroundingWhitespace.length),offset:commentWithSurroundingWhitespace.length}),placeholderToken=this.makeToken("JS","",{offset:commentWithSurroundingWhitespace.length,generated:!0}),placeholderToken.comments=commentAttachments,this.tokens.push(placeholderToken),this.newlineToken(commentWithSurroundingWhitespace.length)),void 0!==_ref12$returnCommentT&&_ref12$returnCommentT?commentAttachments:commentWithSurroundingWhitespace.length}},{key:"jsToken",value:function jsToken(){var length,match,matchedHere,script;return"`"===this.chunk.charAt(0)&&(match=(matchedHere=HERE_JSTOKEN.exec(this.chunk))||JSTOKEN.exec(this.chunk))?(script=match[1],length=match[0].length,this.token("JS",script,{length:length,data:{here:!!matchedHere}}),length):0}},{key:"regexToken",value:function regexToken(){var _this6=this,body,closed,comment,commentIndex,commentOpts,commentTokens,comments,delimiter,end,flags,fullMatch,index,leadingWhitespace,match,matchedComment,origin,prev,ref,ref1,regex,tokens;switch(!1){case!(match=REGEX_ILLEGAL.exec(this.chunk)):this.error("regular expressions cannot begin with ".concat(match[2]),{offset:match.index+match[1].length});break;case!(match=this.matchWithInterpolations(HEREGEX,"///")):var _match5=match;for(tokens=_match5.tokens,index=_match5.index,comments=[];matchedComment=HEREGEX_COMMENT.exec(this.chunk.slice(0,index));){var _matchedComment=matchedComment;commentIndex=_matchedComment.index;var _matchedComment2=matchedComment,_matchedComment3=_slicedToArray(_matchedComment2,3);fullMatch=_matchedComment3[0],leadingWhitespace=_matchedComment3[1],comment=_matchedComment3[2],comments.push({comment:comment,offsetInChunk:commentIndex+leadingWhitespace.length})}commentTokens=flatten(function(){var j,len,results;for(results=[],j=0,len=comments.length;j<len;j++)commentOpts=comments[j],results.push(this.commentToken(commentOpts.comment,Object.assign(commentOpts,{heregex:!0,returnCommentTokens:!0})));return results}.call(this));break;case!(match=REGEX.exec(this.chunk)):var _match6=match,_match7=_slicedToArray(_match6,3);if(regex=_match7[0],body=_match7[1],closed=_match7[2],this.validateEscapes(body,{isRegex:!0,offsetInChunk:1}),index=regex.length,prev=this.prev(),prev)if(prev.spaced&&(ref=prev[0],0<=indexOf.call(CALLABLE,ref))){if(!closed||POSSIBLY_DIVISION.test(regex))return 0;}else if(ref1=prev[0],0<=indexOf.call(NOT_REGEX,ref1))return 0;closed||this.error("missing / (unclosed regex)");break;default:return 0;}var _REGEX_FLAGS$exec=REGEX_FLAGS.exec(this.chunk.slice(index)),_REGEX_FLAGS$exec2=_slicedToArray(_REGEX_FLAGS$exec,1);switch(flags=_REGEX_FLAGS$exec2[0],end=index+flags.length,origin=this.makeToken("REGEX",null,{length:end}),!1){case!!VALID_FLAGS.test(flags):this.error("invalid regular expression flags ".concat(flags),{offset:index,length:flags.length});break;case!(regex||1===tokens.length):delimiter=body?"/":"///",null==body&&(body=tokens[0][1]),this.validateUnicodeCodePointEscapes(body,{delimiter:delimiter}),this.token("REGEX","/".concat(body,"/").concat(flags),{length:end,origin:origin,data:{delimiter:delimiter}});break;default:this.token("REGEX_START","(",{length:0,origin:origin,generated:!0}),this.token("IDENTIFIER","RegExp",{length:0,generated:!0}),this.token("CALL_START","(",{length:0,generated:!0}),this.mergeInterpolationTokens(tokens,{double:!0,heregex:{flags:flags},endOffset:end-flags.length,quote:"///"},function(str){return _this6.validateUnicodeCodePointEscapes(str,{delimiter:delimiter})}),flags&&(this.token(",",",",{offset:index-1,length:0,generated:!0}),this.token("STRING","\""+flags+"\"",{offset:index,length:flags.length})),this.token(")",")",{offset:end,length:0,generated:!0}),this.token("REGEX_END",")",{offset:end,length:0,generated:!0});}return(null==commentTokens?void 0:commentTokens.length)&&addTokenData(this.tokens[this.tokens.length-1],{heregexCommentTokens:commentTokens}),end}},{key:"lineToken",value:function lineToken(){var _Mathmin=Math.min,_ref14=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},_ref14$chunk=_ref14.chunk,chunk=void 0===_ref14$chunk?this.chunk:_ref14$chunk,_ref14$offset=_ref14.offset,offset=void 0===_ref14$offset?0:_ref14$offset,backslash,diff,endsContinuationLineIndentation,indent,match,minLiteralLength,newIndentLiteral,noNewlines,prev,ref,size;if(!(match=MULTI_DENT.exec(chunk)))return 0;if(indent=match[0],prev=this.prev(),backslash="\\"===(null==prev?void 0:prev[0]),(backslash||(null==(ref=this.seenFor)?void 0:ref.endsLength)<this.ends.length)&&this.seenFor||(this.seenFor=!1),backslash&&this.seenImport||this.importSpecifierList||(this.seenImport=!1),backslash&&this.seenExport||this.exportSpecifierList||(this.seenExport=!1),size=indent.length-1-indent.lastIndexOf("\n"),noNewlines=this.unfinished(),newIndentLiteral=0<size?indent.slice(-size):"",!/^(.?)\1*$/.exec(newIndentLiteral))return this.error("mixed indentation",{offset:indent.length}),indent.length;if(minLiteralLength=_Mathmin(newIndentLiteral.length,this.indentLiteral.length),newIndentLiteral.slice(0,minLiteralLength)!==this.indentLiteral.slice(0,minLiteralLength))return this.error("indentation mismatch",{offset:indent.length}),indent.length;if(size-this.continuationLineAdditionalIndent===this.indent)return noNewlines?this.suppressNewlines():this.newlineToken(offset),indent.length;if(size>this.indent){if(noNewlines)return backslash||(this.continuationLineAdditionalIndent=size-this.indent),this.continuationLineAdditionalIndent&&(prev.continuationLineIndent=this.indent+this.continuationLineAdditionalIndent),this.suppressNewlines(),indent.length;if(!this.tokens.length)return this.baseIndent=this.indent=size,this.indentLiteral=newIndentLiteral,indent.length;diff=size-this.indent+this.outdebt,this.token("INDENT",diff,{offset:offset+indent.length-size,length:size}),this.indents.push(diff),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.continuationLineAdditionalIndent=0,this.indent=size,this.indentLiteral=newIndentLiteral}else size<this.baseIndent?this.error("missing indentation",{offset:offset+indent.length}):(endsContinuationLineIndentation=0<this.continuationLineAdditionalIndent,this.continuationLineAdditionalIndent=0,this.outdentToken({moveOut:this.indent-size,noNewlines:noNewlines,outdentLength:indent.length,offset:offset,indentSize:size,endsContinuationLineIndentation:endsContinuationLineIndentation}));return indent.length}},{key:"outdentToken",value:function outdentToken(_ref15){var moveOut=_ref15.moveOut,noNewlines=_ref15.noNewlines,_ref15$outdentLength=_ref15.outdentLength,outdentLength=void 0===_ref15$outdentLength?0:_ref15$outdentLength,_ref15$offset=_ref15.offset,offset=void 0===_ref15$offset?0:_ref15$offset,indentSize=_ref15.indentSize,endsContinuationLineIndentation=_ref15.endsContinuationLineIndentation,decreasedIndent,dent,lastIndent,ref,terminatorToken;for(decreasedIndent=this.indent-moveOut;0<moveOut;)lastIndent=this.indents[this.indents.length-1],lastIndent?this.outdebt&&moveOut<=this.outdebt?(this.outdebt-=moveOut,moveOut=0):(dent=this.indents.pop()+this.outdebt,outdentLength&&(ref=this.chunk[outdentLength],0<=indexOf.call(INDENTABLE_CLOSERS,ref))&&(decreasedIndent-=dent-moveOut,moveOut=dent),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",moveOut,{length:outdentLength,indentSize:indentSize+moveOut-dent}),moveOut-=dent):this.outdebt=moveOut=0;return dent&&(this.outdebt-=moveOut),this.suppressSemicolons(),"TERMINATOR"===this.tag()||noNewlines||(terminatorToken=this.token("TERMINATOR","\n",{offset:offset+outdentLength,length:0}),endsContinuationLineIndentation&&(terminatorToken.endsContinuationLineIndentation={preContinuationLineIndent:this.indent})),this.indent=decreasedIndent,this.indentLiteral=this.indentLiteral.slice(0,decreasedIndent),this}},{key:"whitespaceToken",value:function whitespaceToken(){var match,nline,prev;return(match=WHITESPACE.exec(this.chunk))||(nline="\n"===this.chunk.charAt(0))?(prev=this.prev(),prev&&(prev[match?"spaced":"newLine"]=!0),match?match[0].length:0):0}},{key:"newlineToken",value:function newlineToken(offset){return this.suppressSemicolons(),"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",{offset:offset,length:0}),this}},{key:"suppressNewlines",value:function suppressNewlines(){var prev;return prev=this.prev(),"\\"===prev[1]&&(prev.comments&&1<this.tokens.length&&attachCommentsToNode(prev.comments,this.tokens[this.tokens.length-2]),this.tokens.pop()),this}},{key:"jsxToken",value:function jsxToken(){var _this7=this,afterTag,end,endToken,firstChar,fullId,fullTagName,id,input,j,jsxTag,len,match,offset,openingTagToken,prev,prevChar,properties,property,ref,tagToken,token,tokens;if(firstChar=this.chunk[0],prevChar=0<this.tokens.length?this.tokens[this.tokens.length-1][0]:"","<"===firstChar){if(match=JSX_IDENTIFIER.exec(this.chunk.slice(1))||JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(1)),!(match&&(0<this.jsxDepth||!(prev=this.prev())||prev.spaced||(ref=prev[0],0>indexOf.call(COMPARABLE_LEFT_SIDE,ref)))))return 0;var _match8=match,_match9=_slicedToArray(_match8,2);if(input=_match9[0],id=_match9[1],fullId=id,0<=indexOf.call(id,".")){var _id$split=id.split("."),_id$split2=_toArray(_id$split);id=_id$split2[0],properties=_id$split2.slice(1)}else properties=[];for(tagToken=this.token("JSX_TAG",id,{length:id.length+1,data:{openingBracketToken:this.makeToken("<","<"),tagNameToken:this.makeToken("IDENTIFIER",id,{offset:1})}}),offset=id.length+1,(j=0,len=properties.length);j<len;j++)property=properties[j],this.token(".",".",{offset:offset}),offset+=1,this.token("PROPERTY",property,{offset:offset}),offset+=property.length;return this.token("CALL_START","(",{generated:!0}),this.token("[","[",{generated:!0}),this.ends.push({tag:"/>",origin:tagToken,name:id,properties:properties}),this.jsxDepth++,fullId.length+1}if(jsxTag=this.atJSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("]","]",{length:2,generated:!0}),this.token("CALL_END",")",{length:2,generated:!0,data:{selfClosingSlashToken:this.makeToken("/","/"),closingBracketToken:this.makeToken(">",">",{offset:1})}}),this.jsxDepth--,2;if("{"===firstChar)return":"===prevChar?(token=this.token("(","{"),this.jsxObjAttribute[this.jsxDepth]=!1,addTokenData(this.tokens[this.tokens.length-3],{jsx:!0})):(token=this.token("{","{"),this.jsxObjAttribute[this.jsxDepth]=!0),this.ends.push({tag:"}",origin:token}),1;if(">"===firstChar){var _this$pair=this.pair("/>");openingTagToken=_this$pair.origin,this.token("]","]",{generated:!0,data:{closingBracketToken:this.makeToken(">",">")}}),this.token(",","JSX_COMMA",{generated:!0});var _this$matchWithInterp2=this.matchWithInterpolations(INSIDE_JSX,">","</",JSX_INTERPOLATION);tokens=_this$matchWithInterp2.tokens,end=_this$matchWithInterp2.index,this.mergeInterpolationTokens(tokens,{endOffset:end,jsx:!0},function(value){return _this7.validateUnicodeCodePointEscapes(value,{delimiter:">"})}),match=JSX_IDENTIFIER.exec(this.chunk.slice(end))||JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(end)),match&&match[1]==="".concat(jsxTag.name).concat(function(){var k,len1,ref1,results;for(ref1=jsxTag.properties,results=[],(k=0,len1=ref1.length);k<len1;k++)property=ref1[k],results.push(".".concat(property));return results}().join(""))||this.error("expected corresponding JSX closing tag for ".concat(jsxTag.name),jsxTag.origin.data.tagNameToken[2]);var _match10=match,_match11=_slicedToArray(_match10,2);return fullTagName=_match11[1],afterTag=end+fullTagName.length,">"!==this.chunk[afterTag]&&this.error("missing closing > after tag name",{offset:afterTag,length:1}),endToken=this.token("CALL_END",")",{offset:end-2,length:fullTagName.length+3,generated:!0,data:{closingTagOpeningBracketToken:this.makeToken("<","<",{offset:end-2}),closingTagSlashToken:this.makeToken("/","/",{offset:end-1}),closingTagNameToken:this.makeToken("IDENTIFIER",fullTagName,{offset:end}),closingTagClosingBracketToken:this.makeToken(">",">",{offset:end+fullTagName.length})}}),addTokenData(openingTagToken,endToken.data),this.jsxDepth--,afterTag+1}return 0}return this.atJSXTag(1)?"}"===firstChar?(this.pair(firstChar),this.jsxObjAttribute[this.jsxDepth]?(this.token("}","}"),this.jsxObjAttribute[this.jsxDepth]=!1):this.token(")","}"),this.token(",",",",{generated:!0}),1):0:0}},{key:"atJSXTag",value:function atJSXTag(){var depth=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,i,last,ref;if(0===this.jsxDepth)return!1;for(i=this.ends.length-1;"OUTDENT"===(null==(ref=this.ends[i])?void 0:ref.tag)||0<depth--;)i--;return last=this.ends[i],"/>"===(null==last?void 0:last.tag)&&last}},{key:"literalToken",value:function literalToken(){var match,message,origin,prev,ref,ref1,ref2,ref3,ref4,ref5,skipToken,tag,token,value;if(match=OPERATOR.exec(this.chunk)){var _match12=match,_match13=_slicedToArray(_match12,1);value=_match13[0],CODE.test(value)&&this.tagParameters()}else value=this.chunk.charAt(0);if(tag=value,prev=this.prev(),prev&&0<=indexOf.call(["="].concat(_toConsumableArray(COMPOUND_ASSIGN)),value)&&(skipToken=!1,"="!==value||"||"!==(ref=prev[1])&&"&&"!==ref||prev.spaced||(prev[0]="COMPOUND_ASSIGN",prev[1]+="=",(null==(ref1=prev.data)?void 0:ref1.original)&&(prev.data.original+="="),prev[2].range=[prev[2].range[0],prev[2].range[1]+1],prev[2].last_column+=1,prev[2].last_column_exclusive+=1,prev=this.tokens[this.tokens.length-2],skipToken=!0),prev&&"PROPERTY"!==prev[0]&&(origin=null==(ref2=prev.origin)?prev:ref2,message=isUnassignable(prev[1],origin[1]),message&&this.error(message,origin[2])),skipToken))return value.length;if("("===value&&"IMPORT"===(null==prev?void 0:prev[0])&&(prev[0]="DYNAMIC_IMPORT"),"{"===value&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===value?this.importSpecifierList=!1:"{"===value&&"EXPORT"===(null==prev?void 0:prev[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===value&&(this.exportSpecifierList=!1),";"===value)(ref3=null==prev?void 0:prev[0],0<=indexOf.call(["="].concat(_toConsumableArray(UNFINISHED)),ref3))&&this.error("unexpected ;"),this.seenFor=this.seenImport=this.seenExport=!1,tag="TERMINATOR";else if("*"===value&&"EXPORT"===(null==prev?void 0:prev[0]))tag="EXPORT_ALL";else if(0<=indexOf.call(MATH,value))tag="MATH";else if(0<=indexOf.call(COMPARE,value))tag="COMPARE";else if(0<=indexOf.call(COMPOUND_ASSIGN,value))tag="COMPOUND_ASSIGN";else if(0<=indexOf.call(UNARY,value))tag="UNARY";else if(0<=indexOf.call(UNARY_MATH,value))tag="UNARY_MATH";else if(0<=indexOf.call(SHIFT,value))tag="SHIFT";else if("?"===value&&(null==prev?void 0:prev.spaced))tag="BIN?";else if(prev)if("("===value&&!prev.spaced&&(ref4=prev[0],0<=indexOf.call(CALLABLE,ref4)))"?"===prev[0]&&(prev[0]="FUNC_EXIST"),tag="CALL_START";else if("["===value&&((ref5=prev[0],0<=indexOf.call(INDEXABLE,ref5))&&!prev.spaced||"::"===prev[0]))switch(tag="INDEX_START",prev[0]){case"?":prev[0]="INDEX_SOAK";}return token=this.makeToken(tag,value),"("===value||"{"===value||"["===value?this.ends.push({tag:INVERSES[value],origin:token}):")"===value||"}"===value||"]"===value?this.pair(value):void 0,(this.tokens.push(this.makeToken(tag,value)),value.length)}},{key:"tagParameters",value:function tagParameters(){var i,paramEndToken,stack,tok,tokens;if(")"!==this.tag())return this.tagDoIife();for(stack=[],tokens=this.tokens,i=tokens.length,paramEndToken=tokens[--i],paramEndToken[0]="PARAM_END";tok=tokens[--i];)switch(tok[0]){case")":stack.push(tok);break;case"(":case"CALL_START":if(stack.length)stack.pop();else return"("===tok[0]?(tok[0]="PARAM_START",this.tagDoIife(i-1)):(paramEndToken[0]="CALL_END",this);}return this}},{key:"tagDoIife",value:function tagDoIife(tokenIndex){var tok;return(tok=this.tokens[null==tokenIndex?this.tokens.length-1:tokenIndex],"DO"!==(null==tok?void 0:tok[0]))?this:(tok[0]="DO_IIFE",this)}},{key:"closeIndentation",value:function closeIndentation(){return this.outdentToken({moveOut:this.indent,indentSize:0})}},{key:"matchWithInterpolations",value:function matchWithInterpolations(regex,delimiter){var closingDelimiter=2<arguments.length&&void 0!==arguments[2]?arguments[2]:delimiter,interpolators=3<arguments.length&&void 0!==arguments[3]?arguments[3]:/^#\{/,braceInterpolator,close,column,index,interpolationOffset,interpolator,line,match,nested,offset,offsetInChunk,open,ref,ref1,rest,str,strPart,tokens;if(tokens=[],offsetInChunk=delimiter.length,this.chunk.slice(0,offsetInChunk)!==delimiter)return null;for(str=this.chunk.slice(offsetInChunk);;){var _regex$exec=regex.exec(str),_regex$exec2=_slicedToArray(_regex$exec,1);if(strPart=_regex$exec2[0],this.validateEscapes(strPart,{isRegex:"/"===delimiter.charAt(0),offsetInChunk:offsetInChunk}),tokens.push(this.makeToken("NEOSTRING",strPart,{offset:offsetInChunk})),str=str.slice(strPart.length),offsetInChunk+=strPart.length,!(match=interpolators.exec(str)))break;var _match14=match,_match15=_slicedToArray(_match14,1);interpolator=_match15[0],interpolationOffset=interpolator.length-1;var _this$getLineAndColum3=this.getLineAndColumnFromChunk(offsetInChunk+interpolationOffset),_this$getLineAndColum4=_slicedToArray(_this$getLineAndColum3,3);line=_this$getLineAndColum4[0],column=_this$getLineAndColum4[1],offset=_this$getLineAndColum4[2],rest=str.slice(interpolationOffset);var _Lexer$tokenize=new Lexer().tokenize(rest,{line:line,column:column,offset:offset,untilBalanced:!0,locationDataCompensations:this.locationDataCompensations});if(nested=_Lexer$tokenize.tokens,index=_Lexer$tokenize.index,index+=interpolationOffset,braceInterpolator="}"===str[index-1],braceInterpolator){var _nested,_nested2,_slice$call,_slice$call2;_nested=nested,_nested2=_slicedToArray(_nested,1),open=_nested2[0],_nested,_slice$call=slice.call(nested,-1),_slice$call2=_slicedToArray(_slice$call,1),close=_slice$call2[0],_slice$call,open[0]="INTERPOLATION_START",open[1]="(",open[2].first_column-=interpolationOffset,open[2].range=[open[2].range[0]-interpolationOffset,open[2].range[1]],close[0]="INTERPOLATION_END",close[1]=")",close.origin=["","end of interpolation",close[2]]}"TERMINATOR"===(null==(ref=nested[1])?void 0:ref[0])&&nested.splice(1,1),"INDENT"===(null==(ref1=nested[nested.length-3])?void 0:ref1[0])&&"OUTDENT"===nested[nested.length-2][0]&&nested.splice(-3,2),braceInterpolator||(open=this.makeToken("INTERPOLATION_START","(",{offset:offsetInChunk,length:0,generated:!0}),close=this.makeToken("INTERPOLATION_END",")",{offset:offsetInChunk+index,length:0,generated:!0}),nested=[open].concat(_toConsumableArray(nested),[close])),tokens.push(["TOKENS",nested]),str=str.slice(index),offsetInChunk+=index}return str.slice(0,closingDelimiter.length)!==closingDelimiter&&this.error("missing ".concat(closingDelimiter),{length:delimiter.length}),{tokens:tokens,index:offsetInChunk+closingDelimiter.length}}},{key:"mergeInterpolationTokens",value:function mergeInterpolationTokens(tokens,options,fn){var $,converted,_double,endOffset,firstIndex,heregex,i,indent,j,jsx,k,lastToken,len,len1,locationToken,lparen,placeholderToken,quote,ref,ref1,rparen,tag,token,tokensToPush,val,value;for(quote=options.quote,indent=options.indent,_double=options.double,heregex=options.heregex,endOffset=options.endOffset,jsx=options.jsx,1<tokens.length&&(lparen=this.token("STRING_START","(",{length:null==(ref=null==quote?void 0:quote.length)?0:ref,data:{quote:quote},generated:null==quote||!quote.length})),firstIndex=this.tokens.length,$=tokens.length-1,(i=j=0,len=tokens.length);j<len;i=++j){var _this$tokens2;token=tokens[i];var _token4=token,_token5=_slicedToArray(_token4,2);switch(tag=_token5[0],value=_token5[1],tag){case"TOKENS":if(2===value.length&&(value[0].comments||value[1].comments)){for(placeholderToken=this.makeToken("JS","",{generated:!0}),placeholderToken[2]=value[0][2],(k=0,len1=value.length);k<len1;k++){var _placeholderToken$com;(val=value[k],!!val.comments)&&(null==placeholderToken.comments&&(placeholderToken.comments=[]),(_placeholderToken$com=placeholderToken.comments).push.apply(_placeholderToken$com,_toConsumableArray(val.comments)))}value.splice(1,0,placeholderToken)}locationToken=value[0],tokensToPush=value;break;case"NEOSTRING":converted=fn.call(this,token[1],i),0===i&&addTokenData(token,{initialChunk:!0}),i===$&&addTokenData(token,{finalChunk:!0}),addTokenData(token,{indent:indent,quote:quote,double:_double}),heregex&&addTokenData(token,{heregex:heregex}),jsx&&addTokenData(token,{jsx:jsx}),token[0]="STRING",token[1]="\""+converted+"\"",1===tokens.length&&null!=quote&&(token[2].first_column-=quote.length,"\n"===token[1].substr(-2,1)?(token[2].last_line+=1,token[2].last_column=quote.length-1):(token[2].last_column+=quote.length,2===token[1].length&&(token[2].last_column-=1)),token[2].last_column_exclusive+=quote.length,token[2].range=[token[2].range[0]-quote.length,token[2].range[1]+quote.length]),locationToken=token,tokensToPush=[token];}(_this$tokens2=this.tokens).push.apply(_this$tokens2,_toConsumableArray(tokensToPush))}if(lparen){var _slice$call3=slice.call(tokens,-1),_slice$call4=_slicedToArray(_slice$call3,1);return lastToken=_slice$call4[0],lparen.origin=["STRING",null,{first_line:lparen[2].first_line,first_column:lparen[2].first_column,last_line:lastToken[2].last_line,last_column:lastToken[2].last_column,last_line_exclusive:lastToken[2].last_line_exclusive,last_column_exclusive:lastToken[2].last_column_exclusive,range:[lparen[2].range[0],lastToken[2].range[1]]}],(null==quote?void 0:quote.length)||(lparen[2]=lparen.origin[2]),rparen=this.token("STRING_END",")",{offset:endOffset-(null==quote?"":quote).length,length:null==(ref1=null==quote?void 0:quote.length)?0:ref1,generated:null==quote||!quote.length})}}},{key:"pair",value:function pair(tag){var _slice$call5,_slice$call6,lastIndent,prev,ref,ref1,wanted;if(ref=this.ends,_slice$call5=slice.call(ref,-1),_slice$call6=_slicedToArray(_slice$call5,1),prev=_slice$call6[0],_slice$call5,tag!==(wanted=null==prev?void 0:prev.tag)){var _slice$call7,_slice$call8;return"OUTDENT"!==wanted&&this.error("unmatched ".concat(tag)),ref1=this.indents,_slice$call7=slice.call(ref1,-1),_slice$call8=_slicedToArray(_slice$call7,1),lastIndent=_slice$call8[0],_slice$call7,this.outdentToken({moveOut:lastIndent,noNewlines:!0}),this.pair(tag)}return this.ends.pop()}},{key:"getLocationDataCompensation",value:function getLocationDataCompensation(start,end){var compensation,current,initialEnd,totalCompensation;for(totalCompensation=0,initialEnd=end,current=start;current<=end&&(current!==end||start===initialEnd);)compensation=this.locationDataCompensations[current],null!=compensation&&(totalCompensation+=compensation,end+=compensation),current++;return totalCompensation}},{key:"getLineAndColumnFromChunk",value:function getLineAndColumnFromChunk(offset){var column,columnCompensation,compensation,lastLine,lineCount,previousLinesCompensation,ref,string;if(compensation=this.getLocationDataCompensation(this.chunkOffset,this.chunkOffset+offset),0===offset)return[this.chunkLine,this.chunkColumn+compensation,this.chunkOffset+compensation];if(string=offset>=this.chunk.length?this.chunk:this.chunk.slice(0,+(offset-1)+1||9e9),lineCount=count(string,"\n"),column=this.chunkColumn,0<lineCount){var _slice$call9,_slice$call10;ref=string.split("\n"),_slice$call9=slice.call(ref,-1),_slice$call10=_slicedToArray(_slice$call9,1),lastLine=_slice$call10[0],_slice$call9,column=lastLine.length,previousLinesCompensation=this.getLocationDataCompensation(this.chunkOffset,this.chunkOffset+offset-column),0>previousLinesCompensation&&(previousLinesCompensation=0),columnCompensation=this.getLocationDataCompensation(this.chunkOffset+offset+previousLinesCompensation-column,this.chunkOffset+offset+previousLinesCompensation)}else column+=string.length,columnCompensation=compensation;return[this.chunkLine+lineCount,column+columnCompensation,this.chunkOffset+offset+compensation]}},{key:"makeLocationData",value:function makeLocationData(_ref16){var offsetInChunk=_ref16.offsetInChunk,length=_ref16.length,endOffset,lastCharacter,locationData;locationData={range:[]};var _this$getLineAndColum5=this.getLineAndColumnFromChunk(offsetInChunk),_this$getLineAndColum6=_slicedToArray(_this$getLineAndColum5,3);locationData.first_line=_this$getLineAndColum6[0],locationData.first_column=_this$getLineAndColum6[1],locationData.range[0]=_this$getLineAndColum6[2],lastCharacter=0<length?length-1:0;var _this$getLineAndColum7=this.getLineAndColumnFromChunk(offsetInChunk+lastCharacter),_this$getLineAndColum8=_slicedToArray(_this$getLineAndColum7,3);locationData.last_line=_this$getLineAndColum8[0],locationData.last_column=_this$getLineAndColum8[1],endOffset=_this$getLineAndColum8[2];var _this$getLineAndColum9=this.getLineAndColumnFromChunk(offsetInChunk+lastCharacter+(0<length?1:0)),_this$getLineAndColum10=_slicedToArray(_this$getLineAndColum9,2);return locationData.last_line_exclusive=_this$getLineAndColum10[0],locationData.last_column_exclusive=_this$getLineAndColum10[1],locationData.range[1]=0<length?endOffset+1:endOffset,locationData}},{key:"makeToken",value:function makeToken(tag,value){var _ref17=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_ref17$offset=_ref17.offset,offsetInChunk=void 0===_ref17$offset?0:_ref17$offset,_ref17$length=_ref17.length,length=void 0===_ref17$length?value.length:_ref17$length,origin=_ref17.origin,generated=_ref17.generated,indentSize=_ref17.indentSize,token;return token=[tag,value,this.makeLocationData({offsetInChunk:offsetInChunk,length:length})],origin&&(token.origin=origin),generated&&(token.generated=!0),null!=indentSize&&(token.indentSize=indentSize),token}},{key:"token",value:function(tag,value){var _ref18=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},offset=_ref18.offset,length=_ref18.length,origin=_ref18.origin,data=_ref18.data,generated=_ref18.generated,indentSize=_ref18.indentSize,token;return token=this.makeToken(tag,value,{offset:offset,length:length,origin:origin,generated:generated,indentSize:indentSize}),data&&addTokenData(token,data),this.tokens.push(token),token}},{key:"tag",value:function tag(){var _slice$call11,_slice$call12,ref,token;return ref=this.tokens,_slice$call11=slice.call(ref,-1),_slice$call12=_slicedToArray(_slice$call11,1),token=_slice$call12[0],_slice$call11,null==token?void 0:token[0]}},{key:"value",value:function value(){var useOrigin=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0],_slice$call13,_slice$call14,ref,token;return ref=this.tokens,_slice$call13=slice.call(ref,-1),_slice$call14=_slicedToArray(_slice$call13,1),token=_slice$call14[0],_slice$call13,useOrigin&&null!=(null==token?void 0:token.origin)?token.origin[1]:null==token?void 0:token[1]}},{key:"prev",value:function prev(){return this.tokens[this.tokens.length-1]}},{key:"unfinished",value:function unfinished(){var ref;return LINE_CONTINUER.test(this.chunk)||(ref=this.tag(),0<=indexOf.call(UNFINISHED,ref))}},{key:"validateUnicodeCodePointEscapes",value:function validateUnicodeCodePointEscapes(str,options){return replaceUnicodeCodePointEscapes(str,merge(options,{error:this.error}))}},{key:"validateEscapes",value:function validateEscapes(str){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},before,hex,invalidEscape,invalidEscapeRegex,match,message,octal,ref,unicode,unicodeCodePoint;if(invalidEscapeRegex=options.isRegex?REGEX_INVALID_ESCAPE:STRING_INVALID_ESCAPE,match=invalidEscapeRegex.exec(str),!!match)return match[0],before=match[1],octal=match[2],hex=match[3],unicodeCodePoint=match[4],unicode=match[5],message=octal?"octal escape sequences are not allowed":"invalid escape sequence",invalidEscape="\\".concat(octal||hex||unicodeCodePoint||unicode),this.error("".concat(message," ").concat(invalidEscape),{offset:(null==(ref=options.offsetInChunk)?0:ref)+match.index+before.length,length:invalidEscape.length})}},{key:"suppressSemicolons",value:function suppressSemicolons(){var ref,ref1,results;for(results=[];";"===this.value();)this.tokens.pop(),(ref=null==(ref1=this.prev())?void 0:ref1[0],0<=indexOf.call(["="].concat(_toConsumableArray(UNFINISHED)),ref))?results.push(this.error("unexpected ;")):results.push(void 0);return results}},{key:"error",value:function error(message){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_this$getLineAndColum11,_this$getLineAndColum12,first_column,first_line,location,ref,ref1;return location="first_line"in options?options:(_this$getLineAndColum11=this.getLineAndColumnFromChunk(null==(ref=options.offset)?0:ref),_this$getLineAndColum12=_slicedToArray(_this$getLineAndColum11,2),first_line=_this$getLineAndColum12[0],first_column=_this$getLineAndColum12[1],_this$getLineAndColum11,{first_line:first_line,first_column:first_column,last_column:first_column+(null==(ref1=options.length)?1:ref1)-1}),throwSyntaxError(message,location)}}]),Lexer}(),isUnassignable=function(name){var displayName=1<arguments.length&&void 0!==arguments[1]?arguments[1]:name;switch(!1){case 0>indexOf.call([].concat(_toConsumableArray(JS_KEYWORDS),_toConsumableArray(COFFEE_KEYWORDS)),name):return"keyword '".concat(displayName,"' can't be assigned");case 0>indexOf.call(STRICT_PROSCRIBED,name):return"'".concat(displayName,"' can't be assigned");case 0>indexOf.call(RESERVED,name):return"reserved word '".concat(displayName,"' can't be assigned");default:return!1;}},exports.isUnassignable=isUnassignable,isForFrom=function(prev){var ref;return"IDENTIFIER"===prev[0]||"FOR"!==prev[0]&&"{"!==(ref=prev[1])&&"["!==ref&&","!==ref&&":"!==ref},addTokenData=function(token,data){return Object.assign(null==token.data?token.data={}:token.data,data)},JS_KEYWORDS=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],COFFEE_KEYWORDS=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],COFFEE_ALIAS_MAP={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},COFFEE_ALIASES=function(){var results;for(key in results=[],COFFEE_ALIAS_MAP)results.push(key);return results}(),COFFEE_KEYWORDS=COFFEE_KEYWORDS.concat(COFFEE_ALIASES),RESERVED=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],STRICT_PROSCRIBED=["arguments","eval"],exports.JS_FORBIDDEN=JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED),BOM=65279,IDENTIFIER=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,JSX_IDENTIFIER_PART=/(?:(?!\s)[\-$\w\x7f-\uffff])+/.source,JSX_IDENTIFIER=RegExp("^(?![\\d<])(".concat(JSX_IDENTIFIER_PART,"(?:\\s*:\\s*").concat(JSX_IDENTIFIER_PART,"|(?:\\s*\\.\\s*").concat(JSX_IDENTIFIER_PART,")+)?)")),JSX_FRAGMENT_IDENTIFIER=/^()>/,JSX_ATTRIBUTE=RegExp("^(?!\\d)(".concat(JSX_IDENTIFIER_PART,"(?:\\s*:\\s*").concat(JSX_IDENTIFIER_PART,")?)([^\\S]*=(?!=))?")),NUMBER=/^0b[01](?:_?[01])*n?|^0o[0-7](?:_?[0-7])*n?|^0x[\da-f](?:_?[\da-f])*n?|^\d+(?:_\d+)*n|^(?:\d+(?:_\d+)*)?\.?\d+(?:_\d+)*(?:e[+-]?\d+(?:_\d+)*)?/i,OPERATOR=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,WHITESPACE=/^[^\n\S]+/,COMMENT=/^(\s*)###([^#][\s\S]*?)(?:###([^\n\S]*)|###$)|^((?:\s*#(?!##[^#]).*)+)/,CODE=/^[-=]>/,MULTI_DENT=/^(?:\n[^\n\S]*)+/,JSTOKEN=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,HERE_JSTOKEN=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,STRING_START=/^(?:'''|"""|'|")/,STRING_SINGLE=/^(?:[^\\']|\\[\s\S])*/,STRING_DOUBLE=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,HEREDOC_SINGLE=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,HEREDOC_DOUBLE=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,INSIDE_JSX=/^(?:[^\{<])*/,JSX_INTERPOLATION=/^(?:\{|<(?!\/))/,HEREDOC_INDENT=/\n+([^\n\S]*)(?=\S)/g,REGEX=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,REGEX_FLAGS=/^\w*/,VALID_FLAGS=/^(?!.*(.).*\1)[gimsuy]*$/,HEREGEX=/^(?:[^\\\/#\s]|\\[\s\S]|\/(?!\/\/)|\#(?!\{)|\s+(?:#(?!\{).*)?)*/,HEREGEX_COMMENT=/(\s+)(#(?!{).*)/gm,REGEX_ILLEGAL=/^(\/|\/{3}\s*)(\*)/,POSSIBLY_DIVISION=/^\/=?\s/,HERECOMMENT_ILLEGAL=/\*\//,LINE_CONTINUER=/^\s*(?:,|\??\.(?![.\d])|\??::)/,STRING_INVALID_ESCAPE=/((?:^|[^\\])(?:\\\\)*)\\(?:(0\d|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,REGEX_INVALID_ESCAPE=/((?:^|[^\\])(?:\\\\)*)\\(?:(0\d)|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,TRAILING_SPACES=/\s+$/,COMPOUND_ASSIGN=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],UNARY=["NEW","TYPEOF","DELETE"],UNARY_MATH=["!","~"],SHIFT=["<<",">>",">>>"],COMPARE=["==","!=","<",">","<=",">="],MATH=["*","/","%","//","%%"],RELATION=["IN","OF","INSTANCEOF"],BOOL=["TRUE","FALSE"],CALLABLE=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER","DYNAMIC_IMPORT"],INDEXABLE=CALLABLE.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),COMPARABLE_LEFT_SIDE=["IDENTIFIER",")","]","NUMBER"],NOT_REGEX=INDEXABLE.concat(["++","--"]),LINE_BREAK=["INDENT","OUTDENT","TERMINATOR"],INDENTABLE_CLOSERS=[")","}","]"]}.call(this),{exports:exports}.exports}(),require["./parser"]=function(){var exports={},module={exports:exports},parser=function(){function Parser(){this.yy={}}var o=function(k,v,_o,l){for(_o=_o||{},l=k.length;l--;_o[k[l]]=v);return _o},$V0=[1,24],$V1=[1,59],$V2=[1,98],$V3=[1,99],$V4=[1,94],$V5=[1,100],$V6=[1,101],$V7=[1,96],$V8=[1,97],$V9=[1,68],$Va=[1,70],$Vb=[1,71],$Vc=[1,72],$Vd=[1,73],$Ve=[1,74],$Vf=[1,76],$Vg=[1,80],$Vh=[1,77],$Vi=[1,78],$Vj=[1,62],$Vk=[1,45],$Vl=[1,38],$Vm=[1,83],$Vn=[1,84],$Vo=[1,81],$Vp=[1,82],$Vq=[1,93],$Vr=[1,57],$Vs=[1,63],$Vt=[1,64],$Vu=[1,79],$Vv=[1,50],$Vw=[1,58],$Vx=[1,75],$Vy=[1,88],$Vz=[1,89],$VA=[1,90],$VB=[1,91],$VC=[1,56],$VD=[1,87],$VE=[1,40],$VF=[1,41],$VG=[1,61],$VH=[1,42],$VI=[1,43],$VJ=[1,44],$VK=[1,46],$VL=[1,47],$VM=[1,102],$VN=[1,6,35,52,155],$VO=[1,6,33,35,52,74,76,96,137,144,155,158,166],$VP=[1,120],$VQ=[1,121],$VR=[1,122],$VS=[1,117],$VT=[1,105],$VU=[1,104],$VV=[1,103],$VW=[1,106],$VX=[1,107],$VY=[1,108],$VZ=[1,109],$V_=[1,110],$V$=[1,111],$V01=[1,112],$V11=[1,113],$V21=[1,114],$V31=[1,115],$V41=[1,116],$V51=[1,124],$V61=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V71=[2,222],$V81=[1,130],$V91=[1,135],$Va1=[1,131],$Vb1=[1,132],$Vc1=[1,133],$Vd1=[1,136],$Ve1=[1,129],$Vf1=[1,6,33,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$Vg1=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vh1=[2,129],$Vi1=[2,133],$Vj1=[6,33,91,96],$Vk1=[2,106],$Vl1=[1,148],$Vm1=[1,147],$Vn1=[1,142],$Vo1=[1,151],$Vp1=[1,156],$Vq1=[1,154],$Vr1=[1,160],$Vs1=[1,166],$Vt1=[1,162],$Vu1=[1,163],$Vv1=[1,165],$Vw1=[1,170],$Vx1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vy1=[2,126],$Vz1=[1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA1=[2,31],$VB1=[1,195],$VC1=[1,196],$VD1=[2,93],$VE1=[1,202],$VF1=[1,208],$VG1=[1,223],$VH1=[1,218],$VI1=[1,227],$VJ1=[1,224],$VK1=[1,229],$VL1=[1,230],$VM1=[1,232],$VN1=[2,227],$VO1=[1,234],$VP1=[14,32,33,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VQ1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$VR1=[1,247],$VS1=[1,248],$VT1=[2,156],$VU1=[1,264],$VV1=[1,265],$VW1=[1,267],$VX1=[1,277],$VY1=[1,278],$VZ1=[1,6,33,35,46,47,52,70,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V_1=[1,6,33,35,36,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,128,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$V$1=[1,6,33,35,46,47,49,51,52,57,70,74,76,91,96,105,106,107,110,111,112,115,119,123,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V02=[1,283],$V12=[46,47,136],$V22=[1,322],$V32=[1,321],$V42=[6,33],$V52=[2,104],$V62=[1,328],$V72=[6,33,35,91,96],$V82=[6,33,35,66,76,91,96],$V92=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,195,196,197,198,199,200,201,202,203,204],$Va2=[2,377],$Vb2=[2,378],$Vc2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,196,197,198,199,200,201,202,203,204],$Vd2=[46,47,105,106,110,111,112,115,135,136],$Ve2=[1,357],$Vf2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183],$Vg2=[2,91],$Vh2=[1,375],$Vi2=[1,377],$Vj2=[1,382],$Vk2=[1,384],$Vl2=[6,33,74,96],$Vm2=[2,247],$Vn2=[2,248],$Vo2=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vp2=[1,398],$Vq2=[14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vr2=[1,400],$Vs2=[6,33,35,74,96],$Vt2=[6,14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vu2=[6,33,35,74,96,137],$Vv2=[1,6,33,35,46,47,52,57,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vw2=[1,411],$Vx2=[1,6,33,35,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$Vy2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,166,183],$Vz2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VA2=[2,300],$VB2=[173,174,175],$VC2=[96,173,174,175],$VD2=[6,33,119],$VE2=[1,431],$VF2=[6,33,35,96,119],$VG2=[6,33,35,70,96,119],$VH2=[6,33,35,66,70,76,96,105,106,110,111,112,115,119,135,136],$VI2=[6,33,35,76,96,105,106,110,111,112,115,119,135,136],$VJ2=[46,47,49,51],$VK2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,196,197,198,199,200,201,202,203,204],$VL2=[2,367],$VM2=[2,366],$VN2=[35,107],$VO2=[14,32,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,107,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2=[2,233],$VQ2=[6,33,35],$VR2=[2,105],$VS2=[1,470],$VT2=[1,471],$VU2=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,151,152,155,157,158,159,165,166,178,180,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VV2=[1,337],$VW2=[35,178,180],$VX2=[1,6,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VY2=[1,509],$VZ2=[1,516],$V_2=[1,6,33,35,52,74,76,96,137,144,155,158,166,183],$V$2=[2,120],$V03=[1,529],$V13=[33,35,74],$V23=[1,537],$V33=[6,33,35,96,137],$V43=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,178,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V53=[1,6,33,35,52,74,76,96,137,144,155,158,166,178],$V63=[2,314],$V73=[2,315],$V83=[2,330],$V93=[1,557],$Va3=[1,558],$Vb3=[6,33,35,119],$Vc3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,166,183],$Vd3=[6,33,35,96],$Ve3=[1,6,33,35,52,74,76,91,96,107,119,137,144,151,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vf3=[33,96],$Vg3=[1,611],$Vh3=[1,612],$Vi3=[1,619],$Vj3=[1,620],$Vk3=[1,638],$Vl3=[1,639],$Vm3=[2,285],$Vn3=[2,288],$Vo3=[2,301],$Vp3=[2,316],$Vq3=[2,320],$Vr3=[2,317],$Vs3=[2,321],$Vt3=[2,318],$Vu3=[2,319],$Vv3=[2,331],$Vw3=[2,332],$Vx3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183],$Vy3=[2,322],$Vz3=[2,324],$VA3=[2,326],$VB3=[2,328],$VC3=[2,323],$VD3=[2,325],$VE3=[2,327],$VF3=[2,329],parser={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,ExpressionLine:8,Statement:9,FuncDirective:10,YieldReturn:11,AwaitReturn:12,Return:13,STATEMENT:14,Import:15,Export:16,Value:17,Code:18,Operation:19,Assign:20,If:21,Try:22,While:23,For:24,Switch:25,Class:26,Throw:27,Yield:28,CodeLine:29,IfLine:30,OperationLine:31,YIELD:32,INDENT:33,Object:34,OUTDENT:35,FROM:36,Block:37,Identifier:38,IDENTIFIER:39,JSX_TAG:40,Property:41,PROPERTY:42,AlphaNumeric:43,NUMBER:44,String:45,STRING:46,STRING_START:47,Interpolations:48,STRING_END:49,InterpolationChunk:50,INTERPOLATION_START:51,INTERPOLATION_END:52,Regex:53,REGEX:54,REGEX_START:55,Invocation:56,REGEX_END:57,Literal:58,JS:59,UNDEFINED:60,NULL:61,BOOL:62,INFINITY:63,NAN:64,Assignable:65,"=":66,AssignObj:67,ObjAssignable:68,ObjRestValue:69,":":70,SimpleObjAssignable:71,ThisProperty:72,"[":73,"]":74,"@":75,"...":76,ObjSpreadExpr:77,ObjSpreadIdentifier:78,Parenthetical:79,Super:80,This:81,SUPER:82,OptFuncExist:83,Arguments:84,DYNAMIC_IMPORT:85,Accessor:86,RETURN:87,AWAIT:88,PARAM_START:89,ParamList:90,PARAM_END:91,FuncGlyph:92,"->":93,"=>":94,OptComma:95,",":96,Param:97,ParamVar:98,Array:99,Splat:100,SimpleAssignable:101,Range:102,DoIife:103,MetaProperty:104,".":105,INDEX_START:106,INDEX_END:107,NEW_TARGET:108,IMPORT_META:109,"?.":110,"::":111,"?::":112,Index:113,IndexValue:114,INDEX_SOAK:115,Slice:116,"{":117,AssignList:118,"}":119,CLASS:120,EXTENDS:121,IMPORT:122,ASSERT:123,ImportDefaultSpecifier:124,ImportNamespaceSpecifier:125,ImportSpecifierList:126,ImportSpecifier:127,AS:128,DEFAULT:129,IMPORT_ALL:130,EXPORT:131,ExportSpecifierList:132,EXPORT_ALL:133,ExportSpecifier:134,FUNC_EXIST:135,CALL_START:136,CALL_END:137,ArgList:138,THIS:139,Elisions:140,ArgElisionList:141,OptElisions:142,RangeDots:143,"..":144,Arg:145,ArgElision:146,Elision:147,SimpleArgs:148,TRY:149,Catch:150,FINALLY:151,CATCH:152,THROW:153,"(":154,")":155,WhileLineSource:156,WHILE:157,WHEN:158,UNTIL:159,WhileSource:160,Loop:161,LOOP:162,ForBody:163,ForLineBody:164,FOR:165,BY:166,ForStart:167,ForSource:168,ForLineSource:169,ForVariables:170,OWN:171,ForValue:172,FORIN:173,FOROF:174,FORFROM:175,SWITCH:176,Whens:177,ELSE:178,When:179,LEADING_WHEN:180,IfBlock:181,IF:182,POST_IF:183,IfBlockLine:184,UNARY:185,DO:186,DO_IIFE:187,UNARY_MATH:188,"-":189,"+":190,"--":191,"++":192,"?":193,MATH:194,"**":195,SHIFT:196,COMPARE:197,"&":198,"^":199,"|":200,"&&":201,"||":202,"BIN?":203,RELATION:204,COMPOUND_ASSIGN:205,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",14:"STATEMENT",32:"YIELD",33:"INDENT",35:"OUTDENT",36:"FROM",39:"IDENTIFIER",40:"JSX_TAG",42:"PROPERTY",44:"NUMBER",46:"STRING",47:"STRING_START",49:"STRING_END",51:"INTERPOLATION_START",52:"INTERPOLATION_END",54:"REGEX",55:"REGEX_START",57:"REGEX_END",59:"JS",60:"UNDEFINED",61:"NULL",62:"BOOL",63:"INFINITY",64:"NAN",66:"=",70:":",73:"[",74:"]",75:"@",76:"...",82:"SUPER",85:"DYNAMIC_IMPORT",87:"RETURN",88:"AWAIT",89:"PARAM_START",91:"PARAM_END",93:"->",94:"=>",96:",",105:".",106:"INDEX_START",107:"INDEX_END",108:"NEW_TARGET",109:"IMPORT_META",110:"?.",111:"::",112:"?::",115:"INDEX_SOAK",117:"{",119:"}",120:"CLASS",121:"EXTENDS",122:"IMPORT",123:"ASSERT",128:"AS",129:"DEFAULT",130:"IMPORT_ALL",131:"EXPORT",133:"EXPORT_ALL",135:"FUNC_EXIST",136:"CALL_START",137:"CALL_END",139:"THIS",144:"..",149:"TRY",151:"FINALLY",152:"CATCH",153:"THROW",154:"(",155:")",157:"WHILE",158:"WHEN",159:"UNTIL",162:"LOOP",165:"FOR",166:"BY",171:"OWN",173:"FORIN",174:"FOROF",175:"FORFROM",176:"SWITCH",178:"ELSE",180:"LEADING_WHEN",182:"IF",183:"POST_IF",185:"UNARY",186:"DO",187:"DO_IIFE",188:"UNARY_MATH",189:"-",190:"+",191:"--",192:"++",193:"?",194:"MATH",195:"**",196:"SHIFT",197:"COMPARE",198:"&",199:"^",200:"|",201:"&&",202:"||",203:"BIN?",204:"RELATION",205:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[5,1],[10,1],[10,1],[9,1],[9,1],[9,1],[9,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[8,1],[8,1],[8,1],[28,1],[28,2],[28,4],[28,3],[37,2],[37,3],[38,1],[38,1],[41,1],[43,1],[43,1],[45,1],[45,3],[48,1],[48,2],[50,3],[50,5],[50,2],[50,1],[53,1],[53,3],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[20,3],[20,4],[20,5],[67,1],[67,1],[67,3],[67,5],[67,3],[67,5],[71,1],[71,1],[71,1],[68,1],[68,3],[68,4],[68,1],[69,2],[69,2],[69,2],[69,2],[77,1],[77,1],[77,1],[77,1],[77,1],[77,3],[77,2],[77,3],[77,3],[78,2],[78,2],[13,2],[13,4],[13,1],[11,3],[11,2],[12,3],[12,2],[18,5],[18,2],[29,5],[29,2],[92,1],[92,1],[95,0],[95,1],[90,0],[90,1],[90,3],[90,4],[90,6],[97,1],[97,2],[97,2],[97,3],[97,1],[98,1],[98,1],[98,1],[98,1],[100,2],[100,2],[101,1],[101,2],[101,2],[101,1],[65,1],[65,1],[65,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[80,3],[80,4],[80,6],[104,3],[104,3],[86,2],[86,2],[86,2],[86,2],[86,1],[86,1],[86,1],[113,3],[113,5],[113,2],[114,1],[114,1],[34,4],[118,0],[118,1],[118,3],[118,4],[118,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[15,2],[15,4],[15,4],[15,6],[15,4],[15,6],[15,5],[15,7],[15,7],[15,9],[15,6],[15,8],[15,9],[15,11],[126,1],[126,3],[126,4],[126,4],[126,6],[127,1],[127,3],[127,1],[127,3],[124,1],[125,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,5],[16,4],[16,6],[16,5],[16,7],[16,7],[16,9],[132,1],[132,3],[132,4],[132,4],[132,6],[134,1],[134,3],[134,3],[134,1],[134,3],[56,3],[56,3],[56,3],[56,2],[83,0],[83,1],[84,2],[84,4],[81,1],[81,1],[72,2],[99,2],[99,3],[99,4],[143,1],[143,1],[102,5],[102,5],[116,3],[116,2],[116,3],[116,2],[116,2],[116,1],[138,1],[138,3],[138,4],[138,4],[138,6],[145,1],[145,1],[145,1],[145,1],[141,1],[141,3],[141,4],[141,4],[141,6],[146,1],[146,2],[142,1],[142,2],[140,1],[140,2],[147,1],[147,2],[148,1],[148,1],[148,3],[148,3],[22,2],[22,3],[22,4],[22,5],[150,3],[150,3],[150,2],[27,2],[27,4],[79,3],[79,5],[156,2],[156,4],[156,2],[156,4],[160,2],[160,4],[160,4],[160,2],[160,4],[160,4],[23,2],[23,2],[23,2],[23,2],[23,1],[161,2],[161,2],[24,2],[24,2],[24,2],[24,2],[163,2],[163,4],[163,2],[164,4],[164,2],[167,2],[167,3],[167,3],[172,1],[172,1],[172,1],[172,1],[170,1],[170,3],[168,2],[168,2],[168,4],[168,4],[168,4],[168,4],[168,4],[168,4],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,2],[168,4],[168,4],[169,2],[169,2],[169,4],[169,4],[169,4],[169,4],[169,4],[169,4],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,2],[169,4],[169,4],[25,5],[25,5],[25,7],[25,7],[25,4],[25,6],[177,1],[177,2],[179,3],[179,4],[181,3],[181,5],[21,1],[21,3],[21,3],[21,3],[184,3],[184,5],[30,1],[30,3],[30,3],[30,3],[31,2],[31,2],[31,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,4],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4],[103,2]],performAction:function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Root(new yy.Block()));break;case 2:return this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Root($$[$0]));break;case 3:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(yy.Block.wrap([$$[$0]]));break;case 4:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].push($$[$0]));break;case 5:this.$=$$[$0-1];break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 41:case 52:case 54:case 64:case 69:case 70:case 71:case 72:case 75:case 80:case 81:case 82:case 83:case 84:case 104:case 105:case 116:case 117:case 118:case 119:case 125:case 126:case 129:case 135:case 149:case 247:case 248:case 249:case 251:case 264:case 265:case 308:case 309:case 364:case 370:this.$=$$[$0];break;case 13:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.StatementLiteral($$[$0]));break;case 31:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Op($$[$0],new yy.Value(new yy.Literal(""))));break;case 32:case 374:case 375:case 376:case 378:case 379:case 382:case 405:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1],$$[$0]));break;case 33:case 383:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Op($$[$0-3],$$[$0-1]));break;case 34:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-2].concat($$[$0-1]),$$[$0]));break;case 35:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Block);break;case 36:case 150:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-1]);break;case 37:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.IdentifierLiteral($$[$0]));break;case 38:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(function(){var ref,ref1,ref2,ref3;return new yy.JSXTag($$[$0].toString(),{tagNameLocationData:$$[$0].tagNameToken[2],closingTagOpeningBracketLocationData:null==(ref=$$[$0].closingTagOpeningBracketToken)?void 0:ref[2],closingTagSlashLocationData:null==(ref1=$$[$0].closingTagSlashToken)?void 0:ref1[2],closingTagNameLocationData:null==(ref2=$$[$0].closingTagNameToken)?void 0:ref2[2],closingTagClosingBracketLocationData:null==(ref3=$$[$0].closingTagClosingBracketToken)?void 0:ref3[2]})}());break;case 39:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.PropertyName($$[$0].toString()));break;case 40:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NumberLiteral($$[$0].toString(),{parsedValue:$$[$0].parsedValue}));break;case 42:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.StringLiteral($$[$0].slice(1,-1),{quote:$$[$0].quote,initialChunk:$$[$0].initialChunk,finalChunk:$$[$0].finalChunk,indent:$$[$0].indent,double:$$[$0].double,heregex:$$[$0].heregex}));break;case 43:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.StringWithInterpolations(yy.Block.wrap($$[$0-1]),{quote:$$[$0-2].quote,startQuote:yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Literal($$[$0-2].toString()))}));break;case 44:case 107:case 157:case 183:case 208:case 242:case 256:case 260:case 312:case 358:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)([$$[$0]]);break;case 45:case 257:case 261:case 359:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].concat($$[$0]));break;case 46:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Interpolation($$[$0-1]));break;case 47:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Interpolation($$[$0-2]));break;case 48:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Interpolation);break;case 49:case 293:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)($$[$0]);break;case 50:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.RegexLiteral($$[$0].toString(),{delimiter:$$[$0].delimiter,heregexCommentTokens:$$[$0].heregexCommentTokens}));break;case 51:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.RegexWithInterpolations($$[$0-1],{heregexCommentTokens:$$[$0].heregexCommentTokens}));break;case 53:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.PassthroughLiteral($$[$0].toString(),{here:$$[$0].here,generated:$$[$0].generated}));break;case 55:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.UndefinedLiteral($$[$0]));break;case 56:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NullLiteral($$[$0]));break;case 57:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.BooleanLiteral($$[$0].toString(),{originalValue:$$[$0].original}));break;case 58:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.InfinityLiteral($$[$0].toString(),{originalValue:$$[$0].original}));break;case 59:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.NaNLiteral($$[$0]));break;case 60:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0]));break;case 61:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0]));break;case 62:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1]));break;case 63:case 122:case 127:case 128:case 130:case 131:case 132:case 133:case 134:case 136:case 137:case 310:case 311:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Value($$[$0]));break;case 65:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),$$[$0],"object",{operatorToken:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 66:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Value($$[$0-4])),$$[$0-1],"object",{operatorToken:yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))}));break;case 67:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),$$[$0],null,{operatorToken:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 68:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Value($$[$0-4])),$$[$0-1],null,{operatorToken:yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))}));break;case 73:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Value(new yy.ComputedPropertyName($$[$0-1])));break;case 74:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Value(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.ThisLiteral($$[$0-3])),[yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.ComputedPropertyName($$[$0-1]))],"this"));break;case 76:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat(new yy.Value($$[$0-1])));break;case 77:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat(new yy.Value($$[$0]),{postfix:!1}));break;case 78:case 120:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat($$[$0-1]));break;case 79:case 121:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Splat($$[$0],{postfix:!1}));break;case 85:case 220:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.SuperCall(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Super),$$[$0],$$[$0-1].soak,$$[$0-2]));break;case 86:case 221:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.DynamicImportCall(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.DynamicImport),$$[$0]));break;case 87:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Call(new yy.Value($$[$0-2]),$$[$0],$$[$0-1].soak));break;case 88:case 219:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Call($$[$0-2],$$[$0],$$[$0-1].soak));break;case 89:case 90:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value($$[$0-1]).add($$[$0]));break;case 91:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Return($$[$0]));break;case 92:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Return(new yy.Value($$[$0-1])));break;case 93:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Return);break;case 94:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.YieldReturn($$[$0],{returnKeyword:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 95:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.YieldReturn(null,{returnKeyword:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Literal($$[$0]))}));break;case 96:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.AwaitReturn($$[$0],{returnKeyword:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))}));break;case 97:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.AwaitReturn(null,{returnKeyword:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Literal($$[$0]))}));break;case 98:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Code($$[$0-3],$$[$0],$$[$0-1],yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Literal($$[$0-4]))));break;case 99:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Code([],$$[$0],$$[$0-1]));break;case 100:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Code($$[$0-3],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]])),$$[$0-1],yy.addDataToNode(yy,_$[$0-4],$$[$0-4],null,null,!0)(new yy.Literal($$[$0-4]))));break;case 101:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Code([],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]])),$$[$0-1]));break;case 102:case 103:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.FuncGlyph($$[$0]));break;case 106:case 156:case 258:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)([]);break;case 108:case 158:case 184:case 209:case 243:case 252:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].concat($$[$0]));break;case 109:case 159:case 185:case 210:case 244:case 253:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-3].concat($$[$0]));break;case 110:case 160:case 187:case 212:case 246:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)($$[$0-5].concat($$[$0-2]));break;case 111:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Param($$[$0]));break;case 112:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Param($$[$0-1],null,!0));break;case 113:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Param($$[$0],null,{postfix:!1}));break;case 114:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Param($$[$0-2],$$[$0]));break;case 115:case 250:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Expansion);break;case 123:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].add($$[$0]));break;case 124:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value($$[$0-1]).add($$[$0]));break;case 138:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0])),yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Literal($$[$0-2]))));break;case 139:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Index($$[$0-1])),yy.addDataToNode(yy,_$[$0-3],$$[$0-3],null,null,!0)(new yy.Literal($$[$0-3]))));break;case 140:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.Super(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Index($$[$0-2])),yy.addDataToNode(yy,_$[$0-5],$$[$0-5],null,null,!0)(new yy.Literal($$[$0-5]))));break;case 141:case 142:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.MetaProperty(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.IdentifierLiteral($$[$0-2])),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))));break;case 143:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Access($$[$0]));break;case 144:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Access($$[$0],{soak:!0}));break;case 145:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0})),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))]);break;case 146:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0,soak:!0})),yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))]);break;case 147:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0}));break;case 148:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Access(new yy.PropertyName("prototype"),{shorthand:!0,soak:!0}));break;case 151:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)($$[$0-2]);break;case 152:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(yy.extend($$[$0],{soak:!0}));break;case 153:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Index($$[$0]));break;case 154:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Slice($$[$0]));break;case 155:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Obj($$[$0-2],$$[$0-3].generated));break;case 161:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Class);break;case 162:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Class(null,null,$$[$0]));break;case 163:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Class(null,$$[$0]));break;case 164:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Class(null,$$[$0-1],$$[$0]));break;case 165:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Class($$[$0]));break;case 166:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Class($$[$0-1],null,$$[$0]));break;case 167:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Class($$[$0-2],$$[$0]));break;case 168:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Class($$[$0-3],$$[$0-1],$$[$0]));break;case 169:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(null,$$[$0]));break;case 170:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(null,$$[$0-2],$$[$0]));break;case 171:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2],null),$$[$0]));break;case 172:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],null),$$[$0-2],$$[$0]));break;case 173:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,$$[$0-2]),$$[$0]));break;case 174:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,$$[$0-4]),$$[$0-2],$$[$0]));break;case 175:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList([])),$$[$0]));break;case 176:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList([])),$$[$0-2],$$[$0]));break;case 177:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList($$[$0-4])),$$[$0]));break;case 178:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause(null,new yy.ImportSpecifierList($$[$0-6])),$$[$0-2],$$[$0]));break;case 179:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],$$[$0-2]),$$[$0]));break;case 180:this.$=yy.addDataToNode(yy,_$[$0-7],$$[$0-7],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-6],$$[$0-4]),$$[$0-2],$$[$0]));break;case 181:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7],new yy.ImportSpecifierList($$[$0-4])),$$[$0]));break;case 182:this.$=yy.addDataToNode(yy,_$[$0-10],$$[$0-10],_$[$0],$$[$0],!0)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-9],new yy.ImportSpecifierList($$[$0-6])),$$[$0-2],$$[$0]));break;case 186:case 211:case 245:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-2]);break;case 188:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportSpecifier($$[$0]));break;case 189:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportSpecifier($$[$0-2],$$[$0]));break;case 190:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportSpecifier(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 191:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportSpecifier(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.DefaultLiteral($$[$0-2])),$$[$0]));break;case 192:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ImportDefaultSpecifier($$[$0]));break;case 193:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]),$$[$0]));break;case 194:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([])));break;case 195:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2])));break;case 196:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration($$[$0]));break;case 197:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0],null,{moduleDeclaration:"export"}))));break;case 198:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0],null,{moduleDeclaration:"export"}))));break;case 199:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1],null,{moduleDeclaration:"export"}))));break;case 200:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportDefaultDeclaration($$[$0]));break;case 201:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportDefaultDeclaration(new yy.Value($$[$0-1])));break;case 202:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]),$$[$0]));break;case 203:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-4]),$$[$0-2],$$[$0]));break;case 204:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),$$[$0]));break;case 205:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),$$[$0-2],$$[$0]));break;case 206:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]),$$[$0]));break;case 207:this.$=yy.addDataToNode(yy,_$[$0-8],$$[$0-8],_$[$0],$$[$0],!0)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-6]),$$[$0-2],$$[$0]));break;case 213:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0]));break;case 214:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0-2],$$[$0]));break;case 215:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier($$[$0-2],yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 216:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.ExportSpecifier(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.DefaultLiteral($$[$0]))));break;case 217:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.ExportSpecifier(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.DefaultLiteral($$[$0-2])),$$[$0]));break;case 218:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.TaggedTemplateCall($$[$0-2],$$[$0],$$[$0-1].soak));break;case 222:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({soak:!1});break;case 223:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({soak:!0});break;case 224:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([]);break;case 225:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(function(){return $$[$0-2].implicit=$$[$0-3].generated,$$[$0-2]}());break;case 226:case 227:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Value(new yy.ThisLiteral($$[$0])));break;case 228:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Value(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.ThisLiteral($$[$0-1])),[yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Access($$[$0]))],"this"));break;case 229:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Arr([]));break;case 230:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Arr($$[$0-1]));break;case 231:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Arr([].concat($$[$0-2],$$[$0-1])));break;case 232:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({exclusive:!1});break;case 233:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)({exclusive:!0});break;case 234:case 235:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Range($$[$0-3],$$[$0-1],$$[$0-2].exclusive?"exclusive":"inclusive"));break;case 236:case 238:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Range($$[$0-2],$$[$0],$$[$0-1].exclusive?"exclusive":"inclusive"));break;case 237:case 239:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Range($$[$0-1],null,$$[$0].exclusive?"exclusive":"inclusive"));break;case 240:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Range(null,$$[$0],$$[$0-1].exclusive?"exclusive":"inclusive"));break;case 241:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Range(null,null,$$[$0].exclusive?"exclusive":"inclusive"));break;case 254:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)($$[$0-2].concat($$[$0-1]));break;case 255:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)($$[$0-5].concat($$[$0-4],$$[$0-2],$$[$0-1]));break;case 259:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)([].concat($$[$0]));break;case 262:this.$=yy.addDataToNode(yy,_$[$0],$$[$0],_$[$0],$$[$0],!0)(new yy.Elision);break;case 263:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1]);break;case 266:case 267:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)([].concat($$[$0-2],$$[$0]));break;case 268:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Try($$[$0]));break;case 269:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Try($$[$0-1],$$[$0]));break;case 270:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Try($$[$0-2],null,$$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))));break;case 271:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Try($$[$0-3],$$[$0-2],$$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))));break;case 272:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Catch($$[$0],$$[$0-1]));break;case 273:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Catch($$[$0],yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Value($$[$0-1]))));break;case 274:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Catch($$[$0]));break;case 275:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Throw($$[$0]));break;case 276:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Throw(new yy.Value($$[$0-1])));break;case 277:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Parens($$[$0-1]));break;case 278:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Parens($$[$0-2]));break;case 279:case 283:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While($$[$0]));break;case 280:case 284:case 285:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.While($$[$0-2],{guard:$$[$0]}));break;case 281:case 286:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While($$[$0],{invert:!0}));break;case 282:case 287:case 288:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.While($$[$0-2],{invert:!0,guard:$$[$0]}));break;case 289:case 290:case 298:case 299:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].addBody($$[$0]));break;case 291:case 292:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(Object.assign($$[$0],{postfix:!0}).addBody(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(yy.Block.wrap([$$[$0-1]]))));break;case 294:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.BooleanLiteral("true")),{isLoop:!0}).addBody($$[$0]));break;case 295:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.While(yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.BooleanLiteral("true")),{isLoop:!0}).addBody(yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(yy.Block.wrap([$$[$0]]))));break;case 296:case 297:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(function(){return $$[$0].postfix=!0,$$[$0].addBody($$[$0-1])}());break;case 300:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.For([],{source:yy.addDataToNode(yy,_$[$0],$$[$0],null,null,!0)(new yy.Value($$[$0]))}));break;case 301:case 303:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.For([],{source:yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(new yy.Value($$[$0-2])),step:$$[$0]}));break;case 302:case 304:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)($$[$0-1].addSource($$[$0]));break;case 305:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.For([],{name:$$[$0][0],index:$$[$0][1]}));break;case 306:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var _$$$$=_slicedToArray($$[$0],2),index,name;return name=_$$$$[0],index=_$$$$[1],new yy.For([],{name:name,index:index,await:!0,awaitTag:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))})}());break;case 307:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var _$$$$2=_slicedToArray($$[$0],2),index,name;return name=_$$$$2[0],index=_$$$$2[1],new yy.For([],{name:name,index:index,own:!0,ownTag:yy.addDataToNode(yy,_$[$0-1],$$[$0-1],null,null,!0)(new yy.Literal($$[$0-1]))})}());break;case 313:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)([$$[$0-2],$$[$0]]);break;case 314:case 333:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0]});break;case 315:case 334:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0],object:!0});break;case 316:case 317:case 335:case 336:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0]});break;case 318:case 319:case 337:case 338:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0],object:!0});break;case 320:case 321:case 339:case 340:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],step:$$[$0]});break;case 322:case 323:case 324:case 325:case 341:case 342:case 343:case 344:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)({source:$$[$0-4],guard:$$[$0-2],step:$$[$0]});break;case 326:case 327:case 328:case 329:case 345:case 346:case 347:case 348:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)({source:$$[$0-4],step:$$[$0-2],guard:$$[$0]});break;case 330:case 349:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)({source:$$[$0],from:!0});break;case 331:case 332:case 350:case 351:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)({source:$$[$0-2],guard:$$[$0],from:!0});break;case 352:case 353:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Switch($$[$0-3],$$[$0-1]));break;case 354:case 355:this.$=yy.addDataToNode(yy,_$[$0-6],$$[$0-6],_$[$0],$$[$0],!0)(new yy.Switch($$[$0-5],$$[$0-3],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0-1],$$[$0-1],!0)($$[$0-1])));break;case 356:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Switch(null,$$[$0-1]));break;case 357:this.$=yy.addDataToNode(yy,_$[$0-5],$$[$0-5],_$[$0],$$[$0],!0)(new yy.Switch(null,$$[$0-3],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0-1],$$[$0-1],!0)($$[$0-1])));break;case 360:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.SwitchWhen($$[$0-1],$$[$0]));break;case 361:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!1)(yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0-1],$$[$0-1],!0)(new yy.SwitchWhen($$[$0-2],$$[$0-1])));break;case 362:case 368:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0-1],$$[$0],{type:$$[$0-2]}));break;case 363:case 369:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)($$[$0-4].addElse(yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0-1],$$[$0],{type:$$[$0-2]}))));break;case 365:case 371:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)($$[$0-2].addElse($$[$0]));break;case 366:case 367:case 372:case 373:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.If($$[$0],yy.addDataToNode(yy,_$[$0-2],$$[$0-2],null,null,!0)(yy.Block.wrap([$$[$0-2]])),{type:$$[$0-1],postfix:!0}));break;case 377:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1].toString(),$$[$0],void 0,void 0,{originalOperator:$$[$0-1].original}));break;case 380:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("-",$$[$0]));break;case 381:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("+",$$[$0]));break;case 384:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("--",$$[$0]));break;case 385:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("++",$$[$0]));break;case 386:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("--",$$[$0-1],null,!0));break;case 387:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Op("++",$$[$0-1],null,!0));break;case 388:this.$=yy.addDataToNode(yy,_$[$0-1],$$[$0-1],_$[$0],$$[$0],!0)(new yy.Existence($$[$0-1]));break;case 389:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op("+",$$[$0-2],$$[$0]));break;case 390:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op("-",$$[$0-2],$$[$0]));break;case 391:case 392:case 393:case 395:case 396:case 397:case 400:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1],$$[$0-2],$$[$0]));break;case 394:case 398:case 399:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Op($$[$0-1].toString(),$$[$0-2],$$[$0],void 0,{originalOperator:$$[$0-1].original}));break;case 401:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(function(){var ref,ref1;return new yy.Op($$[$0-1].toString(),$$[$0-2],$$[$0],void 0,{invertOperator:null==(ref=null==(ref1=$$[$0-1].invert)?void 0:ref1.original)?$$[$0-1].invert:ref})}());break;case 402:this.$=yy.addDataToNode(yy,_$[$0-2],$$[$0-2],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-2],$$[$0],$$[$0-1].toString(),{originalContext:$$[$0-1].original}));break;case 403:this.$=yy.addDataToNode(yy,_$[$0-4],$$[$0-4],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-4],$$[$0-1],$$[$0-3].toString(),{originalContext:$$[$0-3].original}));break;case 404:this.$=yy.addDataToNode(yy,_$[$0-3],$$[$0-3],_$[$0],$$[$0],!0)(new yy.Assign($$[$0-3],$$[$0],$$[$0-2].toString(),{originalContext:$$[$0-2].original}));}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{1:[3]},{1:[2,2],6:$VM},o($VN,[2,3]),o($VO,[2,6],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,7]),o($VO,[2,8],{167:123,160:125,163:126,157:$VP,159:$VQ,165:$VR,183:$V51}),o($VO,[2,9]),o($V61,[2,16],{83:127,86:128,113:134,46:$V71,47:$V71,136:$V71,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),o($V61,[2,17],{113:134,86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1}),o($V61,[2,18]),o($V61,[2,19]),o($V61,[2,20]),o($V61,[2,21]),o($V61,[2,22]),o($V61,[2,23]),o($V61,[2,24]),o($V61,[2,25]),o($V61,[2,26]),o($V61,[2,27]),o($VO,[2,28]),o($VO,[2,29]),o($VO,[2,30]),o($Vf1,[2,12]),o($Vf1,[2,13]),o($Vf1,[2,14]),o($Vf1,[2,15]),o($VO,[2,10]),o($VO,[2,11]),o($Vg1,$Vh1,{66:[1,138]}),o($Vg1,[2,130]),o($Vg1,[2,131]),o($Vg1,[2,132]),o($Vg1,$Vi1),o($Vg1,[2,134]),o($Vg1,[2,135]),o($Vg1,[2,136]),o($Vg1,[2,137]),o($Vj1,$Vk1,{90:139,97:140,98:141,38:143,72:144,99:145,34:146,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{5:150,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:149,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:152,8:153,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:157,8:158,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:159,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:167,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:168,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:[1,171],88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:172,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:176,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($Vx1,$Vy1,{191:[1,177],192:[1,178],205:[1,179]}),o($V61,[2,364],{178:[1,180]}),{33:$Vo1,37:181},{33:$Vo1,37:182},{33:$Vo1,37:183},o($V61,[2,293]),{33:$Vo1,37:184},{33:$Vo1,37:185},{7:186,8:187,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,188],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,161],{58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,99:65,34:66,43:67,53:69,38:85,72:86,45:95,92:161,17:173,18:174,65:175,37:189,101:191,33:$Vo1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,121:[1,190],139:$Vu,154:$Vx,187:$Vv1}),{7:192,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,193],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:[1,197],88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO,[2,370],{178:[1,198]}),{18:200,29:199,89:$Vl,92:39,93:$Vm,94:$Vn},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$VD1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:201,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{38:207,39:$V2,40:$V3,45:203,46:$V5,47:$V6,117:[1,206],124:204,125:205,130:$VF1},{26:210,38:211,39:$V2,40:$V3,117:[1,209],120:$Vr,129:[1,212],133:[1,213]},o($Vx1,[2,127]),o($Vx1,[2,128]),o($Vg1,[2,52]),o($Vg1,[2,53]),o($Vg1,[2,54]),o($Vg1,[2,55]),o($Vg1,[2,56]),o($Vg1,[2,57]),o($Vg1,[2,58]),o($Vg1,[2,59]),{4:214,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,215],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:216,8:217,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{83:228,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:231,136:$VM1},o($Vg1,[2,226]),o($Vg1,$VN1,{41:233,42:$VO1}),{105:[1,235]},{105:[1,236]},o($VP1,[2,102]),o($VP1,[2,103]),o($VQ1,[2,122]),o($VQ1,[2,125]),{7:237,8:238,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:239,8:240,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:242,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:244,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vo1,34:66,37:243,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:245,117:$Vq,170:246,171:$VS1,172:249},{168:254,169:255,173:[1,256],174:[1,257],175:[1,258]},o([6,33,96,119],$VT1,{45:95,118:259,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VZ1,[2,40]),o($VZ1,[2,41]),o($Vg1,[2,50]),{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:279,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:280,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($V_1,[2,37]),o($V_1,[2,38]),o($V$1,[2,42]),{45:284,46:$V5,47:$V6,48:281,50:282,51:$V02},o($VN,[2,5],{7:4,8:5,9:6,10:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,11:27,12:28,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,5:285,14:$V0,32:$V1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,388]),{7:286,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:287,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:288,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:289,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:290,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:291,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:292,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:293,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:294,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:295,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:296,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:297,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:298,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:299,8:300,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,292]),o($V61,[2,297]),{7:239,8:301,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:302,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:303,117:$Vq,170:246,171:$VS1,172:249},{168:254,173:[1,304],174:[1,305],175:[1,306]},{7:307,8:308,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,291]),o($V61,[2,296]),{45:309,46:$V5,47:$V6,84:310,136:$VM1},o($VQ1,[2,123]),o($V12,[2,223]),{41:311,42:$VO1},{41:312,42:$VO1},o($VQ1,[2,147],{41:313,42:$VO1}),o($VQ1,[2,148],{41:314,42:$VO1}),o($VQ1,[2,149]),{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,316],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:315,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{106:$V91,113:323,115:$Vd1},o($VQ1,[2,124]),{6:[1,325],7:324,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,326],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,327],96:$V62}),o($V72,[2,107]),o($V72,[2,111],{66:[1,331],76:[1,330]}),o($V72,[2,115],{38:143,72:144,99:145,34:146,98:332,39:$V2,40:$V3,73:$Vl1,75:$Vm1,117:$Vq}),o($V82,[2,116]),o($V82,[2,117]),o($V82,[2,118]),o($V82,[2,119]),{41:233,42:$VO1},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,99]),o($VO,[2,101]),{4:336,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,35:[1,335],38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,374]),{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:$V51},o([1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,375]),o($Vc2,[2,379],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vj1,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:338,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{33:$Vo1,37:149},{7:339,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:340,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:[1,341]},{18:200,89:$Vr1,92:161,93:$Vm,94:$Vn},{7:342,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vc2,[2,380],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,381],{160:118,163:119,167:123,193:$VV,195:$VX}),o($V92,[2,382],{160:118,163:119,167:123,193:$VV}),{34:343,117:$Vq},o($VO,[2,97],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:344,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,384],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V12,$V71,{83:127,86:128,113:134,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),{86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1},o($Vd2,$Vh1),o($V61,[2,385],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V61,[2,386]),o($V61,[2,387]),{6:[1,347],7:345,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,346],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:348,182:[1,349]},o($V61,[2,268],{150:350,151:[1,351],152:[1,352]}),o($V61,[2,289]),o($V61,[2,290]),o($V61,[2,298]),o($V61,[2,299]),{33:[1,353],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[1,354]},{177:355,179:356,180:$Ve2},o($V61,[2,162]),{7:358,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,165],{37:359,33:$Vo1,46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1,121:[1,360]}),o($Vf2,[2,275],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:361,117:$Vq},o($Vf2,[2,32],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:362,117:$Vq},{7:363,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,158,166],[2,95],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:364,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{33:$Vo1,37:365,182:[1,366]},o($VO,[2,376]),o($Vg1,[2,405]),o($Vf1,$Vg2,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:367,117:$Vq},o($Vf1,[2,169],{123:[1,368]}),{36:[1,369],96:[1,370]},{36:[1,371]},{33:$Vh2,38:376,39:$V2,40:$V3,119:[1,372],126:373,127:374,129:$Vi2},o([36,96],[2,192]),{128:[1,378]},{33:$Vj2,38:383,39:$V2,40:$V3,119:[1,379],129:$Vk2,132:380,134:381},o($Vf1,[2,196]),{66:[1,385]},{7:386,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,387],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{36:[1,388]},{6:$VM,155:[1,389]},{4:390,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vl2,$Vm2,{160:118,163:119,167:123,143:391,76:[1,392],144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vl2,$Vn2,{143:393,76:$V22,144:$V32}),o($Vo2,[2,229]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:[1,394],75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([6,33,74],$V52,{142:397,95:399,96:$Vp2}),o($Vq2,[2,260],{6:$Vr2}),o($Vs2,[2,251]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:401,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vt2,[2,262]),o($Vs2,[2,256]),o($Vu2,[2,249]),o($Vu2,[2,250],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:403,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{84:404,136:$VM1},{41:405,42:$VO1},{7:406,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,407],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,221]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,137:[1,408],138:409,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vx2,[2,228]),o($Vx2,[2,39]),{41:412,42:$VO1},{41:413,42:$VO1},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:415},o($Vy2,[2,283],{160:118,163:119,167:123,157:$VP,158:[1,416],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,279],158:[1,417]},o($Vy2,[2,286],{160:118,163:119,167:123,157:$VP,158:[1,418],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,281],158:[1,419]},o($V61,[2,294]),o($Vz2,[2,295],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$VA2,166:[1,420]},o($VB2,[2,305]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:421,172:249},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:422,172:249},o($VB2,[2,312],{96:[1,423]}),o($VC2,[2,308]),o($VC2,[2,309]),o($VC2,[2,310]),o($VC2,[2,311]),o($V61,[2,302]),{33:[2,304]},{7:424,8:425,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:426,8:427,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:428,8:429,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VD2,$V52,{95:430,96:$VE2}),o($VF2,[2,157]),o($VF2,[2,63],{70:[1,432]}),o($VF2,[2,64]),o($VG2,[2,72],{113:134,83:435,86:436,66:[1,433],76:[1,434],105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),{7:437,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([76,105,106,110,111,112,115,135,136],$VN1,{41:233,42:$VO1,73:[1,438]}),o($VG2,[2,75]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,71:439,72:271,75:$Vg,77:440,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},{76:[1,441],83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1,135:$Ve1,136:$V71},o($VH2,[2,69]),o($VH2,[2,70]),o($VH2,[2,71]),o($VI2,[2,80]),o($VI2,[2,81]),o($VI2,[2,82]),o($VI2,[2,83]),o($VI2,[2,84]),{83:444,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:445,136:$VM1},o($Vd2,$Vi1,{57:[1,446]}),o($Vd2,$Vy1),{45:284,46:$V5,47:$V6,49:[1,447],50:448,51:$V02},o($VJ2,[2,44]),{4:449,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,450],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,52:[1,451],53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,49]),o($VN,[2,4]),o($VK2,[2,389],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($VK2,[2,390],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($Vc2,[2,391],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,392],{160:118,163:119,167:123,193:$VV,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,196,197,198,199,200,201,202,203,204],[2,393],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203],[2,394],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,198,199,200,201,202,203],[2,395],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,199,200,201,202,203],[2,396],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,200,201,202,203],[2,397],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,201,202,203],[2,398],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,202,203],[2,399],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,203],[2,400],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203,204],[2,401],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY}),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,373]),{158:[1,452]},{158:[1,453]},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA2,{166:[1,454]}),{7:455,8:456,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:457,8:458,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:459,8:460,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,372]),o($Vv2,[2,218]),o($Vv2,[2,219]),o($VQ1,[2,143]),o($VQ1,[2,144]),o($VQ1,[2,145]),o($VQ1,[2,146]),{107:[1,461]},{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:462,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VN2,[2,153],{160:118,163:119,167:123,143:463,76:$V22,144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,154]),{76:$V22,143:464,144:$V32},o($VN2,[2,241],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:465,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO2,[2,232]),o($VO2,$VP2),o($VQ1,[2,152]),o($Vf2,[2,60],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:466,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:467,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{92:468,93:$Vm,94:$Vn},o($VQ2,$VR2,{98:141,38:143,72:144,99:145,34:146,97:469,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{6:$VS2,33:$VT2},o($V72,[2,112]),{7:472,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,113]),o($Vu2,$Vm2,{160:118,163:119,167:123,76:[1,473],157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$Vn2),o($VU2,[2,35]),{6:$VM,35:[1,474]},{7:475,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,476],96:$V62}),o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),{7:477,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,478]},o($VO,[2,96],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,402],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:479,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:480,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,365]),{7:481,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,269],{151:[1,482]}),{33:$Vo1,37:483},{33:$Vo1,34:485,37:486,38:484,39:$V2,40:$V3,117:$Vq},{177:487,179:356,180:$Ve2},{177:488,179:356,180:$Ve2},{35:[1,489],178:[1,490],179:491,180:$Ve2},o($VW2,[2,358]),{7:493,8:494,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,148:492,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VX2,[2,163],{160:118,163:119,167:123,37:495,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,166]),{7:496,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,497]},{35:[1,498]},o($Vf2,[2,34],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,94],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,371]),{7:500,8:499,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,501]},{34:502,117:$Vq},{45:503,46:$V5,47:$V6},{117:[1,505],125:504,130:$VF1},{45:506,46:$V5,47:$V6},{36:[1,507]},o($VD2,$V52,{95:508,96:$VY2}),o($VF2,[2,183]),{33:$Vh2,38:376,39:$V2,40:$V3,126:510,127:374,129:$Vi2},o($VF2,[2,188],{128:[1,511]}),o($VF2,[2,190],{128:[1,512]}),{38:513,39:$V2,40:$V3},o($Vf1,[2,194],{36:[1,514]}),o($VD2,$V52,{95:515,96:$VZ2}),o($VF2,[2,208]),{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:517,134:381},o($VF2,[2,213],{128:[1,518]}),o($VF2,[2,216],{128:[1,519]}),{6:[1,521],7:520,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,522],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V_2,[2,200],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:523,117:$Vq},{45:524,46:$V5,47:$V6},o($Vg1,[2,277]),{6:$VM,35:[1,525]},{7:526,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([14,32,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2,{6:$V$2,33:$V$2,74:$V$2,96:$V$2}),{7:527,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,230]),o($Vq2,[2,261],{6:$Vr2}),o($Vs2,[2,257]),{33:$V03,74:[1,528]},o([6,33,35,74],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,147:221,145:225,100:226,7:333,8:334,146:530,140:531,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V13,[2,258],{6:[1,532]}),o($Vt2,[2,263]),o($VQ2,$V52,{95:399,142:533,96:$Vp2}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vu2,[2,121],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vv2,[2,220]),o($Vg1,[2,138]),{107:[1,534],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:535,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,224]),o([6,33,137],$V52,{95:536,96:$V23}),o($V33,[2,242]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:538,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,141]),o($Vg1,[2,142]),o($V43,[2,362]),o($V53,[2,368]),{7:539,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:540,8:541,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:542,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:543,8:544,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:545,8:546,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VB2,[2,306]),o($VB2,[2,307]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,172:547},{33:$V63,157:$VP,158:[1,548],159:$VQ,160:118,163:119,165:$VR,166:[1,549],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,333],158:[1,550],166:[1,551]},{33:$V73,157:$VP,158:[1,552],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,334],158:[1,553]},{33:$V83,157:$VP,158:[1,554],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,349],158:[1,555]},{6:$V93,33:$Va3,119:[1,556]},o($Vb3,$VR2,{45:95,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,67:559,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),{7:560,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,561],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:562,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,563],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,76]),{84:564,136:$VM1},o($VI2,[2,89]),{74:[1,565],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:566,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,77],{113:134,83:435,86:436,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,79],{113:134,83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,78]),{84:567,136:$VM1},o($VI2,[2,90]),{84:568,136:$VM1},o($VI2,[2,86]),o($Vg1,[2,51]),o($V$1,[2,43]),o($VJ2,[2,45]),{6:$VM,52:[1,569]},{4:570,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,48]),{7:571,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:572,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:573,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,183],$V63,{160:118,163:119,167:123,158:[1,574],166:[1,575],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,576],166:[1,577]},o($Vc3,$V73,{160:118,163:119,167:123,158:[1,578],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,579]},o($Vc3,$V83,{160:118,163:119,167:123,158:[1,580],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,581]},o($VQ1,[2,150]),{35:[1,582]},o($VN2,[2,237],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:583,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,239],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:584,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,240],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,61],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,585],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{5:587,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:586,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,108]),{34:146,38:143,39:$V2,40:$V3,72:144,73:$Vl1,75:$Vm1,76:$Vn1,97:588,98:141,99:145,117:$Vq},o($Vd3,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:589,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),o($V72,[2,114],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$V$2),o($VU2,[2,36]),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{92:590,93:$Vm,94:$Vn},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,383]),{35:[1,591],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf2,[2,404],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vo1,37:592,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:593},o($V61,[2,270]),{33:$Vo1,37:594},{33:$Vo1,37:595},o($Ve3,[2,274]),{35:[1,596],178:[1,597],179:491,180:$Ve2},{35:[1,598],178:[1,599],179:491,180:$Ve2},o($V61,[2,356]),{33:$Vo1,37:600},o($VW2,[2,359]),{33:$Vo1,37:601,96:[1,602]},o($Vf3,[2,264],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,265]),o($V61,[2,164]),o($VX2,[2,167],{160:118,163:119,167:123,37:603,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,276]),o($V61,[2,33]),{33:$Vo1,37:604},{157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,92]),o($Vf1,[2,170]),o($Vf1,[2,171],{123:[1,605]}),{36:[1,606]},{33:$Vh2,38:376,39:$V2,40:$V3,126:607,127:374,129:$Vi2},o($Vf1,[2,173],{123:[1,608]}),{45:609,46:$V5,47:$V6},{6:$Vg3,33:$Vh3,119:[1,610]},o($Vb3,$VR2,{38:376,127:613,39:$V2,40:$V3,129:$Vi2}),o($VQ2,$V52,{95:614,96:$VY2}),{38:615,39:$V2,40:$V3},{38:616,39:$V2,40:$V3},{36:[2,193]},{45:617,46:$V5,47:$V6},{6:$Vi3,33:$Vj3,119:[1,618]},o($Vb3,$VR2,{38:383,134:621,39:$V2,40:$V3,129:$Vk2}),o($VQ2,$V52,{95:622,96:$VZ2}),{38:623,39:$V2,40:$V3,129:[1,624]},{38:625,39:$V2,40:$V3},o($V_2,[2,197],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:626,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:627,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,628]},o($Vf1,[2,202],{123:[1,629]}),{155:[1,630]},{74:[1,631],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{74:[1,632],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vo2,[2,231]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:633,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vs2,[2,252]),o($V13,[2,259],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,147:395,145:396,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,145:225,146:634,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$V03,35:[1,635]},o($Vg1,[2,139]),{35:[1,636],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{6:$Vk3,33:$Vl3,137:[1,637]},o([6,33,35,137],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,145:640,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VQ2,$V52,{95:641,96:$V23}),o($Vz2,[2,284],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vm3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,280]},o($Vz2,[2,287],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vn3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,282]},{33:$Vo3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,303]},o($VB2,[2,313]),{7:642,8:643,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:644,8:645,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:646,8:647,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:648,8:649,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:650,8:651,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:652,8:653,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:654,8:655,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:656,8:657,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,155]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,43:266,44:$V4,45:95,46:$V5,47:$V6,67:658,68:261,69:262,71:263,72:271,73:$VU1,75:$VV1,76:$VW1,77:268,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},o($Vd3,$VT1,{45:95,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,118:659,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VF2,[2,158]),o($VF2,[2,65],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:660,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,67],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:661,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VI2,[2,87]),o($VG2,[2,73]),{74:[1,662],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VI2,[2,88]),o($VI2,[2,85]),o($VJ2,[2,46]),{6:$VM,35:[1,663]},o($Vz2,$Vm3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vn3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vo3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:664,8:665,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:666,8:667,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:668,8:669,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:670,8:671,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:672,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:673,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:674,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:675,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{107:[1,676]},o($VN2,[2,236],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,238],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,62]),o($Vg1,[2,98]),o($VO,[2,100]),o($V72,[2,109]),o($VQ2,$V52,{95:677,96:$V62}),{33:$Vo1,37:586},o($V61,[2,403]),o($V43,[2,363]),o($V61,[2,271]),o($Ve3,[2,272]),o($Ve3,[2,273]),o($V61,[2,352]),{33:$Vo1,37:678},o($V61,[2,353]),{33:$Vo1,37:679},{35:[1,680]},o($VW2,[2,360],{6:[1,681]}),{7:682,8:683,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,168]),o($V53,[2,369]),{34:684,117:$Vq},{45:685,46:$V5,47:$V6},o($VD2,$V52,{95:686,96:$VY2}),{34:687,117:$Vq},o($Vf1,[2,175],{123:[1,688]}),{36:[1,689]},{38:376,39:$V2,40:$V3,127:690,129:$Vi2},{33:$Vh2,38:376,39:$V2,40:$V3,126:691,127:374,129:$Vi2},o($VF2,[2,184]),{6:$Vg3,33:$Vh3,35:[1,692]},o($VF2,[2,189]),o($VF2,[2,191]),o($Vf1,[2,204],{123:[1,693]}),o($Vf1,[2,195],{36:[1,694]}),{38:383,39:$V2,40:$V3,129:$Vk2,134:695},{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:696,134:381},o($VF2,[2,209]),{6:$Vi3,33:$Vj3,35:[1,697]},o($VF2,[2,214]),o($VF2,[2,215]),o($VF2,[2,217]),o($V_2,[2,198],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,698],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,201]),{34:699,117:$Vq},o($Vg1,[2,278]),o($Vg1,[2,234]),o($Vg1,[2,235]),o($VQ2,$V52,{95:399,142:700,96:$Vp2}),o($Vs2,[2,253]),o($Vs2,[2,254]),{107:[1,701]},o($Vv2,[2,225]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:702,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:703,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V33,[2,243]),{6:$Vk3,33:$Vl3,35:[1,704]},{33:$Vp3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,705],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,335],166:[1,706]},{33:$Vq3,157:$VP,158:[1,707],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,339],158:[1,708]},{33:$Vr3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,709],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,336],166:[1,710]},{33:$Vs3,157:$VP,158:[1,711],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,340],158:[1,712]},{33:$Vt3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,337]},{33:$Vu3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,338]},{33:$Vv3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,350]},{33:$Vw3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,351]},o($VF2,[2,159]),o($VQ2,$V52,{95:713,96:$VE2}),{35:[1,714],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,715],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VG2,[2,74]),{52:[1,716]},o($Vx3,$Vp3,{160:118,163:119,167:123,166:[1,717],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,718]},o($Vc3,$Vq3,{160:118,163:119,167:123,158:[1,719],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,720]},o($Vx3,$Vr3,{160:118,163:119,167:123,166:[1,721],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,722]},o($Vc3,$Vs3,{160:118,163:119,167:123,158:[1,723],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,724]},o($Vf2,$Vt3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vu3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vv3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vw3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VQ1,[2,151]),{6:$VS2,33:$VT2,35:[1,725]},{35:[1,726]},{35:[1,727]},o($V61,[2,357]),o($VW2,[2,361]),o($Vf3,[2,266],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,267]),o($Vf1,[2,172]),o($Vf1,[2,179],{123:[1,728]}),{6:$Vg3,33:$Vh3,119:[1,729]},o($Vf1,[2,174]),{34:730,117:$Vq},{45:731,46:$V5,47:$V6},o($VF2,[2,185]),o($VQ2,$V52,{95:732,96:$VY2}),o($VF2,[2,186]),{34:733,117:$Vq},{45:734,46:$V5,47:$V6},o($VF2,[2,210]),o($VQ2,$V52,{95:735,96:$VZ2}),o($VF2,[2,211]),o($Vf1,[2,199]),o($Vf1,[2,203]),{33:$V03,35:[1,736]},o($Vg1,[2,140]),o($V33,[2,244]),o($VQ2,$V52,{95:737,96:$V23}),o($V33,[2,245]),{7:738,8:739,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:740,8:741,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:742,8:743,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:744,8:745,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:746,8:747,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:748,8:749,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:750,8:751,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:752,8:753,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{6:$V93,33:$Va3,35:[1,754]},o($VF2,[2,66]),o($VF2,[2,68]),o($VJ2,[2,47]),{7:755,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:756,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:757,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:758,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:759,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:760,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:761,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:762,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,110]),o($V61,[2,354]),o($V61,[2,355]),{34:763,117:$Vq},{36:[1,764]},o($Vf1,[2,176]),o($Vf1,[2,177],{123:[1,765]}),{6:$Vg3,33:$Vh3,35:[1,766]},o($Vf1,[2,205]),o($Vf1,[2,206],{123:[1,767]}),{6:$Vi3,33:$Vj3,35:[1,768]},o($Vs2,[2,255]),{6:$Vk3,33:$Vl3,35:[1,769]},{33:$Vy3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,341]},{33:$Vz3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,343]},{33:$VA3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,345]},{33:$VB3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,347]},{33:$VC3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,342]},{33:$VD3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,344]},{33:$VE3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,346]},{33:$VF3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,348]},o($VF2,[2,160]),o($Vf2,$Vy3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vz3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VA3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VB3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VC3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VD3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VE3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VF3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf1,[2,180]),{45:770,46:$V5,47:$V6},{34:771,117:$Vq},o($VF2,[2,187]),{34:772,117:$Vq},o($VF2,[2,212]),o($V33,[2,246]),o($Vf1,[2,181],{123:[1,773]}),o($Vf1,[2,178]),o($Vf1,[2,207]),{34:774,117:$Vq},o($Vf1,[2,182])],defaultActions:{255:[2,304],513:[2,193],541:[2,280],544:[2,282],546:[2,303],651:[2,337],653:[2,338],655:[2,350],657:[2,351],739:[2,341],741:[2,343],743:[2,345],745:[2,347],747:[2,342],749:[2,344],751:[2,346],753:[2,348]},parseError:function(str,hash){if(hash.recoverable)this.trace(str);else{var error=new Error(str);throw error.hash=hash,error}},parse:function(input){var self=this,stack=[0],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,EOF=1,args=lstack.slice.call(arguments,1),lexer=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer,sharedState.yy.parser=this,"undefined"==typeof lexer.yylloc&&(lexer.yylloc={});var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;this.parseError="function"==typeof sharedState.yy.parseError?sharedState.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var lex=function(){var token;return token=lexer.lex()||EOF,"number"!=typeof token&&(token=self.symbols_[token]||token),token};for(var yyval={},symbol,preErrorSymbol,state,action,r,p,len,newState,expected;;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:((null===symbol||"undefined"==typeof symbol)&&(symbol=lex()),action=table[state]&&table[state][symbol]),"undefined"==typeof action||!action.length||!action[0]){var errStr="";for(p in expected=[],table[state])this.terminals_[p]&&p>2&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&1<action.length)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer.yytext),lstack.push(lexer.yylloc),stack.push(action[1]),symbol=null,preErrorSymbol?(symbol=preErrorSymbol,preErrorSymbol=null):(yyleng=lexer.yyleng,yytext=lexer.yytext,yylineno=lexer.yylineno,yyloc=lexer.yylloc,0<recovering&&recovering--);break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args)),"undefined"!=typeof r)return r;len&&(stack=stack.slice(0,2*(-1*len)),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0;}}return!0}};return Parser.prototype=parser,parser.Parser=Parser,new Parser}();return"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=parser,exports.Parser=parser.Parser,exports.parse=function(){return parser.parse.apply(parser,arguments)},exports.main=function(){},require.main===module&&exports.main(process.argv.slice(1))),module.exports}(),require["./scope"]=function(){var exports={};return function(){var indexOf=[].indexOf,Scope;exports.Scope=Scope=function(){function Scope(parent,expressions,method,referencedVars){_classCallCheck(this,Scope);var ref,ref1;this.parent=parent,this.expressions=expressions,this.method=method,this.referencedVars=referencedVars,this.variables=[{name:"arguments",type:"arguments"}],this.comments={},this.positions={},this.parent||(this.utilities={}),this.root=null==(ref=null==(ref1=this.parent)?void 0:ref1.root)?this:ref}return _createClass(Scope,[{key:"add",value:function add(name,type,immediate){return this.shared&&!immediate?this.parent.add(name,type,immediate):Object.prototype.hasOwnProperty.call(this.positions,name)?this.variables[this.positions[name]].type=type:this.positions[name]=this.variables.push({name:name,type:type})-1}},{key:"namedMethod",value:function namedMethod(){var ref;return(null==(ref=this.method)?void 0:ref.name)||!this.parent?this.method:this.parent.namedMethod()}},{key:"find",value:function find(name){var type=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"var";return!!this.check(name)||(this.add(name,type),!1)}},{key:"parameter",value:function parameter(name){return this.shared&&this.parent.check(name,!0)?void 0:this.add(name,"param")}},{key:"check",value:function check(name){var ref;return!!(this.type(name)||(null==(ref=this.parent)?void 0:ref.check(name)))}},{key:"temporary",value:function temporary(name,index){var single=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],diff,endCode,letter,newCode,num,startCode;return single?(startCode=name.charCodeAt(0),endCode="z".charCodeAt(0),diff=endCode-startCode,newCode=startCode+index%(diff+1),letter=_StringfromCharCode(newCode),num=_Mathfloor(index/(diff+1)),"".concat(letter).concat(num||"")):"".concat(name).concat(index||"")}},{key:"type",value:function type(name){var i,len,ref,v;for(ref=this.variables,i=0,len=ref.length;i<len;i++)if(v=ref[i],v.name===name)return v.type;return null}},{key:"freeVariable",value:function freeVariable(name){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},index,ref,temp;for(index=0;temp=this.temporary(name,index,options.single),!!(this.check(temp)||0<=indexOf.call(this.root.referencedVars,temp));)index++;return(null==(ref=options.reserve)||ref)&&this.add(temp,"var",!0),temp}},{key:"assign",value:function assign(name,value){return this.add(name,{value:value,assigned:!0},!0),this.hasAssignments=!0}},{key:"hasDeclarations",value:function hasDeclarations(){return!!this.declaredVariables().length}},{key:"declaredVariables",value:function declaredVariables(){var v;return function(){var i,len,ref,results;for(ref=this.variables,results=[],(i=0,len=ref.length);i<len;i++)v=ref[i],"var"===v.type&&results.push(v.name);return results}.call(this).sort()}},{key:"assignedVariables",value:function assignedVariables(){var i,len,ref,results,v;for(ref=this.variables,results=[],(i=0,len=ref.length);i<len;i++)v=ref[i],v.type.assigned&&results.push("".concat(v.name," = ").concat(v.type.value));return results}}]),Scope}()}.call(this),{exports:exports}.exports}(),require["./nodes"]=function(){var exports={};return function(){var indexOf=[].indexOf,splice=[].splice,slice1=[].slice,Access,Arr,Assign,AwaitReturn,Base,Block,BooleanLiteral,Call,Catch,Class,ClassProperty,ClassPrototypeProperty,Code,CodeFragment,ComputedPropertyName,DefaultLiteral,Directive,DynamicImport,DynamicImportCall,Elision,EmptyInterpolation,ExecutableClassBody,Existence,Expansion,ExportAllDeclaration,ExportDeclaration,ExportDefaultDeclaration,ExportNamedDeclaration,ExportSpecifier,ExportSpecifierList,Extends,For,FuncDirectiveReturn,FuncGlyph,HEREGEX_OMIT,HereComment,HoistTarget,IdentifierLiteral,If,ImportClause,ImportDeclaration,ImportDefaultSpecifier,ImportNamespaceSpecifier,ImportSpecifier,ImportSpecifierList,In,Index,InfinityLiteral,Interpolation,JSXAttribute,JSXAttributes,JSXElement,JSXEmptyExpression,JSXExpressionContainer,JSXIdentifier,JSXNamespacedName,JSXTag,JSXText,JS_FORBIDDEN,LEADING_BLANK_LINE,LEVEL_ACCESS,LEVEL_COND,LEVEL_LIST,LEVEL_OP,LEVEL_PAREN,LEVEL_TOP,LineComment,Literal,MetaProperty,ModuleDeclaration,ModuleSpecifier,ModuleSpecifierList,NEGATE,NO,NaNLiteral,NullLiteral,NumberLiteral,Obj,ObjectProperty,Op,Param,Parens,PassthroughLiteral,PropertyName,Range,RegexLiteral,RegexWithInterpolations,Return,Root,SIMPLENUM,SIMPLE_STRING_OMIT,STRING_OMIT,Scope,Sequence,Slice,Splat,StatementLiteral,StringLiteral,StringWithInterpolations,Super,SuperCall,Switch,SwitchCase,SwitchWhen,TAB,THIS,TRAILING_BLANK_LINE,TaggedTemplateCall,TemplateElement,ThisLiteral,Throw,Try,UTILITIES,UndefinedLiteral,Value,While,YES,YieldReturn,addDataToNode,astAsBlockIfNeeded,attachCommentsToNode,compact,del,emptyExpressionLocationData,ends,extend,extractSameLineLocationDataFirst,extractSameLineLocationDataLast,flatten,fragmentsToText,greater,hasLineComments,indentInitial,isAstLocGreater,isFunction,isLiteralArguments,isLiteralThis,isLocationDataEndGreater,isLocationDataStartGreater,isNumber,isPlainObject,isUnassignable,jisonLocationDataToAstLocationData,lesser,locationDataToString,makeDelimitedLiteral,merge,mergeAstLocationData,mergeLocationData,moveComments,multident,parseNumber,replaceUnicodeCodePointEscapes,shouldCacheOrIsAssignable,sniffDirectives,some,starts,throwSyntaxError,_unfoldSoak,unshiftAfterComments,utility,zeroWidthLocationDataFromEndLocation;Error.stackTraceLimit=2e308;var _require4=require("./scope");Scope=_require4.Scope;var _require5=require("./lexer");isUnassignable=_require5.isUnassignable,JS_FORBIDDEN=_require5.JS_FORBIDDEN;var _require6=require("./helpers");compact=_require6.compact,flatten=_require6.flatten,extend=_require6.extend,merge=_require6.merge,del=_require6.del,starts=_require6.starts,ends=_require6.ends,some=_require6.some,addDataToNode=_require6.addDataToNode,attachCommentsToNode=_require6.attachCommentsToNode,locationDataToString=_require6.locationDataToString,throwSyntaxError=_require6.throwSyntaxError,replaceUnicodeCodePointEscapes=_require6.replaceUnicodeCodePointEscapes,isFunction=_require6.isFunction,isPlainObject=_require6.isPlainObject,isNumber=_require6.isNumber,parseNumber=_require6.parseNumber,exports.extend=extend,exports.addDataToNode=addDataToNode,YES=function(){return!0},NO=function(){return!1},THIS=function(){return this},NEGATE=function(){return this.negated=!this.negated,this},exports.CodeFragment=CodeFragment=function(){function CodeFragment(parent,code){_classCallCheck(this,CodeFragment);var ref1;this.code="".concat(code),this.type=(null==parent||null==(ref1=parent.constructor)?void 0:ref1.name)||"unknown",this.locationData=null==parent?void 0:parent.locationData,this.comments=null==parent?void 0:parent.comments}return _createClass(CodeFragment,[{key:"toString",value:function toString(){return"".concat(this.code).concat(this.locationData?": "+locationDataToString(this.locationData):"")}}]),CodeFragment}(),fragmentsToText=function(fragments){var fragment;return function(){var j,len1,results1;for(results1=[],j=0,len1=fragments.length;j<len1;j++)fragment=fragments[j],results1.push(fragment.code);return results1}().join("")},exports.Base=Base=function(){var Base=function(){function Base(){_classCallCheck(this,Base)}return _createClass(Base,[{key:"compile",value:function(o,lvl){return fragmentsToText(this.compileToFragments(o,lvl))}},{key:"compileWithoutComments",value:function compileWithoutComments(o,lvl){var method=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"compile",fragments,unwrapped;return this.comments&&(this.ignoreTheseCommentsTemporarily=this.comments,delete this.comments),unwrapped=this.unwrapAll(),unwrapped.comments&&(unwrapped.ignoreTheseCommentsTemporarily=unwrapped.comments,delete unwrapped.comments),fragments=this[method](o,lvl),this.ignoreTheseCommentsTemporarily&&(this.comments=this.ignoreTheseCommentsTemporarily,delete this.ignoreTheseCommentsTemporarily),unwrapped.ignoreTheseCommentsTemporarily&&(unwrapped.comments=unwrapped.ignoreTheseCommentsTemporarily,delete unwrapped.ignoreTheseCommentsTemporarily),fragments}},{key:"compileNodeWithoutComments",value:function compileNodeWithoutComments(o,lvl){return this.compileWithoutComments(o,lvl,"compileNode")}},{key:"compileToFragments",value:function compileToFragments(o,lvl){var fragments,node;return o=extend({},o),lvl&&(o.level=lvl),node=this.unfoldSoak(o)||this,node.tab=o.indent,fragments=o.level!==LEVEL_TOP&&node.isStatement(o)?node.compileClosure(o):node.compileNode(o),this.compileCommentFragments(o,node,fragments),fragments}},{key:"compileToFragmentsWithoutComments",value:function compileToFragmentsWithoutComments(o,lvl){return this.compileWithoutComments(o,lvl,"compileToFragments")}},{key:"compileClosure",value:function compileClosure(o){var args,argumentsNode,func,meth,parts,ref1,ref2;switch(this.checkForPureStatementInExpression(),o.sharedScope=!0,func=new Code([],Block.wrap([this])),args=[],this.contains(function(node){return node instanceof SuperCall})?func.bound=!0:((argumentsNode=this.contains(isLiteralArguments))||this.contains(isLiteralThis))&&(args=[new ThisLiteral],argumentsNode?(meth="apply",args.push(new IdentifierLiteral("arguments"))):meth="call",func=new Value(func,[new Access(new PropertyName(meth))])),parts=new Call(func,args).compileNode(o),!1){case!(func.isGenerator||(null==(ref1=func.base)?void 0:ref1.isGenerator)):parts.unshift(this.makeCode("(yield* ")),parts.push(this.makeCode(")"));break;case!(func.isAsync||(null==(ref2=func.base)?void 0:ref2.isAsync)):parts.unshift(this.makeCode("(await ")),parts.push(this.makeCode(")"));}return parts}},{key:"compileCommentFragments",value:function compileCommentFragments(o,node,fragments){var base1,base2,comment,commentFragment,j,len1,ref1,unshiftCommentFragment;if(!node.comments)return fragments;for(unshiftCommentFragment=function(commentFragment){var precedingFragment;return commentFragment.unshift?unshiftAfterComments(fragments,commentFragment):(0!==fragments.length&&(precedingFragment=fragments[fragments.length-1],commentFragment.newLine&&""!==precedingFragment.code&&!/\n\s*$/.test(precedingFragment.code)&&(commentFragment.code="\n".concat(commentFragment.code))),fragments.push(commentFragment))},ref1=node.comments,(j=0,len1=ref1.length);j<len1;j++)(comment=ref1[j],!!(0>indexOf.call(this.compiledComments,comment)))&&(this.compiledComments.push(comment),commentFragment=comment.here?new HereComment(comment).compileNode(o):new LineComment(comment).compileNode(o),commentFragment.isHereComment&&!commentFragment.newLine||node.includeCommentFragments()?unshiftCommentFragment(commentFragment):(0===fragments.length&&fragments.push(this.makeCode("")),commentFragment.unshift?(null==(base1=fragments[0]).precedingComments&&(base1.precedingComments=[]),fragments[0].precedingComments.push(commentFragment)):(null==(base2=fragments[fragments.length-1]).followingComments&&(base2.followingComments=[]),fragments[fragments.length-1].followingComments.push(commentFragment))));return fragments}},{key:"cache",value:function cache(o,level,shouldCache){var complex,ref,sub;return complex=null==shouldCache?this.shouldCache():shouldCache(this),complex?(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),sub=new Assign(ref,this),level?[sub.compileToFragments(o,level),[this.makeCode(ref.value)]]:[sub,ref]):(ref=level?this.compileToFragments(o,level):this,[ref,ref])}},{key:"hoist",value:function hoist(){var compileNode,compileToFragments,target;return this.hoisted=!0,target=new HoistTarget(this),compileNode=this.compileNode,compileToFragments=this.compileToFragments,this.compileNode=function(o){return target.update(compileNode,o)},this.compileToFragments=function(o){return target.update(compileToFragments,o)},target}},{key:"cacheToCodeFragments",value:function cacheToCodeFragments(cacheValues){return[fragmentsToText(cacheValues[0]),fragmentsToText(cacheValues[1])]}},{key:"makeReturn",value:function makeReturn(results,mark){var node;return mark?void(this.canBeReturned=!0):(node=this.unwrapAll(),results?new Call(new Literal("".concat(results,".push")),[node]):new Return(node))}},{key:"contains",value:function contains(pred){var node;return node=void 0,this.traverseChildren(!1,function(n){if(pred(n))return node=n,!1}),node}},{key:"lastNode",value:function lastNode(list){return 0===list.length?null:list[list.length-1]}},{key:"toString",value:function toString(){var idt=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",name=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this.constructor.name,tree;return tree="\n"+idt+name,this.soak&&(tree+="?"),this.eachChild(function(node){return tree+=node.toString(idt+TAB)}),tree}},{key:"checkForPureStatementInExpression",value:function checkForPureStatementInExpression(){var jumpNode;if(jumpNode=this.jumps())return jumpNode.error("cannot use a pure statement in an expression")}},{key:"ast",value:function ast(o,level){var astNode;return o=this.astInitialize(o,level),astNode=this.astNode(o),null!=this.astNode&&this.canBeReturned&&Object.assign(astNode,{returns:!0}),astNode}},{key:"astInitialize",value:function astInitialize(o,level){return o=Object.assign({},o),null!=level&&(o.level=level),o.level>LEVEL_TOP&&this.checkForPureStatementInExpression(),this.isStatement(o)&&o.level!==LEVEL_TOP&&null!=o.scope&&this.makeReturn(null,!0),o}},{key:"astNode",value:function astNode(o){return Object.assign({},{type:this.astType(o)},this.astProperties(o),this.astLocationData())}},{key:"astProperties",value:function astProperties(){return{}}},{key:"astType",value:function astType(){return this.constructor.name}},{key:"astLocationData",value:function astLocationData(){return jisonLocationDataToAstLocationData(this.locationData)}},{key:"isStatementAst",value:function isStatementAst(o){return this.isStatement(o)}},{key:"eachChild",value:function eachChild(func){var attr,child,j,k,len1,len2,ref1,ref2;if(!this.children)return this;for(ref1=this.children,j=0,len1=ref1.length;j<len1;j++)if(attr=ref1[j],this[attr])for(ref2=flatten([this[attr]]),k=0,len2=ref2.length;k<len2;k++)if(child=ref2[k],!1===func(child))return this;return this}},{key:"traverseChildren",value:function traverseChildren(crossScope,func){return this.eachChild(function(child){var recur;if(recur=func(child),!1!==recur)return child.traverseChildren(crossScope,func)})}},{key:"replaceInContext",value:function replaceInContext(match,replacement){var attr,child,children,i,j,k,len1,len2,ref1,ref2;if(!this.children)return!1;for(ref1=this.children,j=0,len1=ref1.length;j<len1;j++)if(attr=ref1[j],children=this[attr])if(Array.isArray(children))for(i=k=0,len2=children.length;k<len2;i=++k){if(child=children[i],match(child))return splice.apply(children,[i,i-i+1].concat(ref2=replacement(child,this))),ref2,!0;if(child.replaceInContext(match,replacement))return!0}else{if(match(children))return this[attr]=replacement(children,this),!0;if(children.replaceInContext(match,replacement))return!0}}},{key:"invert",value:function invert(){return new Op("!",this)}},{key:"unwrapAll",value:function unwrapAll(){var node;for(node=this;node!==(node=node.unwrap());)continue;return node}},{key:"updateLocationDataIfMissing",value:function updateLocationDataIfMissing(locationData,force){return(force&&(this.forceUpdateLocation=!0),this.locationData&&!this.forceUpdateLocation)?this:(delete this.forceUpdateLocation,this.locationData=locationData,this.eachChild(function(child){return child.updateLocationDataIfMissing(locationData)}))}},{key:"withLocationDataFrom",value:function withLocationDataFrom(_ref19){var locationData=_ref19.locationData;return this.updateLocationDataIfMissing(locationData)}},{key:"withLocationDataAndCommentsFrom",value:function withLocationDataAndCommentsFrom(node){var comments;return this.withLocationDataFrom(node),comments=node.comments,(null==comments?void 0:comments.length)&&(this.comments=comments),this}},{key:"error",value:function error(message){return throwSyntaxError(message,this.locationData)}},{key:"makeCode",value:function makeCode(code){return new CodeFragment(this,code)}},{key:"wrapInParentheses",value:function wrapInParentheses(fragments){return[this.makeCode("(")].concat(_toConsumableArray(fragments),[this.makeCode(")")])}},{key:"wrapInBraces",value:function wrapInBraces(fragments){return[this.makeCode("{")].concat(_toConsumableArray(fragments),[this.makeCode("}")])}},{key:"joinFragmentArrays",value:function joinFragmentArrays(fragmentsList,joinStr){var answer,fragments,i,j,len1;for(answer=[],i=j=0,len1=fragmentsList.length;j<len1;i=++j)fragments=fragmentsList[i],i&&answer.push(this.makeCode(joinStr)),answer=answer.concat(fragments);return answer}}]),Base}();return Base.prototype.children=[],Base.prototype.isStatement=NO,Base.prototype.compiledComments=[],Base.prototype.includeCommentFragments=NO,Base.prototype.jumps=NO,Base.prototype.shouldCache=YES,Base.prototype.isChainable=NO,Base.prototype.isAssignable=NO,Base.prototype.isNumber=NO,Base.prototype.unwrap=THIS,Base.prototype.unfoldSoak=NO,Base.prototype.assigns=NO,Base}.call(this),exports.HoistTarget=HoistTarget=function(_Base){function HoistTarget(source1){var _this8;return _classCallCheck(this,HoistTarget),_this8=_super.call(this),_this8.source=source1,_this8.options={},_this8.targetFragments={fragments:[]},_this8}_inherits(HoistTarget,_Base);var _super=_createSuper(HoistTarget);return _createClass(HoistTarget,[{key:"isStatement",value:function isStatement(o){return this.source.isStatement(o)}},{key:"update",value:function update(compile,o){return this.targetFragments.fragments=compile.call(this.source,merge(o,this.options))}},{key:"compileToFragments",value:function compileToFragments(o,level){return this.options.indent=o.indent,this.options.level=null==level?o.level:level,[this.targetFragments]}},{key:"compileNode",value:function compileNode(o){return this.compileToFragments(o)}},{key:"compileClosure",value:function compileClosure(o){return this.compileToFragments(o)}}],[{key:"expand",value:function expand(fragments){var fragment,i,j,ref1;for(i=j=fragments.length-1;0<=j;i=j+=-1)fragment=fragments[i],fragment.fragments&&(splice.apply(fragments,[i,i-i+1].concat(ref1=this.expand(fragment.fragments))),ref1);return fragments}}]),HoistTarget}(Base),exports.Root=Root=function(){var Root=function(_Base2){function Root(body1){var _this9;return _classCallCheck(this,Root),_this9=_super2.call(this),_this9.body=body1,_this9.isAsync=new Code([],_this9.body).isAsync,_this9}_inherits(Root,_Base2);var _super2=_createSuper(Root);return _createClass(Root,[{key:"compileNode",value:function compileNode(o){var fragments,functionKeyword;return(o.indent=o.bare?"":TAB,o.level=LEVEL_TOP,o.compiling=!0,this.initializeScope(o),fragments=this.body.compileRoot(o),o.bare)?fragments:(functionKeyword="".concat(this.isAsync?"async ":"","function"),[].concat(this.makeCode("(".concat(functionKeyword,"() {\n")),fragments,this.makeCode("\n}).call(this);\n")))}},{key:"initializeScope",value:function initializeScope(o){var j,len1,name,ref1,ref2,results1;for(o.scope=new Scope(null,this.body,null,null==(ref1=o.referencedVars)?[]:ref1),ref2=o.locals||[],results1=[],(j=0,len1=ref2.length);j<len1;j++)name=ref2[j],results1.push(o.scope.parameter(name));return results1}},{key:"commentsAst",value:function commentsAst(){var comment,commentToken,j,len1,ref1,results1;for(null==this.allComments&&(this.allComments=function(){var j,len1,ref1,ref2,results1;for(ref2=null==(ref1=this.allCommentTokens)?[]:ref1,results1=[],(j=0,len1=ref2.length);j<len1;j++)commentToken=ref2[j],commentToken.heregex||(commentToken.here?results1.push(new HereComment(commentToken)):results1.push(new LineComment(commentToken)));return results1}.call(this)),ref1=this.allComments,results1=[],(j=0,len1=ref1.length);j<len1;j++)comment=ref1[j],results1.push(comment.ast());return results1}},{key:"astNode",value:function astNode(o){return o.level=LEVEL_TOP,this.initializeScope(o),_get(_getPrototypeOf(Root.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"File"}},{key:"astProperties",value:function astProperties(o){return this.body.isRootBlock=!0,{program:Object.assign(this.body.ast(o),this.astLocationData()),comments:this.commentsAst()}}}]),Root}(Base);return Root.prototype.children=["body"],Root}.call(this),exports.Block=Block=function(){var Block=function(_Base3){function Block(nodes){var _this10;return _classCallCheck(this,Block),_this10=_super3.call(this),_this10.expressions=compact(flatten(nodes||[])),_this10}_inherits(Block,_Base3);var _super3=_createSuper(Block);return _createClass(Block,[{key:"push",value:function push(node){return this.expressions.push(node),this}},{key:"pop",value:function pop(){return this.expressions.pop()}},{key:"unshift",value:function unshift(node){return this.expressions.unshift(node),this}},{key:"unwrap",value:function unwrap(){return 1===this.expressions.length?this.expressions[0]:this}},{key:"isEmpty",value:function isEmpty(){return!this.expressions.length}},{key:"isStatement",value:function isStatement(o){var exp,j,len1,ref1;for(ref1=this.expressions,j=0,len1=ref1.length;j<len1;j++)if(exp=ref1[j],exp.isStatement(o))return!0;return!1}},{key:"jumps",value:function jumps(o){var exp,j,jumpNode,len1,ref1;for(ref1=this.expressions,j=0,len1=ref1.length;j<len1;j++)if(exp=ref1[j],jumpNode=exp.jumps(o))return jumpNode}},{key:"makeReturn",value:function makeReturn(results,mark){var _slice1$call,_slice1$call2,expr,expressions,last,lastExp,len,penult,ref1,ref2;if(len=this.expressions.length,ref1=this.expressions,_slice1$call=slice1.call(ref1,-1),_slice1$call2=_slicedToArray(_slice1$call,1),lastExp=_slice1$call2[0],_slice1$call,lastExp=(null==lastExp?void 0:lastExp.unwrap())||!1,lastExp&&lastExp instanceof Parens&&1<lastExp.body.expressions.length){var _lastExp=lastExp;expressions=_lastExp.body.expressions;var _slice1$call3=slice1.call(expressions,-2),_slice1$call4=_slicedToArray(_slice1$call3,2);penult=_slice1$call4[0],last=_slice1$call4[1],penult=penult.unwrap(),last=last.unwrap(),penult instanceof JSXElement&&last instanceof JSXElement&&expressions[expressions.length-1].error("Adjacent JSX elements must be wrapped in an enclosing tag")}if(mark)return void(null!=(ref2=this.expressions[len-1])&&ref2.makeReturn(results,mark));for(;len--;){expr=this.expressions[len],this.expressions[len]=expr.makeReturn(results),expr instanceof Return&&!expr.expression&&this.expressions.splice(len,1);break}return this}},{key:"compile",value:function(o,lvl){return o.scope?_get(_getPrototypeOf(Block.prototype),"compile",this).call(this,o,lvl):new Root(this).withLocationDataFrom(this).compile(o,lvl)}},{key:"compileNode",value:function compileNode(o){var answer,compiledNodes,fragments,index,j,lastFragment,len1,node,ref1,top;for(this.tab=o.indent,top=o.level===LEVEL_TOP,compiledNodes=[],ref1=this.expressions,(index=j=0,len1=ref1.length);j<len1;index=++j){if(node=ref1[index],node.hoisted){node.compileToFragments(o);continue}if(node=node.unfoldSoak(o)||node,node instanceof Block)compiledNodes.push(node.compileNode(o));else if(top){if(node.front=!0,fragments=node.compileToFragments(o),!node.isStatement(o)){fragments=indentInitial(fragments,this);var _slice1$call5=slice1.call(fragments,-1),_slice1$call6=_slicedToArray(_slice1$call5,1);lastFragment=_slice1$call6[0],""===lastFragment.code||lastFragment.isComment||fragments.push(this.makeCode(";"))}compiledNodes.push(fragments)}else compiledNodes.push(node.compileToFragments(o,LEVEL_LIST))}return top?this.spaced?[].concat(this.joinFragmentArrays(compiledNodes,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(compiledNodes,"\n"):(answer=compiledNodes.length?this.joinFragmentArrays(compiledNodes,", "):[this.makeCode("void 0")],1<compiledNodes.length&&o.level>=LEVEL_LIST?this.wrapInParentheses(answer):answer)}},{key:"compileRoot",value:function compileRoot(o){var fragments;return this.spaced=!0,fragments=this.compileWithDeclarations(o),HoistTarget.expand(fragments),this.compileComments(fragments)}},{key:"compileWithDeclarations",value:function compileWithDeclarations(o){var assigns,declaredVariable,declaredVariables,declaredVariablesIndex,declars,exp,fragments,i,j,k,len1,len2,post,ref1,rest,scope,spaced;for(fragments=[],post=[],ref1=this.expressions,(i=j=0,len1=ref1.length);j<len1&&(exp=ref1[i],exp=exp.unwrap(),!!(exp instanceof Literal));i=++j);if(o=merge(o,{level:LEVEL_TOP}),i){rest=this.expressions.splice(i,9e9);var _ref20=[this.spaced,!1];spaced=_ref20[0],this.spaced=_ref20[1];var _ref21=[this.compileNode(o),spaced];fragments=_ref21[0],this.spaced=_ref21[1],this.expressions=rest}post=this.compileNode(o);var _o2=o;if(scope=_o2.scope,scope.expressions===this)if(declars=o.scope.hasDeclarations(),assigns=scope.hasAssignments,declars||assigns){if(i&&fragments.push(this.makeCode("\n")),fragments.push(this.makeCode("".concat(this.tab,"var "))),declars)for(declaredVariables=scope.declaredVariables(),declaredVariablesIndex=k=0,len2=declaredVariables.length;k<len2;declaredVariablesIndex=++k){if(declaredVariable=declaredVariables[declaredVariablesIndex],fragments.push(this.makeCode(declaredVariable)),Object.prototype.hasOwnProperty.call(o.scope.comments,declaredVariable)){var _fragments;(_fragments=fragments).push.apply(_fragments,_toConsumableArray(o.scope.comments[declaredVariable]))}declaredVariablesIndex!==declaredVariables.length-1&&fragments.push(this.makeCode(", "))}assigns&&(declars&&fragments.push(this.makeCode(",\n".concat(this.tab+TAB))),fragments.push(this.makeCode(scope.assignedVariables().join(",\n".concat(this.tab+TAB))))),fragments.push(this.makeCode(";\n".concat(this.spaced?"\n":"")))}else fragments.length&&post.length&&fragments.push(this.makeCode("\n"));return fragments.concat(post)}},{key:"compileComments",value:function compileComments(fragments){var code,commentFragment,fragment,fragmentIndent,fragmentIndex,indent,j,k,l,len1,len2,len3,newLineIndex,onNextLine,p,pastFragment,pastFragmentIndex,q,ref1,ref2,ref3,ref4,trail,upcomingFragment,upcomingFragmentIndex;for(fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j){if(fragment=fragments[fragmentIndex],fragment.precedingComments){for(fragmentIndent="",ref1=fragments.slice(0,fragmentIndex+1),k=ref1.length-1;0<=k;k+=-1)if(pastFragment=ref1[k],indent=/^ {2,}/m.exec(pastFragment.code),indent){fragmentIndent=indent[0];break}else if(0<=indexOf.call(pastFragment.code,"\n"))break;for(code="\n".concat(fragmentIndent)+function(){var l,len2,ref2,results1;for(ref2=fragment.precedingComments,results1=[],(l=0,len2=ref2.length);l<len2;l++)commentFragment=ref2[l],commentFragment.isHereComment&&commentFragment.multiline?results1.push(multident(commentFragment.code,fragmentIndent,!1)):results1.push(commentFragment.code);return results1}().join("\n".concat(fragmentIndent)).replace(/^(\s*)$/gm,""),ref2=fragments.slice(0,fragmentIndex+1),pastFragmentIndex=l=ref2.length-1;0<=l;pastFragmentIndex=l+=-1){if(pastFragment=ref2[pastFragmentIndex],newLineIndex=pastFragment.code.lastIndexOf("\n"),-1===newLineIndex)if(0===pastFragmentIndex)pastFragment.code="\n"+pastFragment.code,newLineIndex=0;else if(pastFragment.isStringWithInterpolations&&"{"===pastFragment.code)code=code.slice(1)+"\n",newLineIndex=1;else continue;delete fragment.precedingComments,pastFragment.code=pastFragment.code.slice(0,newLineIndex)+code+pastFragment.code.slice(newLineIndex);break}}if(fragment.followingComments){if(trail=fragment.followingComments[0].trail,fragmentIndent="",!(trail&&1===fragment.followingComments.length))for(onNextLine=!1,ref3=fragments.slice(fragmentIndex),(p=0,len2=ref3.length);p<len2;p++)if(upcomingFragment=ref3[p],!onNextLine){if(0<=indexOf.call(upcomingFragment.code,"\n"))onNextLine=!0;else continue;}else if(indent=/^ {2,}/m.exec(upcomingFragment.code),indent){fragmentIndent=indent[0];break}else if(0<=indexOf.call(upcomingFragment.code,"\n"))break;for(code=1===fragmentIndex&&/^\s+$/.test(fragments[0].code)?"":trail?" ":"\n".concat(fragmentIndent),code+=function(){var len3,q,ref4,results1;for(ref4=fragment.followingComments,results1=[],(q=0,len3=ref4.length);q<len3;q++)commentFragment=ref4[q],commentFragment.isHereComment&&commentFragment.multiline?results1.push(multident(commentFragment.code,fragmentIndent,!1)):results1.push(commentFragment.code);return results1}().join("\n".concat(fragmentIndent)).replace(/^(\s*)$/gm,""),ref4=fragments.slice(fragmentIndex),(upcomingFragmentIndex=q=0,len3=ref4.length);q<len3;upcomingFragmentIndex=++q){if(upcomingFragment=ref4[upcomingFragmentIndex],newLineIndex=upcomingFragment.code.indexOf("\n"),-1===newLineIndex)if(upcomingFragmentIndex===fragments.length-1)upcomingFragment.code+="\n",newLineIndex=upcomingFragment.code.length;else if(upcomingFragment.isStringWithInterpolations&&"}"===upcomingFragment.code)code="".concat(code,"\n"),newLineIndex=0;else continue;delete fragment.followingComments,"\n"===upcomingFragment.code&&(code=code.replace(/^\n/,"")),upcomingFragment.code=upcomingFragment.code.slice(0,newLineIndex)+code+upcomingFragment.code.slice(newLineIndex);break}}}return fragments}},{key:"astNode",value:function astNode(o){return null!=o.level&&o.level!==LEVEL_TOP&&this.expressions.length?new Sequence(this.expressions).withLocationDataFrom(this).ast(o):_get(_getPrototypeOf(Block.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isRootBlock?"Program":this.isClassBody?"ClassBody":"BlockStatement"}},{key:"astProperties",value:function astProperties(o){var body,checkForDirectives,directives,expression,expressionAst,j,len1,ref1;for(checkForDirectives=del(o,"checkForDirectives"),(this.isRootBlock||checkForDirectives)&&sniffDirectives(this.expressions,{notFinalExpression:checkForDirectives}),directives=[],body=[],ref1=this.expressions,(j=0,len1=ref1.length);j<len1;j++)if(expression=ref1[j],expressionAst=expression.ast(o),null==expressionAst)continue;else expression instanceof Directive?directives.push(expressionAst):expression.isStatementAst(o)?body.push(expressionAst):body.push(Object.assign({type:"ExpressionStatement",expression:expressionAst},expression.astLocationData()));return{body:body,directives:directives}}},{key:"astLocationData",value:function astLocationData(){return this.isRootBlock&&null==this.locationData?void 0:_get(_getPrototypeOf(Block.prototype),"astLocationData",this).call(this)}}],[{key:"wrap",value:function wrap(nodes){return 1===nodes.length&&nodes[0]instanceof Block?nodes[0]:new Block(nodes)}}]),Block}(Base);return Block.prototype.children=["expressions"],Block}.call(this),exports.Directive=Directive=function(_Base4){function Directive(value1){var _this11;return _classCallCheck(this,Directive),_this11=_super4.call(this),_this11.value=value1,_this11}_inherits(Directive,_Base4);var _super4=_createSuper(Directive);return _createClass(Directive,[{key:"astProperties",value:function astProperties(o){return{value:Object.assign({},this.value.ast(o),{type:"DirectiveLiteral"})}}}]),Directive}(Base),exports.Literal=Literal=function(){var Literal=function(_Base5){function Literal(value1){var _this12;return _classCallCheck(this,Literal),_this12=_super5.call(this),_this12.value=value1,_this12}_inherits(Literal,_Base5);var _super5=_createSuper(Literal);return _createClass(Literal,[{key:"assigns",value:function assigns(name){return name===this.value}},{key:"compileNode",value:function compileNode(){return[this.makeCode(this.value)]}},{key:"astProperties",value:function astProperties(){return{value:this.value}}},{key:"toString",value:function toString(){return" ".concat(this.isStatement()?_get(_getPrototypeOf(Literal.prototype),"toString",this).call(this):this.constructor.name,": ").concat(this.value)}}]),Literal}(Base);return Literal.prototype.shouldCache=NO,Literal}.call(this),exports.NumberLiteral=NumberLiteral=function(_Literal){function NumberLiteral(value1){var _ref22=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},parsedValue=_ref22.parsedValue,_this13;return _classCallCheck(this,NumberLiteral),_this13=_super6.call(this),_this13.value=value1,_this13.parsedValue=parsedValue,null==_this13.parsedValue&&(isNumber(_this13.value)?(_this13.parsedValue=_this13.value,_this13.value="".concat(_this13.value)):_this13.parsedValue=parseNumber(_this13.value)),_this13}_inherits(NumberLiteral,_Literal);var _super6=_createSuper(NumberLiteral);return _createClass(NumberLiteral,[{key:"isBigInt",value:function isBigInt(){return /n$/.test(this.value)}},{key:"astType",value:function astType(){return this.isBigInt()?"BigIntLiteral":"NumericLiteral"}},{key:"astProperties",value:function astProperties(){return{value:this.isBigInt()?this.parsedValue.toString():this.parsedValue,extra:{rawValue:this.isBigInt()?this.parsedValue.toString():this.parsedValue,raw:this.value}}}}]),NumberLiteral}(Literal),exports.InfinityLiteral=InfinityLiteral=function(_NumberLiteral){function InfinityLiteral(value1){var _ref23=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref23$originalValue=_ref23.originalValue,originalValue=void 0===_ref23$originalValue?"Infinity":_ref23$originalValue,_this14;return _classCallCheck(this,InfinityLiteral),_this14=_super7.call(this),_this14.value=value1,_this14.originalValue=originalValue,_this14}_inherits(InfinityLiteral,_NumberLiteral);var _super7=_createSuper(InfinityLiteral);return _createClass(InfinityLiteral,[{key:"compileNode",value:function compileNode(){return[this.makeCode("2e308")]}},{key:"astNode",value:function astNode(o){return"Infinity"===this.originalValue?_get(_getPrototypeOf(InfinityLiteral.prototype),"astNode",this).call(this,o):new NumberLiteral(this.value).withLocationDataFrom(this).ast(o)}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"Infinity",declaration:!1}}}]),InfinityLiteral}(NumberLiteral),exports.NaNLiteral=NaNLiteral=function(_NumberLiteral2){function NaNLiteral(){return _classCallCheck(this,NaNLiteral),_super8.call(this,"NaN")}_inherits(NaNLiteral,_NumberLiteral2);var _super8=_createSuper(NaNLiteral);return _createClass(NaNLiteral,[{key:"compileNode",value:function compileNode(o){var code;return code=[this.makeCode("0/0")],o.level>=LEVEL_OP?this.wrapInParentheses(code):code}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"NaN",declaration:!1}}}]),NaNLiteral}(NumberLiteral),exports.StringLiteral=StringLiteral=function(_Literal2){function StringLiteral(originalValue){var _ref24=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},quote=_ref24.quote,initialChunk=_ref24.initialChunk,finalChunk=_ref24.finalChunk,indent1=_ref24.indent,double1=_ref24.double,heregex1=_ref24.heregex,_this15;_classCallCheck(this,StringLiteral);var heredoc,indentRegex,val;return _this15=_super9.call(this,""),_this15.originalValue=originalValue,_this15.quote=quote,_this15.initialChunk=initialChunk,_this15.finalChunk=finalChunk,_this15.indent=indent1,_this15.double=double1,_this15.heregex=heregex1,"///"===_this15.quote&&(_this15.quote=null),_this15.fromSourceString=null!=_this15.quote,null==_this15.quote&&(_this15.quote="\""),heredoc=_this15.isFromHeredoc(),val=_this15.originalValue,_this15.heregex?(val=val.replace(HEREGEX_OMIT,"$1$2"),val=replaceUnicodeCodePointEscapes(val,{flags:_this15.heregex.flags})):(val=val.replace(STRING_OMIT,"$1"),val=_this15.fromSourceString?heredoc?(_this15.indent?indentRegex=RegExp("\\n".concat(_this15.indent),"g"):void 0,indentRegex?val=val.replace(indentRegex,"\n"):void 0,_this15.initialChunk?val=val.replace(LEADING_BLANK_LINE,""):void 0,_this15.finalChunk?val=val.replace(TRAILING_BLANK_LINE,""):void 0,val):val.replace(SIMPLE_STRING_OMIT,function(match,offset){return _this15.initialChunk&&0===offset||_this15.finalChunk&&offset+match.length===val.length?"":" "}):val),_this15.delimiter=_this15.quote.charAt(0),_this15.value=makeDelimitedLiteral(val,{delimiter:_this15.delimiter,double:_this15.double}),_this15.unquotedValueForTemplateLiteral=makeDelimitedLiteral(val,{delimiter:"`",double:_this15.double,escapeNewlines:!1,includeDelimiters:!1,convertTrailingNullEscapes:!0}),_this15.unquotedValueForJSX=makeDelimitedLiteral(val,{double:_this15.double,escapeNewlines:!1,includeDelimiters:!1,escapeDelimiter:!1}),_this15}_inherits(StringLiteral,_Literal2);var _super9=_createSuper(StringLiteral);return _createClass(StringLiteral,[{key:"compileNode",value:function compileNode(o){return this.shouldGenerateTemplateLiteral()?StringWithInterpolations.fromStringLiteral(this).compileNode(o):this.jsx?[this.makeCode(this.unquotedValueForJSX)]:_get(_getPrototypeOf(StringLiteral.prototype),"compileNode",this).call(this,o)}},{key:"withoutQuotesInLocationData",value:function withoutQuotesInLocationData(){var copy,endsWithNewline,locationData;return endsWithNewline="\n"===this.originalValue.slice(-1),locationData=Object.assign({},this.locationData),locationData.first_column+=this.quote.length,endsWithNewline?(locationData.last_line-=1,locationData.last_column=locationData.last_line===locationData.first_line?locationData.first_column+this.originalValue.length-"\n".length:this.originalValue.slice(0,-1).length-"\n".length-this.originalValue.slice(0,-1).lastIndexOf("\n")):locationData.last_column-=this.quote.length,locationData.last_column_exclusive-=this.quote.length,locationData.range=[locationData.range[0]+this.quote.length,locationData.range[1]-this.quote.length],copy=new StringLiteral(this.originalValue,{quote:this.quote,initialChunk:this.initialChunk,finalChunk:this.finalChunk,indent:this.indent,double:this.double,heregex:this.heregex}),copy.locationData=locationData,copy}},{key:"isFromHeredoc",value:function isFromHeredoc(){return 3===this.quote.length}},{key:"shouldGenerateTemplateLiteral",value:function shouldGenerateTemplateLiteral(){return this.isFromHeredoc()}},{key:"astNode",value:function astNode(o){return this.shouldGenerateTemplateLiteral()?StringWithInterpolations.fromStringLiteral(this).ast(o):_get(_getPrototypeOf(StringLiteral.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(){return{value:this.originalValue,extra:{raw:"".concat(this.delimiter).concat(this.originalValue).concat(this.delimiter)}}}}]),StringLiteral}(Literal),exports.RegexLiteral=RegexLiteral=function(){var RegexLiteral=function(_Literal3){function RegexLiteral(value){var _ref25=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref25$delimiter=_ref25.delimiter,delimiter1=void 0===_ref25$delimiter?"/":_ref25$delimiter,_ref25$heregexComment=_ref25.heregexCommentTokens,heregexCommentTokens=void 0===_ref25$heregexComment?[]:_ref25$heregexComment,_this16;_classCallCheck(this,RegexLiteral);var endDelimiterIndex,heregex,val;return _this16=_super10.call(this,""),_this16.delimiter=delimiter1,_this16.heregexCommentTokens=heregexCommentTokens,heregex="///"===_this16.delimiter,endDelimiterIndex=value.lastIndexOf("/"),_this16.flags=value.slice(endDelimiterIndex+1),val=_this16.originalValue=value.slice(1,endDelimiterIndex),heregex&&(val=val.replace(HEREGEX_OMIT,"$1$2")),val=replaceUnicodeCodePointEscapes(val,{flags:_this16.flags}),_this16.value="".concat(makeDelimitedLiteral(val,{delimiter:"/"})).concat(_this16.flags),_this16}_inherits(RegexLiteral,_Literal3);var _super10=_createSuper(RegexLiteral);return _createClass(RegexLiteral,[{key:"astType",value:function astType(){return"RegExpLiteral"}},{key:"astProperties",value:function astProperties(o){var _this$REGEX_REGEX$exe=this.REGEX_REGEX.exec(this.value),_this$REGEX_REGEX$exe2=_slicedToArray(_this$REGEX_REGEX$exe,2),heregexCommentToken,pattern;return pattern=_this$REGEX_REGEX$exe2[1],{value:void 0,pattern:pattern,flags:this.flags,delimiter:this.delimiter,originalPattern:this.originalValue,extra:{raw:this.value,originalRaw:"".concat(this.delimiter).concat(this.originalValue).concat(this.delimiter).concat(this.flags),rawValue:void 0},comments:function(){var j,len1,ref1,results1;for(ref1=this.heregexCommentTokens,results1=[],(j=0,len1=ref1.length);j<len1;j++)heregexCommentToken=ref1[j],heregexCommentToken.here?results1.push(new HereComment(heregexCommentToken).ast(o)):results1.push(new LineComment(heregexCommentToken).ast(o));return results1}.call(this)}}}]),RegexLiteral}(Literal);return RegexLiteral.prototype.REGEX_REGEX=/^\/(.*)\/\w*$/,RegexLiteral}.call(this),exports.PassthroughLiteral=PassthroughLiteral=function(_Literal4){function PassthroughLiteral(originalValue){var _ref26=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},here=_ref26.here,generated=_ref26.generated,_this17;return _classCallCheck(this,PassthroughLiteral),_this17=_super11.call(this,""),_this17.originalValue=originalValue,_this17.here=here,_this17.generated=generated,_this17.value=_this17.originalValue.replace(/\\+(`|$)/g,function(string){var _Mathceil=Math.ceil;return string.slice(-_Mathceil(string.length/2))}),_this17}_inherits(PassthroughLiteral,_Literal4);var _super11=_createSuper(PassthroughLiteral);return _createClass(PassthroughLiteral,[{key:"astNode",value:function astNode(o){return this.generated?null:_get(_getPrototypeOf(PassthroughLiteral.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(){return{value:this.originalValue,here:!!this.here}}}]),PassthroughLiteral}(Literal),exports.IdentifierLiteral=IdentifierLiteral=function(){var IdentifierLiteral=function(_Literal5){function IdentifierLiteral(){return _classCallCheck(this,IdentifierLiteral),_super12.apply(this,arguments)}_inherits(IdentifierLiteral,_Literal5);var _super12=_createSuper(IdentifierLiteral);return _createClass(IdentifierLiteral,[{key:"eachName",value:function eachName(iterator){return iterator(this)}},{key:"astType",value:function astType(){return this.jsx?"JSXIdentifier":"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!!this.isDeclaration}}}]),IdentifierLiteral}(Literal);return IdentifierLiteral.prototype.isAssignable=YES,IdentifierLiteral}.call(this),exports.PropertyName=PropertyName=function(){var PropertyName=function(_Literal6){function PropertyName(){return _classCallCheck(this,PropertyName),_super13.apply(this,arguments)}_inherits(PropertyName,_Literal6);var _super13=_createSuper(PropertyName);return _createClass(PropertyName,[{key:"astType",value:function astType(){return this.jsx?"JSXIdentifier":"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!1}}}]),PropertyName}(Literal);return PropertyName.prototype.isAssignable=YES,PropertyName}.call(this),exports.ComputedPropertyName=ComputedPropertyName=function(_PropertyName){function ComputedPropertyName(){return _classCallCheck(this,ComputedPropertyName),_super14.apply(this,arguments)}_inherits(ComputedPropertyName,_PropertyName);var _super14=_createSuper(ComputedPropertyName);return _createClass(ComputedPropertyName,[{key:"compileNode",value:function compileNode(o){return[this.makeCode("[")].concat(_toConsumableArray(this.value.compileToFragments(o,LEVEL_LIST)),[this.makeCode("]")])}},{key:"astNode",value:function astNode(o){return this.value.ast(o)}}]),ComputedPropertyName}(PropertyName),exports.StatementLiteral=StatementLiteral=function(){var StatementLiteral=function(_Literal7){function StatementLiteral(){return _classCallCheck(this,StatementLiteral),_super15.apply(this,arguments)}_inherits(StatementLiteral,_Literal7);var _super15=_createSuper(StatementLiteral);return _createClass(StatementLiteral,[{key:"jumps",value:function jumps(o){return"break"!==this.value||(null==o?void 0:o.loop)||(null==o?void 0:o.block)?"continue"!==this.value||null!=o&&o.loop?void 0:this:this}},{key:"compileNode",value:function compileNode(){return[this.makeCode("".concat(this.tab).concat(this.value,";"))]}},{key:"astType",value:function astType(){switch(this.value){case"continue":return"ContinueStatement";case"break":return"BreakStatement";case"debugger":return"DebuggerStatement";}}}]),StatementLiteral}(Literal);return StatementLiteral.prototype.isStatement=YES,StatementLiteral.prototype.makeReturn=THIS,StatementLiteral}.call(this),exports.ThisLiteral=ThisLiteral=function(_Literal8){function ThisLiteral(value){var _this18;return _classCallCheck(this,ThisLiteral),_this18=_super16.call(this,"this"),_this18.shorthand="@"===value,_this18}_inherits(ThisLiteral,_Literal8);var _super16=_createSuper(ThisLiteral);return _createClass(ThisLiteral,[{key:"compileNode",value:function compileNode(o){var code,ref1;return code=(null==(ref1=o.scope.method)?void 0:ref1.bound)?o.scope.method.context:this.value,[this.makeCode(code)]}},{key:"astType",value:function astType(){return"ThisExpression"}},{key:"astProperties",value:function astProperties(){return{shorthand:this.shorthand}}}]),ThisLiteral}(Literal),exports.UndefinedLiteral=UndefinedLiteral=function(_Literal9){function UndefinedLiteral(){return _classCallCheck(this,UndefinedLiteral),_super17.call(this,"undefined")}_inherits(UndefinedLiteral,_Literal9);var _super17=_createSuper(UndefinedLiteral);return _createClass(UndefinedLiteral,[{key:"compileNode",value:function compileNode(o){return[this.makeCode(o.level>=LEVEL_ACCESS?"(void 0)":"void 0")]}},{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:this.value,declaration:!1}}}]),UndefinedLiteral}(Literal),exports.NullLiteral=NullLiteral=function(_Literal10){function NullLiteral(){return _classCallCheck(this,NullLiteral),_super18.call(this,"null")}_inherits(NullLiteral,_Literal10);var _super18=_createSuper(NullLiteral);return _createClass(NullLiteral)}(Literal),exports.BooleanLiteral=BooleanLiteral=function(_Literal11){function BooleanLiteral(value){var _ref27=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},originalValue=_ref27.originalValue,_this19;return _classCallCheck(this,BooleanLiteral),_this19=_super19.call(this,value),_this19.originalValue=originalValue,null==_this19.originalValue&&(_this19.originalValue=_this19.value),_this19}_inherits(BooleanLiteral,_Literal11);var _super19=_createSuper(BooleanLiteral);return _createClass(BooleanLiteral,[{key:"astProperties",value:function astProperties(){return{value:"true"===this.value,name:this.originalValue}}}]),BooleanLiteral}(Literal),exports.DefaultLiteral=DefaultLiteral=function(_Literal12){function DefaultLiteral(){return _classCallCheck(this,DefaultLiteral),_super20.apply(this,arguments)}_inherits(DefaultLiteral,_Literal12);var _super20=_createSuper(DefaultLiteral);return _createClass(DefaultLiteral,[{key:"astType",value:function astType(){return"Identifier"}},{key:"astProperties",value:function astProperties(){return{name:"default",declaration:!1}}}]),DefaultLiteral}(Literal),exports.Return=Return=function(){var Return=function(_Base6){function Return(expression1){var _ref28=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},belongsToFuncDirectiveReturn=_ref28.belongsToFuncDirectiveReturn,_this20;return _classCallCheck(this,Return),_this20=_super21.call(this),_this20.expression=expression1,_this20.belongsToFuncDirectiveReturn=belongsToFuncDirectiveReturn,_this20}_inherits(Return,_Base6);var _super21=_createSuper(Return);return _createClass(Return,[{key:"compileToFragments",value:function compileToFragments(o,level){var expr,ref1;return expr=null==(ref1=this.expression)?void 0:ref1.makeReturn(),expr&&!(expr instanceof Return)?expr.compileToFragments(o,level):_get(_getPrototypeOf(Return.prototype),"compileToFragments",this).call(this,o,level)}},{key:"compileNode",value:function compileNode(o){var answer,fragment,j,len1;if(answer=[],this.expression){for(answer=this.expression.compileToFragments(o,LEVEL_PAREN),unshiftAfterComments(answer,this.makeCode("".concat(this.tab,"return "))),(j=0,len1=answer.length);j<len1;j++)if(fragment=answer[j],fragment.isHereComment&&0<=indexOf.call(fragment.code,"\n"))fragment.code=multident(fragment.code,this.tab);else if(fragment.isLineComment)fragment.code="".concat(this.tab).concat(fragment.code);else break;}else answer.push(this.makeCode("".concat(this.tab,"return")));return answer.push(this.makeCode(";")),answer}},{key:"checkForPureStatementInExpression",value:function checkForPureStatementInExpression(){return this.belongsToFuncDirectiveReturn?void 0:_get(_getPrototypeOf(Return.prototype),"checkForPureStatementInExpression",this).call(this)}},{key:"astType",value:function astType(){return"ReturnStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{argument:null==(ref1=null==(ref2=this.expression)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1}}}]),Return}(Base);return Return.prototype.children=["expression"],Return.prototype.isStatement=YES,Return.prototype.makeReturn=THIS,Return.prototype.jumps=THIS,Return}.call(this),exports.FuncDirectiveReturn=FuncDirectiveReturn=function(){var FuncDirectiveReturn=function(_Return){function FuncDirectiveReturn(expression,_ref29){var returnKeyword=_ref29.returnKeyword,_this21;return _classCallCheck(this,FuncDirectiveReturn),_this21=_super22.call(this,expression),_this21.returnKeyword=returnKeyword,_this21}_inherits(FuncDirectiveReturn,_Return);var _super22=_createSuper(FuncDirectiveReturn);return _createClass(FuncDirectiveReturn,[{key:"compileNode",value:function compileNode(o){return this.checkScope(o),_get(_getPrototypeOf(FuncDirectiveReturn.prototype),"compileNode",this).call(this,o)}},{key:"checkScope",value:function checkScope(o){if(null==o.scope.parent)return this.error("".concat(this.keyword," can only occur inside functions"))}},{key:"astNode",value:function astNode(o){return this.checkScope(o),new Op(this.keyword,new Return(this.expression,{belongsToFuncDirectiveReturn:!0}).withLocationDataFrom(null==this.expression?this.returnKeyword:{locationData:mergeLocationData(this.returnKeyword.locationData,this.expression.locationData)})).withLocationDataFrom(this).ast(o)}}]),FuncDirectiveReturn}(Return);return FuncDirectiveReturn.prototype.isStatementAst=NO,FuncDirectiveReturn}.call(this),exports.YieldReturn=YieldReturn=function(){var YieldReturn=function(_FuncDirectiveReturn){function YieldReturn(){return _classCallCheck(this,YieldReturn),_super23.apply(this,arguments)}_inherits(YieldReturn,_FuncDirectiveReturn);var _super23=_createSuper(YieldReturn);return _createClass(YieldReturn)}(FuncDirectiveReturn);return YieldReturn.prototype.keyword="yield",YieldReturn}.call(this),exports.AwaitReturn=AwaitReturn=function(){var AwaitReturn=function(_FuncDirectiveReturn2){function AwaitReturn(){return _classCallCheck(this,AwaitReturn),_super24.apply(this,arguments)}_inherits(AwaitReturn,_FuncDirectiveReturn2);var _super24=_createSuper(AwaitReturn);return _createClass(AwaitReturn)}(FuncDirectiveReturn);return AwaitReturn.prototype.keyword="await",AwaitReturn}.call(this),exports.Value=Value=function(){var Value=function(_Base7){function Value(base,props,tag){var isDefaultValue=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],_this22;_classCallCheck(this,Value);var ref1,ref2;return(_this22=_super25.call(this),!props&&base instanceof Value)?_possibleConstructorReturn(_this22,base):(_this22.base=base,_this22.properties=props||[],_this22.tag=tag,tag&&(_this22[tag]=!0),_this22.isDefaultValue=isDefaultValue,(null==(ref1=_this22.base)?void 0:ref1.comments)&&_this22.base instanceof ThisLiteral&&null!=(null==(ref2=_this22.properties[0])?void 0:ref2.name)&&moveComments(_this22.base,_this22.properties[0].name),_this22)}_inherits(Value,_Base7);var _super25=_createSuper(Value);return _createClass(Value,[{key:"add",value:function add(props){return this.properties=this.properties.concat(props),this.forceUpdateLocation=!0,this}},{key:"hasProperties",value:function hasProperties(){return 0!==this.properties.length}},{key:"bareLiteral",value:function bareLiteral(type){return!this.properties.length&&this.base instanceof type}},{key:"isArray",value:function isArray(){return this.bareLiteral(Arr)}},{key:"isRange",value:function isRange(){return this.bareLiteral(Range)}},{key:"shouldCache",value:function shouldCache(){return this.hasProperties()||this.base.shouldCache()}},{key:"isAssignable",value:function isAssignable(opts){return this.hasProperties()||this.base.isAssignable(opts)}},{key:"isNumber",value:function(){return this.bareLiteral(NumberLiteral)}},{key:"isString",value:function isString(){return this.bareLiteral(StringLiteral)}},{key:"isRegex",value:function isRegex(){return this.bareLiteral(RegexLiteral)}},{key:"isUndefined",value:function isUndefined(){return this.bareLiteral(UndefinedLiteral)}},{key:"isNull",value:function isNull(){return this.bareLiteral(NullLiteral)}},{key:"isBoolean",value:function isBoolean(){return this.bareLiteral(BooleanLiteral)}},{key:"isAtomic",value:function isAtomic(){var j,len1,node,ref1;for(ref1=this.properties.concat(this.base),j=0,len1=ref1.length;j<len1;j++)if(node=ref1[j],node.soak||node instanceof Call||node instanceof Op&&"do"===node.operator)return!1;return!0}},{key:"isNotCallable",value:function isNotCallable(){return this.isNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()||this.isUndefined()||this.isNull()||this.isBoolean()}},{key:"isStatement",value:function isStatement(o){return!this.properties.length&&this.base.isStatement(o)}},{key:"isJSXTag",value:function isJSXTag(){return this.base instanceof JSXTag}},{key:"assigns",value:function assigns(name){return!this.properties.length&&this.base.assigns(name)}},{key:"jumps",value:function jumps(o){return!this.properties.length&&this.base.jumps(o)}},{key:"isObject",value:function isObject(onlyGenerated){return!this.properties.length&&this.base instanceof Obj&&(!onlyGenerated||this.base.generated)}},{key:"isElision",value:function isElision(){return!!(this.base instanceof Arr)&&this.base.hasElision()}},{key:"isSplice",value:function isSplice(){var _slice1$call7,_slice1$call8,lastProperty,ref1;return ref1=this.properties,_slice1$call7=slice1.call(ref1,-1),_slice1$call8=_slicedToArray(_slice1$call7,1),lastProperty=_slice1$call8[0],_slice1$call7,lastProperty instanceof Slice}},{key:"looksStatic",value:function looksStatic(className){var name,ref1,thisLiteral;return!!(((thisLiteral=this.base)instanceof ThisLiteral||(name=this.base).value===className)&&1===this.properties.length&&"prototype"!==(null==(ref1=this.properties[0].name)?void 0:ref1.value))&&{staticClassName:null==thisLiteral?name:thisLiteral}}},{key:"unwrap",value:function unwrap(){return this.properties.length?this:this.base}},{key:"cacheReference",value:function cacheReference(o){var _slice1$call9,_slice1$call10,base,bref,name,nref,ref1;return(ref1=this.properties,_slice1$call9=slice1.call(ref1,-1),_slice1$call10=_slicedToArray(_slice1$call9,1),name=_slice1$call10[0],_slice1$call9,2>this.properties.length&&!this.base.shouldCache()&&(null==name||!name.shouldCache()))?[this,this]:(base=new Value(this.base,this.properties.slice(0,-1)),base.shouldCache()&&(bref=new IdentifierLiteral(o.scope.freeVariable("base")),base=new Value(new Parens(new Assign(bref,base)))),!name)?[base,bref]:(name.shouldCache()&&(nref=new IdentifierLiteral(o.scope.freeVariable("name")),name=new Index(new Assign(nref,name.index)),nref=new Index(nref)),[base.add(name),new Value(bref||base.base,[nref||name])])}},{key:"compileNode",value:function compileNode(o){var fragments,j,len1,prop,props;for(this.base.front=this.front,props=this.properties,fragments=props.length&&null!=this.base.cached?this.base.cached:this.base.compileToFragments(o,props.length?LEVEL_ACCESS:null),props.length&&SIMPLENUM.test(fragmentsToText(fragments))&&fragments.push(this.makeCode(".")),(j=0,len1=props.length);j<len1;j++){var _fragments2;prop=props[j],(_fragments2=fragments).push.apply(_fragments2,_toConsumableArray(prop.compileToFragments(o)))}return fragments}},{key:"unfoldSoak",value:function unfoldSoak(o){var _this23=this;return null==this.unfoldedSoak?this.unfoldedSoak=function(){var fst,i,ifn,j,len1,prop,ref,ref1,snd;if(ifn=_this23.base.unfoldSoak(o),ifn){var _ifn$body$properties;return(_ifn$body$properties=ifn.body.properties).push.apply(_ifn$body$properties,_toConsumableArray(_this23.properties)),ifn}for(ref1=_this23.properties,i=j=0,len1=ref1.length;j<len1;i=++j)if(prop=ref1[i],!!prop.soak)return prop.soak=!1,fst=new Value(_this23.base,_this23.properties.slice(0,i)),snd=new Value(_this23.base,_this23.properties.slice(i)),fst.shouldCache()&&(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),fst=new Parens(new Assign(ref,fst)),snd.base=ref),new If(new Existence(fst),snd,{soak:!0});return!1}():this.unfoldedSoak}},{key:"eachName",value:function eachName(iterator){var _ref30=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref30$checkAssignabi=_ref30.checkAssignability;return this.hasProperties()?iterator(this):!(void 0===_ref30$checkAssignabi||_ref30$checkAssignabi)||this.base.isAssignable()?this.base.eachName(iterator):this.error("tried to assign to unassignable value")}},{key:"object",value:function(){var initialProperties,object;return this.hasProperties()?(initialProperties=this.properties.slice(0,this.properties.length-1),object=new Value(this.base,initialProperties,this.tag,this.isDefaultValue),object.locationData=0===initialProperties.length?this.base.locationData:mergeLocationData(this.base.locationData,initialProperties[initialProperties.length-1].locationData),object):this}},{key:"containsSoak",value:function containsSoak(){var j,len1,property,ref1;if(!this.hasProperties())return!1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(property=ref1[j],property.soak)return!0;return!!(this.base instanceof Call&&this.base.soak)}},{key:"astNode",value:function astNode(o){return this.hasProperties()?_get(_getPrototypeOf(Value.prototype),"astNode",this).call(this,o):this.base.ast(o)}},{key:"astType",value:function astType(){return this.isJSXTag()?"JSXMemberExpression":this.containsSoak()?"OptionalMemberExpression":"MemberExpression"}},{key:"astProperties",value:function astProperties(o){var _slice1$call11,_slice1$call12,computed,property,ref1,ref2;return ref1=this.properties,_slice1$call11=slice1.call(ref1,-1),_slice1$call12=_slicedToArray(_slice1$call11,1),property=_slice1$call12[0],_slice1$call11,this.isJSXTag()&&(property.name.jsx=!0),computed=property instanceof Index||!((null==(ref2=property.name)?void 0:ref2.unwrap())instanceof PropertyName),{object:this.object().ast(o,LEVEL_ACCESS),property:property.ast(o,computed?LEVEL_PAREN:void 0),computed:computed,optional:!!property.soak,shorthand:!!property.shorthand}}},{key:"astLocationData",value:function astLocationData(){return this.isJSXTag()?mergeAstLocationData(jisonLocationDataToAstLocationData(this.base.tagNameLocationData),jisonLocationDataToAstLocationData(this.properties[this.properties.length-1].locationData)):_get(_getPrototypeOf(Value.prototype),"astLocationData",this).call(this)}}]),Value}(Base);return Value.prototype.children=["base","properties"],Value}.call(this),exports.MetaProperty=MetaProperty=function(){var MetaProperty=function(_Base8){function MetaProperty(meta,property1){var _this24;return _classCallCheck(this,MetaProperty),_this24=_super26.call(this),_this24.meta=meta,_this24.property=property1,_this24}_inherits(MetaProperty,_Base8);var _super26=_createSuper(MetaProperty);return _createClass(MetaProperty,[{key:"checkValid",value:function checkValid(o){if("new"===this.meta.value){if(!(this.property instanceof Access&&"target"===this.property.name.value))return this.error("the only valid meta property for new is new.target");if(null==o.scope.parent)return this.error("new.target can only occur inside functions")}else if("import"===this.meta.value&&!(this.property instanceof Access&&"meta"===this.property.name.value))return this.error("the only valid meta property for import is import.meta")}},{key:"compileNode",value:function compileNode(o){var _fragments3,_fragments4,fragments;return this.checkValid(o),fragments=[],(_fragments3=fragments).push.apply(_fragments3,_toConsumableArray(this.meta.compileToFragments(o,LEVEL_ACCESS))),(_fragments4=fragments).push.apply(_fragments4,_toConsumableArray(this.property.compileToFragments(o))),fragments}},{key:"astProperties",value:function astProperties(o){return this.checkValid(o),{meta:this.meta.ast(o,LEVEL_ACCESS),property:this.property.ast(o)}}}]),MetaProperty}(Base);return MetaProperty.prototype.children=["meta","property"],MetaProperty}.call(this),exports.HereComment=HereComment=function(_Base9){function HereComment(_ref31){var content1=_ref31.content,newLine=_ref31.newLine,unshift=_ref31.unshift,locationData1=_ref31.locationData,_this25;return _classCallCheck(this,HereComment),_this25=_super27.call(this),_this25.content=content1,_this25.newLine=newLine,_this25.unshift=unshift,_this25.locationData=locationData1,_this25}_inherits(HereComment,_Base9);var _super27=_createSuper(HereComment);return _createClass(HereComment,[{key:"compileNode",value:function compileNode(){var fragment,hasLeadingMarks,indent,j,leadingWhitespace,len1,line,multiline,ref1;if(multiline=0<=indexOf.call(this.content,"\n"),multiline){for(indent=null,ref1=this.content.split("\n"),(j=0,len1=ref1.length);j<len1;j++)line=ref1[j],leadingWhitespace=/^\s*/.exec(line)[0],(!indent||leadingWhitespace.length<indent.length)&&(indent=leadingWhitespace);indent&&(this.content=this.content.replace(RegExp("\\n".concat(indent),"g"),"\n"))}return hasLeadingMarks=/\n\s*[#|\*]/.test(this.content),hasLeadingMarks&&(this.content=this.content.replace(/^([ \t]*)#(?=\s)/gm," *")),this.content="/*".concat(this.content).concat(hasLeadingMarks?" ":"","*/"),fragment=this.makeCode(this.content),fragment.newLine=this.newLine,fragment.unshift=this.unshift,fragment.multiline=multiline,fragment.isComment=fragment.isHereComment=!0,fragment}},{key:"astType",value:function astType(){return"CommentBlock"}},{key:"astProperties",value:function astProperties(){return{value:this.content}}}]),HereComment}(Base),exports.LineComment=LineComment=function(_Base10){function LineComment(_ref32){var content1=_ref32.content,newLine=_ref32.newLine,unshift=_ref32.unshift,locationData1=_ref32.locationData,precededByBlankLine=_ref32.precededByBlankLine,_this26;return _classCallCheck(this,LineComment),_this26=_super28.call(this),_this26.content=content1,_this26.newLine=newLine,_this26.unshift=unshift,_this26.locationData=locationData1,_this26.precededByBlankLine=precededByBlankLine,_this26}_inherits(LineComment,_Base10);var _super28=_createSuper(LineComment);return _createClass(LineComment,[{key:"compileNode",value:function compileNode(o){var fragment;return fragment=this.makeCode(/^\s*$/.test(this.content)?"":"".concat(this.precededByBlankLine?"\n".concat(o.indent):"","//").concat(this.content)),fragment.newLine=this.newLine,fragment.unshift=this.unshift,fragment.trail=!this.newLine&&!this.unshift,fragment.isComment=fragment.isLineComment=!0,fragment}},{key:"astType",value:function astType(){return"CommentLine"}},{key:"astProperties",value:function astProperties(){return{value:this.content}}}]),LineComment}(Base),exports.JSXIdentifier=JSXIdentifier=function(_IdentifierLiteral){function JSXIdentifier(){return _classCallCheck(this,JSXIdentifier),_super29.apply(this,arguments)}_inherits(JSXIdentifier,_IdentifierLiteral);var _super29=_createSuper(JSXIdentifier);return _createClass(JSXIdentifier,[{key:"astType",value:function astType(){return"JSXIdentifier"}}]),JSXIdentifier}(IdentifierLiteral),exports.JSXTag=JSXTag=function(_JSXIdentifier){function JSXTag(value,_ref33){var tagNameLocationData=_ref33.tagNameLocationData,closingTagOpeningBracketLocationData=_ref33.closingTagOpeningBracketLocationData,closingTagSlashLocationData=_ref33.closingTagSlashLocationData,closingTagNameLocationData=_ref33.closingTagNameLocationData,closingTagClosingBracketLocationData=_ref33.closingTagClosingBracketLocationData,_this27;return _classCallCheck(this,JSXTag),_this27=_super30.call(this,value),_this27.tagNameLocationData=tagNameLocationData,_this27.closingTagOpeningBracketLocationData=closingTagOpeningBracketLocationData,_this27.closingTagSlashLocationData=closingTagSlashLocationData,_this27.closingTagNameLocationData=closingTagNameLocationData,_this27.closingTagClosingBracketLocationData=closingTagClosingBracketLocationData,_this27}_inherits(JSXTag,_JSXIdentifier);var _super30=_createSuper(JSXTag);return _createClass(JSXTag,[{key:"astProperties",value:function astProperties(){return{name:this.value}}}]),JSXTag}(JSXIdentifier),exports.JSXExpressionContainer=JSXExpressionContainer=function(){var JSXExpressionContainer=function(_Base11){function JSXExpressionContainer(expression1){var _ref34=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},locationData=_ref34.locationData,_this28;return _classCallCheck(this,JSXExpressionContainer),_this28=_super31.call(this),_this28.expression=expression1,_this28.expression.jsxAttribute=!0,_this28.locationData=null==locationData?_this28.expression.locationData:locationData,_this28}_inherits(JSXExpressionContainer,_Base11);var _super31=_createSuper(JSXExpressionContainer);return _createClass(JSXExpressionContainer,[{key:"compileNode",value:function compileNode(o){return this.expression.compileNode(o)}},{key:"astProperties",value:function astProperties(o){return{expression:astAsBlockIfNeeded(this.expression,o)}}}]),JSXExpressionContainer}(Base);return JSXExpressionContainer.prototype.children=["expression"],JSXExpressionContainer}.call(this),exports.JSXEmptyExpression=JSXEmptyExpression=function(_Base12){function JSXEmptyExpression(){return _classCallCheck(this,JSXEmptyExpression),_super32.apply(this,arguments)}_inherits(JSXEmptyExpression,_Base12);var _super32=_createSuper(JSXEmptyExpression);return _createClass(JSXEmptyExpression)}(Base),exports.JSXText=JSXText=function(_Base13){function JSXText(stringLiteral){var _this29;return _classCallCheck(this,JSXText),_this29=_super33.call(this),_this29.value=stringLiteral.unquotedValueForJSX,_this29.locationData=stringLiteral.locationData,_this29}_inherits(JSXText,_Base13);var _super33=_createSuper(JSXText);return _createClass(JSXText,[{key:"astProperties",value:function astProperties(){return{value:this.value,extra:{raw:this.value}}}}]),JSXText}(Base),exports.JSXAttribute=JSXAttribute=function(){var JSXAttribute=function(_Base14){function JSXAttribute(_ref35){var name1=_ref35.name,value=_ref35.value,_this30;_classCallCheck(this,JSXAttribute);var ref1;return _this30=_super34.call(this),_this30.name=name1,_this30.value=null==value?null:(value=value.base,value instanceof StringLiteral&&!value.shouldGenerateTemplateLiteral()?value:new JSXExpressionContainer(value)),null!=(ref1=_this30.value)&&(ref1.comments=value.comments),_this30}_inherits(JSXAttribute,_Base14);var _super34=_createSuper(JSXAttribute);return _createClass(JSXAttribute,[{key:"compileNode",value:function compileNode(o){var compiledName,val;return(compiledName=this.name.compileToFragments(o,LEVEL_LIST),null==this.value)?compiledName:(val=this.value.compileToFragments(o,LEVEL_LIST),compiledName.concat(this.makeCode("="),val))}},{key:"astProperties",value:function astProperties(o){var name,ref1,ref2;return name=this.name,0<=indexOf.call(name.value,":")&&(name=new JSXNamespacedName(name)),{name:name.ast(o),value:null==(ref1=null==(ref2=this.value)?void 0:ref2.ast(o))?null:ref1}}}]),JSXAttribute}(Base);return JSXAttribute.prototype.children=["name","value"],JSXAttribute}.call(this),exports.JSXAttributes=JSXAttributes=function(){var JSXAttributes=function(_Base15){function JSXAttributes(arr){var _this31;_classCallCheck(this,JSXAttributes);var attribute,base,j,k,len1,len2,object,property,ref1,ref2,value,variable;for(_this31=_super35.call(this),_this31.attributes=[],ref1=arr.objects,(j=0,len1=ref1.length);j<len1;j++){object=ref1[j],_this31.checkValidAttribute(object);var _object=object;if(base=_object.base,base instanceof IdentifierLiteral)attribute=new JSXAttribute({name:new JSXIdentifier(base.value).withLocationDataAndCommentsFrom(base)}),attribute.locationData=base.locationData,_this31.attributes.push(attribute);else if(!base.generated)attribute=base.properties[0],attribute.jsx=!0,attribute.locationData=base.locationData,_this31.attributes.push(attribute);else for(ref2=base.properties,k=0,len2=ref2.length;k<len2;k++){property=ref2[k];var _property=property;variable=_property.variable,value=_property.value,attribute=new JSXAttribute({name:new JSXIdentifier(variable.base.value).withLocationDataAndCommentsFrom(variable.base),value:value}),attribute.locationData=property.locationData,_this31.attributes.push(attribute)}}return _this31.locationData=arr.locationData,_this31}_inherits(JSXAttributes,_Base15);var _super35=_createSuper(JSXAttributes);return _createClass(JSXAttributes,[{key:"checkValidAttribute",value:function checkValidAttribute(object){var attribute,properties;if(attribute=object.base,properties=(null==attribute?void 0:attribute.properties)||[],!(attribute instanceof Obj||attribute instanceof IdentifierLiteral)||attribute instanceof Obj&&!attribute.generated&&(1<properties.length||!(properties[0]instanceof Splat)))return object.error("Unexpected token. Allowed JSX attributes are: id=\"val\", src={source}, {props...} or attribute.")}},{key:"compileNode",value:function compileNode(o){var attribute,fragments,j,len1,ref1;for(fragments=[],ref1=this.attributes,(j=0,len1=ref1.length);j<len1;j++){var _fragments5;attribute=ref1[j],fragments.push(this.makeCode(" ")),(_fragments5=fragments).push.apply(_fragments5,_toConsumableArray(attribute.compileToFragments(o,LEVEL_TOP)))}return fragments}},{key:"astNode",value:function astNode(o){var attribute,j,len1,ref1,results1;for(ref1=this.attributes,results1=[],(j=0,len1=ref1.length);j<len1;j++)attribute=ref1[j],results1.push(attribute.ast(o));return results1}}]),JSXAttributes}(Base);return JSXAttributes.prototype.children=["attributes"],JSXAttributes}.call(this),exports.JSXNamespacedName=JSXNamespacedName=function(){var JSXNamespacedName=function(_Base16){function JSXNamespacedName(tag){var _this32;_classCallCheck(this,JSXNamespacedName);var name,namespace;_this32=_super36.call(this);var _tag$value$split=tag.value.split(":"),_tag$value$split2=_slicedToArray(_tag$value$split,2);return namespace=_tag$value$split2[0],name=_tag$value$split2[1],_this32.namespace=new JSXIdentifier(namespace).withLocationDataFrom({locationData:extractSameLineLocationDataFirst(namespace.length)(tag.locationData)}),_this32.name=new JSXIdentifier(name).withLocationDataFrom({locationData:extractSameLineLocationDataLast(name.length)(tag.locationData)}),_this32.locationData=tag.locationData,_this32}_inherits(JSXNamespacedName,_Base16);var _super36=_createSuper(JSXNamespacedName);return _createClass(JSXNamespacedName,[{key:"astProperties",value:function astProperties(o){return{namespace:this.namespace.ast(o),name:this.name.ast(o)}}}]),JSXNamespacedName}(Base);return JSXNamespacedName.prototype.children=["namespace","name"],JSXNamespacedName}.call(this),exports.JSXElement=JSXElement=function(){var JSXElement=function(_Base17){function JSXElement(_ref36){var tagName1=_ref36.tagName,attributes=_ref36.attributes,content1=_ref36.content,_this33;return _classCallCheck(this,JSXElement),_this33=_super37.call(this),_this33.tagName=tagName1,_this33.attributes=attributes,_this33.content=content1,_this33}_inherits(JSXElement,_Base17);var _super37=_createSuper(JSXElement);return _createClass(JSXElement,[{key:"compileNode",value:function compileNode(o){var _fragments6,_fragments7,fragments,ref1,tag;if(null!=(ref1=this.content)&&(ref1.base.jsx=!0),fragments=[this.makeCode("<")],(_fragments6=fragments).push.apply(_fragments6,_toConsumableArray(tag=this.tagName.compileToFragments(o,LEVEL_ACCESS))),(_fragments7=fragments).push.apply(_fragments7,_toConsumableArray(this.attributes.compileToFragments(o))),this.content){var _fragments8,_fragments9;fragments.push(this.makeCode(">")),(_fragments8=fragments).push.apply(_fragments8,_toConsumableArray(this.content.compileNode(o,LEVEL_LIST))),(_fragments9=fragments).push.apply(_fragments9,[this.makeCode("</")].concat(_toConsumableArray(tag),[this.makeCode(">")]))}else fragments.push(this.makeCode(" />"));return fragments}},{key:"isFragment",value:function isFragment(){return!this.tagName.base.value.length}},{key:"astNode",value:function astNode(o){var tagName;return this.openingElementLocationData=jisonLocationDataToAstLocationData(this.attributes.locationData),tagName=this.tagName.base,tagName.locationData=tagName.tagNameLocationData,null!=this.content&&(this.closingElementLocationData=mergeAstLocationData(jisonLocationDataToAstLocationData(tagName.closingTagOpeningBracketLocationData),jisonLocationDataToAstLocationData(tagName.closingTagClosingBracketLocationData))),_get(_getPrototypeOf(JSXElement.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isFragment()?"JSXFragment":"JSXElement"}},{key:"elementAstProperties",value:function elementAstProperties(o){var _this34=this,closingElement,columnDiff,currentExpr,openingElement,rangeDiff,ref1,shiftAstLocationData,tagNameAst;if(tagNameAst=function(){var tag;return tag=_this34.tagName.unwrap(),(null==tag?void 0:tag.value)&&0<=indexOf.call(tag.value,":")&&(tag=new JSXNamespacedName(tag)),tag.ast(o)},openingElement=Object.assign({type:"JSXOpeningElement",name:tagNameAst(),selfClosing:null==this.closingElementLocationData,attributes:this.attributes.ast(o)},this.openingElementLocationData),closingElement=null,null!=this.closingElementLocationData&&(closingElement=Object.assign({type:"JSXClosingElement",name:Object.assign(tagNameAst(),jisonLocationDataToAstLocationData(this.tagName.base.closingTagNameLocationData))},this.closingElementLocationData),"JSXMemberExpression"===(ref1=closingElement.name.type)||"JSXNamespacedName"===ref1))if(rangeDiff=closingElement.range[0]-openingElement.range[0]+"/".length,columnDiff=closingElement.loc.start.column-openingElement.loc.start.column+"/".length,shiftAstLocationData=function(node){return node.range=[node.range[0]+rangeDiff,node.range[1]+rangeDiff],node.start+=rangeDiff,node.end+=rangeDiff,node.loc.start={line:_this34.closingElementLocationData.loc.start.line,column:node.loc.start.column+columnDiff},node.loc.end={line:_this34.closingElementLocationData.loc.start.line,column:node.loc.end.column+columnDiff}},"JSXMemberExpression"===closingElement.name.type){for(currentExpr=closingElement.name;"JSXMemberExpression"===currentExpr.type;)currentExpr!==closingElement.name&&shiftAstLocationData(currentExpr),shiftAstLocationData(currentExpr.property),currentExpr=currentExpr.object;shiftAstLocationData(currentExpr)}else shiftAstLocationData(closingElement.name.namespace),shiftAstLocationData(closingElement.name.name);return{openingElement:openingElement,closingElement:closingElement}}},{key:"fragmentAstProperties",value:function fragmentAstProperties(){var closingFragment,openingFragment;return openingFragment=Object.assign({type:"JSXOpeningFragment"},this.openingElementLocationData),closingFragment=Object.assign({type:"JSXClosingFragment"},this.closingElementLocationData),{openingFragment:openingFragment,closingFragment:closingFragment}}},{key:"contentAst",value:function contentAst(o){var base1,child,children,content,element,emptyExpression,expression,j,len1,results1,unwrapped;if(!this.content||("function"==typeof(base1=this.content.base).isEmpty?base1.isEmpty():void 0))return[];for(content=this.content.unwrapAll(),children=function(){var j,len1,ref1,results1;if(content instanceof StringLiteral)return[new JSXText(content)];for(ref1=this.content.unwrapAll().extractElements(o,{includeInterpolationWrappers:!0,isJsx:!0}),results1=[],(j=0,len1=ref1.length);j<len1;j++)if(element=ref1[j],element instanceof StringLiteral)results1.push(new JSXText(element));else{var _element=element;expression=_element.expression,null==expression?(emptyExpression=new JSXEmptyExpression,emptyExpression.locationData=emptyExpressionLocationData({interpolationNode:element,openingBrace:"{",closingBrace:"}"}),results1.push(new JSXExpressionContainer(emptyExpression,{locationData:element.locationData}))):(unwrapped=expression.unwrapAll(),unwrapped instanceof JSXElement&&unwrapped.locationData.range[0]===element.locationData.range[0]?results1.push(unwrapped):results1.push(new JSXExpressionContainer(unwrapped,{locationData:element.locationData})))}return results1}.call(this),results1=[],(j=0,len1=children.length);j<len1;j++)child=children[j],child instanceof JSXText&&0===child.value.length||results1.push(child.ast(o));return results1}},{key:"astProperties",value:function astProperties(o){return Object.assign(this.isFragment()?this.fragmentAstProperties(o):this.elementAstProperties(o),{children:this.contentAst(o)})}},{key:"astLocationData",value:function astLocationData(){return null==this.closingElementLocationData?this.openingElementLocationData:mergeAstLocationData(this.openingElementLocationData,this.closingElementLocationData)}}]),JSXElement}(Base);return JSXElement.prototype.children=["tagName","attributes","content"],JSXElement}.call(this),exports.Call=Call=function(){var Call=function(_Base18){function Call(variable1){var args1=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],soak1=2<arguments.length?arguments[2]:void 0,token1=3<arguments.length?arguments[3]:void 0,_this35;_classCallCheck(this,Call);var ref1;return(_this35=_super38.call(this),_this35.variable=variable1,_this35.args=args1,_this35.soak=soak1,_this35.token=token1,_this35.implicit=_this35.args.implicit,_this35.isNew=!1,_this35.variable instanceof Value&&_this35.variable.isNotCallable()&&_this35.variable.error("literal is not a function"),_this35.variable.base instanceof JSXTag)?_possibleConstructorReturn(_this35,new JSXElement({tagName:_this35.variable,attributes:new JSXAttributes(_this35.args[0].base),content:_this35.args[1]})):("RegExp"===(null==(ref1=_this35.variable.base)?void 0:ref1.value)&&0!==_this35.args.length&&moveComments(_this35.variable,_this35.args[0]),_this35)}_inherits(Call,_Base18);var _super38=_createSuper(Call);return _createClass(Call,[{key:"updateLocationDataIfMissing",value:function updateLocationDataIfMissing(locationData){var base,ref1;return this.locationData&&this.needsUpdatedStartLocation&&(this.locationData=Object.assign({},this.locationData,{first_line:locationData.first_line,first_column:locationData.first_column,range:[locationData.range[0],this.locationData.range[1]]}),base=(null==(ref1=this.variable)?void 0:ref1.base)||this.variable,base.needsUpdatedStartLocation&&(this.variable.locationData=Object.assign({},this.variable.locationData,{first_line:locationData.first_line,first_column:locationData.first_column,range:[locationData.range[0],this.variable.locationData.range[1]]}),base.updateLocationDataIfMissing(locationData)),delete this.needsUpdatedStartLocation),_get(_getPrototypeOf(Call.prototype),"updateLocationDataIfMissing",this).call(this,locationData)}},{key:"newInstance",value:function newInstance(){var base,ref1;return base=(null==(ref1=this.variable)?void 0:ref1.base)||this.variable,base instanceof Call&&!base.isNew?base.newInstance():this.isNew=!0,this.needsUpdatedStartLocation=!0,this}},{key:"unfoldSoak",value:function unfoldSoak(o){var call,ifn,j,left,len1,list,ref1,rite;if(this.soak){if(this.variable instanceof Super)left=new Literal(this.variable.compile(o)),rite=new Value(left),null==this.variable.accessor&&this.variable.error("Unsupported reference to 'super'");else{if(ifn=_unfoldSoak(o,this,"variable"))return ifn;var _Value$cacheReference=new Value(this.variable).cacheReference(o),_Value$cacheReference2=_slicedToArray(_Value$cacheReference,2);left=_Value$cacheReference2[0],rite=_Value$cacheReference2[1]}return rite=new Call(rite,this.args),rite.isNew=this.isNew,left=new Literal("typeof ".concat(left.compile(o)," === \"function\"")),new If(left,new Value(rite),{soak:!0})}for(call=this,list=[];;){if(call.variable instanceof Call){list.push(call),call=call.variable;continue}if(!(call.variable instanceof Value))break;if(list.push(call),!((call=call.variable.base)instanceof Call))break}for(ref1=list.reverse(),j=0,len1=ref1.length;j<len1;j++)call=ref1[j],ifn&&(call.variable instanceof Call?call.variable=ifn:call.variable.base=ifn),ifn=_unfoldSoak(o,call,"variable");return ifn}},{key:"compileNode",value:function compileNode(o){var _fragments10,_fragments11,arg,argCode,argIndex,cache,compiledArgs,fragments,j,len1,ref1,ref2,ref3,ref4,varAccess;if(this.checkForNewSuper(),null!=(ref1=this.variable)&&(ref1.front=this.front),compiledArgs=[],varAccess=(null==(ref2=this.variable)||null==(ref3=ref2.properties)?void 0:ref3[0])instanceof Access,argCode=function(){var j,len1,ref4,results1;for(ref4=this.args||[],results1=[],(j=0,len1=ref4.length);j<len1;j++)arg=ref4[j],arg instanceof Code&&results1.push(arg);return results1}.call(this),0<argCode.length&&varAccess&&!this.variable.base.cached){var _this$variable$base$c=this.variable.base.cache(o,LEVEL_ACCESS,function(){return!1}),_this$variable$base$c2=_slicedToArray(_this$variable$base$c,1);cache=_this$variable$base$c2[0],this.variable.base.cached=cache}for(ref4=this.args,argIndex=j=0,len1=ref4.length;j<len1;argIndex=++j){var _compiledArgs;arg=ref4[argIndex],argIndex&&compiledArgs.push(this.makeCode(", ")),(_compiledArgs=compiledArgs).push.apply(_compiledArgs,_toConsumableArray(arg.compileToFragments(o,LEVEL_LIST)))}return fragments=[],this.isNew&&fragments.push(this.makeCode("new ")),(_fragments10=fragments).push.apply(_fragments10,_toConsumableArray(this.variable.compileToFragments(o,LEVEL_ACCESS))),(_fragments11=fragments).push.apply(_fragments11,[this.makeCode("(")].concat(_toConsumableArray(compiledArgs),[this.makeCode(")")])),fragments}},{key:"checkForNewSuper",value:function checkForNewSuper(){if(this.isNew&&this.variable instanceof Super)return this.variable.error("Unsupported reference to 'super'")}},{key:"containsSoak",value:function containsSoak(){var ref1;return!!this.soak||null!=(ref1=this.variable)&&"function"==typeof ref1.containsSoak&&ref1.containsSoak()}},{key:"astNode",value:function astNode(o){var ref1;return this.soak&&this.variable instanceof Super&&(null==(ref1=o.scope.namedMethod())?void 0:ref1.ctor)&&this.variable.error("Unsupported reference to 'super'"),this.checkForNewSuper(),_get(_getPrototypeOf(Call.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isNew?"NewExpression":this.containsSoak()?"OptionalCallExpression":"CallExpression"}},{key:"astProperties",value:function astProperties(o){var arg;return{callee:this.variable.ast(o,LEVEL_ACCESS),arguments:function(){var j,len1,ref1,results1;for(ref1=this.args,results1=[],(j=0,len1=ref1.length);j<len1;j++)arg=ref1[j],results1.push(arg.ast(o,LEVEL_LIST));return results1}.call(this),optional:!!this.soak,implicit:!!this.implicit}}}]),Call}(Base);return Call.prototype.children=["variable","args"],Call}.call(this),exports.SuperCall=SuperCall=function(){var SuperCall=function(_Call){function SuperCall(){return _classCallCheck(this,SuperCall),_super39.apply(this,arguments)}_inherits(SuperCall,_Call);var _super39=_createSuper(SuperCall);return _createClass(SuperCall,[{key:"isStatement",value:function isStatement(o){var ref1;return(null==(ref1=this.expressions)?void 0:ref1.length)&&o.level===LEVEL_TOP}},{key:"compileNode",value:function compileNode(o){var ref,ref1,replacement,superCall;if(null==(ref1=this.expressions)||!ref1.length)return _get(_getPrototypeOf(SuperCall.prototype),"compileNode",this).call(this,o);if(superCall=new Literal(fragmentsToText(_get(_getPrototypeOf(SuperCall.prototype),"compileNode",this).call(this,o))),replacement=new Block(this.expressions.slice()),o.level>LEVEL_TOP){var _superCall$cache=superCall.cache(o,null,YES),_superCall$cache2=_slicedToArray(_superCall$cache,2);superCall=_superCall$cache2[0],ref=_superCall$cache2[1],replacement.push(ref)}return replacement.unshift(superCall),replacement.compileToFragments(o,o.level===LEVEL_TOP?o.level:LEVEL_LIST)}}]),SuperCall}(Call);return SuperCall.prototype.children=Call.prototype.children.concat(["expressions"]),SuperCall}.call(this),exports.Super=Super=function(){var Super=function(_Base19){function Super(accessor,superLiteral){var _this36;return _classCallCheck(this,Super),_this36=_super40.call(this),_this36.accessor=accessor,_this36.superLiteral=superLiteral,_this36}_inherits(Super,_Base19);var _super40=_createSuper(Super);return _createClass(Super,[{key:"compileNode",value:function compileNode(o){var fragments,method,name,nref,ref1,ref2,salvagedComments,variable;if(this.checkInInstanceMethod(o),method=o.scope.namedMethod(),null==method.ctor&&null==this.accessor){var _method=method;name=_method.name,variable=_method.variable,(name.shouldCache()||name instanceof Index&&name.index.isAssignable())&&(nref=new IdentifierLiteral(o.scope.parent.freeVariable("name")),name.index=new Assign(nref,name.index)),this.accessor=null==nref?name:new Index(nref)}return(null==(ref1=this.accessor)||null==(ref2=ref1.name)?void 0:ref2.comments)&&(salvagedComments=this.accessor.name.comments,delete this.accessor.name.comments),fragments=new Value(new Literal("super"),this.accessor?[this.accessor]:[]).compileToFragments(o),salvagedComments&&attachCommentsToNode(salvagedComments,this.accessor.name),fragments}},{key:"checkInInstanceMethod",value:function checkInInstanceMethod(o){var method;if(method=o.scope.namedMethod(),null==method||!method.isMethod)return this.error("cannot use super outside of an instance method")}},{key:"astNode",value:function astNode(o){var ref1;return this.checkInInstanceMethod(o),null==this.accessor?_get(_getPrototypeOf(Super.prototype),"astNode",this).call(this,o):new Value(new Super().withLocationDataFrom(null==(ref1=this.superLiteral)?this:ref1),[this.accessor]).withLocationDataFrom(this).ast(o)}}]),Super}(Base);return Super.prototype.children=["accessor"],Super}.call(this),exports.RegexWithInterpolations=RegexWithInterpolations=function(){var RegexWithInterpolations=function(_Base20){function RegexWithInterpolations(call1){var _ref37=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref37$heregexComment=_ref37.heregexCommentTokens,heregexCommentTokens=void 0===_ref37$heregexComment?[]:_ref37$heregexComment,_this37;return _classCallCheck(this,RegexWithInterpolations),_this37=_super41.call(this),_this37.call=call1,_this37.heregexCommentTokens=heregexCommentTokens,_this37}_inherits(RegexWithInterpolations,_Base20);var _super41=_createSuper(RegexWithInterpolations);return _createClass(RegexWithInterpolations,[{key:"compileNode",value:function compileNode(o){return this.call.compileNode(o)}},{key:"astType",value:function astType(){return"InterpolatedRegExpLiteral"}},{key:"astProperties",value:function astProperties(o){var heregexCommentToken,ref1,ref2;return{interpolatedPattern:this.call.args[0].ast(o),flags:null==(ref1=null==(ref2=this.call.args[1])?void 0:ref2.unwrap().originalValue)?"":ref1,comments:function(){var j,len1,ref3,results1;for(ref3=this.heregexCommentTokens,results1=[],(j=0,len1=ref3.length);j<len1;j++)heregexCommentToken=ref3[j],heregexCommentToken.here?results1.push(new HereComment(heregexCommentToken).ast(o)):results1.push(new LineComment(heregexCommentToken).ast(o));return results1}.call(this)}}}]),RegexWithInterpolations}(Base);return RegexWithInterpolations.prototype.children=["call"],RegexWithInterpolations}.call(this),exports.TaggedTemplateCall=TaggedTemplateCall=function(_Call2){function TaggedTemplateCall(variable,arg,soak){return _classCallCheck(this,TaggedTemplateCall),arg instanceof StringLiteral&&(arg=StringWithInterpolations.fromStringLiteral(arg)),_super42.call(this,variable,[arg],soak)}_inherits(TaggedTemplateCall,_Call2);var _super42=_createSuper(TaggedTemplateCall);return _createClass(TaggedTemplateCall,[{key:"compileNode",value:function compileNode(o){return this.variable.compileToFragments(o,LEVEL_ACCESS).concat(this.args[0].compileToFragments(o,LEVEL_LIST))}},{key:"astType",value:function astType(){return"TaggedTemplateExpression"}},{key:"astProperties",value:function astProperties(o){return{tag:this.variable.ast(o,LEVEL_ACCESS),quasi:this.args[0].ast(o,LEVEL_LIST)}}}]),TaggedTemplateCall}(Call),exports.Extends=Extends=function(){var Extends=function(_Base21){function Extends(child1,parent1){var _this38;return _classCallCheck(this,Extends),_this38=_super43.call(this),_this38.child=child1,_this38.parent=parent1,_this38}_inherits(Extends,_Base21);var _super43=_createSuper(Extends);return _createClass(Extends,[{key:"compileToFragments",value:function compileToFragments(o){return new Call(new Value(new Literal(utility("extend",o))),[this.child,this.parent]).compileToFragments(o)}}]),Extends}(Base);return Extends.prototype.children=["child","parent"],Extends}.call(this),exports.Access=Access=function(){var Access=function(_Base22){function Access(name1){var _ref38=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},soak1=_ref38.soak,shorthand=_ref38.shorthand,_this39;return _classCallCheck(this,Access),_this39=_super44.call(this),_this39.name=name1,_this39.soak=soak1,_this39.shorthand=shorthand,_this39}_inherits(Access,_Base22);var _super44=_createSuper(Access);return _createClass(Access,[{key:"compileToFragments",value:function compileToFragments(o){var name,node;return name=this.name.compileToFragments(o),node=this.name.unwrap(),node instanceof PropertyName?[this.makeCode(".")].concat(_toConsumableArray(name)):[this.makeCode("[")].concat(_toConsumableArray(name),[this.makeCode("]")])}},{key:"astNode",value:function astNode(o){return this.name.ast(o)}}]),Access}(Base);return Access.prototype.children=["name"],Access.prototype.shouldCache=NO,Access}.call(this),exports.Index=Index=function(){var Index=function(_Base23){function Index(index1){var _this40;return _classCallCheck(this,Index),_this40=_super45.call(this),_this40.index=index1,_this40}_inherits(Index,_Base23);var _super45=_createSuper(Index);return _createClass(Index,[{key:"compileToFragments",value:function compileToFragments(o){return[].concat(this.makeCode("["),this.index.compileToFragments(o,LEVEL_PAREN),this.makeCode("]"))}},{key:"shouldCache",value:function shouldCache(){return this.index.shouldCache()}},{key:"astNode",value:function astNode(o){return this.index.ast(o)}}]),Index}(Base);return Index.prototype.children=["index"],Index}.call(this),exports.Range=Range=function(){var Range=function(_Base24){function Range(from1,to1,tag){var _this41;return _classCallCheck(this,Range),_this41=_super46.call(this),_this41.from=from1,_this41.to=to1,_this41.exclusive="exclusive"===tag,_this41.equals=_this41.exclusive?"":"=",_this41}_inherits(Range,_Base24);var _super46=_createSuper(Range);return _createClass(Range,[{key:"compileVariables",value:function compileVariables(o){var shouldCache,step;o=merge(o,{top:!0}),shouldCache=del(o,"shouldCache");var _this$cacheToCodeFrag=this.cacheToCodeFragments(this.from.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag2=_slicedToArray(_this$cacheToCodeFrag,2);this.fromC=_this$cacheToCodeFrag2[0],this.fromVar=_this$cacheToCodeFrag2[1];var _this$cacheToCodeFrag3=this.cacheToCodeFragments(this.to.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag4=_slicedToArray(_this$cacheToCodeFrag3,2);if(this.toC=_this$cacheToCodeFrag4[0],this.toVar=_this$cacheToCodeFrag4[1],step=del(o,"step")){var _this$cacheToCodeFrag5=this.cacheToCodeFragments(step.cache(o,LEVEL_LIST,shouldCache)),_this$cacheToCodeFrag6=_slicedToArray(_this$cacheToCodeFrag5,2);this.step=_this$cacheToCodeFrag6[0],this.stepVar=_this$cacheToCodeFrag6[1]}return this.fromNum=this.from.isNumber()?parseNumber(this.fromVar):null,this.toNum=this.to.isNumber()?parseNumber(this.toVar):null,this.stepNum=(null==step?void 0:step.isNumber())?parseNumber(this.stepVar):null}},{key:"compileNode",value:function compileNode(o){var cond,condPart,from,gt,idx,idxName,known,lowerBound,lt,namedIndex,ref1,ref2,stepCond,stepNotZero,stepPart,to,upperBound,varPart;if(this.fromVar||this.compileVariables(o),!o.index)return this.compileArray(o);known=null!=this.fromNum&&null!=this.toNum,idx=del(o,"index"),idxName=del(o,"name"),namedIndex=idxName&&idxName!==idx,varPart=known&&!namedIndex?"var ".concat(idx," = ").concat(this.fromC):"".concat(idx," = ").concat(this.fromC),this.toC!==this.toVar&&(varPart+=", ".concat(this.toC)),this.step!==this.stepVar&&(varPart+=", ".concat(this.step)),lt="".concat(idx," <").concat(this.equals),gt="".concat(idx," >").concat(this.equals);var _ref39=[this.fromNum,this.toNum];return from=_ref39[0],to=_ref39[1],stepNotZero="".concat(null==(ref1=this.stepNum)?this.stepVar:ref1," !== 0"),stepCond="".concat(null==(ref2=this.stepNum)?this.stepVar:ref2," > 0"),lowerBound="".concat(lt," ").concat(known?to:this.toVar),upperBound="".concat(gt," ").concat(known?to:this.toVar),condPart=null==this.step?known?"".concat(from<=to?lt:gt," ").concat(to):"(".concat(this.fromVar," <= ").concat(this.toVar," ? ").concat(lowerBound," : ").concat(upperBound,")"):null!=this.stepNum&&0!==this.stepNum?0<this.stepNum?"".concat(lowerBound):"".concat(upperBound):"".concat(stepNotZero," && (").concat(stepCond," ? ").concat(lowerBound," : ").concat(upperBound,")"),cond=this.stepVar?"".concat(this.stepVar," > 0"):"".concat(this.fromVar," <= ").concat(this.toVar),stepPart=this.stepVar?"".concat(idx," += ").concat(this.stepVar):known?namedIndex?from<=to?"++".concat(idx):"--".concat(idx):from<=to?"".concat(idx,"++"):"".concat(idx,"--"):namedIndex?"".concat(cond," ? ++").concat(idx," : --").concat(idx):"".concat(cond," ? ").concat(idx,"++ : ").concat(idx,"--"),namedIndex&&(varPart="".concat(idxName," = ").concat(varPart)),namedIndex&&(stepPart="".concat(idxName," = ").concat(stepPart)),[this.makeCode("".concat(varPart,"; ").concat(condPart,"; ").concat(stepPart))]}},{key:"compileArray",value:function compileArray(o){var args,body,cond,hasArgs,i,idt,known,post,pre,range,ref1,result,vars;return(known=null!=this.fromNum&&null!=this.toNum,known&&20>=_Mathabs(this.fromNum-this.toNum))?(range=function(){for(var results1=[],j=ref1=this.fromNum,ref2=this.toNum;ref1<=ref2?j<=ref2:j>=ref2;ref1<=ref2?j++:j--)results1.push(j);return results1}.apply(this),this.exclusive&&range.pop(),[this.makeCode("[".concat(range.join(", "),"]"))]):(idt=this.tab+TAB,i=o.scope.freeVariable("i",{single:!0,reserve:!1}),result=o.scope.freeVariable("results",{reserve:!1}),pre="\n".concat(idt,"var ").concat(result," = [];"),known?(o.index=i,body=fragmentsToText(this.compileNode(o))):(vars="".concat(i," = ").concat(this.fromC)+(this.toC===this.toVar?"":", ".concat(this.toC)),cond="".concat(this.fromVar," <= ").concat(this.toVar),body="var ".concat(vars,"; ").concat(cond," ? ").concat(i," <").concat(this.equals," ").concat(this.toVar," : ").concat(i," >").concat(this.equals," ").concat(this.toVar,"; ").concat(cond," ? ").concat(i,"++ : ").concat(i,"--")),post="{ ".concat(result,".push(").concat(i,"); }\n").concat(idt,"return ").concat(result,";\n").concat(o.indent),hasArgs=function(node){return null==node?void 0:node.contains(isLiteralArguments)},(hasArgs(this.from)||hasArgs(this.to))&&(args=", arguments"),[this.makeCode("(function() {".concat(pre,"\n").concat(idt,"for (").concat(body,")").concat(post,"}).apply(this").concat(null==args?"":args,")"))])}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{from:null==(ref1=null==(ref2=this.from)?void 0:ref2.ast(o))?null:ref1,to:null==(ref3=null==(ref4=this.to)?void 0:ref4.ast(o))?null:ref3,exclusive:this.exclusive}}}]),Range}(Base);return Range.prototype.children=["from","to"],Range}.call(this),exports.Slice=Slice=function(){var Slice=function(_Base25){function Slice(range1){var _this42;return _classCallCheck(this,Slice),_this42=_super47.call(this),_this42.range=range1,_this42}_inherits(Slice,_Base25);var _super47=_createSuper(Slice);return _createClass(Slice,[{key:"compileNode",value:function compileNode(o){var _this$range=this.range,compiled,compiledText,from,fromCompiled,to,toStr;return to=_this$range.to,from=_this$range.from,(null==from?void 0:from.shouldCache())&&(from=new Value(new Parens(from))),(null==to?void 0:to.shouldCache())&&(to=new Value(new Parens(to))),fromCompiled=(null==from?void 0:from.compileToFragments(o,LEVEL_PAREN))||[this.makeCode("0")],to&&(compiled=to.compileToFragments(o,LEVEL_PAREN),compiledText=fragmentsToText(compiled),(this.range.exclusive||-1!=+compiledText)&&(toStr=", "+(this.range.exclusive?compiledText:to.isNumber()?"".concat(+compiledText+1):(compiled=to.compileToFragments(o,LEVEL_ACCESS),"+".concat(fragmentsToText(compiled)," + 1 || 9e9"))))),[this.makeCode(".slice(".concat(fragmentsToText(fromCompiled)).concat(toStr||"",")"))]}},{key:"astNode",value:function astNode(o){return this.range.ast(o)}}]),Slice}(Base);return Slice.prototype.children=["range"],Slice}.call(this),exports.Obj=Obj=function(){var Obj=function(_Base26){function Obj(props){var generated=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this43;return _classCallCheck(this,Obj),_this43=_super48.call(this),_this43.generated=generated,_this43.objects=_this43.properties=props||[],_this43}_inherits(Obj,_Base26);var _super48=_createSuper(Obj);return _createClass(Obj,[{key:"isAssignable",value:function isAssignable(opts){var j,len1,message,prop,ref1,ref2;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],message=isUnassignable(prop.unwrapAll().value),message&&prop.error(message),prop instanceof Assign&&"object"===prop.context&&!((null==(ref2=prop.value)?void 0:ref2.base)instanceof Arr)&&(prop=prop.value),!prop.isAssignable(opts))return!1;return!0}},{key:"shouldCache",value:function shouldCache(){return!this.isAssignable()}},{key:"hasSplat",value:function hasSplat(){var j,len1,prop,ref1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],prop instanceof Splat)return!0;return!1}},{key:"reorderProperties",value:function reorderProperties(){var props,splatProp,splatProps;return props=this.properties,splatProps=this.getAndCheckSplatProps(),splatProp=props.splice(splatProps[0],1),this.objects=this.properties=[].concat(props,splatProp)}},{key:"compileNode",value:function compileNode(o){var answer,i,idt,indent,isCompact,j,join,k,key,l,lastNode,len1,len2,len3,node,prop,props,ref1,value;if(this.hasSplat()&&this.lhs&&this.reorderProperties(),props=this.properties,this.generated)for(j=0,len1=props.length;j<len1;j++)node=props[j],node instanceof Value&&node.error("cannot have an implicit value in an implicit object");for(idt=o.indent+=TAB,lastNode=this.lastNode(this.properties),this.propagateLhs(),isCompact=!0,ref1=this.properties,(k=0,len2=ref1.length);k<len2;k++)prop=ref1[k],prop instanceof Assign&&"object"===prop.context&&(isCompact=!1);for(answer=[],answer.push(this.makeCode(isCompact?"":"\n")),(i=l=0,len3=props.length);l<len3;i=++l){var _answer;if(prop=props[i],join=i===props.length-1?"":isCompact?", ":prop===lastNode?"\n":",\n",indent=isCompact?"":idt,key=prop instanceof Assign&&"object"===prop.context?prop.variable:prop instanceof Assign?(this.lhs?void 0:prop.operatorToken.error("unexpected ".concat(prop.operatorToken.value)),prop.variable):prop,key instanceof Value&&key.hasProperties()&&(("object"===prop.context||!key["this"])&&key.error("invalid object key"),key=key.properties[0].name,prop=new Assign(key,prop,"object")),key===prop)if(prop.shouldCache()){var _prop$base$cache=prop.base.cache(o),_prop$base$cache2=_slicedToArray(_prop$base$cache,2);key=_prop$base$cache2[0],value=_prop$base$cache2[1],key instanceof IdentifierLiteral&&(key=new PropertyName(key.value)),prop=new Assign(key,value,"object")}else if(!(key instanceof Value&&key.base instanceof ComputedPropertyName))"function"==typeof prop.bareLiteral&&prop.bareLiteral(IdentifierLiteral)||prop instanceof Splat||(prop=new Assign(prop,prop,"object"));else if(prop.base.value.shouldCache()){var _prop$base$value$cach=prop.base.value.cache(o),_prop$base$value$cach2=_slicedToArray(_prop$base$value$cach,2);key=_prop$base$value$cach2[0],value=_prop$base$value$cach2[1],key instanceof IdentifierLiteral&&(key=new ComputedPropertyName(key.value)),prop=new Assign(key,value,"object")}else prop=new Assign(key,prop.base.value,"object");indent&&answer.push(this.makeCode(indent)),(_answer=answer).push.apply(_answer,_toConsumableArray(prop.compileToFragments(o,LEVEL_TOP))),join&&answer.push(this.makeCode(join))}return answer.push(this.makeCode(isCompact?"":"\n".concat(this.tab))),answer=this.wrapInBraces(answer),this.front?this.wrapInParentheses(answer):answer}},{key:"getAndCheckSplatProps",value:function getAndCheckSplatProps(){var i,prop,props,splatProps;if(this.hasSplat()&&this.lhs)return props=this.properties,splatProps=function(){var j,len1,results1;for(results1=[],i=j=0,len1=props.length;j<len1;i=++j)prop=props[i],prop instanceof Splat&&results1.push(i);return results1}(),1<(null==splatProps?void 0:splatProps.length)&&props[splatProps[1]].error("multiple spread elements are disallowed"),splatProps}},{key:"assigns",value:function assigns(name){var j,len1,prop,ref1;for(ref1=this.properties,j=0,len1=ref1.length;j<len1;j++)if(prop=ref1[j],prop.assigns(name))return!0;return!1}},{key:"eachName",value:function eachName(iterator){var j,len1,prop,ref1,results1;for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)prop=ref1[j],prop instanceof Assign&&"object"===prop.context&&(prop=prop.value),prop=prop.unwrapAll(),null==prop.eachName?results1.push(void 0):results1.push(prop.eachName(iterator));return results1}},{key:"expandProperty",value:function expandProperty(property){var context,key,operatorToken,variable;return variable=property.variable,context=property.context,operatorToken=property.operatorToken,key=property instanceof Assign&&"object"===context?variable:property instanceof Assign?(this.lhs?void 0:operatorToken.error("unexpected ".concat(operatorToken.value)),variable):property,key instanceof Value&&key.hasProperties()?("object"!==context&&key["this"]||key.error("invalid object key"),property instanceof Assign?new ObjectProperty({fromAssign:property}):new ObjectProperty({key:property})):key===property?property instanceof Splat?property:new ObjectProperty({key:property}):new ObjectProperty({fromAssign:property})}},{key:"expandProperties",value:function expandProperties(){var j,len1,property,ref1,results1;for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)property=ref1[j],results1.push(this.expandProperty(property));return results1}},{key:"propagateLhs",value:function propagateLhs(setLhs){var j,len1,property,ref1,results1,unwrappedValue,value;if(setLhs&&(this.lhs=!0),!!this.lhs){for(ref1=this.properties,results1=[],(j=0,len1=ref1.length);j<len1;j++)if(property=ref1[j],property instanceof Assign&&"object"===property.context){var _property2=property;value=_property2.value,unwrappedValue=value.unwrapAll(),unwrappedValue instanceof Arr||unwrappedValue instanceof Obj?results1.push(unwrappedValue.propagateLhs(!0)):unwrappedValue instanceof Assign?results1.push(unwrappedValue.nestedLhs=!0):results1.push(void 0)}else property instanceof Assign?results1.push(property.nestedLhs=!0):property instanceof Splat?results1.push(property.propagateLhs(!0)):results1.push(void 0);return results1}}},{key:"astNode",value:function astNode(o){return this.getAndCheckSplatProps(),_get(_getPrototypeOf(Obj.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.lhs?"ObjectPattern":"ObjectExpression"}},{key:"astProperties",value:function astProperties(o){var property;return{implicit:!!this.generated,properties:function(){var j,len1,ref1,results1;for(ref1=this.expandProperties(),results1=[],(j=0,len1=ref1.length);j<len1;j++)property=ref1[j],results1.push(property.ast(o));return results1}.call(this)}}}]),Obj}(Base);return Obj.prototype.children=["properties"],Obj}.call(this),exports.ObjectProperty=ObjectProperty=function(_Base27){function ObjectProperty(_ref40){var key=_ref40.key,fromAssign=_ref40.fromAssign,_this44;_classCallCheck(this,ObjectProperty);var context,value;return _this44=_super49.call(this),fromAssign?(_this44.key=fromAssign.variable,value=fromAssign.value,context=fromAssign.context,"object"===context?_this44.value=value:(_this44.value=fromAssign,_this44.shorthand=!0),_this44.locationData=fromAssign.locationData):(_this44.key=key,_this44.shorthand=!0,_this44.locationData=key.locationData),_this44}_inherits(ObjectProperty,_Base27);var _super49=_createSuper(ObjectProperty);return _createClass(ObjectProperty,[{key:"astProperties",value:function astProperties(o){var isComputedPropertyName,keyAst,ref1,ref2;return isComputedPropertyName=this.key instanceof Value&&this.key.base instanceof ComputedPropertyName||this.key.unwrap()instanceof StringWithInterpolations,keyAst=this.key.ast(o,LEVEL_LIST),{key:(null==keyAst?void 0:keyAst.declaration)?Object.assign({},keyAst,{declaration:!1}):keyAst,value:null==(ref1=null==(ref2=this.value)?void 0:ref2.ast(o,LEVEL_LIST))?keyAst:ref1,shorthand:!!this.shorthand,computed:!!isComputedPropertyName,method:!1}}}]),ObjectProperty}(Base),exports.Arr=Arr=function(){var Arr=function(_Base28){function Arr(objs){var lhs1=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this45;return _classCallCheck(this,Arr),_this45=_super50.call(this),_this45.lhs=lhs1,_this45.objects=objs||[],_this45.propagateLhs(),_this45}_inherits(Arr,_Base28);var _super50=_createSuper(Arr);return _createClass(Arr,[{key:"hasElision",value:function hasElision(){var j,len1,obj,ref1;for(ref1=this.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],obj instanceof Elision)return!0;return!1}},{key:"isAssignable",value:function isAssignable(opts){var _ref41=null==opts?{}:opts,allowEmptyArray,allowExpansion,allowNontrailingSplat,i,j,len1,obj,ref1;allowExpansion=_ref41.allowExpansion,allowNontrailingSplat=_ref41.allowNontrailingSplat;var _ref41$allowEmptyArra=_ref41.allowEmptyArray;if(allowEmptyArray=void 0!==_ref41$allowEmptyArra&&_ref41$allowEmptyArra,!this.objects.length)return allowEmptyArray;for(ref1=this.objects,i=j=0,len1=ref1.length;j<len1;i=++j){if(obj=ref1[i],!allowNontrailingSplat&&obj instanceof Splat&&i+1!==this.objects.length)return!1;if(!(allowExpansion&&obj instanceof Expansion||obj.isAssignable(opts)&&(!obj.isAtomic||obj.isAtomic())))return!1}return!0}},{key:"shouldCache",value:function shouldCache(){return!this.isAssignable()}},{key:"compileNode",value:function compileNode(o){var answer,compiledObjs,fragment,fragmentIndex,fragmentIsElision,fragments,includesLineCommentsOnNonFirstElement,index,j,k,l,len1,len2,len3,len4,len5,obj,objIndex,olen,p,passedElision,q,ref1,ref2,unwrappedObj;if(!this.objects.length)return[this.makeCode("[]")];for(o.indent+=TAB,fragmentIsElision=function(_ref42){var _ref43=_slicedToArray(_ref42,1),fragment=_ref43[0];return"Elision"===fragment.type&&","===fragment.code.trim()},passedElision=!1,answer=[],ref1=this.objects,(objIndex=j=0,len1=ref1.length);j<len1;objIndex=++j)obj=ref1[objIndex],unwrappedObj=obj.unwrapAll(),unwrappedObj.comments&&0===unwrappedObj.comments.filter(function(comment){return!comment.here}).length&&(unwrappedObj.includeCommentFragments=YES);for(compiledObjs=function(){var k,len2,ref2,results1;for(ref2=this.objects,results1=[],(k=0,len2=ref2.length);k<len2;k++)obj=ref2[k],results1.push(obj.compileToFragments(o,LEVEL_LIST));return results1}.call(this),olen=compiledObjs.length,includesLineCommentsOnNonFirstElement=!1,(index=k=0,len2=compiledObjs.length);k<len2;index=++k){var _answer2;for(fragments=compiledObjs[index],l=0,len3=fragments.length;l<len3;l++)fragment=fragments[l],fragment.isHereComment?fragment.code=fragment.code.trim():0!==index&&!1===includesLineCommentsOnNonFirstElement&&hasLineComments(fragment)&&(includesLineCommentsOnNonFirstElement=!0);0!==index&&passedElision&&(!fragmentIsElision(fragments)||index===olen-1)&&answer.push(this.makeCode(", ")),passedElision=passedElision||!fragmentIsElision(fragments),(_answer2=answer).push.apply(_answer2,_toConsumableArray(fragments))}if(includesLineCommentsOnNonFirstElement||0<=indexOf.call(fragmentsToText(answer),"\n")){for(fragmentIndex=p=0,len4=answer.length;p<len4;fragmentIndex=++p)fragment=answer[fragmentIndex],fragment.isHereComment?fragment.code="".concat(multident(fragment.code,o.indent,!1),"\n").concat(o.indent):", "===fragment.code&&(null==fragment||!fragment.isElision)&&"StringLiteral"!==(ref2=fragment.type)&&"StringWithInterpolations"!==ref2&&(fragment.code=",\n".concat(o.indent));answer.unshift(this.makeCode("[\n".concat(o.indent))),answer.push(this.makeCode("\n".concat(this.tab,"]")))}else{for(q=0,len5=answer.length;q<len5;q++)fragment=answer[q],fragment.isHereComment&&(fragment.code="".concat(fragment.code," "));answer.unshift(this.makeCode("[")),answer.push(this.makeCode("]"))}return answer}},{key:"assigns",value:function assigns(name){var j,len1,obj,ref1;for(ref1=this.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],obj.assigns(name))return!0;return!1}},{key:"eachName",value:function eachName(iterator){var j,len1,obj,ref1,results1;for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)obj=ref1[j],obj=obj.unwrapAll(),results1.push(obj.eachName(iterator));return results1}},{key:"propagateLhs",value:function propagateLhs(setLhs){var j,len1,object,ref1,results1,unwrappedObject;if(setLhs&&(this.lhs=!0),!!this.lhs){for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)object=ref1[j],(object instanceof Splat||object instanceof Expansion)&&(object.lhs=!0),unwrappedObject=object.unwrapAll(),unwrappedObject instanceof Arr||unwrappedObject instanceof Obj?results1.push(unwrappedObject.propagateLhs(!0)):unwrappedObject instanceof Assign?results1.push(unwrappedObject.nestedLhs=!0):results1.push(void 0);return results1}}},{key:"astType",value:function astType(){return this.lhs?"ArrayPattern":"ArrayExpression"}},{key:"astProperties",value:function astProperties(o){var object;return{elements:function(){var j,len1,ref1,results1;for(ref1=this.objects,results1=[],(j=0,len1=ref1.length);j<len1;j++)object=ref1[j],results1.push(object.ast(o,LEVEL_LIST));return results1}.call(this)}}}]),Arr}(Base);return Arr.prototype.children=["objects"],Arr}.call(this),exports.Class=Class=function(){var Class=function(_Base29){function Class(variable1,parent1,body1){var _this46;return _classCallCheck(this,Class),_this46=_super51.call(this),_this46.variable=variable1,_this46.parent=parent1,_this46.body=body1,null==_this46.body&&(_this46.body=new Block,_this46.hasGeneratedBody=!0),_this46}_inherits(Class,_Base29);var _super51=_createSuper(Class);return _createClass(Class,[{key:"compileNode",value:function compileNode(o){var executableBody,node,parentName;if(this.name=this.determineName(),executableBody=this.walkBody(o),this.parent instanceof Value&&!this.parent.hasProperties()&&(parentName=this.parent.base.value),this.hasNameClash=null!=this.name&&this.name===parentName,node=this,executableBody||this.hasNameClash?node=new ExecutableClassBody(node,executableBody):null==this.name&&o.level===LEVEL_TOP&&(node=new Parens(node)),this.boundMethods.length&&this.parent&&(null==this.variable&&(this.variable=new IdentifierLiteral(o.scope.freeVariable("_class"))),null==this.variableRef)){var _this$variable$cache=this.variable.cache(o),_this$variable$cache2=_slicedToArray(_this$variable$cache,2);this.variable=_this$variable$cache2[0],this.variableRef=_this$variable$cache2[1]}this.variable&&(node=new Assign(this.variable,node,null,{moduleDeclaration:this.moduleDeclaration})),this.compileNode=this.compileClassDeclaration;try{return node.compileToFragments(o)}finally{delete this.compileNode}}},{key:"compileClassDeclaration",value:function compileClassDeclaration(o){var ref1,ref2,result;if((this.externalCtor||this.boundMethods.length)&&null==this.ctor&&(this.ctor=this.makeDefaultConstructor()),null!=(ref1=this.ctor)&&(ref1.noReturn=!0),this.boundMethods.length&&this.proxyBoundMethods(),o.indent+=TAB,result=[],result.push(this.makeCode("class ")),this.name&&result.push(this.makeCode(this.name)),null!=(null==(ref2=this.variable)?void 0:ref2.comments)&&this.compileCommentFragments(o,this.variable,result),this.name&&result.push(this.makeCode(" ")),this.parent){var _result;(_result=result).push.apply(_result,[this.makeCode("extends ")].concat(_toConsumableArray(this.parent.compileToFragments(o)),[this.makeCode(" ")]))}if(result.push(this.makeCode("{")),!this.body.isEmpty()){var _result2;this.body.spaced=!0,result.push(this.makeCode("\n")),(_result2=result).push.apply(_result2,_toConsumableArray(this.body.compileToFragments(o,LEVEL_TOP))),result.push(this.makeCode("\n".concat(this.tab)))}return result.push(this.makeCode("}")),result}},{key:"determineName",value:function determineName(){var _slice1$call13,_slice1$call14,message,name,node,ref1,tail;return this.variable?(ref1=this.variable.properties,_slice1$call13=slice1.call(ref1,-1),_slice1$call14=_slicedToArray(_slice1$call13,1),tail=_slice1$call14[0],_slice1$call13,node=tail?tail instanceof Access&&tail.name:this.variable.base,!(node instanceof IdentifierLiteral||node instanceof PropertyName))?null:(name=node.value,tail||(message=isUnassignable(name),message&&this.variable.error(message)),0<=indexOf.call(JS_FORBIDDEN,name)?"_".concat(name):name):null}},{key:"walkBody",value:function walkBody(o){var assign,end,executableBody,expression,expressions,exprs,i,initializer,initializerExpression,j,k,len1,len2,method,properties,pushSlice,ref1,start;for(this.ctor=null,this.boundMethods=[],executableBody=null,initializer=[],expressions=this.body.expressions,i=0,ref1=expressions.slice(),(j=0,len1=ref1.length);j<len1;j++)if(expression=ref1[j],expression instanceof Value&&expression.isObject(!0)){for(properties=expression.base.properties,exprs=[],end=0,start=0,pushSlice=function(){if(end>start)return exprs.push(new Value(new Obj(properties.slice(start,end),!0)))};assign=properties[end];)(initializerExpression=this.addInitializerExpression(assign,o))&&(pushSlice(),exprs.push(initializerExpression),initializer.push(initializerExpression),start=end+1),end++;pushSlice(),splice.apply(expressions,[i,i-i+1].concat(exprs)),exprs,i+=exprs.length}else(initializerExpression=this.addInitializerExpression(expression,o))&&(initializer.push(initializerExpression),expressions[i]=initializerExpression),i+=1;for(k=0,len2=initializer.length;k<len2;k++)method=initializer[k],method instanceof Code&&(method.ctor?(this.ctor&&method.error("Cannot define more than one constructor in a class"),this.ctor=method):method.isStatic&&method.bound?method.context=this.name:method.bound&&this.boundMethods.push(method));return o.compiling?initializer.length===expressions.length?void 0:(this.body.expressions=function(){var l,len3,results1;for(results1=[],l=0,len3=initializer.length;l<len3;l++)expression=initializer[l],results1.push(expression.hoist());return results1}(),new Block(expressions)):void 0}},{key:"addInitializerExpression",value:function addInitializerExpression(node,o){return node.unwrapAll()instanceof PassthroughLiteral?node:this.validInitializerMethod(node)?this.addInitializerMethod(node):!o.compiling&&this.validClassProperty(node)?this.addClassProperty(node):!o.compiling&&this.validClassPrototypeProperty(node)?this.addClassPrototypeProperty(node):null}},{key:"validInitializerMethod",value:function validInitializerMethod(node){return!!(node instanceof Assign&&node.value instanceof Code)&&(!("object"!==node.context||node.variable.hasProperties())||node.variable.looksStatic(this.name)&&(this.name||!node.value.bound))}},{key:"addInitializerMethod",value:function addInitializerMethod(assign){var isConstructor,method,methodName,operatorToken,variable;return variable=assign.variable,method=assign.value,operatorToken=assign.operatorToken,method.isMethod=!0,method.isStatic=variable.looksStatic(this.name),method.isStatic?method.name=variable.properties[0]:(methodName=variable.base,method.name=new(methodName.shouldCache()?Index:Access)(methodName),method.name.updateLocationDataIfMissing(methodName.locationData),isConstructor=methodName instanceof StringLiteral?"constructor"===methodName.originalValue:"constructor"===methodName.value,isConstructor&&(method.ctor=this.parent?"derived":"base"),method.bound&&method.ctor&&method.error("Cannot define a constructor as a bound (fat arrow) function")),method.operatorToken=operatorToken,method}},{key:"validClassProperty",value:function validClassProperty(node){return!!(node instanceof Assign)&&node.variable.looksStatic(this.name)}},{key:"addClassProperty",value:function addClassProperty(assign){var operatorToken,staticClassName,value,variable;variable=assign.variable,value=assign.value,operatorToken=assign.operatorToken;var _variable$looksStatic=variable.looksStatic(this.name);return staticClassName=_variable$looksStatic.staticClassName,new ClassProperty({name:variable.properties[0],isStatic:!0,staticClassName:staticClassName,value:value,operatorToken:operatorToken}).withLocationDataFrom(assign)}},{key:"validClassPrototypeProperty",value:function validClassPrototypeProperty(node){return!!(node instanceof Assign)&&"object"===node.context&&!node.variable.hasProperties()}},{key:"addClassPrototypeProperty",value:function addClassPrototypeProperty(assign){var value,variable;return variable=assign.variable,value=assign.value,new ClassPrototypeProperty({name:variable.base,value:value}).withLocationDataFrom(assign)}},{key:"makeDefaultConstructor",value:function makeDefaultConstructor(){var applyArgs,applyCtor,ctor;return ctor=this.addInitializerMethod(new Assign(new Value(new PropertyName("constructor")),new Code())),this.body.unshift(ctor),this.parent&&ctor.body.push(new SuperCall(new Super(),[new Splat(new IdentifierLiteral("arguments"))])),this.externalCtor&&(applyCtor=new Value(this.externalCtor,[new Access(new PropertyName("apply"))]),applyArgs=[new ThisLiteral,new IdentifierLiteral("arguments")],ctor.body.push(new Call(applyCtor,applyArgs)),ctor.body.makeReturn()),ctor}},{key:"proxyBoundMethods",value:function proxyBoundMethods(){var method,name;return this.ctor.thisAssignments=function(){var j,len1,ref1,results1;for(ref1=this.boundMethods,results1=[],(j=0,len1=ref1.length);j<len1;j++)method=ref1[j],this.parent&&(method.classVariable=this.variableRef),name=new Value(new ThisLiteral(),[method.name]),results1.push(new Assign(name,new Call(new Value(name,[new Access(new PropertyName("bind"))]),[new ThisLiteral])));return results1}.call(this),null}},{key:"declareName",value:function declareName(o){var alreadyDeclared,name,ref1;if((name=null==(ref1=this.variable)?void 0:ref1.unwrap())instanceof IdentifierLiteral)return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared}},{key:"isStatementAst",value:function isStatementAst(){return!0}},{key:"astNode",value:function astNode(o){var argumentsNode,jumpNode,ref1;return(jumpNode=this.body.jumps())&&jumpNode.error("Class bodies cannot contain pure statements"),(argumentsNode=this.body.contains(isLiteralArguments))&&argumentsNode.error("Class bodies shouldn't reference arguments"),this.declareName(o),this.name=this.determineName(),this.body.isClassBody=!0,this.hasGeneratedBody&&(this.body.locationData=zeroWidthLocationDataFromEndLocation(this.locationData)),this.walkBody(o),sniffDirectives(this.body.expressions),null!=(ref1=this.ctor)&&(ref1.noReturn=!0),_get(_getPrototypeOf(Class.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(o){return o.level===LEVEL_TOP?"ClassDeclaration":"ClassExpression"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{id:null==(ref1=null==(ref2=this.variable)?void 0:ref2.ast(o))?null:ref1,superClass:null==(ref3=null==(ref4=this.parent)?void 0:ref4.ast(o,LEVEL_PAREN))?null:ref3,body:this.body.ast(o,LEVEL_TOP)}}}]),Class}(Base);return Class.prototype.children=["variable","parent","body"],Class}.call(this),exports.ExecutableClassBody=ExecutableClassBody=function(){var ExecutableClassBody=function(_Base30){function ExecutableClassBody(_class){var body1=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Block,_this47;return _classCallCheck(this,ExecutableClassBody),_this47=_super52.call(this),_this47["class"]=_class,_this47.body=body1,_this47}_inherits(ExecutableClassBody,_Base30);var _super52=_createSuper(ExecutableClassBody);return _createClass(ExecutableClassBody,[{key:"compileNode",value:function compileNode(o){var _this$body$expression,args,argumentsNode,directives,externalCtor,ident,jumpNode,klass,params,parent,ref1,wrapper;return(jumpNode=this.body.jumps())&&jumpNode.error("Class bodies cannot contain pure statements"),(argumentsNode=this.body.contains(isLiteralArguments))&&argumentsNode.error("Class bodies shouldn't reference arguments"),params=[],args=[new ThisLiteral],wrapper=new Code(params,this.body),klass=new Parens(new Call(new Value(wrapper,[new Access(new PropertyName("call"))]),args)),this.body.spaced=!0,o.classScope=wrapper.makeScope(o.scope),this.name=null==(ref1=this["class"].name)?o.classScope.freeVariable(this.defaultClassVariableName):ref1,ident=new IdentifierLiteral(this.name),directives=this.walkBody(),this.setContext(),this["class"].hasNameClash&&(parent=new IdentifierLiteral(o.classScope.freeVariable("superClass")),wrapper.params.push(new Param(parent)),args.push(this["class"].parent),this["class"].parent=parent),this.externalCtor&&(externalCtor=new IdentifierLiteral(o.classScope.freeVariable("ctor",{reserve:!1})),this["class"].externalCtor=externalCtor,this.externalCtor.variable.base=externalCtor),this.name===this["class"].name?this.body.expressions.unshift(this["class"]):this.body.expressions.unshift(new Assign(new IdentifierLiteral(this.name),this["class"])),(_this$body$expression=this.body.expressions).unshift.apply(_this$body$expression,_toConsumableArray(directives)),this.body.push(ident),klass.compileToFragments(o)}},{key:"walkBody",value:function walkBody(){var _this48=this,directives,expr,index;for(directives=[],index=0;(expr=this.body.expressions[index])&&!!(expr instanceof Value&&expr.isString());)if(expr.hoisted)index++;else{var _directives;(_directives=directives).push.apply(_directives,_toConsumableArray(this.body.expressions.splice(index,1)))}return this.traverseChildren(!1,function(child){var cont,i,j,len1,node,ref1;if(child instanceof Class||child instanceof HoistTarget)return!1;if(cont=!0,child instanceof Block){for(ref1=child.expressions,i=j=0,len1=ref1.length;j<len1;i=++j)node=ref1[i],node instanceof Value&&node.isObject(!0)?(cont=!1,child.expressions[i]=_this48.addProperties(node.base.properties)):node instanceof Assign&&node.variable.looksStatic(_this48.name)&&(node.value.isStatic=!0);child.expressions=flatten(child.expressions)}return cont}),directives}},{key:"setContext",value:function setContext(){var _this49=this;return this.body.traverseChildren(!1,function(node){return node instanceof ThisLiteral?node.value=_this49.name:node instanceof Code&&node.bound&&(node.isStatic||!node.name)?node.context=_this49.name:void 0})}},{key:"addProperties",value:function addProperties(assigns){var assign,base,name,prototype,result,value,variable;return result=function(){var j,len1,results1;for(results1=[],j=0,len1=assigns.length;j<len1;j++)assign=assigns[j],variable=assign.variable,base=null==variable?void 0:variable.base,value=assign.value,delete assign.context,"constructor"===base.value?(value instanceof Code&&base.error("constructors must be defined at the top level of a class body"),assign=this.externalCtor=new Assign(new Value(),value)):assign.variable["this"]?assign.value instanceof Code&&(assign.value.isStatic=!0):(name=base instanceof ComputedPropertyName?new Index(base.value):new(base.shouldCache()?Index:Access)(base),prototype=new Access(new PropertyName("prototype")),variable=new Value(new ThisLiteral(),[prototype,name]),assign.variable=variable),results1.push(assign);return results1}.call(this),compact(result)}}]),ExecutableClassBody}(Base);return ExecutableClassBody.prototype.children=["class","body"],ExecutableClassBody.prototype.defaultClassVariableName="_Class",ExecutableClassBody}.call(this),exports.ClassProperty=ClassProperty=function(){var ClassProperty=function(_Base31){function ClassProperty(_ref44){var name1=_ref44.name,isStatic=_ref44.isStatic,staticClassName1=_ref44.staticClassName,value1=_ref44.value,operatorToken1=_ref44.operatorToken,_this50;return _classCallCheck(this,ClassProperty),_this50=_super53.call(this),_this50.name=name1,_this50.isStatic=isStatic,_this50.staticClassName=staticClassName1,_this50.value=value1,_this50.operatorToken=operatorToken1,_this50}_inherits(ClassProperty,_Base31);var _super53=_createSuper(ClassProperty);return _createClass(ClassProperty,[{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{key:this.name.ast(o,LEVEL_LIST),value:this.value.ast(o,LEVEL_LIST),static:!!this.isStatic,computed:this.name instanceof Index||this.name instanceof ComputedPropertyName,operator:null==(ref1=null==(ref2=this.operatorToken)?void 0:ref2.value)?"=":ref1,staticClassName:null==(ref3=null==(ref4=this.staticClassName)?void 0:ref4.ast(o))?null:ref3}}}]),ClassProperty}(Base);return ClassProperty.prototype.children=["name","value","staticClassName"],ClassProperty.prototype.isStatement=YES,ClassProperty}.call(this),exports.ClassPrototypeProperty=ClassPrototypeProperty=function(){var ClassPrototypeProperty=function(_Base32){function ClassPrototypeProperty(_ref45){var name1=_ref45.name,value1=_ref45.value,_this51;return _classCallCheck(this,ClassPrototypeProperty),_this51=_super54.call(this),_this51.name=name1,_this51.value=value1,_this51}_inherits(ClassPrototypeProperty,_Base32);var _super54=_createSuper(ClassPrototypeProperty);return _createClass(ClassPrototypeProperty,[{key:"astProperties",value:function astProperties(o){return{key:this.name.ast(o,LEVEL_LIST),value:this.value.ast(o,LEVEL_LIST),computed:this.name instanceof ComputedPropertyName||this.name instanceof StringWithInterpolations}}}]),ClassPrototypeProperty}(Base);return ClassPrototypeProperty.prototype.children=["name","value"],ClassPrototypeProperty.prototype.isStatement=YES,ClassPrototypeProperty}.call(this),exports.ModuleDeclaration=ModuleDeclaration=function(){var ModuleDeclaration=function(_Base33){function ModuleDeclaration(clause,source1,assertions){var _this52;return _classCallCheck(this,ModuleDeclaration),_this52=_super55.call(this),_this52.clause=clause,_this52.source=source1,_this52.assertions=assertions,_this52.checkSource(),_this52}_inherits(ModuleDeclaration,_Base33);var _super55=_createSuper(ModuleDeclaration);return _createClass(ModuleDeclaration,[{key:"checkSource",value:function checkSource(){if(null!=this.source&&this.source instanceof StringWithInterpolations)return this.source.error("the name of the module to be imported from must be an uninterpolated string")}},{key:"checkScope",value:function checkScope(o,moduleDeclarationType){if(0!==o.indent.length)return this.error("".concat(moduleDeclarationType," statements must be at top-level scope"))}},{key:"astAssertions",value:function astAssertions(o){var ref1;return null==(null==(ref1=this.assertions)?void 0:ref1.properties)?[]:this.assertions.properties.map(function(assertion){var _assertion$ast=assertion.ast(o),end,left,loc,right,start;return start=_assertion$ast.start,end=_assertion$ast.end,loc=_assertion$ast.loc,left=_assertion$ast.left,right=_assertion$ast.right,{type:"ImportAttribute",start:start,end:end,loc:loc,key:left,value:right}})}}]),ModuleDeclaration}(Base);return ModuleDeclaration.prototype.children=["clause","source","assertions"],ModuleDeclaration.prototype.isStatement=YES,ModuleDeclaration.prototype.jumps=THIS,ModuleDeclaration.prototype.makeReturn=THIS,ModuleDeclaration}.call(this),exports.ImportDeclaration=ImportDeclaration=function(_ModuleDeclaration){function ImportDeclaration(){return _classCallCheck(this,ImportDeclaration),_super56.apply(this,arguments)}_inherits(ImportDeclaration,_ModuleDeclaration);var _super56=_createSuper(ImportDeclaration);return _createClass(ImportDeclaration,[{key:"compileNode",value:function compileNode(o){var code,ref1;if(this.checkScope(o,"import"),o.importedSymbols=[],code=[],code.push(this.makeCode("".concat(this.tab,"import "))),null!=this.clause){var _code;(_code=code).push.apply(_code,_toConsumableArray(this.clause.compileNode(o)))}if(null!=(null==(ref1=this.source)?void 0:ref1.value)&&(null!==this.clause&&code.push(this.makeCode(" from ")),code.push(this.makeCode(this.source.value)),null!=this.assertions)){var _code2;code.push(this.makeCode(" assert ")),(_code2=code).push.apply(_code2,_toConsumableArray(this.assertions.compileToFragments(o)))}return code.push(this.makeCode(";")),code}},{key:"astNode",value:function astNode(o){return o.importedSymbols=[],_get(_getPrototypeOf(ImportDeclaration.prototype),"astNode",this).call(this,o)}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ret;return ret={specifiers:null==(ref1=null==(ref2=this.clause)?void 0:ref2.ast(o))?[]:ref1,source:this.source.ast(o),assertions:this.astAssertions(o)},this.clause&&(ret.importKind="value"),ret}}]),ImportDeclaration}(ModuleDeclaration),exports.ImportClause=ImportClause=function(){var ImportClause=function(_Base34){function ImportClause(defaultBinding,namedImports){var _this53;return _classCallCheck(this,ImportClause),_this53=_super57.call(this),_this53.defaultBinding=defaultBinding,_this53.namedImports=namedImports,_this53}_inherits(ImportClause,_Base34);var _super57=_createSuper(ImportClause);return _createClass(ImportClause,[{key:"compileNode",value:function compileNode(o){var code;if(code=[],null!=this.defaultBinding){var _code3;(_code3=code).push.apply(_code3,_toConsumableArray(this.defaultBinding.compileNode(o))),null!=this.namedImports&&code.push(this.makeCode(", "))}if(null!=this.namedImports){var _code4;(_code4=code).push.apply(_code4,_toConsumableArray(this.namedImports.compileNode(o)))}return code}},{key:"astNode",value:function astNode(o){var ref1,ref2;return compact(flatten([null==(ref1=this.defaultBinding)?void 0:ref1.ast(o),null==(ref2=this.namedImports)?void 0:ref2.ast(o)]))}}]),ImportClause}(Base);return ImportClause.prototype.children=["defaultBinding","namedImports"],ImportClause}.call(this),exports.ExportDeclaration=ExportDeclaration=function(_ModuleDeclaration2){function ExportDeclaration(){return _classCallCheck(this,ExportDeclaration),_super58.apply(this,arguments)}_inherits(ExportDeclaration,_ModuleDeclaration2);var _super58=_createSuper(ExportDeclaration);return _createClass(ExportDeclaration,[{key:"compileNode",value:function compileNode(o){var code,ref1;if(this.checkScope(o,"export"),this.checkForAnonymousClassExport(),code=[],code.push(this.makeCode("".concat(this.tab,"export "))),this instanceof ExportDefaultDeclaration&&code.push(this.makeCode("default ")),!(this instanceof ExportDefaultDeclaration)&&(this.clause instanceof Assign||this.clause instanceof Class)&&(code.push(this.makeCode("var ")),this.clause.moduleDeclaration="export"),code=null!=this.clause.body&&this.clause.body instanceof Block?code.concat(this.clause.compileToFragments(o,LEVEL_TOP)):code.concat(this.clause.compileNode(o)),null!=(null==(ref1=this.source)?void 0:ref1.value)&&(code.push(this.makeCode(" from ".concat(this.source.value))),null!=this.assertions)){var _code5;code.push(this.makeCode(" assert ")),(_code5=code).push.apply(_code5,_toConsumableArray(this.assertions.compileToFragments(o)))}return code.push(this.makeCode(";")),code}},{key:"checkForAnonymousClassExport",value:function checkForAnonymousClassExport(){if(!(this instanceof ExportDefaultDeclaration)&&this.clause instanceof Class&&!this.clause.variable)return this.clause.error("anonymous classes cannot be exported")}},{key:"astNode",value:function astNode(o){return this.checkForAnonymousClassExport(),_get(_getPrototypeOf(ExportDeclaration.prototype),"astNode",this).call(this,o)}}]),ExportDeclaration}(ModuleDeclaration),exports.ExportNamedDeclaration=ExportNamedDeclaration=function(_ExportDeclaration){function ExportNamedDeclaration(){return _classCallCheck(this,ExportNamedDeclaration),_super59.apply(this,arguments)}_inherits(ExportNamedDeclaration,_ExportDeclaration);var _super59=_createSuper(ExportNamedDeclaration);return _createClass(ExportNamedDeclaration,[{key:"astProperties",value:function astProperties(o){var clauseAst,ref1,ref2,ret;return ret={source:null==(ref1=null==(ref2=this.source)?void 0:ref2.ast(o))?null:ref1,assertions:this.astAssertions(o),exportKind:"value"},clauseAst=this.clause.ast(o),this.clause instanceof ExportSpecifierList?(ret.specifiers=clauseAst,ret.declaration=null):(ret.specifiers=[],ret.declaration=clauseAst),ret}}]),ExportNamedDeclaration}(ExportDeclaration),exports.ExportDefaultDeclaration=ExportDefaultDeclaration=function(_ExportDeclaration2){function ExportDefaultDeclaration(){return _classCallCheck(this,ExportDefaultDeclaration),_super60.apply(this,arguments)}_inherits(ExportDefaultDeclaration,_ExportDeclaration2);var _super60=_createSuper(ExportDefaultDeclaration);return _createClass(ExportDefaultDeclaration,[{key:"astProperties",value:function astProperties(o){return{declaration:this.clause.ast(o),assertions:this.astAssertions(o)}}}]),ExportDefaultDeclaration}(ExportDeclaration),exports.ExportAllDeclaration=ExportAllDeclaration=function(_ExportDeclaration3){function ExportAllDeclaration(){return _classCallCheck(this,ExportAllDeclaration),_super61.apply(this,arguments)}_inherits(ExportAllDeclaration,_ExportDeclaration3);var _super61=_createSuper(ExportAllDeclaration);return _createClass(ExportAllDeclaration,[{key:"astProperties",value:function astProperties(o){return{source:this.source.ast(o),assertions:this.astAssertions(o),exportKind:"value"}}}]),ExportAllDeclaration}(ExportDeclaration),exports.ModuleSpecifierList=ModuleSpecifierList=function(){var ModuleSpecifierList=function(_Base35){function ModuleSpecifierList(specifiers){var _this54;return _classCallCheck(this,ModuleSpecifierList),_this54=_super62.call(this),_this54.specifiers=specifiers,_this54}_inherits(ModuleSpecifierList,_Base35);var _super62=_createSuper(ModuleSpecifierList);return _createClass(ModuleSpecifierList,[{key:"compileNode",value:function compileNode(o){var code,compiledList,fragments,index,j,len1,specifier;if(code=[],o.indent+=TAB,compiledList=function(){var j,len1,ref1,results1;for(ref1=this.specifiers,results1=[],(j=0,len1=ref1.length);j<len1;j++)specifier=ref1[j],results1.push(specifier.compileToFragments(o,LEVEL_LIST));return results1}.call(this),0!==this.specifiers.length){for(code.push(this.makeCode("{\n".concat(o.indent))),index=j=0,len1=compiledList.length;j<len1;index=++j){var _code6;fragments=compiledList[index],index&&code.push(this.makeCode(",\n".concat(o.indent))),(_code6=code).push.apply(_code6,_toConsumableArray(fragments))}code.push(this.makeCode("\n}"))}else code.push(this.makeCode("{}"));return code}},{key:"astNode",value:function astNode(o){var j,len1,ref1,results1,specifier;for(ref1=this.specifiers,results1=[],(j=0,len1=ref1.length);j<len1;j++)specifier=ref1[j],results1.push(specifier.ast(o));return results1}}]),ModuleSpecifierList}(Base);return ModuleSpecifierList.prototype.children=["specifiers"],ModuleSpecifierList}.call(this),exports.ImportSpecifierList=ImportSpecifierList=function(_ModuleSpecifierList){function ImportSpecifierList(){return _classCallCheck(this,ImportSpecifierList),_super63.apply(this,arguments)}_inherits(ImportSpecifierList,_ModuleSpecifierList);var _super63=_createSuper(ImportSpecifierList);return _createClass(ImportSpecifierList)}(ModuleSpecifierList),exports.ExportSpecifierList=ExportSpecifierList=function(_ModuleSpecifierList2){function ExportSpecifierList(){return _classCallCheck(this,ExportSpecifierList),_super64.apply(this,arguments)}_inherits(ExportSpecifierList,_ModuleSpecifierList2);var _super64=_createSuper(ExportSpecifierList);return _createClass(ExportSpecifierList)}(ModuleSpecifierList),exports.ModuleSpecifier=ModuleSpecifier=function(){var ModuleSpecifier=function(_Base36){function ModuleSpecifier(original,alias,moduleDeclarationType1){var _this55;_classCallCheck(this,ModuleSpecifier);var ref1,ref2;if(_this55=_super65.call(this),_this55.original=original,_this55.alias=alias,_this55.moduleDeclarationType=moduleDeclarationType1,_this55.original.comments||(null==(ref1=_this55.alias)?void 0:ref1.comments)){if(_this55.comments=[],_this55.original.comments){var _this55$comments;(_this55$comments=_this55.comments).push.apply(_this55$comments,_toConsumableArray(_this55.original.comments))}if(null==(ref2=_this55.alias)?void 0:ref2.comments){var _this55$comments2;(_this55$comments2=_this55.comments).push.apply(_this55$comments2,_toConsumableArray(_this55.alias.comments))}}return _this55.identifier=null==_this55.alias?_this55.original.value:_this55.alias.value,_this55}_inherits(ModuleSpecifier,_Base36);var _super65=_createSuper(ModuleSpecifier);return _createClass(ModuleSpecifier,[{key:"compileNode",value:function compileNode(o){var code;return this.addIdentifierToScope(o),code=[],code.push(this.makeCode(this.original.value)),null!=this.alias&&code.push(this.makeCode(" as ".concat(this.alias.value))),code}},{key:"addIdentifierToScope",value:function addIdentifierToScope(o){return o.scope.find(this.identifier,this.moduleDeclarationType)}},{key:"astNode",value:function astNode(o){return this.addIdentifierToScope(o),_get(_getPrototypeOf(ModuleSpecifier.prototype),"astNode",this).call(this,o)}}]),ModuleSpecifier}(Base);return ModuleSpecifier.prototype.children=["original","alias"],ModuleSpecifier}.call(this),exports.ImportSpecifier=ImportSpecifier=function(_ModuleSpecifier){function ImportSpecifier(imported,local){return _classCallCheck(this,ImportSpecifier),_super66.call(this,imported,local,"import")}_inherits(ImportSpecifier,_ModuleSpecifier);var _super66=_createSuper(ImportSpecifier);return _createClass(ImportSpecifier,[{key:"addIdentifierToScope",value:function addIdentifierToScope(o){var ref1;return(ref1=this.identifier,0<=indexOf.call(o.importedSymbols,ref1))||o.scope.check(this.identifier)?this.error("'".concat(this.identifier,"' has already been declared")):o.importedSymbols.push(this.identifier),_get(_getPrototypeOf(ImportSpecifier.prototype),"addIdentifierToScope",this).call(this,o)}},{key:"astProperties",value:function astProperties(o){var originalAst,ref1,ref2;return originalAst=this.original.ast(o),{imported:originalAst,local:null==(ref1=null==(ref2=this.alias)?void 0:ref2.ast(o))?originalAst:ref1,importKind:null}}}]),ImportSpecifier}(ModuleSpecifier),exports.ImportDefaultSpecifier=ImportDefaultSpecifier=function(_ImportSpecifier){function ImportDefaultSpecifier(){return _classCallCheck(this,ImportDefaultSpecifier),_super67.apply(this,arguments)}_inherits(ImportDefaultSpecifier,_ImportSpecifier);var _super67=_createSuper(ImportDefaultSpecifier);return _createClass(ImportDefaultSpecifier,[{key:"astProperties",value:function astProperties(o){return{local:this.original.ast(o)}}}]),ImportDefaultSpecifier}(ImportSpecifier),exports.ImportNamespaceSpecifier=ImportNamespaceSpecifier=function(_ImportSpecifier2){function ImportNamespaceSpecifier(){return _classCallCheck(this,ImportNamespaceSpecifier),_super68.apply(this,arguments)}_inherits(ImportNamespaceSpecifier,_ImportSpecifier2);var _super68=_createSuper(ImportNamespaceSpecifier);return _createClass(ImportNamespaceSpecifier,[{key:"astProperties",value:function astProperties(o){return{local:this.alias.ast(o)}}}]),ImportNamespaceSpecifier}(ImportSpecifier),exports.ExportSpecifier=ExportSpecifier=function(_ModuleSpecifier2){function ExportSpecifier(local,exported){return _classCallCheck(this,ExportSpecifier),_super69.call(this,local,exported,"export")}_inherits(ExportSpecifier,_ModuleSpecifier2);var _super69=_createSuper(ExportSpecifier);return _createClass(ExportSpecifier,[{key:"astProperties",value:function astProperties(o){var originalAst,ref1,ref2;return originalAst=this.original.ast(o),{local:originalAst,exported:null==(ref1=null==(ref2=this.alias)?void 0:ref2.ast(o))?originalAst:ref1}}}]),ExportSpecifier}(ModuleSpecifier),exports.DynamicImport=DynamicImport=function(_Base37){function DynamicImport(){return _classCallCheck(this,DynamicImport),_super70.apply(this,arguments)}_inherits(DynamicImport,_Base37);var _super70=_createSuper(DynamicImport);return _createClass(DynamicImport,[{key:"compileNode",value:function compileNode(){return[this.makeCode("import")]}},{key:"astType",value:function astType(){return"Import"}}]),DynamicImport}(Base),exports.DynamicImportCall=DynamicImportCall=function(_Call3){function DynamicImportCall(){return _classCallCheck(this,DynamicImportCall),_super71.apply(this,arguments)}_inherits(DynamicImportCall,_Call3);var _super71=_createSuper(DynamicImportCall);return _createClass(DynamicImportCall,[{key:"compileNode",value:function compileNode(o){return this.checkArguments(),_get(_getPrototypeOf(DynamicImportCall.prototype),"compileNode",this).call(this,o)}},{key:"checkArguments",value:function checkArguments(){var ref1;if(!(1<=(ref1=this.args.length)&&2>=ref1))return this.error("import() accepts either one or two arguments")}},{key:"astNode",value:function astNode(o){return this.checkArguments(),_get(_getPrototypeOf(DynamicImportCall.prototype),"astNode",this).call(this,o)}}]),DynamicImportCall}(Call),exports.Assign=Assign=function(){var Assign=function(_Base38){function Assign(variable1,value1,context1){var options=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},_this56;_classCallCheck(this,Assign),_this56=_super72.call(this),_this56.variable=variable1,_this56.value=value1,_this56.context=context1,_this56.param=options.param,_this56.subpattern=options.subpattern,_this56.operatorToken=options.operatorToken,_this56.moduleDeclaration=options.moduleDeclaration;var _options$originalCont=options.originalContext;return _this56.originalContext=void 0===_options$originalCont?_this56.context:_options$originalCont,_this56.propagateLhs(),_this56}_inherits(Assign,_Base38);var _super72=_createSuper(Assign);return _createClass(Assign,[{key:"isStatement",value:function isStatement(o){return(null==o?void 0:o.level)===LEVEL_TOP&&null!=this.context&&(this.moduleDeclaration||0<=indexOf.call(this.context,"?"))}},{key:"checkNameAssignability",value:function checkNameAssignability(o,varBase){if("import"===o.scope.type(varBase.value))return varBase.error("'".concat(varBase.value,"' is read-only"))}},{key:"assigns",value:function assigns(name){return this["object"===this.context?"value":"variable"].assigns(name)}},{key:"unfoldSoak",value:function unfoldSoak(o){return _unfoldSoak(o,this,"variable")}},{key:"addScopeVariables",value:function addScopeVariables(o){var _this57=this,_ref46=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},_ref46$allowAssignmen=_ref46.allowAssignmentToExpansion,_ref46$allowAssignmen2=_ref46.allowAssignmentToNontrailingSplat,_ref46$allowAssignmen3=_ref46.allowAssignmentToEmptyArray,_ref46$allowAssignmen4=_ref46.allowAssignmentToComplexSplat,varBase;if(!(this.context&&"**="!==this.context))return varBase=this.variable.unwrapAll(),varBase.isAssignable({allowExpansion:void 0!==_ref46$allowAssignmen&&_ref46$allowAssignmen,allowNontrailingSplat:void 0!==_ref46$allowAssignmen2&&_ref46$allowAssignmen2,allowEmptyArray:void 0!==_ref46$allowAssignmen3&&_ref46$allowAssignmen3,allowComplexSplat:void 0!==_ref46$allowAssignmen4&&_ref46$allowAssignmen4})||this.variable.error("'".concat(this.variable.compile(o),"' can't be assigned")),varBase.eachName(function(name){var alreadyDeclared,commentFragments,commentsNode,message;if("function"!=typeof name.hasProperties||!name.hasProperties())return(message=isUnassignable(name.value),message&&name.error(message),_this57.checkNameAssignability(o,name),_this57.moduleDeclaration)?(o.scope.add(name.value,_this57.moduleDeclaration),name.isDeclaration=!0):_this57.param?o.scope.add(name.value,"alwaysDeclare"===_this57.param?"var":"param"):(alreadyDeclared=o.scope.find(name.value),null==name.isDeclaration&&(name.isDeclaration=!alreadyDeclared),name.comments&&!o.scope.comments[name.value]&&!(_this57.value instanceof Class)&&name.comments.every(function(comment){return comment.here&&!comment.multiline}))?(commentsNode=new IdentifierLiteral(name.value),commentsNode.comments=name.comments,commentFragments=[],_this57.compileCommentFragments(o,commentsNode,commentFragments),o.scope.comments[name.value]=commentFragments):void 0})}},{key:"compileNode",value:function compileNode(o){var answer,compiledName,isValue,name,properties,prototype,ref1,ref2,ref3,ref4,val;if(isValue=this.variable instanceof Value,isValue){if((this.variable.isArray()||this.variable.isObject())&&!this.variable.isAssignable())return this.variable.isObject()&&this.variable.base.hasSplat()?this.compileObjectDestruct(o):this.compileDestructuring(o);if(this.variable.isSplice())return this.compileSplice(o);if(this.isConditional())return this.compileConditional(o);if("//="===(ref1=this.context)||"%%="===ref1)return this.compileSpecialMath(o)}if(this.addScopeVariables(o),this.value instanceof Code)if(this.value.isStatic)this.value.name=this.variable.properties[0];else if(2<=(null==(ref2=this.variable.properties)?void 0:ref2.length)){var _ref47,_ref48,_splice$call,_splice$call2;ref3=this.variable.properties,_ref47=ref3,_ref48=_toArray(_ref47),properties=_ref48.slice(0),_ref47,_splice$call=splice.call(properties,-2),_splice$call2=_slicedToArray(_splice$call,2),prototype=_splice$call2[0],name=_splice$call2[1],_splice$call,"prototype"===(null==(ref4=prototype.name)?void 0:ref4.value)&&(this.value.name=name)}return(val=this.value.compileToFragments(o,LEVEL_LIST),compiledName=this.variable.compileToFragments(o,LEVEL_LIST),"object"===this.context)?(this.variable.shouldCache()&&(compiledName.unshift(this.makeCode("[")),compiledName.push(this.makeCode("]"))),compiledName.concat(this.makeCode(": "),val)):(answer=compiledName.concat(this.makeCode(" ".concat(this.context||"="," ")),val),o.level>LEVEL_LIST||isValue&&this.variable.base instanceof Obj&&!this.nestedLhs&&!0!==this.param?this.wrapInParentheses(answer):answer)}},{key:"compileObjectDestruct",value:function compileObjectDestruct(o){var assigns,props,refVal,splat,splatProp;this.variable.base.reorderProperties(),props=this.variable.base.properties;var _slice1$call15=slice1.call(props,-1),_slice1$call16=_slicedToArray(_slice1$call15,1);return splat=_slice1$call16[0],splatProp=splat.name,assigns=[],refVal=new Value(new IdentifierLiteral(o.scope.freeVariable("ref"))),props.splice(-1,1,new Splat(refVal)),assigns.push(new Assign(new Value(new Obj(props)),this.value).compileToFragments(o,LEVEL_LIST)),assigns.push(new Assign(new Value(splatProp),refVal).compileToFragments(o,LEVEL_LIST)),this.joinFragmentArrays(assigns,", ")}},{key:"compileDestructuring",value:function compileDestructuring(o){var _this58=this,assignObjects,assigns,code,compSlice,compSplice,complexObjects,expIdx,expans,fragments,hasObjAssigns,isExpans,isSplat,leftObjs,loopObjects,obj,objIsUnassignable,objects,olen,processObjects,pushAssign,ref,refExp,restVar,rightObjs,slicer,splatVar,splatVarAssign,splatVarRef,splats,splatsAndExpans,top,value,vvar,vvarText;if(top=o.level===LEVEL_TOP,value=this.value,objects=this.variable.base.objects,olen=objects.length,0===olen)return code=value.compileToFragments(o),o.level>=LEVEL_OP?this.wrapInParentheses(code):code;var _objects=objects,_objects2=_slicedToArray(_objects,1);obj=_objects2[0],this.disallowLoneExpansion();var _this$getAndCheckSpla=this.getAndCheckSplatsAndExpansions();return splats=_this$getAndCheckSpla.splats,expans=_this$getAndCheckSpla.expans,splatsAndExpans=_this$getAndCheckSpla.splatsAndExpans,isSplat=0<(null==splats?void 0:splats.length),isExpans=0<(null==expans?void 0:expans.length),vvar=value.compileToFragments(o,LEVEL_LIST),vvarText=fragmentsToText(vvar),assigns=[],pushAssign=function(variable,val){return assigns.push(new Assign(variable,val,null,{param:_this58.param,subpattern:!0}).compileToFragments(o,LEVEL_LIST))},isSplat&&(splatVar=objects[splats[0]].name.unwrap(),(splatVar instanceof Arr||splatVar instanceof Obj)&&(splatVarRef=new IdentifierLiteral(o.scope.freeVariable("ref")),objects[splats[0]].name=splatVarRef,splatVarAssign=function(){return pushAssign(new Value(splatVar),splatVarRef)})),(!(value.unwrap()instanceof IdentifierLiteral)||this.variable.assigns(vvarText))&&(ref=o.scope.freeVariable("ref"),assigns.push([this.makeCode(ref+" = ")].concat(_toConsumableArray(vvar))),vvar=[this.makeCode(ref)],vvarText=ref),slicer=function(type){return function(vvar,start){var end=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],args,slice;return vvar instanceof Value||(vvar=new IdentifierLiteral(vvar)),args=[vvar,new NumberLiteral(start)],end&&args.push(new NumberLiteral(end)),slice=new Value(new IdentifierLiteral(utility(type,o)),[new Access(new PropertyName("call"))]),new Value(new Call(slice,args))}},compSlice=slicer("slice"),compSplice=slicer("splice"),hasObjAssigns=function(objs){var i,j,len1,results1;for(results1=[],i=j=0,len1=objs.length;j<len1;i=++j)obj=objs[i],obj instanceof Assign&&"object"===obj.context&&results1.push(i);return results1},objIsUnassignable=function(objs){var j,len1;for(j=0,len1=objs.length;j<len1;j++)if(obj=objs[j],!obj.isAssignable())return!0;return!1},complexObjects=function(objs){return hasObjAssigns(objs).length||objIsUnassignable(objs)||1===olen},loopObjects=function(objs,vvar,vvarTxt){var acc,i,idx,j,len1,message,results1,vval;for(results1=[],i=j=0,len1=objs.length;j<len1;i=++j)if(obj=objs[i],!(obj instanceof Elision)){if(obj instanceof Assign&&"object"===obj.context){var _obj=obj;if(idx=_obj.variable.base,vvar=_obj.value,vvar instanceof Assign){var _vvar=vvar;vvar=_vvar.variable}idx=vvar["this"]?vvar.properties[0].name:new PropertyName(vvar.unwrap().value),acc=idx.unwrap()instanceof PropertyName,vval=new Value(value,[new(acc?Access:Index)(idx)])}else vvar=function(){switch(!1){case!(obj instanceof Splat):return new Value(obj.name);default:return obj;}}(),vval=function(){switch(!1){case!(obj instanceof Splat):return compSlice(vvarTxt,i);default:return new Value(new Literal(vvarTxt),[new Index(new NumberLiteral(i))]);}}();message=isUnassignable(vvar.unwrap().value),message&&vvar.error(message),results1.push(pushAssign(vvar,vval))}return results1},assignObjects=function(objs,vvar,vvarTxt){var vval;return vvar=new Value(new Arr(objs,!0)),vval=vvarTxt instanceof Value?vvarTxt:new Value(new Literal(vvarTxt)),pushAssign(vvar,vval)},processObjects=function(objs,vvar,vvarTxt){return complexObjects(objs)?loopObjects(objs,vvar,vvarTxt):assignObjects(objs,vvar,vvarTxt)},splatsAndExpans.length?(expIdx=splatsAndExpans[0],leftObjs=objects.slice(0,expIdx+(isSplat?1:0)),rightObjs=objects.slice(expIdx+1),0!==leftObjs.length&&processObjects(leftObjs,vvar,vvarText),0!==rightObjs.length&&(refExp=function(){switch(!1){case!isSplat:return compSplice(new Value(objects[expIdx].name),-1*rightObjs.length);case!isExpans:return compSlice(vvarText,-1*rightObjs.length);}}(),complexObjects(rightObjs)&&(restVar=refExp,refExp=o.scope.freeVariable("ref"),assigns.push([this.makeCode(refExp+" = ")].concat(_toConsumableArray(restVar.compileToFragments(o,LEVEL_LIST))))),processObjects(rightObjs,vvar,refExp))):processObjects(objects,vvar,vvarText),"function"==typeof splatVarAssign&&splatVarAssign(),top||this.subpattern||assigns.push(vvar),fragments=this.joinFragmentArrays(assigns,", "),o.level<LEVEL_LIST?fragments:this.wrapInParentheses(fragments)}},{key:"disallowLoneExpansion",value:function disallowLoneExpansion(){var loneObject,objects;if(this.variable.base instanceof Arr&&(objects=this.variable.base.objects,1===(null==objects?void 0:objects.length))){var _objects3=objects,_objects4=_slicedToArray(_objects3,1);if(loneObject=_objects4[0],loneObject instanceof Expansion)return loneObject.error("Destructuring assignment has no target")}}},{key:"getAndCheckSplatsAndExpansions",value:function getAndCheckSplatsAndExpansions(){var expans,i,obj,objects,splats,splatsAndExpans;return this.variable.base instanceof Arr?(objects=this.variable.base.objects,splats=function(){var j,len1,results1;for(results1=[],i=j=0,len1=objects.length;j<len1;i=++j)obj=objects[i],obj instanceof Splat&&results1.push(i);return results1}(),expans=function(){var j,len1,results1;for(results1=[],i=j=0,len1=objects.length;j<len1;i=++j)obj=objects[i],obj instanceof Expansion&&results1.push(i);return results1}(),splatsAndExpans=[].concat(_toConsumableArray(splats),_toConsumableArray(expans)),1<splatsAndExpans.length&&objects[splatsAndExpans.sort()[1]].error("multiple splats/expansions are disallowed in an assignment"),{splats:splats,expans:expans,splatsAndExpans:splatsAndExpans}):{splats:[],expans:[],splatsAndExpans:[]}}},{key:"compileConditional",value:function compileConditional(o){var _this$variable$cacheR=this.variable.cacheReference(o),_this$variable$cacheR2=_slicedToArray(_this$variable$cacheR,2),fragments,left,right;return left=_this$variable$cacheR2[0],right=_this$variable$cacheR2[1],left.properties.length||!(left.base instanceof Literal)||left.base instanceof ThisLiteral||o.scope.check(left.base.value)||this.throwUnassignableConditionalError(left.base.value),0<=indexOf.call(this.context,"?")?(o.isExistentialEquals=!0,new If(new Existence(left),right,{type:"if"}).addElse(new Assign(right,this.value,"=")).compileToFragments(o)):(fragments=new Op(this.context.slice(0,-1),left,new Assign(right,this.value,"=")).compileToFragments(o),o.level<=LEVEL_LIST?fragments:this.wrapInParentheses(fragments))}},{key:"compileSpecialMath",value:function compileSpecialMath(o){var _this$variable$cacheR3=this.variable.cacheReference(o),_this$variable$cacheR4=_slicedToArray(_this$variable$cacheR3,2),left,right;return left=_this$variable$cacheR4[0],right=_this$variable$cacheR4[1],new Assign(left,new Op(this.context.slice(0,-1),right,this.value)).compileToFragments(o)}},{key:"compileSplice",value:function compileSplice(o){var _this$variable$proper=this.variable.properties.pop(),_this$variable$proper2=_this$variable$proper.range,answer,exclusive,from,fromDecl,fromRef,name,to,unwrappedVar,valDef,valRef;if(from=_this$variable$proper2.from,to=_this$variable$proper2.to,exclusive=_this$variable$proper2.exclusive,unwrappedVar=this.variable.unwrapAll(),unwrappedVar.comments&&(moveComments(unwrappedVar,this),delete this.variable.comments),name=this.variable.compile(o),from){var _this$cacheToCodeFrag7=this.cacheToCodeFragments(from.cache(o,LEVEL_OP)),_this$cacheToCodeFrag8=_slicedToArray(_this$cacheToCodeFrag7,2);fromDecl=_this$cacheToCodeFrag8[0],fromRef=_this$cacheToCodeFrag8[1]}else fromDecl=fromRef="0";to?(null==from?void 0:from.isNumber())&&to.isNumber()?(to=to.compile(o)-fromRef,!exclusive&&(to+=1)):(to=to.compile(o,LEVEL_ACCESS)+" - "+fromRef,!exclusive&&(to+=" + 1")):to="9e9";var _this$value$cache=this.value.cache(o,LEVEL_LIST),_this$value$cache2=_slicedToArray(_this$value$cache,2);return valDef=_this$value$cache2[0],valRef=_this$value$cache2[1],answer=[].concat(this.makeCode("".concat(utility("splice",o),".apply(").concat(name,", [").concat(fromDecl,", ").concat(to,"].concat(")),valDef,this.makeCode(")), "),valRef),o.level>LEVEL_TOP?this.wrapInParentheses(answer):answer}},{key:"eachName",value:function eachName(iterator){return this.variable.unwrapAll().eachName(iterator)}},{key:"isDefaultAssignment",value:function isDefaultAssignment(){return this.param||this.nestedLhs}},{key:"propagateLhs",value:function propagateLhs(){var ref1,ref2;return(null==(ref1=this.variable)?void 0:"function"==typeof ref1.isArray?ref1.isArray():void 0)||(null==(ref2=this.variable)?void 0:"function"==typeof ref2.isObject?ref2.isObject():void 0)?this.variable.base.propagateLhs(!0):void 0}},{key:"throwUnassignableConditionalError",value:function throwUnassignableConditionalError(name){return this.variable.error("the variable \"".concat(name,"\" can't be assigned with ").concat(this.context," because it has not been declared before"))}},{key:"isConditional",value:function isConditional(){var ref1;return"||="===(ref1=this.context)||"&&="===ref1||"?="===ref1}},{key:"astNode",value:function astNode(o){var variable;return this.disallowLoneExpansion(),this.getAndCheckSplatsAndExpansions(),this.isConditional()&&(variable=this.variable.unwrap(),variable instanceof IdentifierLiteral&&!o.scope.check(variable.value)&&this.throwUnassignableConditionalError(variable.value)),this.addScopeVariables(o,{allowAssignmentToExpansion:!0,allowAssignmentToNontrailingSplat:!0,allowAssignmentToEmptyArray:!0,allowAssignmentToComplexSplat:!0}),_get(_getPrototypeOf(Assign.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isDefaultAssignment()?"AssignmentPattern":"AssignmentExpression"}},{key:"astProperties",value:function astProperties(o){var ref1,ret;return ret={right:this.value.ast(o,LEVEL_LIST),left:this.variable.ast(o,LEVEL_LIST)},this.isDefaultAssignment()||(ret.operator=null==(ref1=this.originalContext)?"=":ref1),ret}}]),Assign}(Base);return Assign.prototype.children=["variable","value"],Assign.prototype.isAssignable=YES,Assign.prototype.isStatementAst=NO,Assign}.call(this),exports.FuncGlyph=FuncGlyph=function(_Base39){function FuncGlyph(glyph){var _this59;return _classCallCheck(this,FuncGlyph),_this59=_super73.call(this),_this59.glyph=glyph,_this59}_inherits(FuncGlyph,_Base39);var _super73=_createSuper(FuncGlyph);return _createClass(FuncGlyph)}(Base),exports.Code=Code=function(){var Code=function(_Base40){function Code(params,body,funcGlyph,paramStart){var _this60;_classCallCheck(this,Code);var ref1;return _this60=_super74.call(this),_this60.funcGlyph=funcGlyph,_this60.paramStart=paramStart,_this60.params=params||[],_this60.body=body||new Block,_this60.bound="=>"===(null==(ref1=_this60.funcGlyph)?void 0:ref1.glyph),_this60.isGenerator=!1,_this60.isAsync=!1,_this60.isMethod=!1,_this60.body.traverseChildren(!1,function(node){if((node instanceof Op&&node.isYield()||node instanceof YieldReturn)&&(_this60.isGenerator=!0),(node instanceof Op&&node.isAwait()||node instanceof AwaitReturn)&&(_this60.isAsync=!0),node instanceof For&&node.isAwait())return _this60.isAsync=!0}),_this60.propagateLhs(),_this60}_inherits(Code,_Base40);var _super74=_createSuper(Code);return _createClass(Code,[{key:"isStatement",value:function isStatement(){return this.isMethod}},{key:"makeScope",value:function makeScope(parentScope){return new Scope(parentScope,this.body,this)}},{key:"compileNode",value:function compileNode(o){var _this$body$expression3,_answer4,answer,body,boundMethodCheck,comment,condition,exprs,generatedVariables,haveBodyParam,haveSplatParam,i,ifTrue,j,k,l,len1,len2,len3,m,methodScope,modifiers,name,param,paramToAddToScope,params,paramsAfterSplat,ref,ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,scopeVariablesCount,signature,splatParamName,thisAssignments,wasEmpty,yieldNode;for(this.checkForAsyncOrGeneratorConstructor(),this.bound&&((null==(ref1=o.scope.method)?void 0:ref1.bound)&&(this.context=o.scope.method.context),!this.context&&(this.context="this")),this.updateOptions(o),params=[],exprs=[],thisAssignments=null==(ref2=null==(ref3=this.thisAssignments)?void 0:ref3.slice())?[]:ref2,paramsAfterSplat=[],haveSplatParam=!1,haveBodyParam=!1,this.checkForDuplicateParams(),this.disallowLoneExpansionAndMultipleSplats(),this.eachParamName(function(name,node,param,obj){var replacement,target;if(node["this"])return name=node.properties[0].name.value,0<=indexOf.call(JS_FORBIDDEN,name)&&(name="_".concat(name)),target=new IdentifierLiteral(o.scope.freeVariable(name,{reserve:!1})),replacement=param.name instanceof Obj&&obj instanceof Assign&&"="===obj.operatorToken.value?new Assign(new IdentifierLiteral(name),target,"object"):target,param.renameParam(node,replacement),thisAssignments.push(new Assign(node,target))}),ref4=this.params,(i=j=0,len1=ref4.length);j<len1;i=++j)param=ref4[i],param.splat||param instanceof Expansion?(haveSplatParam=!0,param.splat?(param.name instanceof Arr||param.name instanceof Obj?(splatParamName=o.scope.freeVariable("arg"),params.push(ref=new Value(new IdentifierLiteral(splatParamName))),exprs.push(new Assign(new Value(param.name),ref))):(params.push(ref=param.asReference(o)),splatParamName=fragmentsToText(ref.compileNodeWithoutComments(o))),param.shouldCache()&&exprs.push(new Assign(new Value(param.name),ref))):(splatParamName=o.scope.freeVariable("args"),params.push(new Value(new IdentifierLiteral(splatParamName)))),o.scope.parameter(splatParamName)):((param.shouldCache()||haveBodyParam)&&(param.assignedInBody=!0,haveBodyParam=!0,null==param.value?exprs.push(new Assign(new Value(param.name),param.asReference(o),null,{param:"alwaysDeclare"})):(condition=new Op("===",param,new UndefinedLiteral()),ifTrue=new Assign(new Value(param.name),param.value),exprs.push(new If(condition,ifTrue)))),haveSplatParam?(paramsAfterSplat.push(param),null!=param.value&&!param.shouldCache()&&(condition=new Op("===",param,new UndefinedLiteral()),ifTrue=new Assign(new Value(param.name),param.value),exprs.push(new If(condition,ifTrue))),null!=(null==(ref5=param.name)?void 0:ref5.value)&&o.scope.add(param.name.value,"var",!0)):(ref=param.shouldCache()?param.asReference(o):null==param.value||param.assignedInBody?param:new Assign(new Value(param.name),param.value,null,{param:!0}),param.name instanceof Arr||param.name instanceof Obj?(param.name.lhs=!0,!param.shouldCache()&&param.name.eachName(function(prop){return o.scope.parameter(prop.value)})):(paramToAddToScope=null==param.value?ref:param,o.scope.parameter(fragmentsToText(paramToAddToScope.compileToFragmentsWithoutComments(o)))),params.push(ref)));if(0!==paramsAfterSplat.length&&exprs.unshift(new Assign(new Value(new Arr([new Splat(new IdentifierLiteral(splatParamName))].concat(_toConsumableArray(function(){var k,len2,results1;for(results1=[],k=0,len2=paramsAfterSplat.length;k<len2;k++)param=paramsAfterSplat[k],results1.push(param.asReference(o));return results1}())))),new Value(new IdentifierLiteral(splatParamName)))),wasEmpty=this.body.isEmpty(),this.disallowSuperInParamDefaults(),this.checkSuperCallsInConstructorBody(),!this.expandCtorSuper(thisAssignments)){var _this$body$expression2;(_this$body$expression2=this.body.expressions).unshift.apply(_this$body$expression2,_toConsumableArray(thisAssignments))}for((_this$body$expression3=this.body.expressions).unshift.apply(_this$body$expression3,_toConsumableArray(exprs)),this.isMethod&&this.bound&&!this.isStatic&&this.classVariable&&(boundMethodCheck=new Value(new Literal(utility("boundMethodCheck",o))),this.body.expressions.unshift(new Call(boundMethodCheck,[new Value(new ThisLiteral()),this.classVariable]))),wasEmpty||this.noReturn||this.body.makeReturn(),this.bound&&this.isGenerator&&(yieldNode=this.body.contains(function(node){return node instanceof Op&&"yield"===node.operator}),(yieldNode||this).error("yield cannot occur inside bound (fat arrow) functions")),modifiers=[],this.isMethod&&this.isStatic&&modifiers.push("static"),this.isAsync&&modifiers.push("async"),this.isMethod||this.bound?this.isGenerator&&modifiers.push("*"):modifiers.push("function".concat(this.isGenerator?"*":"")),signature=[this.makeCode("(")],null!=(null==(ref6=this.paramStart)?void 0:ref6.comments)&&this.compileCommentFragments(o,this.paramStart,signature),(i=k=0,len2=params.length);k<len2;i=++k){var _signature;if(param=params[i],0!==i&&signature.push(this.makeCode(", ")),haveSplatParam&&i===params.length-1&&signature.push(this.makeCode("...")),scopeVariablesCount=o.scope.variables.length,(_signature=signature).push.apply(_signature,_toConsumableArray(param.compileToFragments(o,LEVEL_PAREN))),scopeVariablesCount!==o.scope.variables.length){var _o$scope$parent$varia;generatedVariables=o.scope.variables.splice(scopeVariablesCount),(_o$scope$parent$varia=o.scope.parent.variables).push.apply(_o$scope$parent$varia,_toConsumableArray(generatedVariables))}}if(signature.push(this.makeCode(")")),null!=(null==(ref7=this.funcGlyph)?void 0:ref7.comments)){for(ref8=this.funcGlyph.comments,l=0,len3=ref8.length;l<len3;l++)comment=ref8[l],comment.unshift=!1;this.compileCommentFragments(o,this.funcGlyph,signature)}if(this.body.isEmpty()||(body=this.body.compileWithDeclarations(o)),this.isMethod){var _ref49=[o.scope,o.scope.parent];methodScope=_ref49[0],o.scope=_ref49[1],name=this.name.compileToFragments(o),"."===name[0].code&&name.shift(),o.scope=methodScope}if(answer=this.joinFragmentArrays(function(){var len4,p,results1;for(results1=[],p=0,len4=modifiers.length;p<len4;p++)m=modifiers[p],results1.push(this.makeCode(m));return results1}.call(this)," "),modifiers.length&&name&&answer.push(this.makeCode(" ")),name){var _answer3;(_answer3=answer).push.apply(_answer3,_toConsumableArray(name))}if((_answer4=answer).push.apply(_answer4,_toConsumableArray(signature)),this.bound&&!this.isMethod&&answer.push(this.makeCode(" =>")),answer.push(this.makeCode(" {")),null==body?void 0:body.length){var _answer5;(_answer5=answer).push.apply(_answer5,[this.makeCode("\n")].concat(_toConsumableArray(body),[this.makeCode("\n".concat(this.tab))]))}return answer.push(this.makeCode("}")),this.isMethod?indentInitial(answer,this):this.front||o.level>=LEVEL_ACCESS?this.wrapInParentheses(answer):answer}},{key:"updateOptions",value:function updateOptions(o){return o.scope=del(o,"classScope")||this.makeScope(o.scope),o.scope.shared=del(o,"sharedScope"),o.indent+=TAB,delete o.bare,delete o.isExistentialEquals}},{key:"checkForDuplicateParams",value:function checkForDuplicateParams(){var paramNames;return paramNames=[],this.eachParamName(function(name,node){return 0<=indexOf.call(paramNames,name)&&node.error("multiple parameters named '".concat(name,"'")),paramNames.push(name)})}},{key:"eachParamName",value:function eachParamName(iterator){var j,len1,param,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],results1.push(param.eachName(iterator));return results1}},{key:"traverseChildren",value:function traverseChildren(crossScope,func){if(crossScope)return _get(_getPrototypeOf(Code.prototype),"traverseChildren",this).call(this,crossScope,func)}},{key:"replaceInContext",value:function replaceInContext(child,replacement){return!!this.bound&&_get(_getPrototypeOf(Code.prototype),"replaceInContext",this).call(this,child,replacement)}},{key:"disallowSuperInParamDefaults",value:function disallowSuperInParamDefaults(){var _ref50=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},forAst=_ref50.forAst;return!!this.ctor&&this.eachSuperCall(Block.wrap(this.params),function(superCall){return superCall.error("'super' is not allowed in constructor parameter defaults")},{checkForThisBeforeSuper:!forAst})}},{key:"checkSuperCallsInConstructorBody",value:function checkSuperCallsInConstructorBody(){var _this61=this,seenSuper;return!!this.ctor&&(seenSuper=this.eachSuperCall(this.body,function(superCall){if("base"===_this61.ctor)return superCall.error("'super' is only allowed in derived class constructors")}),seenSuper)}},{key:"flagThisParamInDerivedClassConstructorWithoutCallingSuper",value:function flagThisParamInDerivedClassConstructorWithoutCallingSuper(param){return param.error("Can't use @params in derived class constructors without calling super")}},{key:"checkForAsyncOrGeneratorConstructor",value:function checkForAsyncOrGeneratorConstructor(){if(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator))return this.name.error("Class constructor may not be a generator")}},{key:"disallowLoneExpansionAndMultipleSplats",value:function disallowLoneExpansionAndMultipleSplats(){var j,len1,param,ref1,results1,seenSplatParam;for(seenSplatParam=!1,ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],param.splat||param instanceof Expansion?(seenSplatParam?param.error("only one splat or expansion parameter is allowed per function definition"):param instanceof Expansion&&1===this.params.length&&param.error("an expansion parameter cannot be the only parameter in a function definition"),results1.push(seenSplatParam=!0)):results1.push(void 0);return results1}},{key:"expandCtorSuper",value:function expandCtorSuper(thisAssignments){var haveThisParam,param,ref1,seenSuper;return!!this.ctor&&(seenSuper=this.eachSuperCall(this.body,function(superCall){return superCall.expressions=thisAssignments}),haveThisParam=thisAssignments.length&&thisAssignments.length!==(null==(ref1=this.thisAssignments)?void 0:ref1.length),"derived"===this.ctor&&!seenSuper&&haveThisParam&&(param=thisAssignments[0].variable,this.flagThisParamInDerivedClassConstructorWithoutCallingSuper(param)),seenSuper)}},{key:"eachSuperCall",value:function eachSuperCall(context,iterator){var _this62=this,_ref51=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_ref51$checkForThisBe=_ref51.checkForThisBeforeSuper,seenSuper;return seenSuper=!1,context.traverseChildren(!0,function(child){var childArgs;return child instanceof SuperCall?(!child.variable.accessor&&(childArgs=child.args.filter(function(arg){return!(arg instanceof Class)&&(!(arg instanceof Code)||arg.bound)}),Block.wrap(childArgs).traverseChildren(!0,function(node){if(node["this"])return node.error("Can't call super with @params in derived class constructors")})),seenSuper=!0,iterator(child)):(void 0===_ref51$checkForThisBe||_ref51$checkForThisBe)&&child instanceof ThisLiteral&&"derived"===_this62.ctor&&!seenSuper&&child.error("Can't reference 'this' before calling super in derived class constructors"),!(child instanceof SuperCall)&&(!(child instanceof Code)||child.bound)}),seenSuper}},{key:"propagateLhs",value:function propagateLhs(){var j,len1,name,param,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++){param=ref1[j];var _param=param;name=_param.name,name instanceof Arr||name instanceof Obj?results1.push(name.propagateLhs(!0)):param instanceof Expansion?results1.push(param.lhs=!0):results1.push(void 0)}return results1}},{key:"astAddParamsToScope",value:function astAddParamsToScope(o){return this.eachParamName(function(name){return o.scope.add(name,"param")})}},{key:"astNode",value:function astNode(o){var _this63=this,seenSuper;return this.updateOptions(o),this.checkForAsyncOrGeneratorConstructor(),this.checkForDuplicateParams(),this.disallowSuperInParamDefaults({forAst:!0}),this.disallowLoneExpansionAndMultipleSplats(),seenSuper=this.checkSuperCallsInConstructorBody(),"derived"!==this.ctor||seenSuper||this.eachParamName(function(name,node){if(node["this"])return _this63.flagThisParamInDerivedClassConstructorWithoutCallingSuper(node)}),this.astAddParamsToScope(o),this.body.isEmpty()||this.noReturn||this.body.makeReturn(null,!0),_get(_getPrototypeOf(Code.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return this.isMethod?"ClassMethod":this.bound?"ArrowFunctionExpression":"FunctionExpression"}},{key:"paramForAst",value:function paramForAst(param){var name,splat,value;return param instanceof Expansion?param:(name=param.name,value=param.value,splat=param.splat,splat?new Splat(name,{lhs:!0,postfix:splat.postfix}).withLocationDataFrom(param):null==value?name:new Assign(name,value,null,{param:!0}).withLocationDataFrom({locationData:mergeLocationData(name.locationData,value.locationData)}))}},{key:"methodAstProperties",value:function methodAstProperties(o){var _this64=this,getIsComputed,ref1,ref2,ref3,ref4;return getIsComputed=function(){return!!(_this64.name instanceof Index)||!!(_this64.name instanceof ComputedPropertyName)||!!(_this64.name.name instanceof ComputedPropertyName)},{static:!!this.isStatic,key:this.name.ast(o),computed:getIsComputed(),kind:this.ctor?"constructor":"method",operator:null==(ref1=null==(ref2=this.operatorToken)?void 0:ref2.value)?"=":ref1,staticClassName:null==(ref3=null==(ref4=this.isStatic.staticClassName)?void 0:ref4.ast(o))?null:ref3,bound:!!this.bound}}},{key:"astProperties",value:function astProperties(o){var param,ref1;return Object.assign({params:function(){var j,len1,ref1,results1;for(ref1=this.params,results1=[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],results1.push(this.paramForAst(param).ast(o));return results1}.call(this),body:this.body.ast(Object.assign({},o,{checkForDirectives:!0}),LEVEL_TOP),generator:!!this.isGenerator,async:!!this.isAsync,id:null,hasIndentedBody:this.body.locationData.first_line>(null==(ref1=this.funcGlyph)?void 0:ref1.locationData.first_line)},this.isMethod?this.methodAstProperties(o):{})}},{key:"astLocationData",value:function(){var astLocationData,functionLocationData;return(functionLocationData=_get(_getPrototypeOf(Code.prototype),"astLocationData",this).call(this),!this.isMethod)?functionLocationData:(astLocationData=mergeAstLocationData(this.name.astLocationData(),functionLocationData),null!=this.isStatic.staticClassName&&(astLocationData=mergeAstLocationData(this.isStatic.staticClassName.astLocationData(),astLocationData)),astLocationData)}}]),Code}(Base);return Code.prototype.children=["params","body"],Code.prototype.jumps=NO,Code}.call(this),exports.Param=Param=function(){var Param=function(_Base41){function Param(name1,value1,splat1){var _this65;_classCallCheck(this,Param);var message,token;return _this65=_super75.call(this),_this65.name=name1,_this65.value=value1,_this65.splat=splat1,message=isUnassignable(_this65.name.unwrapAll().value),message&&_this65.name.error(message),_this65.name instanceof Obj&&_this65.name.generated&&(token=_this65.name.objects[0].operatorToken,token.error("unexpected ".concat(token.value))),_this65}_inherits(Param,_Base41);var _super75=_createSuper(Param);return _createClass(Param,[{key:"compileToFragments",value:function compileToFragments(o){return this.name.compileToFragments(o,LEVEL_LIST)}},{key:"compileToFragmentsWithoutComments",value:function compileToFragmentsWithoutComments(o){return this.name.compileToFragmentsWithoutComments(o,LEVEL_LIST)}},{key:"asReference",value:function asReference(o){var name,node;return this.reference?this.reference:(node=this.name,node["this"]?(name=node.properties[0].name.value,0<=indexOf.call(JS_FORBIDDEN,name)&&(name="_".concat(name)),node=new IdentifierLiteral(o.scope.freeVariable(name))):node.shouldCache()&&(node=new IdentifierLiteral(o.scope.freeVariable("arg"))),node=new Value(node),node.updateLocationDataIfMissing(this.locationData),this.reference=node)}},{key:"shouldCache",value:function shouldCache(){return this.name.shouldCache()}},{key:"eachName",value:function eachName(iterator){var _this66=this,name=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this.name,atParam,checkAssignabilityOfLiteral,j,len1,nObj,node,obj,ref1,ref2;if(checkAssignabilityOfLiteral=function(literal){var message;if(message=isUnassignable(literal.value),message&&literal.error(message),!literal.isAssignable())return literal.error("'".concat(literal.value,"' can't be assigned"))},atParam=function(obj){var originalObj=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return iterator("@".concat(obj.properties[0].name.value),obj,_this66,originalObj)},name instanceof Call&&name.error("Function invocation can't be assigned"),name instanceof Literal)return checkAssignabilityOfLiteral(name),iterator(name.value,name,this);if(name instanceof Value)return atParam(name);for(ref2=null==(ref1=name.objects)?[]:ref1,j=0,len1=ref2.length;j<len1;j++)obj=ref2[j],nObj=obj,obj instanceof Assign&&null==obj.context&&(obj=obj.variable),obj instanceof Assign?(obj=obj.value instanceof Assign?obj.value.variable:obj.value,this.eachName(iterator,obj.unwrap())):obj instanceof Splat?(node=obj.name.unwrap(),iterator(node.value,node,this)):obj instanceof Value?obj.isArray()||obj.isObject()?this.eachName(iterator,obj.base):obj["this"]?atParam(obj,nObj):(checkAssignabilityOfLiteral(obj.base),iterator(obj.base.value,obj.base,this)):obj instanceof Elision?obj:!(obj instanceof Expansion)&&obj.error("illegal parameter ".concat(obj.compile()))}},{key:"renameParam",value:function renameParam(node,newNode){var isNode,replacement;return isNode=function(candidate){return candidate===node},replacement=function(node,parent){var key;return parent instanceof Obj?(key=node,node["this"]&&(key=node.properties[0].name),node["this"]&&key.value===newNode.value?new Value(newNode):new Assign(new Value(key),newNode,"object")):newNode},this.replaceInContext(isNode,replacement)}}]),Param}(Base);return Param.prototype.children=["name","value"],Param}.call(this),exports.Splat=Splat=function(){var Splat=function(_Base42){function Splat(name){var _ref52=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},lhs1=_ref52.lhs,_ref52$postfix=_ref52.postfix,_this67;return _classCallCheck(this,Splat),_this67=_super76.call(this),_this67.lhs=lhs1,_this67.postfix=void 0===_ref52$postfix||_ref52$postfix,_this67.name=name.compile?name:new Literal(name),_this67}_inherits(Splat,_Base42);var _super76=_createSuper(Splat);return _createClass(Splat,[{key:"shouldCache",value:function shouldCache(){return!1}},{key:"isAssignable",value:function isAssignable(){var _ref53=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},_ref53$allowComplexSp=_ref53.allowComplexSplat;return this.name instanceof Obj||this.name instanceof Parens?void 0!==_ref53$allowComplexSp&&_ref53$allowComplexSp:this.name.isAssignable()&&(!this.name.isAtomic||this.name.isAtomic())}},{key:"assigns",value:function assigns(name){return this.name.assigns(name)}},{key:"compileNode",value:function compileNode(o){var compiledSplat;return compiledSplat=[this.makeCode("...")].concat(_toConsumableArray(this.name.compileToFragments(o,LEVEL_OP))),this.jsx?[this.makeCode("{")].concat(_toConsumableArray(compiledSplat),[this.makeCode("}")]):compiledSplat}},{key:"unwrap",value:function unwrap(){return this.name}},{key:"propagateLhs",value:function propagateLhs(setLhs){var base1;return setLhs&&(this.lhs=!0),this.lhs?"function"==typeof(base1=this.name).propagateLhs?base1.propagateLhs(!0):void 0:void 0}},{key:"astType",value:function astType(){return this.jsx?"JSXSpreadAttribute":this.lhs?"RestElement":"SpreadElement"}},{key:"astProperties",value:function astProperties(o){return{argument:this.name.ast(o,LEVEL_OP),postfix:this.postfix}}}]),Splat}(Base);return Splat.prototype.children=["name"],Splat}.call(this),exports.Expansion=Expansion=function(){var Expansion=function(_Base43){function Expansion(){return _classCallCheck(this,Expansion),_super77.apply(this,arguments)}_inherits(Expansion,_Base43);var _super77=_createSuper(Expansion);return _createClass(Expansion,[{key:"compileNode",value:function compileNode(){return this.throwLhsError()}},{key:"asReference",value:function asReference(){return this}},{key:"eachName",value:function eachName(){}},{key:"throwLhsError",value:function throwLhsError(){return this.error("Expansion must be used inside a destructuring assignment or parameter list")}},{key:"astNode",value:function astNode(o){return this.lhs||this.throwLhsError(),_get(_getPrototypeOf(Expansion.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"RestElement"}},{key:"astProperties",value:function astProperties(){return{argument:null}}}]),Expansion}(Base);return Expansion.prototype.shouldCache=NO,Expansion}.call(this),exports.Elision=Elision=function(){var Elision=function(_Base44){function Elision(){return _classCallCheck(this,Elision),_super78.apply(this,arguments)}_inherits(Elision,_Base44);var _super78=_createSuper(Elision);return _createClass(Elision,[{key:"compileToFragments",value:function compileToFragments(o,level){var fragment;return fragment=_get(_getPrototypeOf(Elision.prototype),"compileToFragments",this).call(this,o,level),fragment.isElision=!0,fragment}},{key:"compileNode",value:function compileNode(){return[this.makeCode(", ")]}},{key:"asReference",value:function asReference(){return this}},{key:"eachName",value:function eachName(){}},{key:"astNode",value:function astNode(){return null}}]),Elision}(Base);return Elision.prototype.isAssignable=YES,Elision.prototype.shouldCache=NO,Elision}.call(this),exports.While=While=function(){var While=function(_Base45){function While(condition1){var _ref54=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},inverted=_ref54.invert,guard=_ref54.guard,isLoop=_ref54.isLoop,_this68;return _classCallCheck(this,While),_this68=_super79.call(this),_this68.condition=condition1,_this68.inverted=inverted,_this68.guard=guard,_this68.isLoop=isLoop,_this68}_inherits(While,_Base45);var _super79=_createSuper(While);return _createClass(While,[{key:"makeReturn",value:function makeReturn(results,mark){return results?_get(_getPrototypeOf(While.prototype),"makeReturn",this).call(this,results,mark):(this.returns=!this.jumps(),mark?void(this.returns&&this.body.makeReturn(results,mark)):this)}},{key:"addBody",value:function addBody(body1){return this.body=body1,this}},{key:"jumps",value:function jumps(){var expressions,j,jumpNode,len1,node;if(expressions=this.body.expressions,!expressions.length)return!1;for(j=0,len1=expressions.length;j<len1;j++)if(node=expressions[j],jumpNode=node.jumps({loop:!0}))return jumpNode;return!1}},{key:"compileNode",value:function compileNode(o){var answer,body,rvar,set;return o.indent+=TAB,set="",body=this.body,body.isEmpty()?body=this.makeCode(""):(this.returns&&(body.makeReturn(rvar=o.scope.freeVariable("results")),set="".concat(this.tab).concat(rvar," = [];\n")),this.guard&&(1<body.expressions.length?body.expressions.unshift(new If(new Parens(this.guard).invert(),new StatementLiteral("continue"))):this.guard&&(body=Block.wrap([new If(this.guard,body)]))),body=[].concat(this.makeCode("\n"),body.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab)))),answer=[].concat(this.makeCode(set+this.tab+"while ("),this.processedCondition().compileToFragments(o,LEVEL_PAREN),this.makeCode(") {"),body,this.makeCode("}")),this.returns&&answer.push(this.makeCode("\n".concat(this.tab,"return ").concat(rvar,";"))),answer}},{key:"processedCondition",value:function processedCondition(){return null==this.processedConditionCache?this.processedConditionCache=this.inverted?this.condition.invert():this.condition:this.processedConditionCache}},{key:"astType",value:function astType(){return"WhileStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{test:this.condition.ast(o,LEVEL_PAREN),body:this.body.ast(o,LEVEL_TOP),guard:null==(ref1=null==(ref2=this.guard)?void 0:ref2.ast(o))?null:ref1,inverted:!!this.inverted,postfix:!!this.postfix,loop:!!this.isLoop}}}]),While}(Base);return While.prototype.children=["condition","guard","body"],While.prototype.isStatement=YES,While}.call(this),exports.Op=Op=function(){var Op=function(_Base46){function Op(op,first,second,flip){var _ref55=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},invertOperator=_ref55.invertOperator,_ref55$originalOperat=_ref55.originalOperator,originalOperator=void 0===_ref55$originalOperat?op:_ref55$originalOperat,_this69;_classCallCheck(this,Op);var call,firstCall,message,ref1,unwrapped;return(_this69=_super80.call(this),_this69.invertOperator=invertOperator,_this69.originalOperator=originalOperator,"new"===op)?((firstCall=unwrapped=first.unwrap())instanceof Call||(firstCall=unwrapped.base)instanceof Call)&&!firstCall["do"]&&!firstCall.isNew?_possibleConstructorReturn(_this69,new Value(firstCall.newInstance(),firstCall===unwrapped?[]:unwrapped.properties)):(first instanceof Parens||first.unwrap()instanceof IdentifierLiteral||("function"==typeof first.hasProperties?first.hasProperties():void 0)||(first=new Parens(first)),call=new Call(first,[]),call.locationData=_this69.locationData,call.isNew=!0,_possibleConstructorReturn(_this69,call)):(_this69.operator=CONVERSIONS[op]||op,_this69.first=first,_this69.second=second,_this69.flip=!!flip,("--"===(ref1=_this69.operator)||"++"===ref1)&&(message=isUnassignable(_this69.first.unwrapAll().value),message&&_this69.first.error(message)),_possibleConstructorReturn(_this69,_assertThisInitialized(_this69)))}_inherits(Op,_Base46);var _super80=_createSuper(Op);return _createClass(Op,[{key:"isNumber",value:function(){var ref1;return this.isUnary()&&("+"===(ref1=this.operator)||"-"===ref1)&&this.first instanceof Value&&this.first.isNumber()}},{key:"isAwait",value:function isAwait(){return"await"===this.operator}},{key:"isYield",value:function isYield(){var ref1;return"yield"===(ref1=this.operator)||"yield*"===ref1}},{key:"isUnary",value:function isUnary(){return!this.second}},{key:"shouldCache",value:function shouldCache(){return!this.isNumber()}},{key:"isChainable",value:function isChainable(){var ref1;return"<"===(ref1=this.operator)||">"===ref1||">="===ref1||"<="===ref1||"==="===ref1||"!=="===ref1}},{key:"isChain",value:function isChain(){return this.isChainable()&&this.first.isChainable()}},{key:"invert",value:function invert(){var allInvertable,curr,fst,op,ref1;if(this.isInOperator())return this.invertOperator="!",this;if(this.isChain()){for(allInvertable=!0,curr=this;curr&&curr.operator;)allInvertable&&(allInvertable=curr.operator in INVERSIONS),curr=curr.first;if(!allInvertable)return new Parens(this).invert();for(curr=this;curr&&curr.operator;)curr.invert=!curr.invert,curr.operator=INVERSIONS[curr.operator],curr=curr.first;return this}return(op=INVERSIONS[this.operator])?(this.operator=op,this.first.unwrap()instanceof Op&&this.first.invert(),this):this.second?new Parens(this).invert():"!"===this.operator&&(fst=this.first.unwrap())instanceof Op&&("!"===(ref1=fst.operator)||"in"===ref1||"instanceof"===ref1)?fst:new Op("!",this)}},{key:"unfoldSoak",value:function unfoldSoak(o){var ref1;return("++"===(ref1=this.operator)||"--"===ref1||"delete"===ref1)&&_unfoldSoak(o,this,"first")}},{key:"generateDo",value:function generateDo(exp){var call,func,j,len1,param,passedParams,ref,ref1;for(passedParams=[],func=exp instanceof Assign&&(ref=exp.value.unwrap())instanceof Code?ref:exp,ref1=func.params||[],(j=0,len1=ref1.length);j<len1;j++)param=ref1[j],param.value?(passedParams.push(param.value),delete param.value):passedParams.push(param);return call=new Call(exp,passedParams),call["do"]=!0,call}},{key:"isInOperator",value:function isInOperator(){return"in"===this.originalOperator}},{key:"compileNode",value:function compileNode(o){var answer,inNode,isChain,lhs,rhs;if(this.isInOperator())return inNode=new In(this.first,this.second),(this.invertOperator?inNode.invert():inNode).compileNode(o);if(this.invertOperator)return this.invertOperator=null,this.invert().compileNode(o);if("do"===this.operator)return Op.prototype.generateDo(this.first).compileNode(o);if(isChain=this.isChain(),isChain||(this.first.front=this.front),this.checkDeleteOperand(o),this.isYield()||this.isAwait())return this.compileContinuation(o);if(this.isUnary())return this.compileUnary(o);if(isChain)return this.compileChain(o);switch(this.operator){case"?":return this.compileExistence(o,this.second.isDefaultValue);case"//":return this.compileFloorDivision(o);case"%%":return this.compileModulo(o);default:return lhs=this.first.compileToFragments(o,LEVEL_OP),rhs=this.second.compileToFragments(o,LEVEL_OP),answer=[].concat(lhs,this.makeCode(" ".concat(this.operator," ")),rhs),o.level<=LEVEL_OP?answer:this.wrapInParentheses(answer);}}},{key:"compileChain",value:function compileChain(o){var _this$first$second$ca=this.first.second.cache(o),_this$first$second$ca2=_slicedToArray(_this$first$second$ca,2),fragments,fst,shared;return this.first.second=_this$first$second$ca2[0],shared=_this$first$second$ca2[1],fst=this.first.compileToFragments(o,LEVEL_OP),fragments=fst.concat(this.makeCode(" ".concat(this.invert?"&&":"||"," ")),shared.compileToFragments(o),this.makeCode(" ".concat(this.operator," ")),this.second.compileToFragments(o,LEVEL_OP)),this.wrapInParentheses(fragments)}},{key:"compileExistence",value:function compileExistence(o,checkOnlyUndefined){var fst,ref;return this.first.shouldCache()?(ref=new IdentifierLiteral(o.scope.freeVariable("ref")),fst=new Parens(new Assign(ref,this.first))):(fst=this.first,ref=fst),new If(new Existence(fst,checkOnlyUndefined),ref,{type:"if"}).addElse(this.second).compileToFragments(o)}},{key:"compileUnary",value:function compileUnary(o){var op,parts,plusMinus;return(parts=[],op=this.operator,parts.push([this.makeCode(op)]),"!"===op&&this.first instanceof Existence)?(this.first.negated=!this.first.negated,this.first.compileToFragments(o)):o.level>=LEVEL_ACCESS?new Parens(this).compileToFragments(o):(plusMinus="+"===op||"-"===op,("typeof"===op||"delete"===op||plusMinus&&this.first instanceof Op&&this.first.operator===op)&&parts.push([this.makeCode(" ")]),plusMinus&&this.first instanceof Op&&(this.first=new Parens(this.first)),parts.push(this.first.compileToFragments(o,LEVEL_OP)),this.flip&&parts.reverse(),this.joinFragmentArrays(parts,""))}},{key:"compileContinuation",value:function compileContinuation(o){var op,parts,ref1;return parts=[],op=this.operator,this.isAwait()||this.checkContinuation(o),0<=indexOf.call(Object.keys(this.first),"expression")&&!(this.first instanceof Throw)?null!=this.first.expression&&parts.push(this.first.expression.compileToFragments(o,LEVEL_OP)):(o.level>=LEVEL_PAREN&&parts.push([this.makeCode("(")]),parts.push([this.makeCode(op)]),""!==(null==(ref1=this.first.base)?void 0:ref1.value)&&parts.push([this.makeCode(" ")]),parts.push(this.first.compileToFragments(o,LEVEL_OP)),o.level>=LEVEL_PAREN&&parts.push([this.makeCode(")")])),this.joinFragmentArrays(parts,"")}},{key:"checkContinuation",value:function checkContinuation(o){var ref1;if(null==o.scope.parent&&this.error("".concat(this.operator," can only occur inside functions")),(null==(ref1=o.scope.method)?void 0:ref1.bound)&&o.scope.method.isGenerator)return this.error("yield cannot occur inside bound (fat arrow) functions")}},{key:"compileFloorDivision",value:function compileFloorDivision(o){var div,floor,second;return floor=new Value(new IdentifierLiteral("Math"),[new Access(new PropertyName("floor"))]),second=this.second.shouldCache()?new Parens(this.second):this.second,div=new Op("/",this.first,second),new Call(floor,[div]).compileToFragments(o)}},{key:"compileModulo",value:function compileModulo(o){var mod;return mod=new Value(new Literal(utility("modulo",o))),new Call(mod,[this.first,this.second]).compileToFragments(o)}},{key:"toString",value:function toString(idt){return _get(_getPrototypeOf(Op.prototype),"toString",this).call(this,idt,this.constructor.name+" "+this.operator)}},{key:"checkDeleteOperand",value:function checkDeleteOperand(o){if("delete"===this.operator&&o.scope.check(this.first.unwrapAll().value))return this.error("delete operand may not be argument or var")}},{key:"astNode",value:function astNode(o){return this.isYield()&&this.checkContinuation(o),this.checkDeleteOperand(o),_get(_getPrototypeOf(Op.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){if(this.isAwait())return"AwaitExpression";if(this.isYield())return"YieldExpression";if(this.isChain())return"ChainedComparison";switch(this.operator){case"||":case"&&":case"?":return"LogicalExpression";case"++":case"--":return"UpdateExpression";default:return this.isUnary()?"UnaryExpression":"BinaryExpression";}}},{key:"operatorAst",value:function operatorAst(){return"".concat(this.invertOperator?"".concat(this.invertOperator," "):"").concat(this.originalOperator)}},{key:"chainAstProperties",value:function chainAstProperties(o){var currentOp,operand,operands,operators;for(operators=[this.operatorAst()],operands=[this.second],currentOp=this.first;;)if(operators.unshift(currentOp.operatorAst()),operands.unshift(currentOp.second),currentOp=currentOp.first,!currentOp.isChainable()){operands.unshift(currentOp);break}return{operators:operators,operands:function(){var j,len1,results1;for(results1=[],j=0,len1=operands.length;j<len1;j++)operand=operands[j],results1.push(operand.ast(o,LEVEL_OP));return results1}()}}},{key:"astProperties",value:function astProperties(o){var argument,firstAst,operatorAst,ref1,secondAst;if(this.isChain())return this.chainAstProperties(o);switch(firstAst=this.first.ast(o,LEVEL_OP),secondAst=null==(ref1=this.second)?void 0:ref1.ast(o,LEVEL_OP),operatorAst=this.operatorAst(),!1){case!this.isUnary():return argument=this.isYield()&&""===this.first.unwrap().value?null:firstAst,this.isAwait()?{argument:argument}:this.isYield()?{argument:argument,delegate:"yield*"===this.operator}:{argument:argument,operator:operatorAst,prefix:!this.flip};default:return{left:firstAst,right:secondAst,operator:operatorAst};}}}]),Op}(Base),CONVERSIONS,INVERSIONS;return CONVERSIONS={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},INVERSIONS={"!==":"===","===":"!=="},Op.prototype.children=["first","second"],Op}.call(this),exports.In=In=function(){var In=function(_Base47){function In(object1,array){var _this70;return _classCallCheck(this,In),_this70=_super81.call(this),_this70.object=object1,_this70.array=array,_this70}_inherits(In,_Base47);var _super81=_createSuper(In);return _createClass(In,[{key:"compileNode",value:function compileNode(o){var hasSplat,j,len1,obj,ref1;if(this.array instanceof Value&&this.array.isArray()&&this.array.base.objects.length){for(ref1=this.array.base.objects,j=0,len1=ref1.length;j<len1;j++)if(obj=ref1[j],!!(obj instanceof Splat)){hasSplat=!0;break}if(!hasSplat)return this.compileOrTest(o)}return this.compileLoopTest(o)}},{key:"compileOrTest",value:function compileOrTest(o){var _this$object$cache=this.object.cache(o,LEVEL_OP),_this$object$cache2=_slicedToArray(_this$object$cache,2),cmp,cnj,i,item,j,len1,ref,ref1,sub,tests;sub=_this$object$cache2[0],ref=_this$object$cache2[1];var _ref56=this.negated?[" !== "," && "]:[" === "," || "],_ref57=_slicedToArray(_ref56,2);for(cmp=_ref57[0],cnj=_ref57[1],tests=[],ref1=this.array.base.objects,(i=j=0,len1=ref1.length);j<len1;i=++j)item=ref1[i],i&&tests.push(this.makeCode(cnj)),tests=tests.concat(i?ref:sub,this.makeCode(cmp),item.compileToFragments(o,LEVEL_ACCESS));return o.level<LEVEL_OP?tests:this.wrapInParentheses(tests)}},{key:"compileLoopTest",value:function compileLoopTest(o){var _this$object$cache3=this.object.cache(o,LEVEL_LIST),_this$object$cache4=_slicedToArray(_this$object$cache3,2),fragments,ref,sub;return(sub=_this$object$cache4[0],ref=_this$object$cache4[1],fragments=[].concat(this.makeCode(utility("indexOf",o)+".call("),this.array.compileToFragments(o,LEVEL_LIST),this.makeCode(", "),ref,this.makeCode(") "+(this.negated?"< 0":">= 0"))),fragmentsToText(sub)===fragmentsToText(ref))?fragments:(fragments=sub.concat(this.makeCode(", "),fragments),o.level<LEVEL_LIST?fragments:this.wrapInParentheses(fragments))}},{key:"toString",value:function toString(idt){return _get(_getPrototypeOf(In.prototype),"toString",this).call(this,idt,this.constructor.name+(this.negated?"!":""))}}]),In}(Base);return In.prototype.children=["object","array"],In.prototype.invert=NEGATE,In}.call(this),exports.Try=Try=function(){var Try=function(_Base48){function Try(attempt,_catch,ensure,finallyTag){var _this71;return _classCallCheck(this,Try),_this71=_super82.call(this),_this71.attempt=attempt,_this71["catch"]=_catch,_this71.ensure=ensure,_this71.finallyTag=finallyTag,_this71}_inherits(Try,_Base48);var _super82=_createSuper(Try);return _createClass(Try,[{key:"jumps",value:function jumps(o){var ref1;return this.attempt.jumps(o)||(null==(ref1=this["catch"])?void 0:ref1.jumps(o))}},{key:"makeReturn",value:function makeReturn(results,mark){var ref1,ref2;return mark?(null!=(ref1=this.attempt)&&ref1.makeReturn(results,mark),void(null!=(ref2=this["catch"])&&ref2.makeReturn(results,mark))):(this.attempt&&(this.attempt=this.attempt.makeReturn(results)),this["catch"]&&(this["catch"]=this["catch"].makeReturn(results)),this)}},{key:"compileNode",value:function compileNode(o){var catchPart,ensurePart,generatedErrorVariableName,originalIndent,tryPart;return originalIndent=o.indent,o.indent+=TAB,tryPart=this.attempt.compileToFragments(o,LEVEL_TOP),catchPart=this["catch"]?this["catch"].compileToFragments(merge(o,{indent:originalIndent}),LEVEL_TOP):this.ensure||this["catch"]?[]:(generatedErrorVariableName=o.scope.freeVariable("error",{reserve:!1}),[this.makeCode(" catch (".concat(generatedErrorVariableName,") {}"))]),ensurePart=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}"))):[],[].concat(this.makeCode("".concat(this.tab,"try {\n")),tryPart,this.makeCode("\n".concat(this.tab,"}")),catchPart,ensurePart)}},{key:"astType",value:function astType(){return"TryStatement"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{block:this.attempt.ast(o,LEVEL_TOP),handler:null==(ref1=null==(ref2=this["catch"])?void 0:ref2.ast(o))?null:ref1,finalizer:null==this.ensure?null:Object.assign(this.ensure.ast(o,LEVEL_TOP),mergeAstLocationData(jisonLocationDataToAstLocationData(this.finallyTag.locationData),this.ensure.astLocationData()))}}}]),Try}(Base);return Try.prototype.children=["attempt","catch","ensure"],Try.prototype.isStatement=YES,Try}.call(this),exports.Catch=Catch=function(){var Catch=function(_Base49){function Catch(recovery,errorVariable){var _this72;_classCallCheck(this,Catch);var base1,ref1;return _this72=_super83.call(this),_this72.recovery=recovery,_this72.errorVariable=errorVariable,null!=(ref1=_this72.errorVariable)&&"function"==typeof(base1=ref1.unwrap()).propagateLhs&&base1.propagateLhs(!0),_this72}_inherits(Catch,_Base49);var _super83=_createSuper(Catch);return _createClass(Catch,[{key:"jumps",value:function jumps(o){return this.recovery.jumps(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var ret;if(ret=this.recovery.makeReturn(results,mark),!mark)return this.recovery=ret,this}},{key:"compileNode",value:function compileNode(o){var generatedErrorVariableName,placeholder;return o.indent+=TAB,generatedErrorVariableName=o.scope.freeVariable("error",{reserve:!1}),placeholder=new IdentifierLiteral(generatedErrorVariableName),this.checkUnassignable(),this.errorVariable&&this.recovery.unshift(new Assign(this.errorVariable,placeholder)),[].concat(this.makeCode(" catch ("),placeholder.compileToFragments(o),this.makeCode(") {\n"),this.recovery.compileToFragments(o,LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}")))}},{key:"checkUnassignable",value:function checkUnassignable(){var message;if(this.errorVariable&&(message=isUnassignable(this.errorVariable.unwrapAll().value),message))return this.errorVariable.error(message)}},{key:"astNode",value:function astNode(o){var ref1;return this.checkUnassignable(),null!=(ref1=this.errorVariable)&&ref1.eachName(function(name){var alreadyDeclared;return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared}),_get(_getPrototypeOf(Catch.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"CatchClause"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{param:null==(ref1=null==(ref2=this.errorVariable)?void 0:ref2.ast(o))?null:ref1,body:this.recovery.ast(o,LEVEL_TOP)}}}]),Catch}(Base);return Catch.prototype.children=["recovery","errorVariable"],Catch.prototype.isStatement=YES,Catch}.call(this),exports.Throw=Throw=function(){var Throw=function(_Base50){function Throw(expression1){var _this73;return _classCallCheck(this,Throw),_this73=_super84.call(this),_this73.expression=expression1,_this73}_inherits(Throw,_Base50);var _super84=_createSuper(Throw);return _createClass(Throw,[{key:"compileNode",value:function compileNode(o){var fragments;return fragments=this.expression.compileToFragments(o,LEVEL_LIST),unshiftAfterComments(fragments,this.makeCode("throw ")),fragments.unshift(this.makeCode(this.tab)),fragments.push(this.makeCode(";")),fragments}},{key:"astType",value:function astType(){return"ThrowStatement"}},{key:"astProperties",value:function astProperties(o){return{argument:this.expression.ast(o,LEVEL_LIST)}}}]),Throw}(Base);return Throw.prototype.children=["expression"],Throw.prototype.isStatement=YES,Throw.prototype.jumps=NO,Throw.prototype.makeReturn=THIS,Throw}.call(this),exports.Existence=Existence=function(){var Existence=function(_Base51){function Existence(expression1){var onlyNotUndefined=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1],_this74;_classCallCheck(this,Existence);var salvagedComments;return _this74=_super85.call(this),_this74.expression=expression1,_this74.comparisonTarget=onlyNotUndefined?"undefined":"null",salvagedComments=[],_this74.expression.traverseChildren(!0,function(child){var comment,j,len1,ref1;if(child.comments){for(ref1=child.comments,j=0,len1=ref1.length;j<len1;j++)comment=ref1[j],0>indexOf.call(salvagedComments,comment)&&salvagedComments.push(comment);return delete child.comments}}),attachCommentsToNode(salvagedComments,_assertThisInitialized(_this74)),moveComments(_this74.expression,_assertThisInitialized(_this74)),_this74}_inherits(Existence,_Base51);var _super85=_createSuper(Existence);return _createClass(Existence,[{key:"compileNode",value:function compileNode(o){var cmp,cnj,code;if(this.expression.front=this.front,code=this.expression.compile(o,LEVEL_OP),this.expression.unwrap()instanceof IdentifierLiteral&&!o.scope.check(code)){var _ref58=this.negated?["===","||"]:["!==","&&"],_ref59=_slicedToArray(_ref58,2);cmp=_ref59[0],cnj=_ref59[1],code="typeof ".concat(code," ").concat(cmp," \"undefined\"")+("undefined"===this.comparisonTarget?"":" ".concat(cnj," ").concat(code," ").concat(cmp," ").concat(this.comparisonTarget))}else cmp="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",code="".concat(code," ").concat(cmp," ").concat(this.comparisonTarget);return[this.makeCode(o.level<=LEVEL_COND?code:"(".concat(code,")"))]}},{key:"astType",value:function astType(){return"UnaryExpression"}},{key:"astProperties",value:function astProperties(o){return{argument:this.expression.ast(o),operator:"?",prefix:!1}}}]),Existence}(Base);return Existence.prototype.children=["expression"],Existence.prototype.invert=NEGATE,Existence}.call(this),exports.Parens=Parens=function(){var Parens=function(_Base52){function Parens(body1){var _this75;return _classCallCheck(this,Parens),_this75=_super86.call(this),_this75.body=body1,_this75}_inherits(Parens,_Base52);var _super86=_createSuper(Parens);return _createClass(Parens,[{key:"unwrap",value:function unwrap(){return this.body}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(o){var bare,expr,fragments,ref1,shouldWrapComment;return(expr=this.body.unwrap(),shouldWrapComment=null==(ref1=expr.comments)?void 0:ref1.some(function(comment){return comment.here&&!comment.unshift&&!comment.newLine}),expr instanceof Value&&expr.isAtomic()&&!this.jsxAttribute&&!shouldWrapComment)?(expr.front=this.front,expr.compileToFragments(o)):(fragments=expr.compileToFragments(o,LEVEL_PAREN),bare=o.level<LEVEL_OP&&!shouldWrapComment&&(expr instanceof Op&&!expr.isInOperator()||expr.unwrap()instanceof Call||expr instanceof For&&expr.returns)&&(o.level<LEVEL_COND||3>=fragments.length),this.jsxAttribute?this.wrapInBraces(fragments):bare?fragments:this.wrapInParentheses(fragments))}},{key:"astNode",value:function astNode(o){return this.body.unwrap().ast(o,LEVEL_PAREN)}}]),Parens}(Base);return Parens.prototype.children=["body"],Parens}.call(this),exports.StringWithInterpolations=StringWithInterpolations=function(){var StringWithInterpolations=function(_Base53){function StringWithInterpolations(body1){var _ref60=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},quote=_ref60.quote,startQuote=_ref60.startQuote,jsxAttribute=_ref60.jsxAttribute,_this76;return _classCallCheck(this,StringWithInterpolations),_this76=_super87.call(this),_this76.body=body1,_this76.quote=quote,_this76.startQuote=startQuote,_this76.jsxAttribute=jsxAttribute,_this76}_inherits(StringWithInterpolations,_Base53);var _super87=_createSuper(StringWithInterpolations);return _createClass(StringWithInterpolations,[{key:"unwrap",value:function unwrap(){return this}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"extractElements",value:function extractElements(o){var _ref61=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},includeInterpolationWrappers=_ref61.includeInterpolationWrappers,isJsx=_ref61.isJsx,elements,expr,salvagedComments;return expr=this.body.unwrap(),elements=[],salvagedComments=[],expr.traverseChildren(!1,function(node){var comment,commentPlaceholder,empty,j,k,len1,len2,ref1,ref2,ref3,unwrapped;if(node instanceof StringLiteral){if(node.comments){var _salvagedComments;(_salvagedComments=salvagedComments).push.apply(_salvagedComments,_toConsumableArray(node.comments)),delete node.comments}return elements.push(node),!0}if(node instanceof Interpolation){if(0!==salvagedComments.length){for(j=0,len1=salvagedComments.length;j<len1;j++)comment=salvagedComments[j],comment.unshift=!0,comment.newLine=!0;attachCommentsToNode(salvagedComments,node)}if((unwrapped=null==(ref1=node.expression)?void 0:ref1.unwrapAll())instanceof PassthroughLiteral&&unwrapped.generated&&!(isJsx&&o.compiling)){if(o.compiling){if(commentPlaceholder=new StringLiteral("").withLocationDataFrom(node),commentPlaceholder.comments=unwrapped.comments,node.comments){var _ref62;(_ref62=null==commentPlaceholder.comments?commentPlaceholder.comments=[]:commentPlaceholder.comments).push.apply(_ref62,_toConsumableArray(node.comments))}elements.push(new Value(commentPlaceholder))}else empty=new Interpolation().withLocationDataFrom(node),empty.comments=node.comments,elements.push(empty);}else if(node.expression||includeInterpolationWrappers){if(node.comments){var _ref63;(_ref63=null==(ref2=node.expression)?void 0:null==ref2.comments?ref2.comments=[]:ref2.comments).push.apply(_ref63,_toConsumableArray(node.comments))}elements.push(includeInterpolationWrappers?node:node.expression)}return!1}if(node.comments){if(0!==elements.length&&!(elements[elements.length-1]instanceof StringLiteral)){for(ref3=node.comments,k=0,len2=ref3.length;k<len2;k++)comment=ref3[k],comment.unshift=!1,comment.newLine=!0;attachCommentsToNode(node.comments,elements[elements.length-1])}else{var _salvagedComments2;(_salvagedComments2=salvagedComments).push.apply(_salvagedComments2,_toConsumableArray(node.comments))}delete node.comments}return!0}),elements}},{key:"compileNode",value:function compileNode(o){var code,element,elements,fragments,j,len1,ref1,unquotedElementValue,wrapped;if(null==this.comments&&(this.comments=null==(ref1=this.startQuote)?void 0:ref1.comments),this.jsxAttribute)return wrapped=new Parens(new StringWithInterpolations(this.body)),wrapped.jsxAttribute=!0,wrapped.compileNode(o);for(elements=this.extractElements(o,{isJsx:this.jsx}),fragments=[],this.jsx||fragments.push(this.makeCode("`")),(j=0,len1=elements.length);j<len1;j++)if(element=elements[j],element instanceof StringLiteral)unquotedElementValue=this.jsx?element.unquotedValueForJSX:element.unquotedValueForTemplateLiteral,fragments.push(this.makeCode(unquotedElementValue));else{var _fragments12;this.jsx||fragments.push(this.makeCode("$")),code=element.compileToFragments(o,LEVEL_PAREN),(!this.isNestedTag(element)||code.some(function(fragment){var ref2;return null==(ref2=fragment.comments)?void 0:ref2.some(function(comment){return!1===comment.here})}))&&(code=this.wrapInBraces(code),code[0].isStringWithInterpolations=!0,code[code.length-1].isStringWithInterpolations=!0),(_fragments12=fragments).push.apply(_fragments12,_toConsumableArray(code))}return this.jsx||fragments.push(this.makeCode("`")),fragments}},{key:"isNestedTag",value:function isNestedTag(element){var call;return call="function"==typeof element.unwrapAll?element.unwrapAll():void 0,this.jsx&&call instanceof JSXElement}},{key:"astType",value:function astType(){return"TemplateLiteral"}},{key:"astProperties",value:function astProperties(o){var element,elements,emptyInterpolation,expression,expressions,index,j,last,len1,node,quasis;elements=this.extractElements(o,{includeInterpolationWrappers:!0});var _slice1$call17=slice1.call(elements,-1),_slice1$call18=_slicedToArray(_slice1$call17,1);for(last=_slice1$call18[0],quasis=[],expressions=[],(index=j=0,len1=elements.length);j<len1;index=++j)if(element=elements[index],element instanceof StringLiteral)quasis.push(new TemplateElement(element.originalValue,{tail:element===last}).withLocationDataFrom(element).ast(o));else{var _element2=element;expression=_element2.expression,node=null==expression?(emptyInterpolation=new EmptyInterpolation,emptyInterpolation.locationData=emptyExpressionLocationData({interpolationNode:element,openingBrace:"#{",closingBrace:"}"}),emptyInterpolation):expression.unwrapAll(),expressions.push(astAsBlockIfNeeded(node,o))}return{expressions:expressions,quasis:quasis,quote:this.quote}}}],[{key:"fromStringLiteral",value:function fromStringLiteral(stringLiteral){var updatedString,updatedStringValue;return updatedString=stringLiteral.withoutQuotesInLocationData(),updatedStringValue=new Value(updatedString).withLocationDataFrom(updatedString),new StringWithInterpolations(Block.wrap([updatedStringValue]),{quote:stringLiteral.quote,jsxAttribute:stringLiteral.jsxAttribute}).withLocationDataFrom(stringLiteral)}}]),StringWithInterpolations}(Base);return StringWithInterpolations.prototype.children=["body"],StringWithInterpolations}.call(this),exports.TemplateElement=TemplateElement=function(_Base54){function TemplateElement(value1){var _ref64=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},tail1=_ref64.tail,_this77;return _classCallCheck(this,TemplateElement),_this77=_super88.call(this),_this77.value=value1,_this77.tail=tail1,_this77}_inherits(TemplateElement,_Base54);var _super88=_createSuper(TemplateElement);return _createClass(TemplateElement,[{key:"astProperties",value:function astProperties(){return{value:{raw:this.value},tail:!!this.tail}}}]),TemplateElement}(Base),exports.Interpolation=Interpolation=function(){var Interpolation=function(_Base55){function Interpolation(expression1){var _this78;return _classCallCheck(this,Interpolation),_this78=_super89.call(this),_this78.expression=expression1,_this78}_inherits(Interpolation,_Base55);var _super89=_createSuper(Interpolation);return _createClass(Interpolation)}(Base);return Interpolation.prototype.children=["expression"],Interpolation}.call(this),exports.EmptyInterpolation=EmptyInterpolation=function(_Base56){function EmptyInterpolation(){return _classCallCheck(this,EmptyInterpolation),_super90.call(this)}_inherits(EmptyInterpolation,_Base56);var _super90=_createSuper(EmptyInterpolation);return _createClass(EmptyInterpolation)}(Base),exports.For=For=function(){var For=function(_While){function For(body,source){var _this79;return _classCallCheck(this,For),_this79=_super91.call(this),_this79.addBody(body),_this79.addSource(source),_this79}_inherits(For,_While);var _super91=_createSuper(For);return _createClass(For,[{key:"isAwait",value:function isAwait(){var ref1;return null!=(ref1=this["await"])&&ref1}},{key:"addBody",value:function addBody(body){var base1,expressions;return this.body=Block.wrap([body]),expressions=this.body.expressions,expressions.length&&null==(base1=this.body).locationData&&(base1.locationData=mergeLocationData(expressions[0].locationData,expressions[expressions.length-1].locationData)),this}},{key:"addSource",value:function addSource(source){var _this80=this,_source$source=source.source,attr,attribs,attribute,base1,j,k,len1,len2,ref1,ref2,ref3,ref4;for(this.source=void 0!==_source$source&&_source$source,attribs=["name","index","guard","step","own","ownTag","await","awaitTag","object","from"],(j=0,len1=attribs.length);j<len1;j++)attr=attribs[j],this[attr]=null==(ref1=source[attr])?this[attr]:ref1;if(!this.source)return this;if(this.from&&this.index&&this.index.error("cannot use index with for-from"),this.own&&!this.object&&this.ownTag.error("cannot use own with for-".concat(this.from?"from":"in")),this.object){var _ref65=[this.index,this.name];this.name=_ref65[0],this.index=_ref65[1]}for(((null==(ref2=this.index)?void 0:"function"==typeof ref2.isArray?ref2.isArray():void 0)||(null==(ref3=this.index)?void 0:"function"==typeof ref3.isObject?ref3.isObject():void 0))&&this.index.error("index cannot be a pattern matching expression"),this["await"]&&!this.from&&this.awaitTag.error("await must be used with for-from"),this.range=this.source instanceof Value&&this.source.base instanceof Range&&!this.source.properties.length&&!this.from,this.pattern=this.name instanceof Value,this.pattern&&"function"==typeof(base1=this.name.unwrap()).propagateLhs&&base1.propagateLhs(!0),this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.returns=!1,ref4=["source","guard","step","name","index"],(k=0,len2=ref4.length);k<len2;k++)(attribute=ref4[k],!!this[attribute])&&(this[attribute].traverseChildren(!0,function(node){var comment,l,len3,ref5;if(node.comments){for(ref5=node.comments,l=0,len3=ref5.length;l<len3;l++)comment=ref5[l],comment.newLine=comment.unshift=!0;return moveComments(node,_this80[attribute])}}),moveComments(this[attribute],this));return this}},{key:"compileNode",value:function compileNode(o){var _slice1$call19,_slice1$call20,body,bodyFragments,compare,compareDown,declare,declareDown,defPart,down,forClose,forCode,forPartFragments,fragments,guardPart,idt1,increment,index,ivar,kvar,kvarAssign,last,lvar,name,namePart,ref,ref1,resultPart,returnResult,rvar,scope,source,step,stepNum,stepVar,svar,varPart;if(body=Block.wrap([this.body]),ref1=body.expressions,_slice1$call19=slice1.call(ref1,-1),_slice1$call20=_slicedToArray(_slice1$call19,1),last=_slice1$call20[0],_slice1$call19,(null==last?void 0:last.jumps())instanceof Return&&(this.returns=!1),source=this.range?this.source.base:this.source,scope=o.scope,this.pattern||(name=this.name&&this.name.compile(o,LEVEL_LIST)),index=this.index&&this.index.compile(o,LEVEL_LIST),name&&!this.pattern&&scope.find(name),index&&!(this.index instanceof Value)&&scope.find(index),this.returns&&(rvar=scope.freeVariable("results")),this.from?this.pattern&&(ivar=scope.freeVariable("x",{single:!0})):ivar=this.object&&index||scope.freeVariable("i",{single:!0}),kvar=(this.range||this.from)&&name||index||ivar,kvarAssign=kvar===ivar?"":"".concat(kvar," = "),this.step&&!this.range){var _this$cacheToCodeFrag9=this.cacheToCodeFragments(this.step.cache(o,LEVEL_LIST,shouldCacheOrIsAssignable)),_this$cacheToCodeFrag10=_slicedToArray(_this$cacheToCodeFrag9,2);step=_this$cacheToCodeFrag10[0],stepVar=_this$cacheToCodeFrag10[1],this.step.isNumber()&&(stepNum=parseNumber(stepVar))}return this.pattern&&(name=ivar),varPart="",guardPart="",defPart="",idt1=this.tab+TAB,this.range?forPartFragments=source.compileToFragments(merge(o,{index:ivar,name:name,step:this.step,shouldCache:shouldCacheOrIsAssignable})):(svar=this.source.compile(o,LEVEL_LIST),(name||this.own)&&!this.from&&!(this.source.unwrap()instanceof IdentifierLiteral)&&(defPart+="".concat(this.tab).concat(ref=scope.freeVariable("ref")," = ").concat(svar,";\n"),svar=ref),name&&!this.pattern&&!this.from&&(namePart="".concat(name," = ").concat(svar,"[").concat(kvar,"]")),!this.object&&!this.from&&(step!==stepVar&&(defPart+="".concat(this.tab).concat(step,";\n")),down=0>stepNum,!(this.step&&null!=stepNum&&down)&&(lvar=scope.freeVariable("len")),declare="".concat(kvarAssign).concat(ivar," = 0, ").concat(lvar," = ").concat(svar,".length"),declareDown="".concat(kvarAssign).concat(ivar," = ").concat(svar,".length - 1"),compare="".concat(ivar," < ").concat(lvar),compareDown="".concat(ivar," >= 0"),this.step?(null==stepNum?(compare="".concat(stepVar," > 0 ? ").concat(compare," : ").concat(compareDown),declare="(".concat(stepVar," > 0 ? (").concat(declare,") : ").concat(declareDown,")")):down&&(compare=compareDown,declare=declareDown),increment="".concat(ivar," += ").concat(stepVar)):increment="".concat(kvar===ivar?"".concat(ivar,"++"):"++".concat(ivar)),forPartFragments=[this.makeCode("".concat(declare,"; ").concat(compare,"; ").concat(kvarAssign).concat(increment))])),this.returns&&(resultPart="".concat(this.tab).concat(rvar," = [];\n"),returnResult="\n".concat(this.tab,"return ").concat(rvar,";"),body.makeReturn(rvar)),this.guard&&(1<body.expressions.length?body.expressions.unshift(new If(new Parens(this.guard).invert(),new StatementLiteral("continue"))):this.guard&&(body=Block.wrap([new If(this.guard,body)]))),this.pattern&&body.expressions.unshift(new Assign(this.name,this.from?new IdentifierLiteral(kvar):new Literal("".concat(svar,"[").concat(kvar,"]")))),namePart&&(varPart="\n".concat(idt1).concat(namePart,";")),this.object?(forPartFragments=[this.makeCode("".concat(kvar," in ").concat(svar))],this.own&&(guardPart="\n".concat(idt1,"if (!").concat(utility("hasProp",o),".call(").concat(svar,", ").concat(kvar,")) continue;"))):this.from&&(this["await"]?(forPartFragments=new Op("await",new Parens(new Literal("".concat(kvar," of ").concat(svar)))),forPartFragments=forPartFragments.compileToFragments(o,LEVEL_TOP)):forPartFragments=[this.makeCode("".concat(kvar," of ").concat(svar))]),bodyFragments=body.compileToFragments(merge(o,{indent:idt1}),LEVEL_TOP),bodyFragments&&0<bodyFragments.length&&(bodyFragments=[].concat(this.makeCode("\n"),bodyFragments,this.makeCode("\n"))),fragments=[this.makeCode(defPart)],resultPart&&fragments.push(this.makeCode(resultPart)),forCode=this["await"]?"for ":"for (",forClose=this["await"]?"":")",fragments=fragments.concat(this.makeCode(this.tab),this.makeCode(forCode),forPartFragments,this.makeCode("".concat(forClose," {").concat(guardPart).concat(varPart)),bodyFragments,this.makeCode(this.tab),this.makeCode("}")),returnResult&&fragments.push(this.makeCode(returnResult)),fragments}},{key:"astNode",value:function astNode(o){var addToScope,ref1,ref2;return addToScope=function(name){var alreadyDeclared;return alreadyDeclared=o.scope.find(name.value),name.isDeclaration=!alreadyDeclared},null!=(ref1=this.name)&&ref1.eachName(addToScope,{checkAssignability:!1}),null!=(ref2=this.index)&&ref2.eachName(addToScope,{checkAssignability:!1}),_get(_getPrototypeOf(For.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"For"}},{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9;return{source:null==(ref1=this.source)?void 0:ref1.ast(o),body:this.body.ast(o,LEVEL_TOP),guard:null==(ref2=null==(ref3=this.guard)?void 0:ref3.ast(o))?null:ref2,name:null==(ref4=null==(ref5=this.name)?void 0:ref5.ast(o))?null:ref4,index:null==(ref6=null==(ref7=this.index)?void 0:ref7.ast(o))?null:ref6,step:null==(ref8=null==(ref9=this.step)?void 0:ref9.ast(o))?null:ref8,postfix:!!this.postfix,own:!!this.own,await:!!this["await"],style:function(){switch(!1){case!this.from:return"from";case!this.object:return"of";case!this.name:return"in";default:return"range";}}.call(this)}}}]),For}(While);return For.prototype.children=["body","source","guard","step"],For}.call(this),exports.Switch=Switch=function(){var Switch=function(_Base57){function Switch(subject,cases1,otherwise){var _this81;return _classCallCheck(this,Switch),_this81=_super92.call(this),_this81.subject=subject,_this81.cases=cases1,_this81.otherwise=otherwise,_this81}_inherits(Switch,_Base57);var _super92=_createSuper(Switch);return _createClass(Switch,[{key:"jumps",value:function jumps(){var o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{block:!0},block,j,jumpNode,len1,ref1,ref2;for(ref1=this.cases,j=0,len1=ref1.length;j<len1;j++)if(block=ref1[j].block,jumpNode=block.jumps(o))return jumpNode;return null==(ref2=this.otherwise)?void 0:ref2.jumps(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var block,j,len1,ref1,ref2;for(ref1=this.cases,j=0,len1=ref1.length;j<len1;j++)block=ref1[j].block,block.makeReturn(results,mark);return results&&(this.otherwise||(this.otherwise=new Block([new Literal("void 0")]))),null!=(ref2=this.otherwise)&&ref2.makeReturn(results,mark),this}},{key:"compileNode",value:function compileNode(o){var block,body,cond,conditions,expr,fragments,i,idt1,idt2,j,k,len1,len2,ref1,ref2;for(idt1=o.indent+TAB,idt2=o.indent=idt1+TAB,fragments=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(o,LEVEL_PAREN):this.makeCode("false"),this.makeCode(") {\n")),ref1=this.cases,(i=j=0,len1=ref1.length);j<len1;i=++j){var _ref1$i=ref1[i];for(conditions=_ref1$i.conditions,block=_ref1$i.block,ref2=flatten([conditions]),(k=0,len2=ref2.length);k<len2;k++)cond=ref2[k],this.subject||(cond=cond.invert()),fragments=fragments.concat(this.makeCode(idt1+"case "),cond.compileToFragments(o,LEVEL_PAREN),this.makeCode(":\n"));if(0<(body=block.compileToFragments(o,LEVEL_TOP)).length&&(fragments=fragments.concat(body,this.makeCode("\n"))),i===this.cases.length-1&&!this.otherwise)break;(expr=this.lastNode(block.expressions),!(expr instanceof Return||expr instanceof Throw||expr instanceof Literal&&expr.jumps()&&"debugger"!==expr.value))&&fragments.push(cond.makeCode(idt2+"break;\n"))}if(this.otherwise&&this.otherwise.expressions.length){var _fragments13;(_fragments13=fragments).push.apply(_fragments13,[this.makeCode(idt1+"default:\n")].concat(_toConsumableArray(this.otherwise.compileToFragments(o,LEVEL_TOP)),[this.makeCode("\n")]))}return fragments.push(this.makeCode(this.tab+"}")),fragments}},{key:"astType",value:function astType(){return"SwitchStatement"}},{key:"casesAst",value:function casesAst(o){var caseIndex,caseLocationData,cases,consequent,j,k,kase,l,lastTestIndex,len1,len2,len3,ref1,ref2,results1,test,testConsequent,testIndex,tests;for(cases=[],ref1=this.cases,(caseIndex=j=0,len1=ref1.length);j<len1;caseIndex=++j){kase=ref1[caseIndex];var _kase=kase;for(tests=_kase.conditions,consequent=_kase.block,tests=flatten([tests]),lastTestIndex=tests.length-1,(testIndex=k=0,len2=tests.length);k<len2;testIndex=++k)test=tests[testIndex],testConsequent=testIndex===lastTestIndex?consequent:null,caseLocationData=test.locationData,(null==testConsequent?void 0:testConsequent.expressions.length)&&(caseLocationData=mergeLocationData(caseLocationData,testConsequent.expressions[testConsequent.expressions.length-1].locationData)),0===testIndex&&(caseLocationData=mergeLocationData(caseLocationData,kase.locationData,{justLeading:!0})),testIndex===lastTestIndex&&(caseLocationData=mergeLocationData(caseLocationData,kase.locationData,{justEnding:!0})),cases.push(new SwitchCase(test,testConsequent,{trailing:testIndex===lastTestIndex}).withLocationDataFrom({locationData:caseLocationData}))}for((null==(ref2=this.otherwise)?void 0:ref2.expressions.length)&&cases.push(new SwitchCase(null,this.otherwise).withLocationDataFrom(this.otherwise)),results1=[],(l=0,len3=cases.length);l<len3;l++)kase=cases[l],results1.push(kase.ast(o));return results1}},{key:"astProperties",value:function astProperties(o){var ref1,ref2;return{discriminant:null==(ref1=null==(ref2=this.subject)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1,cases:this.casesAst(o)}}}]),Switch}(Base);return Switch.prototype.children=["subject","cases","otherwise"],Switch.prototype.isStatement=YES,Switch}.call(this),SwitchCase=function(){var SwitchCase=function(_Base58){function SwitchCase(test1,block1){var _ref66=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},trailing=_ref66.trailing,_this82;return _classCallCheck(this,SwitchCase),_this82=_super93.call(this),_this82.test=test1,_this82.block=block1,_this82.trailing=trailing,_this82}_inherits(SwitchCase,_Base58);var _super93=_createSuper(SwitchCase);return _createClass(SwitchCase,[{key:"astProperties",value:function astProperties(o){var ref1,ref2,ref3,ref4;return{test:null==(ref1=null==(ref2=this.test)?void 0:ref2.ast(o,LEVEL_PAREN))?null:ref1,consequent:null==(ref3=null==(ref4=this.block)?void 0:ref4.ast(o,LEVEL_TOP).body)?[]:ref3,trailing:!!this.trailing}}}]),SwitchCase}(Base);return SwitchCase.prototype.children=["test","block"],SwitchCase}.call(this),exports.SwitchWhen=SwitchWhen=function(){var SwitchWhen=function(_Base59){function SwitchWhen(conditions1,block1){var _this83;return _classCallCheck(this,SwitchWhen),_this83=_super94.call(this),_this83.conditions=conditions1,_this83.block=block1,_this83}_inherits(SwitchWhen,_Base59);var _super94=_createSuper(SwitchWhen);return _createClass(SwitchWhen)}(Base);return SwitchWhen.prototype.children=["conditions","block"],SwitchWhen}.call(this),exports.If=If=function(){var If=function(_Base60){function If(condition1,body1){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_this84;return _classCallCheck(this,If),_this84=_super95.call(this),_this84.condition=condition1,_this84.body=body1,_this84.elseBody=null,_this84.isChain=!1,_this84.soak=options.soak,_this84.postfix=options.postfix,_this84.type=options.type,_this84.condition.comments&&moveComments(_this84.condition,_assertThisInitialized(_this84)),_this84}_inherits(If,_Base60);var _super95=_createSuper(If);return _createClass(If,[{key:"bodyNode",value:function bodyNode(){var ref1;return null==(ref1=this.body)?void 0:ref1.unwrap()}},{key:"elseBodyNode",value:function elseBodyNode(){var ref1;return null==(ref1=this.elseBody)?void 0:ref1.unwrap()}},{key:"addElse",value:function addElse(elseBody){return this.isChain?(this.elseBodyNode().addElse(elseBody),this.locationData=mergeLocationData(this.locationData,this.elseBodyNode().locationData)):(this.isChain=elseBody instanceof If,this.elseBody=this.ensureBlock(elseBody),this.elseBody.updateLocationDataIfMissing(elseBody.locationData),null!=this.locationData&&null!=this.elseBody.locationData&&(this.locationData=mergeLocationData(this.locationData,this.elseBody.locationData))),this}},{key:"isStatement",value:function isStatement(o){var ref1;return(null==o?void 0:o.level)===LEVEL_TOP||this.bodyNode().isStatement(o)||(null==(ref1=this.elseBodyNode())?void 0:ref1.isStatement(o))}},{key:"jumps",value:function jumps(o){var ref1;return this.body.jumps(o)||(null==(ref1=this.elseBody)?void 0:ref1.jumps(o))}},{key:"compileNode",value:function compileNode(o){return this.isStatement(o)?this.compileStatement(o):this.compileExpression(o)}},{key:"makeReturn",value:function makeReturn(results,mark){var ref1,ref2;return mark?(null!=(ref1=this.body)&&ref1.makeReturn(results,mark),void(null!=(ref2=this.elseBody)&&ref2.makeReturn(results,mark))):(results&&(this.elseBody||(this.elseBody=new Block([new Literal("void 0")]))),this.body&&(this.body=new Block([this.body.makeReturn(results)])),this.elseBody&&(this.elseBody=new Block([this.elseBody.makeReturn(results)])),this)}},{key:"ensureBlock",value:function ensureBlock(node){return node instanceof Block?node:new Block([node])}},{key:"compileStatement",value:function compileStatement(o){var answer,body,child,cond,exeq,ifPart,indent;return(child=del(o,"chainChild"),exeq=del(o,"isExistentialEquals"),exeq)?new If(this.processedCondition().invert(),this.elseBodyNode(),{type:"if"}).compileToFragments(o):(indent=o.indent+TAB,cond=this.processedCondition().compileToFragments(o,LEVEL_PAREN),body=this.ensureBlock(this.body).compileToFragments(merge(o,{indent:indent})),ifPart=[].concat(this.makeCode("if ("),cond,this.makeCode(") {\n"),body,this.makeCode("\n".concat(this.tab,"}"))),child||ifPart.unshift(this.makeCode(this.tab)),!this.elseBody)?ifPart:(answer=ifPart.concat(this.makeCode(" else ")),this.isChain?(o.chainChild=!0,answer=answer.concat(this.elseBody.unwrap().compileToFragments(o,LEVEL_TOP))):answer=answer.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(merge(o,{indent:indent}),LEVEL_TOP),this.makeCode("\n".concat(this.tab,"}"))),answer)}},{key:"compileExpression",value:function compileExpression(o){var alt,body,cond,fragments;return cond=this.processedCondition().compileToFragments(o,LEVEL_COND),body=this.bodyNode().compileToFragments(o,LEVEL_LIST),alt=this.elseBodyNode()?this.elseBodyNode().compileToFragments(o,LEVEL_LIST):[this.makeCode("void 0")],fragments=cond.concat(this.makeCode(" ? "),body,this.makeCode(" : "),alt),o.level>=LEVEL_COND?this.wrapInParentheses(fragments):fragments}},{key:"unfoldSoak",value:function unfoldSoak(){return this.soak&&this}},{key:"processedCondition",value:function processedCondition(){return null==this.processedConditionCache?this.processedConditionCache="unless"===this.type?this.condition.invert():this.condition:this.processedConditionCache}},{key:"isStatementAst",value:function isStatementAst(o){return o.level===LEVEL_TOP}},{key:"astType",value:function astType(o){return this.isStatementAst(o)?"IfStatement":"ConditionalExpression"}},{key:"astProperties",value:function astProperties(o){var isStatement,ref1,ref2,ref3,ref4;return isStatement=this.isStatementAst(o),{test:this.condition.ast(o,isStatement?LEVEL_PAREN:LEVEL_COND),consequent:isStatement?this.body.ast(o,LEVEL_TOP):this.bodyNode().ast(o,LEVEL_TOP),alternate:this.isChain?this.elseBody.unwrap().ast(o,isStatement?LEVEL_TOP:LEVEL_COND):isStatement||1!==(null==(ref1=this.elseBody)||null==(ref2=ref1.expressions)?void 0:ref2.length)?null==(ref3=null==(ref4=this.elseBody)?void 0:ref4.ast(o,LEVEL_TOP))?null:ref3:this.elseBody.expressions[0].ast(o,LEVEL_TOP),postfix:!!this.postfix,inverted:"unless"===this.type}}}]),If}(Base);return If.prototype.children=["condition","body","elseBody"],If}.call(this),exports.Sequence=Sequence=function(){var Sequence=function(_Base61){function Sequence(expressions1){var _this85;return _classCallCheck(this,Sequence),_this85=_super96.call(this),_this85.expressions=expressions1,_this85}_inherits(Sequence,_Base61);var _super96=_createSuper(Sequence);return _createClass(Sequence,[{key:"astNode",value:function astNode(o){return 1===this.expressions.length?this.expressions[0].ast(o):_get(_getPrototypeOf(Sequence.prototype),"astNode",this).call(this,o)}},{key:"astType",value:function astType(){return"SequenceExpression"}},{key:"astProperties",value:function astProperties(o){var expression;return{expressions:function(){var j,len1,ref1,results1;for(ref1=this.expressions,results1=[],(j=0,len1=ref1.length);j<len1;j++)expression=ref1[j],results1.push(expression.ast(o));return results1}.call(this)}}}]),Sequence}(Base);return Sequence.prototype.children=["expressions"],Sequence}.call(this),UTILITIES={modulo:function modulo(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},boundMethodCheck:function boundMethodCheck(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},hasProp:function hasProp(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function slice(){return"[].slice"},splice:function(){return"[].splice"}},LEVEL_TOP=1,LEVEL_PAREN=2,LEVEL_LIST=3,LEVEL_COND=4,LEVEL_OP=5,LEVEL_ACCESS=6,TAB="  ",SIMPLENUM=/^[+-]?\d+(?:_\d+)*$/,SIMPLE_STRING_OMIT=/\s*\n\s*/g,LEADING_BLANK_LINE=/^[^\n\S]*\n/,TRAILING_BLANK_LINE=/\n[^\n\S]*$/,STRING_OMIT=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,HEREGEX_OMIT=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,utility=function(name,o){var ref,root;return root=o.scope.root,name in root.utilities?root.utilities[name]:(ref=root.freeVariable(name),root.assign(ref,UTILITIES[name](o)),root.utilities[name]=ref)},multident=function(code,tab){var includingFirstLine=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],endsWithNewLine;return endsWithNewLine="\n"===code[code.length-1],code=(includingFirstLine?tab:"")+code.replace(/\n/g,"$&".concat(tab)),code=code.replace(/\s+$/,""),endsWithNewLine&&(code+="\n"),code},indentInitial=function(fragments,node){var fragment,fragmentIndex,j,len1;for(fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j)if(fragment=fragments[fragmentIndex],fragment.isHereComment)fragment.code=multident(fragment.code,node.tab);else{fragments.splice(fragmentIndex,0,node.makeCode("".concat(node.tab)));break}return fragments},hasLineComments=function(node){var comment,j,len1,ref1;if(!node.comments)return!1;for(ref1=node.comments,j=0,len1=ref1.length;j<len1;j++)if(comment=ref1[j],!1===comment.here)return!0;return!1},moveComments=function(from,to){if(null!=from&&from.comments)return attachCommentsToNode(from.comments,to),delete from.comments},unshiftAfterComments=function(fragments,fragmentToInsert){var fragment,fragmentIndex,inserted,j,len1;for(inserted=!1,fragmentIndex=j=0,len1=fragments.length;j<len1;fragmentIndex=++j)if(fragment=fragments[fragmentIndex],!!!fragment.isComment){fragments.splice(fragmentIndex,0,fragmentToInsert),inserted=!0;break}return inserted||fragments.push(fragmentToInsert),fragments},isLiteralArguments=function(node){return node instanceof IdentifierLiteral&&"arguments"===node.value},isLiteralThis=function(node){return node instanceof ThisLiteral||node instanceof Code&&node.bound},shouldCacheOrIsAssignable=function(node){return node.shouldCache()||("function"==typeof node.isAssignable?node.isAssignable():void 0)},_unfoldSoak=function(o,parent,name){var ifn;if(ifn=parent[name].unfoldSoak(o))return parent[name]=ifn.body,ifn.body=new Value(parent),ifn},makeDelimitedLiteral=function(body){var _ref67=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},delimiterOption=_ref67.delimiter,escapeNewlines=_ref67.escapeNewlines,_double2=_ref67.double,_ref67$includeDelimit=_ref67.includeDelimiters,_ref67$escapeDelimite=_ref67.escapeDelimiter,escapeDelimiter=void 0===_ref67$escapeDelimite||_ref67$escapeDelimite,convertTrailingNullEscapes=_ref67.convertTrailingNullEscapes,escapeTemplateLiteralCurlies,printedDelimiter,regex;return""===body&&"/"===delimiterOption&&(body="(?:)"),escapeTemplateLiteralCurlies="`"===delimiterOption,regex=RegExp("(\\\\\\\\)|(\\\\0(?=\\d))".concat(convertTrailingNullEscapes?/|(\\0)$/.source:"").concat(escapeDelimiter?RegExp("|\\\\?(".concat(delimiterOption,")")).source:"").concat(escapeTemplateLiteralCurlies?/|\\?(\$\{)/.source:"","|\\\\?(?:").concat(escapeNewlines?"(\n)|":"","(\\r)|(\\u2028)|(\\u2029))|(\\\\.)"),"g"),body=body.replace(regex,function(match,backslash,nul){for(var _len2=arguments.length,args=Array(3<_len2?_len2-3:0),_key2=3,cr,delimiter,lf,ls,other,ps,templateLiteralCurly,trailingNullEscape;_key2<_len2;_key2++)args[_key2-3]=arguments[_key2];switch(trailingNullEscape=convertTrailingNullEscapes?args.shift():void 0,delimiter=escapeDelimiter?args.shift():void 0,templateLiteralCurly=escapeTemplateLiteralCurlies?args.shift():void 0,lf=escapeNewlines?args.shift():void 0,cr=args[0],ls=args[1],ps=args[2],other=args[3],!1){case!backslash:return _double2?backslash+backslash:backslash;case!nul:return"\\x00";case!trailingNullEscape:return"\\x00";case!delimiter:return"\\".concat(delimiter);case!templateLiteralCurly:return"\\${";case!lf:return"\\n";case!cr:return"\\r";case!ls:return"\\u2028";case!ps:return"\\u2029";case!other:return _double2?"\\".concat(other):other;}}),printedDelimiter=void 0===_ref67$includeDelimit||_ref67$includeDelimit?delimiterOption:"","".concat(printedDelimiter).concat(body).concat(printedDelimiter)},sniffDirectives=function(expressions){var _ref68=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},notFinalExpression=_ref68.notFinalExpression,expression,index,lastIndex,results1,unwrapped;for(index=0,lastIndex=expressions.length-1,results1=[];index<=lastIndex&&!(index===lastIndex&&notFinalExpression);){if(expression=expressions[index],(unwrapped=null==expression?void 0:"function"==typeof expression.unwrap?expression.unwrap():void 0)instanceof PassthroughLiteral&&unwrapped.generated){index++;continue}if(!(expression instanceof Value&&expression.isString()&&!expression.unwrap().shouldGenerateTemplateLiteral()))break;expressions[index]=new Directive(expression).withLocationDataFrom(expression),results1.push(index++)}return results1},astAsBlockIfNeeded=function(node,o){var unwrapped;return unwrapped=node.unwrap(),unwrapped instanceof Block&&1<unwrapped.expressions.length?(unwrapped.makeReturn(null,!0),unwrapped.ast(o,LEVEL_TOP)):node.ast(o,LEVEL_PAREN)},lesser=function(a,b){return a<b?a:b},greater=function(a,b){return a>b?a:b},isAstLocGreater=function(a,b){return!!(a.line>b.line)||a.line===b.line&&a.column>b.column},isLocationDataStartGreater=function(a,b){return!!(a.first_line>b.first_line)||a.first_line===b.first_line&&a.first_column>b.first_column},isLocationDataEndGreater=function(a,b){return!!(a.last_line>b.last_line)||a.last_line===b.last_line&&a.last_column>b.last_column},exports.mergeLocationData=mergeLocationData=function(locationDataA,locationDataB){var _ref69=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},justLeading=_ref69.justLeading,justEnding=_ref69.justEnding;return Object.assign(justEnding?{first_line:locationDataA.first_line,first_column:locationDataA.first_column}:isLocationDataStartGreater(locationDataA,locationDataB)?{first_line:locationDataB.first_line,first_column:locationDataB.first_column}:{first_line:locationDataA.first_line,first_column:locationDataA.first_column},justLeading?{last_line:locationDataA.last_line,last_column:locationDataA.last_column,last_line_exclusive:locationDataA.last_line_exclusive,last_column_exclusive:locationDataA.last_column_exclusive}:isLocationDataEndGreater(locationDataA,locationDataB)?{last_line:locationDataA.last_line,last_column:locationDataA.last_column,last_line_exclusive:locationDataA.last_line_exclusive,last_column_exclusive:locationDataA.last_column_exclusive}:{last_line:locationDataB.last_line,last_column:locationDataB.last_column,last_line_exclusive:locationDataB.last_line_exclusive,last_column_exclusive:locationDataB.last_column_exclusive},{range:[justEnding?locationDataA.range[0]:lesser(locationDataA.range[0],locationDataB.range[0]),justLeading?locationDataA.range[1]:greater(locationDataA.range[1],locationDataB.range[1])]})},exports.mergeAstLocationData=mergeAstLocationData=function(nodeA,nodeB){var _ref70=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},justLeading=_ref70.justLeading,justEnding=_ref70.justEnding;return{loc:{start:justEnding?nodeA.loc.start:isAstLocGreater(nodeA.loc.start,nodeB.loc.start)?nodeB.loc.start:nodeA.loc.start,end:justLeading?nodeA.loc.end:isAstLocGreater(nodeA.loc.end,nodeB.loc.end)?nodeA.loc.end:nodeB.loc.end},range:[justEnding?nodeA.range[0]:lesser(nodeA.range[0],nodeB.range[0]),justLeading?nodeA.range[1]:greater(nodeA.range[1],nodeB.range[1])],start:justEnding?nodeA.start:lesser(nodeA.start,nodeB.start),end:justLeading?nodeA.end:greater(nodeA.end,nodeB.end)}},exports.jisonLocationDataToAstLocationData=jisonLocationDataToAstLocationData=function(_ref71){var first_line=_ref71.first_line,first_column=_ref71.first_column,last_line_exclusive=_ref71.last_line_exclusive,last_column_exclusive=_ref71.last_column_exclusive,range=_ref71.range;return{loc:{start:{line:first_line+1,column:first_column},end:{line:last_line_exclusive+1,column:last_column_exclusive}},range:[range[0],range[1]],start:range[0],end:range[1]}},zeroWidthLocationDataFromEndLocation=function(_ref72){var _ref72$range=_slicedToArray(_ref72.range,2),endRange=_ref72$range[1],last_line_exclusive=_ref72.last_line_exclusive,last_column_exclusive=_ref72.last_column_exclusive;return{first_line:last_line_exclusive,first_column:last_column_exclusive,last_line:last_line_exclusive,last_column:last_column_exclusive,last_line_exclusive:last_line_exclusive,last_column_exclusive:last_column_exclusive,range:[endRange,endRange]}},extractSameLineLocationDataFirst=function(numChars){return function(_ref73){var _ref73$range=_slicedToArray(_ref73.range,1),startRange=_ref73$range[0],first_line=_ref73.first_line,first_column=_ref73.first_column;return{first_line:first_line,first_column:first_column,last_line:first_line,last_column:first_column+numChars-1,last_line_exclusive:first_line,last_column_exclusive:first_column+numChars,range:[startRange,startRange+numChars]}}},extractSameLineLocationDataLast=function(numChars){return function(_ref74){var _ref74$range=_slicedToArray(_ref74.range,2),endRange=_ref74$range[1],last_line=_ref74.last_line,last_column=_ref74.last_column,last_line_exclusive=_ref74.last_line_exclusive,last_column_exclusive=_ref74.last_column_exclusive;return{first_line:last_line,first_column:last_column-(numChars-1),last_line:last_line,last_column:last_column,last_line_exclusive:last_line_exclusive,last_column_exclusive:last_column_exclusive,range:[endRange-numChars,endRange]}}},emptyExpressionLocationData=function(_ref75){var element=_ref75.interpolationNode,openingBrace=_ref75.openingBrace,closingBrace=_ref75.closingBrace;return{first_line:element.locationData.first_line,first_column:element.locationData.first_column+openingBrace.length,last_line:element.locationData.last_line,last_column:element.locationData.last_column-closingBrace.length,last_line_exclusive:element.locationData.last_line,last_column_exclusive:element.locationData.last_column,range:[element.locationData.range[0]+openingBrace.length,element.locationData.range[1]-closingBrace.length]}}}.call(this),{exports:exports}.exports}(),require["./sourcemap"]=function(){var module={exports:{}};return function(){var LineMap,SourceMap;LineMap=function(){function LineMap(line1){_classCallCheck(this,LineMap),this.line=line1,this.columns=[]}return _createClass(LineMap,[{key:"add",value:function add(column,_ref76){var _ref77=_slicedToArray(_ref76,2),sourceLine=_ref77[0],sourceColumn=_ref77[1],options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return this.columns[column]&&options.noReplace?void 0:this.columns[column]={line:this.line,column:column,sourceLine:sourceLine,sourceColumn:sourceColumn}}},{key:"sourceLocation",value:function sourceLocation(column){for(var mapping;!((mapping=this.columns[column])||0>=column);)column--;return mapping&&[mapping.sourceLine,mapping.sourceColumn]}}]),LineMap}(),SourceMap=function(){var SourceMap=function(){function SourceMap(){_classCallCheck(this,SourceMap),this.lines=[]}return _createClass(SourceMap,[{key:"add",value:function add(sourceLocation,generatedLocation){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},_generatedLocation=_slicedToArray(generatedLocation,2),base,column,line,lineMap;return line=_generatedLocation[0],column=_generatedLocation[1],lineMap=(base=this.lines)[line]||(base[line]=new LineMap(line)),lineMap.add(column,sourceLocation,options)}},{key:"sourceLocation",value:function sourceLocation(_ref78){for(var _ref79=_slicedToArray(_ref78,2),line=_ref79[0],column=_ref79[1],lineMap;!((lineMap=this.lines[line])||0>=line);)line--;return lineMap&&lineMap.sourceLocation(column)}},{key:"generate",value:function generate(){var options=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},code=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,buffer,i,j,lastColumn,lastSourceColumn,lastSourceLine,len,len1,lineMap,lineNumber,mapping,needComma,ref,ref1,sources,v3,writingline;for(writingline=0,lastColumn=0,lastSourceLine=0,lastSourceColumn=0,needComma=!1,buffer="",ref=this.lines,(lineNumber=i=0,len=ref.length);i<len;lineNumber=++i)if(lineMap=ref[lineNumber],lineMap)for(ref1=lineMap.columns,j=0,len1=ref1.length;j<len1;j++)if(mapping=ref1[j],!!mapping){for(;writingline<mapping.line;)lastColumn=0,needComma=!1,buffer+=";",writingline++;needComma&&(buffer+=",",needComma=!1),buffer+=this.encodeVlq(mapping.column-lastColumn),lastColumn=mapping.column,buffer+=this.encodeVlq(0),buffer+=this.encodeVlq(mapping.sourceLine-lastSourceLine),lastSourceLine=mapping.sourceLine,buffer+=this.encodeVlq(mapping.sourceColumn-lastSourceColumn),lastSourceColumn=mapping.sourceColumn,needComma=!0}return sources=options.sourceFiles?options.sourceFiles:options.filename?[options.filename]:["<anonymous>"],v3={version:3,file:options.generatedFile||"",sourceRoot:options.sourceRoot||"",sources:sources,names:[],mappings:buffer},(options.sourceMap||options.inlineMap)&&(v3.sourcesContent=[code]),v3}},{key:"encodeVlq",value:function encodeVlq(value){var answer,nextChunk,signBit,valueToEncode;for(answer="",signBit=0>value?1:0,valueToEncode=(_Mathabs(value)<<1)+signBit;valueToEncode||!answer;)nextChunk=valueToEncode&VLQ_VALUE_MASK,valueToEncode>>=VLQ_SHIFT,valueToEncode&&(nextChunk|=VLQ_CONTINUATION_BIT),answer+=this.encodeBase64(nextChunk);return answer}},{key:"encodeBase64",value:function encodeBase64(value){return BASE64_CHARS[value]||function(){throw new Error("Cannot Base64 encode value: ".concat(value))}()}}],[{key:"registerCompiled",value:function registerCompiled(filename,source,sourcemap){if(null!=sourcemap)return SourceMap.sourceMaps[filename]=sourcemap}},{key:"getSourceMap",value:function getSourceMap(filename){return SourceMap.sourceMaps[filename]}}]),SourceMap}(),BASE64_CHARS,VLQ_CONTINUATION_BIT,VLQ_SHIFT,VLQ_VALUE_MASK;return SourceMap.sourceMaps=Object.create(null),VLQ_SHIFT=5,VLQ_CONTINUATION_BIT=1<<VLQ_SHIFT,VLQ_VALUE_MASK=VLQ_CONTINUATION_BIT-1,BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",SourceMap}.call(this),module.exports=SourceMap}.call(this),module.exports}(),require["./coffeescript"]=function(){var exports={};return function(){var _require7=require("./lexer"),FILE_EXTENSIONS,Lexer,SourceMap,base64encode,checkShebangLine,compile,getSourceMap,helpers,lexer,packageJson,parser,registerCompiled,withPrettyErrors;Lexer=_require7.Lexer;var _require8=require("./parser");parser=_require8.parser,helpers=require("./helpers"),SourceMap=require("./sourcemap"),packageJson=require("../../package.json"),exports.VERSION=packageJson.version,exports.FILE_EXTENSIONS=FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"],exports.helpers=helpers;var _SourceMap=SourceMap;getSourceMap=_SourceMap.getSourceMap,registerCompiled=_SourceMap.registerCompiled,exports.registerCompiled=registerCompiled,base64encode=function(src){switch(!1){case"function"!=typeof Buffer:return Buffer.from(src).toString("base64");case"function"!=typeof btoa:return btoa(encodeURIComponent(src).replace(/%([0-9A-F]{2})/g,function(match,p1){return _StringfromCharCode("0x"+p1)}));default:throw new Error("Unable to base64 encode inline sourcemap.");}},withPrettyErrors=function(fn){return function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},err;try{return fn.call(this,code,options)}catch(error){if(err=error,"string"!=typeof code)throw err;throw helpers.updateSyntaxError(err,code,options.filename)}}},exports.compile=compile=withPrettyErrors(function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},ast,currentColumn,currentLine,encoded,filename,fragment,fragments,generateSourceMap,header,i,j,js,len,len1,map,newLines,nodes,range,ref,sourceCodeLastLine,sourceCodeNumberOfLines,sourceMapDataURI,sourceURL,token,tokens,transpiler,transpilerOptions,transpilerOutput,v3SourceMap;if(options=Object.assign({},options),generateSourceMap=options.sourceMap||options.inlineMap||null==options.filename,filename=options.filename||helpers.anonymousFileName(),checkShebangLine(filename,code),generateSourceMap&&(map=new SourceMap),tokens=lexer.tokenize(code,options),options.referencedVars=function(){var i,len,results;for(results=[],i=0,len=tokens.length;i<len;i++)token=tokens[i],"IDENTIFIER"===token[0]&&results.push(token[1]);return results}(),null==options.bare||!0!==options.bare)for(i=0,len=tokens.length;i<len;i++)if(token=tokens[i],"IMPORT"===(ref=token[0])||"EXPORT"===ref){options.bare=!0;break}if(nodes=parser.parse(tokens),options.ast)return nodes.allCommentTokens=helpers.extractAllCommentTokens(tokens),sourceCodeNumberOfLines=(code.match(/\r?\n/g)||"").length+1,sourceCodeLastLine=/.*$/.exec(code)[0],ast=nodes.ast(options),range=[0,code.length],ast.start=ast.program.start=range[0],ast.end=ast.program.end=range[1],ast.range=ast.program.range=range,ast.loc.start=ast.program.loc.start={line:1,column:0},ast.loc.end.line=ast.program.loc.end.line=sourceCodeNumberOfLines,ast.loc.end.column=ast.program.loc.end.column=sourceCodeLastLine.length,ast.tokens=tokens,ast;for(fragments=nodes.compileToFragments(options),currentLine=0,options.header&&(currentLine+=1),options.shiftLine&&(currentLine+=1),currentColumn=0,js="",(j=0,len1=fragments.length);j<len1;j++)fragment=fragments[j],generateSourceMap&&(fragment.locationData&&!/^[;\s]*$/.test(fragment.code)&&map.add([fragment.locationData.first_line,fragment.locationData.first_column],[currentLine,currentColumn],{noReplace:!0}),newLines=helpers.count(fragment.code,"\n"),currentLine+=newLines,newLines?currentColumn=fragment.code.length-(fragment.code.lastIndexOf("\n")+1):currentColumn+=fragment.code.length),js+=fragment.code;if(options.header&&(header="Generated by CoffeeScript ".concat(this.VERSION),js="// ".concat(header,"\n").concat(js)),generateSourceMap&&(v3SourceMap=map.generate(options,code)),options.transpile){if("object"!==_typeof(options.transpile))throw new Error("The transpile option must be given an object with options to pass to Babel");transpiler=options.transpile.transpile,delete options.transpile.transpile,transpilerOptions=Object.assign({},options.transpile),v3SourceMap&&null==transpilerOptions.inputSourceMap&&(transpilerOptions.inputSourceMap=v3SourceMap),transpilerOutput=transpiler(js,transpilerOptions),js=transpilerOutput.code,v3SourceMap&&transpilerOutput.map&&(v3SourceMap=transpilerOutput.map)}return options.inlineMap&&(encoded=base64encode(JSON.stringify(v3SourceMap)),sourceMapDataURI="//# sourceMappingURL=data:application/json;base64,".concat(encoded),sourceURL="//# sourceURL=".concat(filename),js="".concat(js,"\n").concat(sourceMapDataURI,"\n").concat(sourceURL)),registerCompiled(filename,code,map),options.sourceMap?{js:js,sourceMap:map,v3SourceMap:JSON.stringify(v3SourceMap,null,2)}:js}),exports.tokens=withPrettyErrors(function(code,options){return lexer.tokenize(code,options)}),exports.nodes=withPrettyErrors(function(source,options){return"string"==typeof source&&(source=lexer.tokenize(source,options)),parser.parse(source)}),exports.run=exports.eval=exports.register=function(){throw new Error("require index.coffee, not this file")},lexer=new Lexer,parser.lexer={yylloc:{range:[]},options:{ranges:!0},lex:function lex(){var tag,token;if(token=parser.tokens[this.pos++],token){var _token6=token,_token7=_slicedToArray(_token6,3);tag=_token7[0],this.yytext=_token7[1],this.yylloc=_token7[2],parser.errorToken=token.origin||token,this.yylineno=this.yylloc.first_line}else tag="";return tag},setInput:function setInput(tokens){return parser.tokens=tokens,this.pos=0},upcomingInput:function upcomingInput(){return""}},parser.yy=require("./nodes"),parser.yy.parseError=function(message,_ref80){var token=_ref80.token,_parser=parser,errorLoc,errorTag,errorText,errorToken,tokens;errorToken=_parser.errorToken,tokens=_parser.tokens;var _errorToken=errorToken,_errorToken2=_slicedToArray(_errorToken,3);return errorTag=_errorToken2[0],errorText=_errorToken2[1],errorLoc=_errorToken2[2],errorText=function(){switch(!1){case errorToken!==tokens[tokens.length-1]:return"end of input";case"INDENT"!==errorTag&&"OUTDENT"!==errorTag:return"indentation";case"IDENTIFIER"!==errorTag&&"NUMBER"!==errorTag&&"INFINITY"!==errorTag&&"STRING"!==errorTag&&"STRING_START"!==errorTag&&"REGEX"!==errorTag&&"REGEX_START"!==errorTag:return errorTag.replace(/_START$/,"").toLowerCase();default:return helpers.nameWhitespaceCharacter(errorText);}}(),helpers.throwSyntaxError("unexpected ".concat(errorText),errorLoc)},exports.patchStackTrace=function(){var formatSourcePosition,getSourceMapping;return formatSourcePosition=function(frame,getSourceMapping){var as,column,fileLocation,filename,functionName,isConstructor,isMethodCall,line,methodName,source,tp,typeName;return filename=void 0,fileLocation="",frame.isNative()?fileLocation="native":(frame.isEval()?(filename=frame.getScriptNameOrSourceURL(),!filename&&(fileLocation="".concat(frame.getEvalOrigin(),", "))):filename=frame.getFileName(),filename||(filename="<anonymous>"),line=frame.getLineNumber(),column=frame.getColumnNumber(),source=getSourceMapping(filename,line,column),fileLocation=source?"".concat(filename,":").concat(source[0],":").concat(source[1]):"".concat(filename,":").concat(line,":").concat(column)),functionName=frame.getFunctionName(),isConstructor=frame.isConstructor(),isMethodCall=!(frame.isToplevel()||isConstructor),isMethodCall?(methodName=frame.getMethodName(),typeName=frame.getTypeName(),functionName?(tp=as="",typeName&&functionName.indexOf(typeName)&&(tp="".concat(typeName,".")),methodName&&functionName.indexOf(".".concat(methodName))!==functionName.length-methodName.length-1&&(as=" [as ".concat(methodName,"]")),"".concat(tp).concat(functionName).concat(as," (").concat(fileLocation,")")):"".concat(typeName,".").concat(methodName||"<anonymous>"," (").concat(fileLocation,")")):isConstructor?"new ".concat(functionName||"<anonymous>"," (").concat(fileLocation,")"):functionName?"".concat(functionName," (").concat(fileLocation,")"):fileLocation},getSourceMapping=function(filename,line,column){var answer,sourceMap;return sourceMap=getSourceMap(filename,line,column),null!=sourceMap&&(answer=sourceMap.sourceLocation([line-1,column-1])),null==answer?null:[answer[0]+1,answer[1]+1]},Error.prepareStackTrace=function(err,stack){var frame,frames;return frames=function(){var i,len,results;for(results=[],i=0,len=stack.length;i<len&&(frame=stack[i],frame.getFunction()!==exports.run);i++)results.push("    at ".concat(formatSourcePosition(frame,getSourceMapping)));return results}(),"".concat(err.toString(),"\n").concat(frames.join("\n"),"\n")}},checkShebangLine=function(file,input){var args,firstLine,ref,rest;if(firstLine=input.split(/$/m)[0],rest=null==firstLine?void 0:firstLine.match(/^#!\s*([^\s]+\s*)(.*)/),args=null==rest||null==(ref=rest[2])?void 0:ref.split(/\s/).filter(function(s){return""!==s}),1<(null==args?void 0:args.length))return console.error("The script to be run begins with a shebang line with more than one\nargument. This script will fail on platforms such as Linux which only\nallow a single argument."),console.error("The shebang line was: '".concat(firstLine,"' in file '").concat(file,"'")),console.error("The arguments were: ".concat(JSON.stringify(args)))}}.call(this),{exports:exports}.exports}(),require["./browser"]=function(){var module={exports:{}};return function(){var indexOf=[].indexOf,CoffeeScript,compile;CoffeeScript=require("./coffeescript");var _CoffeeScript=CoffeeScript;compile=_CoffeeScript.compile,CoffeeScript.eval=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},globalRoot;return null==options.bare&&(options.bare=!0),globalRoot="undefined"!=typeof window&&null!==window?window:global,globalRoot.eval(compile(code,options))},CoffeeScript.run=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return options.bare=!0,options.shiftLine=!0,Function(compile(code,options))()},module.exports=CoffeeScript,"undefined"==typeof window||null===window||("undefined"!=typeof btoa&&null!==btoa&&"undefined"!=typeof JSON&&null!==JSON&&(compile=function(code){var options=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return options.inlineMap=!0,CoffeeScript.compile(code,options)}),CoffeeScript.load=function(url,callback){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},hold=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],xhr;return options.sourceFiles=[url],xhr=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest,xhr.open("GET",url,!0),"overrideMimeType"in xhr&&xhr.overrideMimeType("text/plain"),xhr.onreadystatechange=function(){var param,ref;if(4===xhr.readyState){if(0!==(ref=xhr.status)&&200!==ref)throw new Error("Could not load ".concat(url));else if(param=[xhr.responseText,options],!hold){var _CoffeeScript2;(_CoffeeScript2=CoffeeScript).run.apply(_CoffeeScript2,_toConsumableArray(param))}if(callback)return callback(param)}},xhr.send(null)},CoffeeScript.runScripts=function(){var coffees,coffeetypes,_execute,i,index,j,len,s,script,scripts;for(scripts=window.document.getElementsByTagName("script"),coffeetypes=["text/coffeescript","text/literate-coffeescript"],coffees=function(){var j,len,ref,results;for(results=[],j=0,len=scripts.length;j<len;j++)s=scripts[j],(ref=s.type,0<=indexOf.call(coffeetypes,ref))&&results.push(s);return results}(),index=0,_execute=function execute(){var param;if(param=coffees[index],param instanceof Array){var _CoffeeScript3;return(_CoffeeScript3=CoffeeScript).run.apply(_CoffeeScript3,_toConsumableArray(param)),index++,_execute()}},(i=j=0,len=coffees.length);j<len;i=++j)script=coffees[i],function(script,i){var options,source;return options={literate:script.type===coffeetypes[1]},source=script.src||script.getAttribute("data-src"),source?(options.filename=source,CoffeeScript.load(source,function(param){return coffees[i]=param,_execute()},options,!0)):(options.filename=script.id&&""!==script.id?script.id:"coffeescript".concat(0===i?"":i),options.sourceFiles=["embedded"],coffees[i]=[script.innerHTML,options])}(script,i);return _execute()},this===window&&(window.addEventListener?window.addEventListener("DOMContentLoaded",CoffeeScript.runScripts,!1):window.attachEvent("onload",CoffeeScript.runScripts)))}.call(this),module.exports}(),require["./browser"]}();export default CoffeeScript;var VERSION=CoffeeScript.VERSION,compile=CoffeeScript.compile,evaluate=CoffeeScript.eval,load=CoffeeScript.load,run=CoffeeScript.run,runScripts=CoffeeScript.runScripts;export{VERSION,compile,evaluate as eval,load,run,runScripts};
\ No newline at end of file
diff --git a/lib/coffeescript/browser.js b/lib/coffeescript/browser.js
new file mode 100644
index 00000000..8527a6c4
--- /dev/null
+++ b/lib/coffeescript/browser.js
@@ -0,0 +1,151 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // This **Browser** compatibility layer extends core CoffeeScript functions
+  // to make things work smoothly when compiling code directly in the browser.
+  // We add support for loading remote Coffee scripts via **XHR**, and
+  // `text/coffeescript` script tags, source maps via data-URLs, and so on.
+  var CoffeeScript, compile,
+    indexOf = [].indexOf;
+
+  CoffeeScript = require('./coffeescript');
+
+  ({compile} = CoffeeScript);
+
+  // Use `window.eval` to evaluate code, rather than just `eval`, to run the
+  // script in a clean global scope rather than inheriting the scope of the
+  // CoffeeScript compiler. (So that `cake test:browser` also works in Node,
+  // use either `window.eval` or `global.eval` as appropriate).
+  CoffeeScript.eval = function(code, options = {}) {
+    var globalRoot;
+    if (options.bare == null) {
+      options.bare = true;
+    }
+    globalRoot = typeof window !== "undefined" && window !== null ? window : global;
+    return globalRoot['eval'](compile(code, options));
+  };
+
+  // Running code does not provide access to this scope.
+  CoffeeScript.run = function(code, options = {}) {
+    options.bare = true;
+    options.shiftLine = true;
+    return Function(compile(code, options))();
+  };
+
+  // Export this more limited `CoffeeScript` than what is exported by
+  // `index.coffee`, which is intended for a Node environment.
+  module.exports = CoffeeScript;
+
+  // If we’re not in a browser environment, we’re finished with the public API.
+  if (typeof window === "undefined" || window === null) {
+    return;
+  }
+
+  // Include source maps where possible. If we’ve got a base64 encoder, a
+  // JSON serializer, and tools for escaping unicode characters, we’re good to go.
+  // Ported from https://developer.mozilla.org/en-US/docs/DOM/window.btoa
+  if ((typeof btoa !== "undefined" && btoa !== null) && (typeof JSON !== "undefined" && JSON !== null)) {
+    compile = function(code, options = {}) {
+      options.inlineMap = true;
+      return CoffeeScript.compile(code, options);
+    };
+  }
+
+  // Load a remote script from the current domain via XHR.
+  CoffeeScript.load = function(url, callback, options = {}, hold = false) {
+    var xhr;
+    options.sourceFiles = [url];
+    xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new window.XMLHttpRequest();
+    xhr.open('GET', url, true);
+    if ('overrideMimeType' in xhr) {
+      xhr.overrideMimeType('text/plain');
+    }
+    xhr.onreadystatechange = function() {
+      var param, ref;
+      if (xhr.readyState === 4) {
+        if ((ref = xhr.status) === 0 || ref === 200) {
+          param = [xhr.responseText, options];
+          if (!hold) {
+            CoffeeScript.run(...param);
+          }
+        } else {
+          throw new Error(`Could not load ${url}`);
+        }
+        if (callback) {
+          return callback(param);
+        }
+      }
+    };
+    return xhr.send(null);
+  };
+
+  // Activate CoffeeScript in the browser by having it compile and evaluate
+  // all script tags with a content-type of `text/coffeescript`.
+  // This happens on page load.
+  CoffeeScript.runScripts = function() {
+    var coffees, coffeetypes, execute, i, index, j, len, s, script, scripts;
+    scripts = window.document.getElementsByTagName('script');
+    coffeetypes = ['text/coffeescript', 'text/literate-coffeescript'];
+    coffees = (function() {
+      var j, len, ref, results;
+      results = [];
+      for (j = 0, len = scripts.length; j < len; j++) {
+        s = scripts[j];
+        if (ref = s.type, indexOf.call(coffeetypes, ref) >= 0) {
+          results.push(s);
+        }
+      }
+      return results;
+    })();
+    index = 0;
+    execute = function() {
+      var param;
+      param = coffees[index];
+      if (param instanceof Array) {
+        CoffeeScript.run(...param);
+        index++;
+        return execute();
+      }
+    };
+    for (i = j = 0, len = coffees.length; j < len; i = ++j) {
+      script = coffees[i];
+      (function(script, i) {
+        var options, source;
+        options = {
+          literate: script.type === coffeetypes[1]
+        };
+        source = script.src || script.getAttribute('data-src');
+        if (source) {
+          options.filename = source;
+          return CoffeeScript.load(source, function(param) {
+            coffees[i] = param;
+            return execute();
+          }, options, true);
+        } else {
+          // `options.filename` defines the filename the source map appears as
+          // in Developer Tools. If a script tag has an `id`, use that as the
+          // filename; otherwise use `coffeescript`, or `coffeescript1` etc.,
+          // leaving the first one unnumbered for the common case that there’s
+          // only one CoffeeScript script block to parse.
+          options.filename = script.id && script.id !== '' ? script.id : `coffeescript${i !== 0 ? i : ''}`;
+          options.sourceFiles = ['embedded'];
+          return coffees[i] = [script.innerHTML, options];
+        }
+      })(script, i);
+    }
+    return execute();
+  };
+
+  // Listen for window load, both in decent browsers and in IE.
+  // Only attach this event handler on startup for the
+  // non-ES module version of the browser compiler, to preserve
+  // backward compatibility while letting the ES module version
+  // be importable without side effects.
+  if (this === window) {
+    if (window.addEventListener) {
+      window.addEventListener('DOMContentLoaded', CoffeeScript.runScripts, false);
+    } else {
+      window.attachEvent('onload', CoffeeScript.runScripts);
+    }
+  }
+
+}).call(this);
diff --git a/lib/coffeescript/cake.js b/lib/coffeescript/cake.js
new file mode 100644
index 00000000..4bd7b98b
--- /dev/null
+++ b/lib/coffeescript/cake.js
@@ -0,0 +1,135 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // `cake` is a simplified version of [Make](http://www.gnu.org/software/make/)
+  // ([Rake](http://rake.rubyforge.org/), [Jake](https://github.com/280north/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.
+
+  // Running `cake` with no arguments will print out a list of all the tasks in the
+  // current directory's Cakefile.
+
+  // External dependencies.
+  var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;
+
+  fs = require('fs');
+
+  path = require('path');
+
+  helpers = require('./helpers');
+
+  optparse = require('./optparse');
+
+  CoffeeScript = require('./');
+
+  // Register .coffee extension
+  CoffeeScript.register();
+
+  // Keep track of the list of defined tasks, the accepted options, and so on.
+  tasks = {};
+
+  options = {};
+
+  switches = [];
+
+  oparse = null;
+
+  // Mixin the top-level Cake functions for Cakefiles to use directly.
+  helpers.extend(global, {
+    // Define a Cake task with a short name, an optional sentence description,
+    // and the function to run as the action itself.
+    task: function(name, description, action) {
+      if (!action) {
+        [action, description] = [description, action];
+      }
+      return tasks[name] = {name, description, action};
+    },
+    // Define an option that the Cakefile accepts. The parsed options hash,
+    // containing all of the command-line options passed, will be made available
+    // as the first argument to the action.
+    option: function(letter, flag, description) {
+      return switches.push([letter, flag, description]);
+    },
+    // Invoke another task in the current Cakefile.
+    invoke: function(name) {
+      if (!tasks[name]) {
+        missingTask(name);
+      }
+      return tasks[name].action(options);
+    }
+  });
+
+  // Run `cake`. Executes all of the tasks you pass, in order. Note that Node's
+  // asynchrony may cause tasks to execute in a different order than you'd expect.
+  // If no tasks are passed, print the help screen. Keep a reference to the
+  // original directory name, when running Cake tasks from subdirectories.
+  exports.run = function() {
+    var arg, args, e, i, len, ref, results;
+    global.__originalDirname = fs.realpathSync('.');
+    process.chdir(cakefileDirectory(__originalDirname));
+    args = process.argv.slice(2);
+    CoffeeScript.run(fs.readFileSync('Cakefile').toString(), {
+      filename: 'Cakefile'
+    });
+    oparse = new optparse.OptionParser(switches);
+    if (!args.length) {
+      return printTasks();
+    }
+    try {
+      options = oparse.parse(args);
+    } catch (error) {
+      e = error;
+      return fatalError(`${e}`);
+    }
+    ref = options.arguments;
+    results = [];
+    for (i = 0, len = ref.length; i < len; i++) {
+      arg = ref[i];
+      results.push(invoke(arg));
+    }
+    return results;
+  };
+
+  // Display the list of Cake tasks in a format similar to `rake -T`
+  printTasks = function() {
+    var cakefilePath, desc, name, relative, spaces, task;
+    relative = path.relative || path.resolve;
+    cakefilePath = path.join(relative(__originalDirname, process.cwd()), 'Cakefile');
+    console.log(`${cakefilePath} defines the following tasks:\n`);
+    for (name in tasks) {
+      task = tasks[name];
+      spaces = 20 - name.length;
+      spaces = spaces > 0 ? Array(spaces + 1).join(' ') : '';
+      desc = task.description ? `# ${task.description}` : '';
+      console.log(`cake ${name}${spaces} ${desc}`);
+    }
+    if (switches.length) {
+      return console.log(oparse.help());
+    }
+  };
+
+  // Print an error and exit when attempting to use an invalid task/option.
+  fatalError = function(message) {
+    console.error(message + '\n');
+    console.log('To see a list of all tasks/options, run "cake"');
+    return process.exit(1);
+  };
+
+  missingTask = function(task) {
+    return fatalError(`No such task: ${task}`);
+  };
+
+  // When `cake` is invoked, search in the current and all parent directories
+  // to find the relevant Cakefile.
+  cakefileDirectory = function(dir) {
+    var parent;
+    if (fs.existsSync(path.join(dir, 'Cakefile'))) {
+      return dir;
+    }
+    parent = path.normalize(path.join(dir, '..'));
+    if (parent !== dir) {
+      return cakefileDirectory(parent);
+    }
+    throw new Error(`Cakefile not found in ${process.cwd()}`);
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/coffeescript.js b/lib/coffeescript/coffeescript.js
new file mode 100644
index 00000000..095f8fe7
--- /dev/null
+++ b/lib/coffeescript/coffeescript.js
@@ -0,0 +1,409 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // CoffeeScript can be used both on the server, as a command-line compiler based
+  // on Node.js/V8, or to run CoffeeScript directly in the browser. This module
+  // contains the main entry functions for tokenizing, parsing, and compiling
+  // source CoffeeScript into JavaScript.
+  var FILE_EXTENSIONS, Lexer, SourceMap, base64encode, checkShebangLine, compile, getSourceMap, helpers, lexer, packageJson, parser, registerCompiled, withPrettyErrors;
+
+  ({Lexer} = require('./lexer'));
+
+  ({parser} = require('./parser'));
+
+  helpers = require('./helpers');
+
+  SourceMap = require('./sourcemap');
+
+  // Require `package.json`, which is two levels above this file, as this file is
+  // evaluated from `lib/coffeescript`.
+  packageJson = require('../../package.json');
+
+  // The current CoffeeScript version number.
+  exports.VERSION = packageJson.version;
+
+  exports.FILE_EXTENSIONS = FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
+
+  // Expose helpers for testing.
+  exports.helpers = helpers;
+
+  ({getSourceMap, registerCompiled} = SourceMap);
+
+  // This is exported to enable an external module to implement caching of
+  // sourcemaps. This is used only when `patchStackTrace` has been called to adjust
+  // stack traces for files with cached source maps.
+  exports.registerCompiled = registerCompiled;
+
+  // Function that allows for btoa in both nodejs and the browser.
+  base64encode = function(src) {
+    switch (false) {
+      case typeof Buffer !== 'function':
+        return Buffer.from(src).toString('base64');
+      case typeof btoa !== 'function':
+        // The contents of a `<script>` block are encoded via UTF-16, so if any extended
+        // characters are used in the block, btoa will fail as it maxes out at UTF-8.
+        // See https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem
+        // for the gory details, and for the solution implemented here.
+        return btoa(encodeURIComponent(src).replace(/%([0-9A-F]{2})/g, function(match, p1) {
+          return String.fromCharCode('0x' + p1);
+        }));
+      default:
+        throw new Error('Unable to base64 encode inline sourcemap.');
+    }
+  };
+
+  // Function wrapper to add source file information to SyntaxErrors thrown by the
+  // lexer/parser/compiler.
+  withPrettyErrors = function(fn) {
+    return function(code, options = {}) {
+      var err;
+      try {
+        return fn.call(this, code, options);
+      } catch (error) {
+        err = error;
+        if (typeof code !== 'string') { // Support `CoffeeScript.nodes(tokens)`.
+          throw err;
+        }
+        throw helpers.updateSyntaxError(err, code, options.filename);
+      }
+    };
+  };
+
+  // Compile CoffeeScript code to JavaScript, using the Coffee/Jison compiler.
+
+  // If `options.sourceMap` is specified, then `options.filename` must also be
+  // specified. All options that can be passed to `SourceMap#generate` may also
+  // be passed here.
+
+  // This returns a javascript string, unless `options.sourceMap` is passed,
+  // in which case this returns a `{js, v3SourceMap, sourceMap}`
+  // object, where sourceMap is a sourcemap.coffee#SourceMap object, handy for
+  // doing programmatic lookups.
+  exports.compile = compile = withPrettyErrors(function(code, options = {}) {
+    var ast, currentColumn, currentLine, encoded, filename, fragment, fragments, generateSourceMap, header, i, j, js, len, len1, map, newLines, nodes, range, ref, sourceCodeLastLine, sourceCodeNumberOfLines, sourceMapDataURI, sourceURL, token, tokens, transpiler, transpilerOptions, transpilerOutput, v3SourceMap;
+    // Clone `options`, to avoid mutating the `options` object passed in.
+    options = Object.assign({}, options);
+    generateSourceMap = options.sourceMap || options.inlineMap || (options.filename == null);
+    filename = options.filename || helpers.anonymousFileName();
+    checkShebangLine(filename, code);
+    if (generateSourceMap) {
+      map = new SourceMap();
+    }
+    tokens = lexer.tokenize(code, options);
+    // Pass a list of referenced variables, so that generated variables won’t get
+    // the same name.
+    options.referencedVars = (function() {
+      var i, len, results;
+      results = [];
+      for (i = 0, len = tokens.length; i < len; i++) {
+        token = tokens[i];
+        if (token[0] === 'IDENTIFIER') {
+          results.push(token[1]);
+        }
+      }
+      return results;
+    })();
+    // Check for import or export; if found, force bare mode.
+    if (!((options.bare != null) && options.bare === true)) {
+      for (i = 0, len = tokens.length; i < len; i++) {
+        token = tokens[i];
+        if ((ref = token[0]) === 'IMPORT' || ref === 'EXPORT') {
+          options.bare = true;
+          break;
+        }
+      }
+    }
+    nodes = parser.parse(tokens);
+    // If all that was requested was a POJO representation of the nodes, e.g.
+    // the abstract syntax tree (AST), we can stop now and just return that
+    // (after fixing the location data for the root/`File`»`Program` node,
+    // which might’ve gotten misaligned from the original source due to the
+    // `clean` function in the lexer).
+    if (options.ast) {
+      nodes.allCommentTokens = helpers.extractAllCommentTokens(tokens);
+      sourceCodeNumberOfLines = (code.match(/\r?\n/g) || '').length + 1;
+      sourceCodeLastLine = /.*$/.exec(code)[0];
+      ast = nodes.ast(options);
+      range = [0, code.length];
+      ast.start = ast.program.start = range[0];
+      ast.end = ast.program.end = range[1];
+      ast.range = ast.program.range = range;
+      ast.loc.start = ast.program.loc.start = {
+        line: 1,
+        column: 0
+      };
+      ast.loc.end.line = ast.program.loc.end.line = sourceCodeNumberOfLines;
+      ast.loc.end.column = ast.program.loc.end.column = sourceCodeLastLine.length;
+      ast.tokens = tokens;
+      return ast;
+    }
+    fragments = nodes.compileToFragments(options);
+    currentLine = 0;
+    if (options.header) {
+      currentLine += 1;
+    }
+    if (options.shiftLine) {
+      currentLine += 1;
+    }
+    currentColumn = 0;
+    js = "";
+    for (j = 0, len1 = fragments.length; j < len1; j++) {
+      fragment = fragments[j];
+      // Update the sourcemap with data from each fragment.
+      if (generateSourceMap) {
+        // Do not include empty, whitespace, or semicolon-only fragments.
+        if (fragment.locationData && !/^[;\s]*$/.test(fragment.code)) {
+          map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
+            noReplace: true
+          });
+        }
+        newLines = helpers.count(fragment.code, "\n");
+        currentLine += newLines;
+        if (newLines) {
+          currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
+        } else {
+          currentColumn += fragment.code.length;
+        }
+      }
+      // Copy the code from each fragment into the final JavaScript.
+      js += fragment.code;
+    }
+    if (options.header) {
+      header = `Generated by CoffeeScript ${this.VERSION}`;
+      js = `// ${header}\n${js}`;
+    }
+    if (generateSourceMap) {
+      v3SourceMap = map.generate(options, code);
+    }
+    if (options.transpile) {
+      if (typeof options.transpile !== 'object') {
+        // This only happens if run via the Node API and `transpile` is set to
+        // something other than an object.
+        throw new Error('The transpile option must be given an object with options to pass to Babel');
+      }
+      // Get the reference to Babel that we have been passed if this compiler
+      // is run via the CLI or Node API.
+      transpiler = options.transpile.transpile;
+      delete options.transpile.transpile;
+      transpilerOptions = Object.assign({}, options.transpile);
+      // See https://github.com/babel/babel/issues/827#issuecomment-77573107:
+      // Babel can take a v3 source map object as input in `inputSourceMap`
+      // and it will return an *updated* v3 source map object in its output.
+      if (v3SourceMap && (transpilerOptions.inputSourceMap == null)) {
+        transpilerOptions.inputSourceMap = v3SourceMap;
+      }
+      transpilerOutput = transpiler(js, transpilerOptions);
+      js = transpilerOutput.code;
+      if (v3SourceMap && transpilerOutput.map) {
+        v3SourceMap = transpilerOutput.map;
+      }
+    }
+    if (options.inlineMap) {
+      encoded = base64encode(JSON.stringify(v3SourceMap));
+      sourceMapDataURI = `//# sourceMappingURL=data:application/json;base64,${encoded}`;
+      sourceURL = `//# sourceURL=${filename}`;
+      js = `${js}\n${sourceMapDataURI}\n${sourceURL}`;
+    }
+    registerCompiled(filename, code, map);
+    if (options.sourceMap) {
+      return {
+        js,
+        sourceMap: map,
+        v3SourceMap: JSON.stringify(v3SourceMap, null, 2)
+      };
+    } else {
+      return js;
+    }
+  });
+
+  // Tokenize a string of CoffeeScript code, and return the array of tokens.
+  exports.tokens = withPrettyErrors(function(code, options) {
+    return 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 = withPrettyErrors(function(source, options) {
+    if (typeof source === 'string') {
+      source = lexer.tokenize(source, options);
+    }
+    return parser.parse(source);
+  });
+
+  // This file used to export these methods; leave stubs that throw warnings
+  // instead. These methods have been moved into `index.coffee` to provide
+  // separate entrypoints for Node and non-Node environments, so that static
+  // analysis tools don’t choke on Node packages when compiling for a non-Node
+  // environment.
+  exports.run = exports.eval = exports.register = function() {
+    throw new Error('require index.coffee, not this file');
+  };
+
+  // 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 = {
+    yylloc: {
+      range: []
+    },
+    options: {
+      ranges: true
+    },
+    lex: function() {
+      var tag, token;
+      token = parser.tokens[this.pos++];
+      if (token) {
+        [tag, this.yytext, this.yylloc] = token;
+        parser.errorToken = token.origin || token;
+        this.yylineno = this.yylloc.first_line;
+      } else {
+        tag = '';
+      }
+      return tag;
+    },
+    setInput: function(tokens) {
+      parser.tokens = tokens;
+      return this.pos = 0;
+    },
+    upcomingInput: function() {
+      return '';
+    }
+  };
+
+  // Make all the AST nodes visible to the parser.
+  parser.yy = require('./nodes');
+
+  // Override Jison's default error handling function.
+  parser.yy.parseError = function(message, {token}) {
+    var errorLoc, errorTag, errorText, errorToken, tokens;
+    // Disregard Jison's message, it contains redundant line number information.
+    // Disregard the token, we take its value directly from the lexer in case
+    // the error is caused by a generated token which might refer to its origin.
+    ({errorToken, tokens} = parser);
+    [errorTag, errorText, errorLoc] = errorToken;
+    errorText = (function() {
+      switch (false) {
+        case errorToken !== tokens[tokens.length - 1]:
+          return 'end of input';
+        case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':
+          return 'indentation';
+        case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'INFINITY' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':
+          return errorTag.replace(/_START$/, '').toLowerCase();
+        default:
+          return helpers.nameWhitespaceCharacter(errorText);
+      }
+    })();
+    // The second argument has a `loc` property, which should have the location
+    // data for this token. Unfortunately, Jison seems to send an outdated `loc`
+    // (from the previous token), so we take the location information directly
+    // from the lexer.
+    return helpers.throwSyntaxError(`unexpected ${errorText}`, errorLoc);
+  };
+
+  exports.patchStackTrace = function() {
+    var formatSourcePosition, getSourceMapping;
+    // Based on http://v8.googlecode.com/svn/branches/bleeding_edge/src/messages.js
+    // Modified to handle sourceMap
+    formatSourcePosition = function(frame, getSourceMapping) {
+      var as, column, fileLocation, filename, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;
+      filename = void 0;
+      fileLocation = '';
+      if (frame.isNative()) {
+        fileLocation = "native";
+      } else {
+        if (frame.isEval()) {
+          filename = frame.getScriptNameOrSourceURL();
+          if (!filename) {
+            fileLocation = `${frame.getEvalOrigin()}, `;
+          }
+        } else {
+          filename = frame.getFileName();
+        }
+        filename || (filename = "<anonymous>");
+        line = frame.getLineNumber();
+        column = frame.getColumnNumber();
+        // Check for a sourceMap position
+        source = getSourceMapping(filename, line, column);
+        fileLocation = source ? `${filename}:${source[0]}:${source[1]}` : `${filename}:${line}:${column}`;
+      }
+      functionName = frame.getFunctionName();
+      isConstructor = frame.isConstructor();
+      isMethodCall = !(frame.isToplevel() || isConstructor);
+      if (isMethodCall) {
+        methodName = frame.getMethodName();
+        typeName = frame.getTypeName();
+        if (functionName) {
+          tp = as = '';
+          if (typeName && functionName.indexOf(typeName)) {
+            tp = `${typeName}.`;
+          }
+          if (methodName && functionName.indexOf(`.${methodName}`) !== functionName.length - methodName.length - 1) {
+            as = ` [as ${methodName}]`;
+          }
+          return `${tp}${functionName}${as} (${fileLocation})`;
+        } else {
+          return `${typeName}.${methodName || '<anonymous>'} (${fileLocation})`;
+        }
+      } else if (isConstructor) {
+        return `new ${functionName || '<anonymous>'} (${fileLocation})`;
+      } else if (functionName) {
+        return `${functionName} (${fileLocation})`;
+      } else {
+        return fileLocation;
+      }
+    };
+    getSourceMapping = function(filename, line, column) {
+      var answer, sourceMap;
+      sourceMap = getSourceMap(filename, line, column);
+      if (sourceMap != null) {
+        answer = sourceMap.sourceLocation([line - 1, column - 1]);
+      }
+      if (answer != null) {
+        return [answer[0] + 1, answer[1] + 1];
+      } else {
+        return null;
+      }
+    };
+    // Based on [michaelficarra/CoffeeScriptRedux](http://goo.gl/ZTx1p)
+    // NodeJS / V8 have no support for transforming positions in stack traces using
+    // sourceMap, so we must monkey-patch Error to display CoffeeScript source
+    // positions.
+    return Error.prepareStackTrace = function(err, stack) {
+      var frame, frames;
+      frames = (function() {
+        var i, len, results;
+        results = [];
+        for (i = 0, len = stack.length; i < len; i++) {
+          frame = stack[i];
+          if (frame.getFunction() === exports.run) {
+            // Don’t display stack frames deeper than `CoffeeScript.run`.
+            break;
+          }
+          results.push(`    at ${formatSourcePosition(frame, getSourceMapping)}`);
+        }
+        return results;
+      })();
+      return `${err.toString()}\n${frames.join('\n')}\n`;
+    };
+  };
+
+  checkShebangLine = function(file, input) {
+    var args, firstLine, ref, rest;
+    firstLine = input.split(/$/m)[0];
+    rest = firstLine != null ? firstLine.match(/^#!\s*([^\s]+\s*)(.*)/) : void 0;
+    args = rest != null ? (ref = rest[2]) != null ? ref.split(/\s/).filter(function(s) {
+      return s !== '';
+    }) : void 0 : void 0;
+    if ((args != null ? args.length : void 0) > 1) {
+      console.error(`The script to be run begins with a shebang line with more than one
+argument. This script will fail on platforms such as Linux which only
+allow a single argument.`);
+      console.error(`The shebang line was: '${firstLine}' in file '${file}'`);
+      return console.error(`The arguments were: ${JSON.stringify(args)}`);
+    }
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/command.js b/lib/coffeescript/command.js
new file mode 100644
index 00000000..78b74756
--- /dev/null
+++ b/lib/coffeescript/command.js
@@ -0,0 +1,750 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // The `coffee` utility. Handles command-line compilation of CoffeeScript
+  // into various forms: saved into `.js` files or printed to stdout
+  // or recompiled every time the source is saved,
+  // printed as a token stream or as the syntax tree, or launch an
+  // interactive REPL.
+
+  // External dependencies.
+  var BANNER, CoffeeScript, EventEmitter, SWITCHES, buildCSOptionParser, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, findDirectoryIndex, forkNode, fs, helpers, hidden, joinTimeout, makePrelude, mkdirp, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, removeSourceDir, silentUnlink, sourceCode, sources, spawn, timeLog, usage, useWinPathSep, version, wait, watch, watchDir, watchedDirs, writeJs,
+    indexOf = [].indexOf;
+
+  fs = require('fs');
+
+  path = require('path');
+
+  helpers = require('./helpers');
+
+  optparse = require('./optparse');
+
+  CoffeeScript = require('./');
+
+  ({spawn, exec} = require('child_process'));
+
+  ({EventEmitter} = require('events'));
+
+  useWinPathSep = path.sep === '\\';
+
+  // Allow CoffeeScript to emit Node.js events.
+  helpers.extend(CoffeeScript, new EventEmitter());
+
+  printLine = function(line) {
+    return process.stdout.write(line + '\n');
+  };
+
+  printWarn = function(line) {
+    return process.stderr.write(line + '\n');
+  };
+
+  hidden = function(file) {
+    return /^\.|~$/.test(file);
+  };
+
+  // The help banner that is printed in conjunction with `-h`/`--help`.
+  BANNER = `Usage: coffee [options] path/to/script.coffee [args]
+
+If called without options, \`coffee\` will run your script.`;
+
+  // The list of all the valid option flags that `coffee` knows how to handle.
+  SWITCHES = [['--ast', 'generate an abstract syntax tree of nodes'], ['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-l', '--literate', 'treat stdio as literate style coffeescript'], ['-m', '--map', 'generate source map and save as .js.map files'], ['-M', '--inline-map', 'generate source map and include it directly in output'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['--no-header', 'suppress the "Generated by" header'], ['-o', '--output [PATH]', 'set the output path or path/filename for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-r', '--require [MODULE*]', 'require the given module before eval or REPL'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-t', '--transpile', 'pipe generated JavaScript through Babel'], ['--tokens', 'print out the tokens that the lexer/rewriter produce'], ['-v', '--version', 'display the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']];
+
+  // Top-level objects shared by all the functions.
+  opts = {};
+
+  sources = [];
+
+  sourceCode = [];
+
+  notSources = {};
+
+  watchedDirs = {};
+
+  optionParser = null;
+
+  exports.buildCSOptionParser = buildCSOptionParser = function() {
+    return new optparse.OptionParser(SWITCHES, BANNER);
+  };
+
+  // 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 = function() {
+    var err, i, len, literals, outputBasename, ref, replCliOpts, results, source;
+    optionParser = buildCSOptionParser();
+    try {
+      parseOptions();
+    } catch (error) {
+      err = error;
+      console.error(`option parsing error: ${err.message}`);
+      process.exit(1);
+    }
+    if ((!opts.doubleDashed) && (opts.arguments[1] === '--')) {
+      printWarn(`coffee was invoked with '--' as the second positional argument, which is
+now deprecated. To pass '--' as an argument to a script to run, put an
+additional '--' before the path to your script.
+
+'--' will be removed from the argument list.`);
+      printWarn(`The positional arguments were: ${JSON.stringify(opts.arguments)}`);
+      opts.arguments = [opts.arguments[0]].concat(opts.arguments.slice(2));
+    }
+    // Make the REPL *CLI* use the global context so as to (a) be consistent with the
+    // `node` REPL CLI and, therefore, (b) make packages that modify native prototypes
+    // (such as 'colors' and 'sugar') work as expected.
+    replCliOpts = {
+      useGlobal: true
+    };
+    if (opts.require) {
+      opts.prelude = makePrelude(opts.require);
+    }
+    replCliOpts.prelude = opts.prelude;
+    replCliOpts.transpile = opts.transpile;
+    if (opts.nodejs) {
+      return forkNode();
+    }
+    if (opts.help) {
+      return usage();
+    }
+    if (opts.version) {
+      return version();
+    }
+    if (opts.interactive) {
+      return require('./repl').start(replCliOpts);
+    }
+    if (opts.stdio) {
+      return compileStdio();
+    }
+    if (opts.eval) {
+      return compileScript(null, opts.arguments[0]);
+    }
+    if (!opts.arguments.length) {
+      return require('./repl').start(replCliOpts);
+    }
+    literals = opts.run ? opts.arguments.splice(1) : [];
+    process.argv = process.argv.slice(0, 2).concat(literals);
+    process.argv[0] = 'coffee';
+    if (opts.output) {
+      outputBasename = path.basename(opts.output);
+      if (indexOf.call(outputBasename, '.') >= 0 && (outputBasename !== '.' && outputBasename !== '..') && !helpers.ends(opts.output, path.sep)) {
+        // An output filename was specified, e.g. `/dist/scripts.js`.
+        opts.outputFilename = outputBasename;
+        opts.outputPath = path.resolve(path.dirname(opts.output));
+      } else {
+        // An output path was specified, e.g. `/dist`.
+        opts.outputFilename = null;
+        opts.outputPath = path.resolve(opts.output);
+      }
+    }
+    if (opts.join) {
+      opts.join = path.resolve(opts.join);
+      console.error(`
+The --join option is deprecated and will be removed in a future version.
+
+If for some reason it's necessary to share local variables between files,
+replace...
+
+    $ coffee --compile --join bundle.js -- a.coffee b.coffee c.coffee
+
+with...
+
+    $ cat a.coffee b.coffee c.coffee | coffee --compile --stdio > bundle.js
+`);
+    }
+    ref = opts.arguments;
+    results = [];
+    for (i = 0, len = ref.length; i < len; i++) {
+      source = ref[i];
+      source = path.resolve(source);
+      results.push(compilePath(source, true, source));
+    }
+    return results;
+  };
+
+  makePrelude = function(requires) {
+    return requires.map(function(module) {
+      var full, match, name;
+      if (match = module.match(/^(.*)=(.*)$/)) {
+        [full, name, module] = match;
+      }
+      name || (name = helpers.baseFileName(module, true, useWinPathSep));
+      return `global['${name}'] = require('${module}')`;
+    }).join(';');
+  };
+
+  // Compile a path, which could be a script or a directory. If a directory
+  // is passed, recursively compile all '.coffee', '.litcoffee', and '.coffee.md'
+  // extension source files in it and all subdirectories.
+  compilePath = function(source, topLevel, base) {
+    var code, err, file, files, i, len, results, stats;
+    if (indexOf.call(sources, source) >= 0 || watchedDirs[source] || !topLevel && (notSources[source] || hidden(source))) {
+      return;
+    }
+    try {
+      stats = fs.statSync(source);
+    } catch (error) {
+      err = error;
+      if (err.code === 'ENOENT') {
+        console.error(`File not found: ${source}`);
+        process.exit(1);
+      }
+      throw err;
+    }
+    if (stats.isDirectory()) {
+      if (path.basename(source) === 'node_modules') {
+        notSources[source] = true;
+        return;
+      }
+      if (opts.run) {
+        compilePath(findDirectoryIndex(source), topLevel, base);
+        return;
+      }
+      if (opts.watch) {
+        watchDir(source, base);
+      }
+      try {
+        files = fs.readdirSync(source);
+      } catch (error) {
+        err = error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
+        }
+      }
+      results = [];
+      for (i = 0, len = files.length; i < len; i++) {
+        file = files[i];
+        results.push(compilePath(path.join(source, file), false, base));
+      }
+      return results;
+    } else if (topLevel || helpers.isCoffee(source)) {
+      sources.push(source);
+      sourceCode.push(null);
+      delete notSources[source];
+      if (opts.watch) {
+        watch(source, base);
+      }
+      try {
+        code = fs.readFileSync(source);
+      } catch (error) {
+        err = error;
+        if (err.code === 'ENOENT') {
+          return;
+        } else {
+          throw err;
+        }
+      }
+      return compileScript(source, code.toString(), base);
+    } else {
+      return notSources[source] = true;
+    }
+  };
+
+  findDirectoryIndex = function(source) {
+    var err, ext, i, index, len, ref;
+    ref = CoffeeScript.FILE_EXTENSIONS;
+    for (i = 0, len = ref.length; i < len; i++) {
+      ext = ref[i];
+      index = path.join(source, `index${ext}`);
+      try {
+        if ((fs.statSync(index)).isFile()) {
+          return index;
+        }
+      } catch (error) {
+        err = error;
+        if (err.code !== 'ENOENT') {
+          throw err;
+        }
+      }
+    }
+    console.error(`Missing index.coffee or index.litcoffee in ${source}`);
+    return process.exit(1);
+  };
+
+  // Compile a single source script, containing the given code, according to the
+  // requested options. If evaluating the script directly, set `__filename`,
+  // `__dirname` and `module.filename` to be correct relative to the script's path.
+  compileScript = function(file, input, base = null) {
+    var compiled, err, message, options, saveTo, task;
+    options = compileOptions(file, base);
+    try {
+      task = {file, input, options};
+      CoffeeScript.emit('compile', task);
+      if (opts.tokens) {
+        return printTokens(CoffeeScript.tokens(task.input, task.options));
+      } else if (opts.nodes) {
+        return printLine(CoffeeScript.nodes(task.input, task.options).toString().trim());
+      } else if (opts.ast) {
+        compiled = CoffeeScript.compile(task.input, task.options);
+        return printLine(JSON.stringify(compiled, null, 2));
+      } else if (opts.run) {
+        CoffeeScript.register();
+        if (opts.prelude) {
+          CoffeeScript.eval(opts.prelude, task.options);
+        }
+        return CoffeeScript.run(task.input, task.options);
+      } else if (opts.join && task.file !== opts.join) {
+        if (helpers.isLiterate(file)) {
+          task.input = helpers.invertLiterate(task.input);
+        }
+        sourceCode[sources.indexOf(task.file)] = task.input;
+        return compileJoin();
+      } else {
+        compiled = CoffeeScript.compile(task.input, task.options);
+        task.output = compiled;
+        if (opts.map) {
+          task.output = compiled.js;
+          task.sourceMap = compiled.v3SourceMap;
+        }
+        CoffeeScript.emit('success', task);
+        if (opts.print) {
+          return printLine(task.output.trim());
+        } else if (opts.compile || opts.map) {
+          saveTo = opts.outputFilename && sources.length === 1 ? path.join(opts.outputPath, opts.outputFilename) : options.jsPath;
+          return writeJs(base, task.file, task.output, saveTo, task.sourceMap);
+        }
+      }
+    } catch (error) {
+      err = error;
+      CoffeeScript.emit('failure', err, task);
+      if (CoffeeScript.listeners('failure').length) {
+        return;
+      }
+      message = (err != null ? err.stack : void 0) || `${err}`;
+      if (opts.watch) {
+        return printLine(message + '\x07');
+      } else {
+        printWarn(message);
+        return process.exit(1);
+      }
+    }
+  };
+
+  // Attach the appropriate listeners to compile scripts incoming over **stdin**,
+  // and write them back to **stdout**.
+  compileStdio = function() {
+    var buffers, stdin;
+    if (opts.map) {
+      console.error('--stdio and --map cannot be used together');
+      process.exit(1);
+    }
+    buffers = [];
+    stdin = process.openStdin();
+    stdin.on('data', function(buffer) {
+      if (buffer) {
+        return buffers.push(buffer);
+      }
+    });
+    return stdin.on('end', function() {
+      return compileScript(null, Buffer.concat(buffers).toString());
+    });
+  };
+
+  // If all of the source files are done being read, concatenate and compile
+  // them together.
+  joinTimeout = null;
+
+  compileJoin = function() {
+    if (!opts.join) {
+      return;
+    }
+    if (!sourceCode.some(function(code) {
+      return code === null;
+    })) {
+      clearTimeout(joinTimeout);
+      return joinTimeout = wait(100, function() {
+        return compileScript(opts.join, sourceCode.join('\n'), opts.join);
+      });
+    }
+  };
+
+  // Watch a source CoffeeScript file using `fs.watch`, recompiling it every
+  // time the file is updated. May be used in combination with other options,
+  // such as `--print`.
+  watch = function(source, base) {
+    var compile, compileTimeout, err, prevStats, rewatch, startWatcher, watchErr, watcher;
+    watcher = null;
+    prevStats = null;
+    compileTimeout = null;
+    watchErr = function(err) {
+      if (err.code !== 'ENOENT') {
+        throw err;
+      }
+      if (indexOf.call(sources, source) < 0) {
+        return;
+      }
+      try {
+        rewatch();
+        return compile();
+      } catch (error) {
+        removeSource(source, base);
+        return compileJoin();
+      }
+    };
+    compile = function() {
+      clearTimeout(compileTimeout);
+      return compileTimeout = wait(25, function() {
+        return fs.stat(source, function(err, stats) {
+          if (err) {
+            return watchErr(err);
+          }
+          if (prevStats && stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) {
+            return rewatch();
+          }
+          prevStats = stats;
+          return fs.readFile(source, function(err, code) {
+            if (err) {
+              return watchErr(err);
+            }
+            compileScript(source, code.toString(), base);
+            return rewatch();
+          });
+        });
+      });
+    };
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('change', compile).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return removeSource(source, base);
+      });
+    };
+    rewatch = function() {
+      if (watcher != null) {
+        watcher.close();
+      }
+      return startWatcher();
+    };
+    try {
+      return startWatcher();
+    } catch (error) {
+      err = error;
+      return watchErr(err);
+    }
+  };
+
+  // Watch a directory of files for new additions.
+  watchDir = function(source, base) {
+    var err, readdirTimeout, startWatcher, stopWatcher, watcher;
+    watcher = null;
+    readdirTimeout = null;
+    startWatcher = function() {
+      return watcher = fs.watch(source).on('error', function(err) {
+        if (err.code !== 'EPERM') {
+          throw err;
+        }
+        return stopWatcher();
+      }).on('change', function() {
+        clearTimeout(readdirTimeout);
+        return readdirTimeout = wait(25, function() {
+          var err, file, files, i, len, results;
+          try {
+            files = fs.readdirSync(source);
+          } catch (error) {
+            err = error;
+            if (err.code !== 'ENOENT') {
+              throw err;
+            }
+            return stopWatcher();
+          }
+          results = [];
+          for (i = 0, len = files.length; i < len; i++) {
+            file = files[i];
+            results.push(compilePath(path.join(source, file), false, base));
+          }
+          return results;
+        });
+      });
+    };
+    stopWatcher = function() {
+      watcher.close();
+      return removeSourceDir(source, base);
+    };
+    watchedDirs[source] = true;
+    try {
+      return startWatcher();
+    } catch (error) {
+      err = error;
+      if (err.code !== 'ENOENT') {
+        throw err;
+      }
+    }
+  };
+
+  removeSourceDir = function(source, base) {
+    var file, i, len, sourcesChanged;
+    delete watchedDirs[source];
+    sourcesChanged = false;
+    for (i = 0, len = sources.length; i < len; i++) {
+      file = sources[i];
+      if (!(source === path.dirname(file))) {
+        continue;
+      }
+      removeSource(file, base);
+      sourcesChanged = true;
+    }
+    if (sourcesChanged) {
+      return compileJoin();
+    }
+  };
+
+  // Remove a file from our source list, and source code cache. Optionally remove
+  // the compiled JS version as well.
+  removeSource = function(source, base) {
+    var index;
+    index = sources.indexOf(source);
+    sources.splice(index, 1);
+    sourceCode.splice(index, 1);
+    if (!opts.join) {
+      silentUnlink(outputPath(source, base));
+      silentUnlink(outputPath(source, base, '.js.map'));
+      return timeLog(`removed ${source}`);
+    }
+  };
+
+  silentUnlink = function(path) {
+    var err, ref;
+    try {
+      return fs.unlinkSync(path);
+    } catch (error) {
+      err = error;
+      if ((ref = err.code) !== 'ENOENT' && ref !== 'EPERM') {
+        throw err;
+      }
+    }
+  };
+
+  // Get the corresponding output JavaScript path for a source file.
+  outputPath = function(source, base, extension = ".js") {
+    var basename, dir, srcDir;
+    basename = helpers.baseFileName(source, true, useWinPathSep);
+    srcDir = path.dirname(source);
+    dir = !opts.outputPath ? srcDir : source === base ? opts.outputPath : path.join(opts.outputPath, path.relative(base, srcDir));
+    return path.join(dir, basename + extension);
+  };
+
+  // Recursively mkdir, like `mkdir -p`.
+  mkdirp = function(dir, fn) {
+    var mkdirs, mode;
+    mode = 0o777 & ~process.umask();
+    return (mkdirs = function(p, fn) {
+      return fs.exists(p, function(exists) {
+        if (exists) {
+          return fn();
+        } else {
+          return mkdirs(path.dirname(p), function() {
+            return fs.mkdir(p, mode, function(err) {
+              if (err) {
+                return fn(err);
+              }
+              return fn();
+            });
+          });
+        }
+      });
+    })(dir, fn);
+  };
+
+  // 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`.
+
+  // If `generatedSourceMap` is provided, this will write a `.js.map` file into the
+  // same directory as the `.js` file.
+  writeJs = function(base, sourcePath, js, jsPath, generatedSourceMap = null) {
+    var compile, jsDir, sourceMapPath;
+    sourceMapPath = `${jsPath}.map`;
+    jsDir = path.dirname(jsPath);
+    compile = function() {
+      if (opts.compile) {
+        if (js.length <= 0) {
+          js = ' ';
+        }
+        if (generatedSourceMap) {
+          js = `${js}\n//# sourceMappingURL=${helpers.baseFileName(sourceMapPath, false, useWinPathSep)}\n`;
+        }
+        fs.writeFile(jsPath, js, function(err) {
+          if (err) {
+            printLine(err.message);
+            return process.exit(1);
+          } else if (opts.compile && opts.watch) {
+            return timeLog(`compiled ${sourcePath}`);
+          }
+        });
+      }
+      if (generatedSourceMap) {
+        return fs.writeFile(sourceMapPath, generatedSourceMap, function(err) {
+          if (err) {
+            printLine(`Could not write source map: ${err.message}`);
+            return process.exit(1);
+          }
+        });
+      }
+    };
+    return fs.exists(jsDir, function(itExists) {
+      if (itExists) {
+        return compile();
+      } else {
+        return mkdirp(jsDir, compile);
+      }
+    });
+  };
+
+  // Convenience for cleaner setTimeouts.
+  wait = function(milliseconds, func) {
+    return setTimeout(func, milliseconds);
+  };
+
+  // When watching scripts, it's useful to log changes with the timestamp.
+  timeLog = function(message) {
+    return console.log(`${(new Date()).toLocaleTimeString()} - ${message}`);
+  };
+
+  // Pretty-print a stream of tokens, sans location data.
+  printTokens = function(tokens) {
+    var strings, tag, token, value;
+    strings = (function() {
+      var i, len, results;
+      results = [];
+      for (i = 0, len = tokens.length; i < len; i++) {
+        token = tokens[i];
+        tag = token[0];
+        value = token[1].toString().replace(/\n/, '\\n');
+        results.push(`[${tag} ${value}]`);
+      }
+      return results;
+    })();
+    return printLine(strings.join(' '));
+  };
+
+  // Use the [OptionParser module](optparse.html) to extract all options from
+  // `process.argv` that are specified in `SWITCHES`.
+  parseOptions = function() {
+    var o;
+    o = opts = optionParser.parse(process.argv.slice(2));
+    o.compile || (o.compile = !!o.output);
+    o.run = !(o.compile || o.print || o.map);
+    return o.print = !!(o.print || (o.eval || o.stdio && o.compile));
+  };
+
+  // The compile-time options to pass to the CoffeeScript compiler.
+  compileOptions = function(filename, base) {
+    var answer, cwd, jsDir, jsPath;
+    if (opts.transpile) {
+      try {
+        // The user has requested that the CoffeeScript compiler also transpile
+        // via Babel. We don’t include Babel as a dependency because we want to
+        // avoid dependencies in general, and most users probably won’t be relying
+        // on us to transpile for them; we assume most users will probably either
+        // run CoffeeScript’s output without transpilation (modern Node or evergreen
+        // browsers) or use a proper build chain like Gulp or Webpack.
+        require('@babel/core');
+      } catch (error) {
+        try {
+          require('babel-core');
+        } catch (error) {
+          // Give appropriate instructions depending on whether `coffee` was run
+          // locally or globally.
+          if (require.resolve('.').indexOf(process.cwd()) === 0) {
+            console.error(`To use --transpile, you must have @babel/core installed:
+  npm install --save-dev @babel/core
+And you must save options to configure Babel in one of the places it looks to find its options.
+See https://coffeescript.org/#transpilation`);
+          } else {
+            console.error(`To use --transpile with globally-installed CoffeeScript, you must have @babel/core installed globally:
+  npm install --global @babel/core
+And you must save options to configure Babel in one of the places it looks to find its options, relative to the file being compiled or to the current folder.
+See https://coffeescript.org/#transpilation`);
+          }
+          process.exit(1);
+        }
+      }
+      if (typeof opts.transpile !== 'object') {
+        opts.transpile = {};
+      }
+      // Pass a reference to Babel into the compiler, so that the transpile option
+      // is available for the CLI. We need to do this so that tools like Webpack
+      // can `require('coffeescript')` and build correctly, without trying to
+      // require Babel.
+      opts.transpile.transpile = CoffeeScript.transpile;
+      // Babel searches for its options (a `.babelrc` file, a `.babelrc.js` file,
+      // a `package.json` file with a `babel` key, etc.) relative to the path
+      // given to it in its `filename` option. Make sure we have a path to pass
+      // along.
+      if (!opts.transpile.filename) {
+        opts.transpile.filename = filename || path.resolve(base || process.cwd(), '<anonymous>');
+      }
+    } else {
+      opts.transpile = false;
+    }
+    answer = {
+      filename: filename,
+      literate: opts.literate || helpers.isLiterate(filename),
+      bare: opts.bare,
+      header: opts.compile && !opts['no-header'],
+      transpile: opts.transpile,
+      sourceMap: opts.map,
+      inlineMap: opts['inline-map'],
+      ast: opts.ast
+    };
+    if (filename) {
+      if (base) {
+        cwd = process.cwd();
+        jsPath = outputPath(filename, base);
+        jsDir = path.dirname(jsPath);
+        answer = helpers.merge(answer, {
+          jsPath,
+          sourceRoot: path.relative(jsDir, cwd) + path.sep,
+          sourceFiles: [path.relative(cwd, filename)],
+          generatedFile: helpers.baseFileName(jsPath, false, useWinPathSep)
+        });
+      } else {
+        answer = helpers.merge(answer, {
+          sourceRoot: "",
+          sourceFiles: [helpers.baseFileName(filename, false, useWinPathSep)],
+          generatedFile: helpers.baseFileName(filename, true, useWinPathSep) + ".js"
+        });
+      }
+    }
+    return answer;
+  };
+
+  // Start up a new Node.js instance with the arguments in `--nodejs` passed to
+  // the `node` binary, preserving the other options.
+  forkNode = function() {
+    var args, i, len, nodeArgs, p, ref, signal;
+    nodeArgs = opts.nodejs.split(/\s+/);
+    args = process.argv.slice(1);
+    args.splice(args.indexOf('--nodejs'), 2);
+    p = spawn(process.execPath, nodeArgs.concat(args), {
+      cwd: process.cwd(),
+      env: process.env,
+      stdio: [0, 1, 2]
+    });
+    ref = ['SIGINT', 'SIGTERM'];
+    for (i = 0, len = ref.length; i < len; i++) {
+      signal = ref[i];
+      process.on(signal, (function(signal) {
+        return function() {
+          return p.kill(signal);
+        };
+      })(signal));
+    }
+    return p.on('exit', function(code) {
+      return process.exit(code);
+    });
+  };
+
+  // Print the `--help` usage message and exit. Deprecated switches are not
+  // shown.
+  usage = function() {
+    return printLine(optionParser.help());
+  };
+
+  // Print the `--version` message and exit.
+  version = function() {
+    return printLine(`CoffeeScript version ${CoffeeScript.VERSION}`);
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js
new file mode 100644
index 00000000..85c3fd90
--- /dev/null
+++ b/lib/coffeescript/grammar.js
@@ -0,0 +1,2496 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // The CoffeeScript parser is generated by [Jison](https://github.com/zaach/jison)
+  // from this grammar file. Jison is a bottom-up parser generator, similar in
+  // style to [Bison](http://www.gnu.org/software/bison), implemented in JavaScript.
+  // It can recognize [LALR(1), LR(0), SLR(1), and LR(1)](https://en.wikipedia.org/wiki/LR_grammar)
+  // type grammars. To create the Jison parser, we list the pattern to match
+  // on the left-hand side, and the action to take (usually the creation of syntax
+  // tree nodes) on the right. As the parser runs, it
+  // shifts tokens from our token stream, from left to right, and
+  // [attempts to match](https://en.wikipedia.org/wiki/Bottom-up_parsing)
+  // the token sequence against the rules below. When a match can be made, it
+  // reduces into the [nonterminal](https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols)
+  // (the enclosing name at the top), and we proceed from there.
+
+  // If you run the `cake build:parser` command, Jison constructs a parse table
+  // from our rules and saves it into `lib/parser.js`.
+
+  // The only dependency is on the **Jison.Parser**.
+  var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
+
+  ({Parser} = require('jison'));
+
+  // Jison DSL
+  // ---------
+
+  // Since we're going to be wrapped in a function by Jison in any case, if our
+  // action immediately returns a value, we can optimize by removing the function
+  // wrapper and just returning the value directly.
+  unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/;
+
+  // Our handy DSL for Jison grammar generation, thanks to
+  // [Tim Caswell](https://github.com/creationix). For every rule in the grammar,
+  // we pass the pattern-defining string, the action to run, and extra options,
+  // optionally. If no action is specified, we simply pass the value of the
+  // previous nonterminal.
+  o = function(patternString, action, options) {
+    var getAddDataToNodeFunctionString, match, patternCount, performActionFunctionString, returnsLoc;
+    patternString = patternString.replace(/\s{2,}/g, ' ');
+    patternCount = patternString.split(' ').length;
+    if (action) {
+      // This code block does string replacements in the generated `parser.js`
+      // file, replacing the calls to the `LOC` function and other strings as
+      // listed below.
+      action = (match = unwrap.exec(action)) ? match[1] : `(${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.$&');
+      // Returns strings of functions to add to `parser.js` which add extra data
+      // that nodes may have, such as comments or location data. Location data
+      // is added to the first parameter passed in, and the parameter is returned.
+      // If the parameter is not a node, it will just be passed through unaffected.
+      getAddDataToNodeFunctionString = function(first, last, forceUpdateLocation = true) {
+        return `yy.addDataToNode(yy, @${first}, ${first[0] === '$' ? '$$' : '$'}${first}, ${last ? `@${last}, ${last[0] === '$' ? '$$' : '$'}${last}` : 'null, null'}, ${forceUpdateLocation ? 'true' : 'false'})`;
+      };
+      // This code replaces the calls to `LOC` with the `yy.addDataToNode` string
+      // defined above. The `LOC` function, when used below in the grammar rules,
+      // is used to make sure that newly created node class objects get correct
+      // location data assigned to them. By default, the grammar will assign the
+      // location data spanned by *all* of the tokens on the left (e.g. a string
+      // such as `'Body TERMINATOR Line'`) to the “top-level” node returned by
+      // the grammar rule (the function on the right). But for “inner” node class
+      // objects created by grammar rules, they won’t get correct location data
+      // assigned to them without adding `LOC`.
+
+      // For example, consider the grammar rule `'NEW_TARGET . Property'`, which
+      // is handled by a function that returns
+      // `new MetaProperty LOC(1)(new IdentifierLiteral $1), LOC(3)(new Access $3)`.
+      // The `1` in `LOC(1)` refers to the first token (`NEW_TARGET`) and the `3`
+      // in `LOC(3)` refers to the third token (`Property`). In order for the
+      // `new IdentifierLiteral` to get assigned the location data corresponding
+      // to `new` in the source code, we use
+      // `LOC(1)(new IdentifierLiteral ...)` to mean “assign the location data of
+      // the *first* token of this grammar rule (`NEW_TARGET`) to this
+      // `new IdentifierLiteral`”. The `LOC(3)` means “assign the location data of
+      // the *third* token of this grammar rule (`Property`) to this
+      // `new Access`”.
+      returnsLoc = /^LOC/.test(action);
+      action = action.replace(/LOC\(([0-9]*)\)/g, getAddDataToNodeFunctionString('$1'));
+      // A call to `LOC` with two arguments, e.g. `LOC(2,4)`, sets the location
+      // data for the generated node on both of the referenced tokens  (the second
+      // and fourth in this example).
+      action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, getAddDataToNodeFunctionString('$1', '$2'));
+      performActionFunctionString = `$$ = ${getAddDataToNodeFunctionString(1, patternCount, !returnsLoc)}(${action});`;
+    } else {
+      performActionFunctionString = '$$ = $1;';
+    }
+    return [patternString, performActionFunctionString, options];
+  };
+
+  // Grammatical Rules
+  // -----------------
+
+  // In all of the rules that follow, you'll see the name of the nonterminal as
+  // the key to a list of alternative matches. With each match's action, the
+  // dollar-sign variables are provided by Jison as references to the value of
+  // their numeric position, so in this rule:
+
+  //     'Expression UNLESS Expression'
+
+  // `$1` would be the value of the first `Expression`, `$2` would be the token
+  // for the `UNLESS` terminal, and `$3` would be the value of the second
+  // `Expression`.
+  grammar = {
+    // The **Root** is the top-level node in the syntax tree. Since we parse bottom-up,
+    // all parsing must end here.
+    Root: [
+      o('',
+      function() {
+        return new Root(new Block());
+      }),
+      o('Body',
+      function() {
+        return new Root($1);
+      })
+    ],
+    // Any list of statements and expressions, separated by line breaks or semicolons.
+    Body: [
+      o('Line',
+      function() {
+        return Block.wrap([$1]);
+      }),
+      o('Body TERMINATOR Line',
+      function() {
+        return $1.push($3);
+      }),
+      o('Body TERMINATOR')
+    ],
+    // Block and statements, which make up a line in a body. FuncDirective is a
+    // statement, but not included in Statement because that results in an ambiguous
+    // grammar.
+    Line: [o('Expression'), o('ExpressionLine'), o('Statement'), o('FuncDirective')],
+    FuncDirective: [o('YieldReturn'), o('AwaitReturn')],
+    // Pure statements which cannot be expressions.
+    Statement: [
+      o('Return'),
+      o('STATEMENT',
+      function() {
+        return new StatementLiteral($1);
+      }),
+      o('Import'),
+      o('Export')
+    ],
+    // All the different types of expressions in our language. The basic unit of
+    // CoffeeScript is the **Expression** -- everything that can be an expression
+    // is one. Blocks serve as the building blocks of many other rules, making
+    // them somewhat circular.
+    Expression: [o('Value'), o('Code'), o('Operation'), o('Assign'), o('If'), o('Try'), o('While'), o('For'), o('Switch'), o('Class'), o('Throw'), o('Yield')],
+    // Expressions which are written in single line and would otherwise require being
+    // wrapped in braces: E.g `a = b if do -> f a is 1`, `if f (a) -> a*2 then ...`,
+    // `for x in do (obj) -> f obj when x > 8 then f x`
+    ExpressionLine: [o('CodeLine'), o('IfLine'), o('OperationLine')],
+    Yield: [
+      o('YIELD',
+      function() {
+        return new Op($1,
+      new Value(new Literal('')));
+      }),
+      o('YIELD Expression',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('YIELD INDENT Object OUTDENT',
+      function() {
+        return new Op($1,
+      $3);
+      }),
+      o('YIELD FROM Expression',
+      function() {
+        return new Op($1.concat($2),
+      $3);
+      })
+    ],
+    // An indented block of expressions. Note that the [Rewriter](rewriter.html)
+    // will convert some postfix forms into blocks for us, by adjusting the
+    // token stream.
+    Block: [
+      o('INDENT OUTDENT',
+      function() {
+        return new Block();
+      }),
+      o('INDENT Body OUTDENT',
+      function() {
+        return $2;
+      })
+    ],
+    Identifier: [
+      o('IDENTIFIER',
+      function() {
+        return new IdentifierLiteral($1);
+      }),
+      o('JSX_TAG',
+      function() {
+        var ref,
+      ref1,
+      ref2,
+      ref3;
+        return new JSXTag($1.toString(),
+      {
+          tagNameLocationData: $1.tagNameToken[2],
+          closingTagOpeningBracketLocationData: (ref = $1.closingTagOpeningBracketToken) != null ? ref[2] : void 0,
+          closingTagSlashLocationData: (ref1 = $1.closingTagSlashToken) != null ? ref1[2] : void 0,
+          closingTagNameLocationData: (ref2 = $1.closingTagNameToken) != null ? ref2[2] : void 0,
+          closingTagClosingBracketLocationData: (ref3 = $1.closingTagClosingBracketToken) != null ? ref3[2] : void 0
+        });
+      })
+    ],
+    Property: [
+      o('PROPERTY',
+      function() {
+        return new PropertyName($1.toString());
+      })
+    ],
+    // Alphanumerics are separated from the other **Literal** matchers because
+    // they can also serve as keys in object literals.
+    AlphaNumeric: [
+      o('NUMBER',
+      function() {
+        return new NumberLiteral($1.toString(),
+      {
+          parsedValue: $1.parsedValue
+        });
+      }),
+      o('String')
+    ],
+    String: [
+      o('STRING',
+      function() {
+        return new StringLiteral($1.slice(1,
+      -1), // strip artificial quotes and unwrap to primitive string
+      {
+          quote: $1.quote,
+          initialChunk: $1.initialChunk,
+          finalChunk: $1.finalChunk,
+          indent: $1.indent,
+          double: $1.double,
+          heregex: $1.heregex
+        });
+      }),
+      o('STRING_START Interpolations STRING_END',
+      function() {
+        return new StringWithInterpolations(Block.wrap($2),
+      {
+          quote: $1.quote,
+          startQuote: LOC(1)(new Literal($1.toString()))
+        });
+      })
+    ],
+    Interpolations: [
+      o('InterpolationChunk',
+      function() {
+        return [$1];
+      }),
+      o('Interpolations InterpolationChunk',
+      function() {
+        return $1.concat($2);
+      })
+    ],
+    InterpolationChunk: [
+      o('INTERPOLATION_START Body INTERPOLATION_END',
+      function() {
+        return new Interpolation($2);
+      }),
+      o('INTERPOLATION_START INDENT Body OUTDENT INTERPOLATION_END',
+      function() {
+        return new Interpolation($3);
+      }),
+      o('INTERPOLATION_START INTERPOLATION_END',
+      function() {
+        return new Interpolation();
+      }),
+      o('String',
+      function() {
+        return $1;
+      })
+    ],
+    // The .toString() calls here and elsewhere are to convert `String` objects
+    // back to primitive strings now that we've retrieved stowaway extra properties
+    Regex: [
+      o('REGEX',
+      function() {
+        return new RegexLiteral($1.toString(),
+      {
+          delimiter: $1.delimiter,
+          heregexCommentTokens: $1.heregexCommentTokens
+        });
+      }),
+      o('REGEX_START Invocation REGEX_END',
+      function() {
+        return new RegexWithInterpolations($2,
+      {
+          heregexCommentTokens: $3.heregexCommentTokens
+        });
+      })
+    ],
+    // All of our immediate values. Generally these can be passed straight
+    // through and printed to JavaScript.
+    Literal: [
+      o('AlphaNumeric'),
+      o('JS',
+      function() {
+        return new PassthroughLiteral($1.toString(),
+      {
+          here: $1.here,
+          generated: $1.generated
+        });
+      }),
+      o('Regex'),
+      o('UNDEFINED',
+      function() {
+        return new UndefinedLiteral($1);
+      }),
+      o('NULL',
+      function() {
+        return new NullLiteral($1);
+      }),
+      o('BOOL',
+      function() {
+        return new BooleanLiteral($1.toString(),
+      {
+          originalValue: $1.original
+        });
+      }),
+      o('INFINITY',
+      function() {
+        return new InfinityLiteral($1.toString(),
+      {
+          originalValue: $1.original
+        });
+      }),
+      o('NAN',
+      function() {
+        return new NaNLiteral($1);
+      })
+    ],
+    // Assignment of a variable, property, or index to a value.
+    Assign: [
+      o('Assignable = Expression',
+      function() {
+        return new Assign($1,
+      $3);
+      }),
+      o('Assignable = TERMINATOR Expression',
+      function() {
+        return new Assign($1,
+      $4);
+      }),
+      o('Assignable = INDENT Expression OUTDENT',
+      function() {
+        return 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',
+      function() {
+        return new Value($1);
+      }),
+      o('ObjRestValue'),
+      o('ObjAssignable : Expression',
+      function() {
+        return new Assign(LOC(1)(new Value($1)),
+      $3,
+      'object',
+      {
+          operatorToken: LOC(2)(new Literal($2))
+        });
+      }),
+      o('ObjAssignable : INDENT Expression OUTDENT',
+      function() {
+        return new Assign(LOC(1)(new Value($1)),
+      $4,
+      'object',
+      {
+          operatorToken: LOC(2)(new Literal($2))
+        });
+      }),
+      o('SimpleObjAssignable = Expression',
+      function() {
+        return new Assign(LOC(1)(new Value($1)),
+      $3,
+      null,
+      {
+          operatorToken: LOC(2)(new Literal($2))
+        });
+      }),
+      o('SimpleObjAssignable = INDENT Expression OUTDENT',
+      function() {
+        return new Assign(LOC(1)(new Value($1)),
+      $4,
+      null,
+      {
+          operatorToken: LOC(2)(new Literal($2))
+        });
+      })
+    ],
+    SimpleObjAssignable: [o('Identifier'), o('Property'), o('ThisProperty')],
+    ObjAssignable: [
+      o('SimpleObjAssignable'),
+      o('[ Expression ]',
+      function() {
+        return new Value(new ComputedPropertyName($2));
+      }),
+      o('@ [ Expression ]',
+      function() {
+        return new Value(LOC(1)(new ThisLiteral($1)),
+      [LOC(3)(new ComputedPropertyName($3))],
+      'this');
+      }),
+      o('AlphaNumeric')
+    ],
+    // Object literal spread properties.
+    ObjRestValue: [
+      o('SimpleObjAssignable ...',
+      function() {
+        return new Splat(new Value($1));
+      }),
+      o('... SimpleObjAssignable',
+      function() {
+        return new Splat(new Value($2),
+      {
+          postfix: false
+        });
+      }),
+      o('ObjSpreadExpr ...',
+      function() {
+        return new Splat($1);
+      }),
+      o('... ObjSpreadExpr',
+      function() {
+        return new Splat($2,
+      {
+          postfix: false
+        });
+      })
+    ],
+    ObjSpreadExpr: [
+      o('ObjSpreadIdentifier'),
+      o('Object'),
+      o('Parenthetical'),
+      o('Super'),
+      o('This'),
+      o('SUPER OptFuncExist Arguments',
+      function() {
+        return new SuperCall(LOC(1)(new Super()),
+      $3,
+      $2.soak,
+      $1);
+      }),
+      o('DYNAMIC_IMPORT Arguments',
+      function() {
+        return new DynamicImportCall(LOC(1)(new DynamicImport()),
+      $2);
+      }),
+      o('SimpleObjAssignable OptFuncExist Arguments',
+      function() {
+        return new Call(new Value($1),
+      $3,
+      $2.soak);
+      }),
+      o('ObjSpreadExpr OptFuncExist Arguments',
+      function() {
+        return new Call($1,
+      $3,
+      $2.soak);
+      })
+    ],
+    ObjSpreadIdentifier: [
+      o('SimpleObjAssignable Accessor',
+      function() {
+        return (new Value($1)).add($2);
+      }),
+      o('ObjSpreadExpr Accessor',
+      function() {
+        return (new Value($1)).add($2);
+      })
+    ],
+    // A return statement from a function body.
+    Return: [
+      o('RETURN Expression',
+      function() {
+        return new Return($2);
+      }),
+      o('RETURN INDENT Object OUTDENT',
+      function() {
+        return new Return(new Value($3));
+      }),
+      o('RETURN',
+      function() {
+        return new Return();
+      })
+    ],
+    YieldReturn: [
+      o('YIELD RETURN Expression',
+      function() {
+        return new YieldReturn($3,
+      {
+          returnKeyword: LOC(2)(new Literal($2))
+        });
+      }),
+      o('YIELD RETURN',
+      function() {
+        return new YieldReturn(null,
+      {
+          returnKeyword: LOC(2)(new Literal($2))
+        });
+      })
+    ],
+    AwaitReturn: [
+      o('AWAIT RETURN Expression',
+      function() {
+        return new AwaitReturn($3,
+      {
+          returnKeyword: LOC(2)(new Literal($2))
+        });
+      }),
+      o('AWAIT RETURN',
+      function() {
+        return new AwaitReturn(null,
+      {
+          returnKeyword: LOC(2)(new Literal($2))
+        });
+      })
+    ],
+    // The **Code** node is the function literal. It’s defined by an indented block
+    // of **Block** preceded by a function arrow, with an optional parameter list.
+    Code: [
+      o('PARAM_START ParamList PARAM_END FuncGlyph Block',
+      function() {
+        return new Code($2,
+      $5,
+      $4,
+      LOC(1)(new Literal($1)));
+      }),
+      o('FuncGlyph Block',
+      function() {
+        return new Code([],
+      $2,
+      $1);
+      })
+    ],
+    // The Codeline is the **Code** node with **Line** instead of indented **Block**.
+    CodeLine: [
+      o('PARAM_START ParamList PARAM_END FuncGlyph Line',
+      function() {
+        return new Code($2,
+      LOC(5)(Block.wrap([$5])),
+      $4,
+      LOC(1)(new Literal($1)));
+      }),
+      o('FuncGlyph Line',
+      function() {
+        return new Code([],
+      LOC(2)(Block.wrap([$2])),
+      $1);
+      })
+    ],
+    // CoffeeScript has two different symbols for functions. `->` is for ordinary
+    // functions, and `=>` is for functions bound to the current value of *this*.
+    FuncGlyph: [
+      o('->',
+      function() {
+        return new FuncGlyph($1);
+      }),
+      o('=>',
+      function() {
+        return new FuncGlyph($1);
+      })
+    ],
+    // An optional, trailing comma.
+    OptComma: [o(''), o(',')],
+    // The list of parameters that a function accepts can be of any length.
+    ParamList: [
+      o('',
+      function() {
+        return [];
+      }),
+      o('Param',
+      function() {
+        return [$1];
+      }),
+      o('ParamList , Param',
+      function() {
+        return $1.concat($3);
+      }),
+      o('ParamList OptComma TERMINATOR Param',
+      function() {
+        return $1.concat($4);
+      }),
+      o('ParamList OptComma INDENT ParamList OptComma OUTDENT',
+      function() {
+        return $1.concat($4);
+      })
+    ],
+    // A single parameter in a function definition can be ordinary, or a splat
+    // that hoovers up the remaining arguments.
+    Param: [
+      o('ParamVar',
+      function() {
+        return new Param($1);
+      }),
+      o('ParamVar ...',
+      function() {
+        return new Param($1,
+      null,
+      true);
+      }),
+      o('... ParamVar',
+      function() {
+        return new Param($2,
+      null,
+      {
+          postfix: false
+        });
+      }),
+      o('ParamVar = Expression',
+      function() {
+        return new Param($1,
+      $3);
+      }),
+      o('...',
+      function() {
+        return new Expansion();
+      })
+    ],
+    // Function Parameters
+    ParamVar: [o('Identifier'), o('ThisProperty'), o('Array'), o('Object')],
+    // A splat that occurs outside of a parameter list.
+    Splat: [
+      o('Expression ...',
+      function() {
+        return new Splat($1);
+      }),
+      o('... Expression',
+      function() {
+        return new Splat($2,
+      {
+          postfix: false
+        });
+      })
+    ],
+    // Variables and properties that can be assigned to.
+    SimpleAssignable: [
+      o('Identifier',
+      function() {
+        return new Value($1);
+      }),
+      o('Value Accessor',
+      function() {
+        return $1.add($2);
+      }),
+      o('Code Accessor',
+      function() {
+        return new Value($1).add($2);
+      }),
+      o('ThisProperty')
+    ],
+    // Everything that can be assigned to.
+    Assignable: [
+      o('SimpleAssignable'),
+      o('Array',
+      function() {
+        return new Value($1);
+      }),
+      o('Object',
+      function() {
+        return 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',
+      function() {
+        return new Value($1);
+      }),
+      o('Parenthetical',
+      function() {
+        return new Value($1);
+      }),
+      o('Range',
+      function() {
+        return new Value($1);
+      }),
+      o('Invocation',
+      function() {
+        return new Value($1);
+      }),
+      o('DoIife',
+      function() {
+        return new Value($1);
+      }),
+      o('This'),
+      o('Super',
+      function() {
+        return new Value($1);
+      }),
+      o('MetaProperty',
+      function() {
+        return new Value($1);
+      })
+    ],
+    // A `super`-based expression that can be used as a value.
+    Super: [
+      o('SUPER . Property',
+      function() {
+        return new Super(LOC(3)(new Access($3)),
+      LOC(1)(new Literal($1)));
+      }),
+      o('SUPER INDEX_START Expression INDEX_END',
+      function() {
+        return new Super(LOC(3)(new Index($3)),
+      LOC(1)(new Literal($1)));
+      }),
+      o('SUPER INDEX_START INDENT Expression OUTDENT INDEX_END',
+      function() {
+        return new Super(LOC(4)(new Index($4)),
+      LOC(1)(new Literal($1)));
+      })
+    ],
+    // A “meta-property” access e.g. `new.target` or `import.meta`, where
+    // something that looks like a property is referenced on a keyword.
+    MetaProperty: [
+      o('NEW_TARGET . Property',
+      function() {
+        return new MetaProperty(LOC(1)(new IdentifierLiteral($1)),
+      LOC(3)(new Access($3)));
+      }),
+      o('IMPORT_META . Property',
+      function() {
+        return new MetaProperty(LOC(1)(new IdentifierLiteral($1)),
+      LOC(3)(new Access($3)));
+      })
+    ],
+    // The general group of accessors into an object, by property, by prototype
+    // or by array index or slice.
+    Accessor: [
+      o('.  Property',
+      function() {
+        return new Access($2);
+      }),
+      o('?. Property',
+      function() {
+        return new Access($2,
+      {
+          soak: true
+        });
+      }),
+      o(':: Property',
+      function() {
+        return [
+          LOC(1)(new Access(new PropertyName('prototype'),
+          {
+            shorthand: true
+          })),
+          LOC(2)(new Access($2))
+        ];
+      }),
+      o('?:: Property',
+      function() {
+        return [
+          LOC(1)(new Access(new PropertyName('prototype'),
+          {
+            shorthand: true,
+            soak: true
+          })),
+          LOC(2)(new Access($2))
+        ];
+      }),
+      o('::',
+      function() {
+        return new Access(new PropertyName('prototype'),
+      {
+          shorthand: true
+        });
+      }),
+      o('?::',
+      function() {
+        return new Access(new PropertyName('prototype'),
+      {
+          shorthand: true,
+          soak: true
+        });
+      }),
+      o('Index')
+    ],
+    // Indexing into an object or array using bracket notation.
+    Index: [
+      o('INDEX_START IndexValue INDEX_END',
+      function() {
+        return $2;
+      }),
+      o('INDEX_START INDENT IndexValue OUTDENT INDEX_END',
+      function() {
+        return $3;
+      }),
+      o('INDEX_SOAK  Index',
+      function() {
+        return extend($2,
+      {
+          soak: true
+        });
+      })
+    ],
+    IndexValue: [
+      o('Expression',
+      function() {
+        return new Index($1);
+      }),
+      o('Slice',
+      function() {
+        return new Slice($1);
+      })
+    ],
+    // In CoffeeScript, an object literal is simply a list of assignments.
+    Object: [
+      o('{ AssignList OptComma }',
+      function() {
+        return new Obj($2,
+      $1.generated);
+      })
+    ],
+    // Assignment of properties within an object literal can be separated by
+    // comma, as in JavaScript, or simply by newline.
+    AssignList: [
+      o('',
+      function() {
+        return [];
+      }),
+      o('AssignObj',
+      function() {
+        return [$1];
+      }),
+      o('AssignList , AssignObj',
+      function() {
+        return $1.concat($3);
+      }),
+      o('AssignList OptComma TERMINATOR AssignObj',
+      function() {
+        return $1.concat($4);
+      }),
+      o('AssignList OptComma INDENT AssignList OptComma OUTDENT',
+      function() {
+        return $1.concat($4);
+      })
+    ],
+    // Class definitions have optional bodies of prototype property assignments,
+    // and optional references to the superclass.
+    Class: [
+      o('CLASS',
+      function() {
+        return new Class();
+      }),
+      o('CLASS Block',
+      function() {
+        return new Class(null,
+      null,
+      $2);
+      }),
+      o('CLASS EXTENDS Expression',
+      function() {
+        return new Class(null,
+      $3);
+      }),
+      o('CLASS EXTENDS Expression Block',
+      function() {
+        return new Class(null,
+      $3,
+      $4);
+      }),
+      o('CLASS SimpleAssignable',
+      function() {
+        return new Class($2);
+      }),
+      o('CLASS SimpleAssignable Block',
+      function() {
+        return new Class($2,
+      null,
+      $3);
+      }),
+      o('CLASS SimpleAssignable EXTENDS Expression',
+      function() {
+        return new Class($2,
+      $4);
+      }),
+      o('CLASS SimpleAssignable EXTENDS Expression Block',
+      function() {
+        return new Class($2,
+      $4,
+      $5);
+      })
+    ],
+    Import: [
+      o('IMPORT String',
+      function() {
+        return new ImportDeclaration(null,
+      $2);
+      }),
+      o('IMPORT String ASSERT Object',
+      function() {
+        return new ImportDeclaration(null,
+      $2,
+      $4);
+      }),
+      o('IMPORT ImportDefaultSpecifier FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      null),
+      $4);
+      }),
+      o('IMPORT ImportDefaultSpecifier FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      null),
+      $4,
+      $6);
+      }),
+      o('IMPORT ImportNamespaceSpecifier FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      $2),
+      $4);
+      }),
+      o('IMPORT ImportNamespaceSpecifier FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      $2),
+      $4,
+      $6);
+      }),
+      o('IMPORT { } FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      new ImportSpecifierList([])),
+      $5);
+      }),
+      o('IMPORT { } FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      new ImportSpecifierList([])),
+      $5,
+      $7);
+      }),
+      o('IMPORT { ImportSpecifierList OptComma } FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      new ImportSpecifierList($3)),
+      $7);
+      }),
+      o('IMPORT { ImportSpecifierList OptComma } FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause(null,
+      new ImportSpecifierList($3)),
+      $7,
+      $9);
+      }),
+      o('IMPORT ImportDefaultSpecifier , ImportNamespaceSpecifier FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      $4),
+      $6);
+      }),
+      o('IMPORT ImportDefaultSpecifier , ImportNamespaceSpecifier FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      $4),
+      $6,
+      $8);
+      }),
+      o('IMPORT ImportDefaultSpecifier , { ImportSpecifierList OptComma } FROM String',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      new ImportSpecifierList($5)),
+      $9);
+      }),
+      o('IMPORT ImportDefaultSpecifier , { ImportSpecifierList OptComma } FROM String ASSERT Object',
+      function() {
+        return new ImportDeclaration(new ImportClause($2,
+      new ImportSpecifierList($5)),
+      $9,
+      $11);
+      })
+    ],
+    ImportSpecifierList: [
+      o('ImportSpecifier',
+      function() {
+        return [$1];
+      }),
+      o('ImportSpecifierList , ImportSpecifier',
+      function() {
+        return $1.concat($3);
+      }),
+      o('ImportSpecifierList OptComma TERMINATOR ImportSpecifier',
+      function() {
+        return $1.concat($4);
+      }),
+      o('INDENT ImportSpecifierList OptComma OUTDENT',
+      function() {
+        return $2;
+      }),
+      o('ImportSpecifierList OptComma INDENT ImportSpecifierList OptComma OUTDENT',
+      function() {
+        return $1.concat($4);
+      })
+    ],
+    ImportSpecifier: [
+      o('Identifier',
+      function() {
+        return new ImportSpecifier($1);
+      }),
+      o('Identifier AS Identifier',
+      function() {
+        return new ImportSpecifier($1,
+      $3);
+      }),
+      o('DEFAULT',
+      function() {
+        return new ImportSpecifier(LOC(1)(new DefaultLiteral($1)));
+      }),
+      o('DEFAULT AS Identifier',
+      function() {
+        return new ImportSpecifier(LOC(1)(new DefaultLiteral($1)),
+      $3);
+      })
+    ],
+    ImportDefaultSpecifier: [
+      o('Identifier',
+      function() {
+        return new ImportDefaultSpecifier($1);
+      })
+    ],
+    ImportNamespaceSpecifier: [
+      o('IMPORT_ALL AS Identifier',
+      function() {
+        return new ImportNamespaceSpecifier(new Literal($1),
+      $3);
+      })
+    ],
+    Export: [
+      o('EXPORT { }',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList([]));
+      }),
+      o('EXPORT { ExportSpecifierList OptComma }',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList($3));
+      }),
+      o('EXPORT Class',
+      function() {
+        return new ExportNamedDeclaration($2);
+      }),
+      o('EXPORT Identifier = Expression',
+      function() {
+        return new ExportNamedDeclaration(LOC(2,
+      4)(new Assign($2,
+      $4,
+      null,
+      {
+          moduleDeclaration: 'export'
+        })));
+      }),
+      o('EXPORT Identifier = TERMINATOR Expression',
+      function() {
+        return new ExportNamedDeclaration(LOC(2,
+      5)(new Assign($2,
+      $5,
+      null,
+      {
+          moduleDeclaration: 'export'
+        })));
+      }),
+      o('EXPORT Identifier = INDENT Expression OUTDENT',
+      function() {
+        return new ExportNamedDeclaration(LOC(2,
+      6)(new Assign($2,
+      $5,
+      null,
+      {
+          moduleDeclaration: 'export'
+        })));
+      }),
+      o('EXPORT DEFAULT Expression',
+      function() {
+        return new ExportDefaultDeclaration($3);
+      }),
+      o('EXPORT DEFAULT INDENT Object OUTDENT',
+      function() {
+        return new ExportDefaultDeclaration(new Value($4));
+      }),
+      o('EXPORT EXPORT_ALL FROM String',
+      function() {
+        return new ExportAllDeclaration(new Literal($2),
+      $4);
+      }),
+      o('EXPORT EXPORT_ALL FROM String ASSERT Object',
+      function() {
+        return new ExportAllDeclaration(new Literal($2),
+      $4,
+      $6);
+      }),
+      o('EXPORT { } FROM String',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList([]),
+      $5);
+      }),
+      o('EXPORT { } FROM String ASSERT Object',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList([]),
+      $5,
+      $7);
+      }),
+      o('EXPORT { ExportSpecifierList OptComma } FROM String',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList($3),
+      $7);
+      }),
+      o('EXPORT { ExportSpecifierList OptComma } FROM String ASSERT Object',
+      function() {
+        return new ExportNamedDeclaration(new ExportSpecifierList($3),
+      $7,
+      $9);
+      })
+    ],
+    ExportSpecifierList: [
+      o('ExportSpecifier',
+      function() {
+        return [$1];
+      }),
+      o('ExportSpecifierList , ExportSpecifier',
+      function() {
+        return $1.concat($3);
+      }),
+      o('ExportSpecifierList OptComma TERMINATOR ExportSpecifier',
+      function() {
+        return $1.concat($4);
+      }),
+      o('INDENT ExportSpecifierList OptComma OUTDENT',
+      function() {
+        return $2;
+      }),
+      o('ExportSpecifierList OptComma INDENT ExportSpecifierList OptComma OUTDENT',
+      function() {
+        return $1.concat($4);
+      })
+    ],
+    ExportSpecifier: [
+      o('Identifier',
+      function() {
+        return new ExportSpecifier($1);
+      }),
+      o('Identifier AS Identifier',
+      function() {
+        return new ExportSpecifier($1,
+      $3);
+      }),
+      o('Identifier AS DEFAULT',
+      function() {
+        return new ExportSpecifier($1,
+      LOC(3)(new DefaultLiteral($3)));
+      }),
+      o('DEFAULT',
+      function() {
+        return new ExportSpecifier(LOC(1)(new DefaultLiteral($1)));
+      }),
+      o('DEFAULT AS Identifier',
+      function() {
+        return new ExportSpecifier(LOC(1)(new DefaultLiteral($1)),
+      $3);
+      })
+    ],
+    // Ordinary function invocation, or a chained series of calls.
+    Invocation: [
+      o('Value OptFuncExist String',
+      function() {
+        return new TaggedTemplateCall($1,
+      $3,
+      $2.soak);
+      }),
+      o('Value OptFuncExist Arguments',
+      function() {
+        return new Call($1,
+      $3,
+      $2.soak);
+      }),
+      o('SUPER OptFuncExist Arguments',
+      function() {
+        return new SuperCall(LOC(1)(new Super()),
+      $3,
+      $2.soak,
+      $1);
+      }),
+      o('DYNAMIC_IMPORT Arguments',
+      function() {
+        return new DynamicImportCall(LOC(1)(new DynamicImport()),
+      $2);
+      })
+    ],
+    // An optional existence check on a function.
+    OptFuncExist: [
+      o('',
+      function() {
+        return {
+          soak: false
+        };
+      }),
+      o('FUNC_EXIST',
+      function() {
+        return {
+          soak: true
+        };
+      })
+    ],
+    // The list of arguments to a function call.
+    Arguments: [
+      o('CALL_START CALL_END',
+      function() {
+        return [];
+      }),
+      o('CALL_START ArgList OptComma CALL_END',
+      function() {
+        $2.implicit = $1.generated;
+        return $2;
+      })
+    ],
+    // A reference to the *this* current object.
+    This: [
+      o('THIS',
+      function() {
+        return new Value(new ThisLiteral($1));
+      }),
+      o('@',
+      function() {
+        return new Value(new ThisLiteral($1));
+      })
+    ],
+    // A reference to a property on *this*.
+    ThisProperty: [
+      o('@ Property',
+      function() {
+        return new Value(LOC(1)(new ThisLiteral($1)),
+      [LOC(2)(new Access($2))],
+      'this');
+      })
+    ],
+    // The array literal.
+    Array: [
+      o('[ ]',
+      function() {
+        return new Arr([]);
+      }),
+      o('[ Elisions ]',
+      function() {
+        return new Arr($2);
+      }),
+      o('[ ArgElisionList OptElisions ]',
+      function() {
+        return new Arr([].concat($2,
+      $3));
+      })
+    ],
+    // Inclusive and exclusive range dots.
+    RangeDots: [
+      o('..',
+      function() {
+        return {
+          exclusive: false
+        };
+      }),
+      o('...',
+      function() {
+        return {
+          exclusive: true
+        };
+      })
+    ],
+    // The CoffeeScript range literal.
+    Range: [
+      o('[ Expression RangeDots Expression ]',
+      function() {
+        return new Range($2,
+      $4,
+      $3.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('[ ExpressionLine RangeDots Expression ]',
+      function() {
+        return new Range($2,
+      $4,
+      $3.exclusive ? 'exclusive' : 'inclusive');
+      })
+    ],
+    // Array slice literals.
+    Slice: [
+      o('Expression RangeDots Expression',
+      function() {
+        return new Range($1,
+      $3,
+      $2.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('Expression RangeDots',
+      function() {
+        return new Range($1,
+      null,
+      $2.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('ExpressionLine RangeDots Expression',
+      function() {
+        return new Range($1,
+      $3,
+      $2.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('ExpressionLine RangeDots',
+      function() {
+        return new Range($1,
+      null,
+      $2.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('RangeDots Expression',
+      function() {
+        return new Range(null,
+      $2,
+      $1.exclusive ? 'exclusive' : 'inclusive');
+      }),
+      o('RangeDots',
+      function() {
+        return new Range(null,
+      null,
+      $1.exclusive ? 'exclusive' : 'inclusive');
+      })
+    ],
+    // The **ArgList** is the list of objects passed into a function call
+    // (i.e. comma-separated expressions). Newlines work as well.
+    ArgList: [
+      o('Arg',
+      function() {
+        return [$1];
+      }),
+      o('ArgList , Arg',
+      function() {
+        return $1.concat($3);
+      }),
+      o('ArgList OptComma TERMINATOR Arg',
+      function() {
+        return $1.concat($4);
+      }),
+      o('INDENT ArgList OptComma OUTDENT',
+      function() {
+        return $2;
+      }),
+      o('ArgList OptComma INDENT ArgList OptComma OUTDENT',
+      function() {
+        return $1.concat($4);
+      })
+    ],
+    // Valid arguments are Blocks or Splats.
+    Arg: [
+      o('Expression'),
+      o('ExpressionLine'),
+      o('Splat'),
+      o('...',
+      function() {
+        return new Expansion();
+      })
+    ],
+    // The **ArgElisionList** is the list of objects, contents of an array literal
+    // (i.e. comma-separated expressions and elisions). Newlines work as well.
+    ArgElisionList: [
+      o('ArgElision'),
+      o('ArgElisionList , ArgElision',
+      function() {
+        return $1.concat($3);
+      }),
+      o('ArgElisionList OptComma TERMINATOR ArgElision',
+      function() {
+        return $1.concat($4);
+      }),
+      o('INDENT ArgElisionList OptElisions OUTDENT',
+      function() {
+        return $2.concat($3);
+      }),
+      o('ArgElisionList OptElisions INDENT ArgElisionList OptElisions OUTDENT',
+      function() {
+        return $1.concat($2,
+      $4,
+      $5);
+      })
+    ],
+    ArgElision: [
+      o('Arg',
+      function() {
+        return [$1];
+      }),
+      o('Elisions Arg',
+      function() {
+        return $1.concat($2);
+      })
+    ],
+    OptElisions: [
+      o('OptComma',
+      function() {
+        return [];
+      }),
+      o(', Elisions',
+      function() {
+        return [].concat($2);
+      })
+    ],
+    Elisions: [
+      o('Elision',
+      function() {
+        return [$1];
+      }),
+      o('Elisions Elision',
+      function() {
+        return $1.concat($2);
+      })
+    ],
+    Elision: [
+      o(',',
+      function() {
+        return new Elision();
+      }),
+      o('Elision TERMINATOR',
+      function() {
+        return $1;
+      })
+    ],
+    // Just simple, comma-separated, required arguments (no fancy syntax). We need
+    // this to be separate from the **ArgList** for use in **Switch** blocks, where
+    // having the newlines wouldn't make sense.
+    SimpleArgs: [
+      o('Expression'),
+      o('ExpressionLine'),
+      o('SimpleArgs , Expression',
+      function() {
+        return [].concat($1,
+      $3);
+      }),
+      o('SimpleArgs , ExpressionLine',
+      function() {
+        return [].concat($1,
+      $3);
+      })
+    ],
+    // The variants of *try/catch/finally* exception handling blocks.
+    Try: [
+      o('TRY Block',
+      function() {
+        return new Try($2);
+      }),
+      o('TRY Block Catch',
+      function() {
+        return new Try($2,
+      $3);
+      }),
+      o('TRY Block FINALLY Block',
+      function() {
+        return new Try($2,
+      null,
+      $4,
+      LOC(3)(new Literal($3)));
+      }),
+      o('TRY Block Catch FINALLY Block',
+      function() {
+        return new Try($2,
+      $3,
+      $5,
+      LOC(4)(new Literal($4)));
+      })
+    ],
+    // A catch clause names its error and runs a block of code.
+    Catch: [
+      o('CATCH Identifier Block',
+      function() {
+        return new Catch($3,
+      $2);
+      }),
+      o('CATCH Object Block',
+      function() {
+        return new Catch($3,
+      LOC(2)(new Value($2)));
+      }),
+      o('CATCH Block',
+      function() {
+        return new Catch($2);
+      })
+    ],
+    // Throw an exception object.
+    Throw: [
+      o('THROW Expression',
+      function() {
+        return new Throw($2);
+      }),
+      o('THROW INDENT Object OUTDENT',
+      function() {
+        return new Throw(new Value($3));
+      })
+    ],
+    // Parenthetical expressions. Note that the **Parenthetical** is a **Value**,
+    // not an **Expression**, so if you need to use an expression in a place
+    // where only values are accepted, wrapping it in parentheses will always do
+    // the trick.
+    Parenthetical: [
+      o('( Body )',
+      function() {
+        return new Parens($2);
+      }),
+      o('( INDENT Body OUTDENT )',
+      function() {
+        return new Parens($3);
+      })
+    ],
+    // The condition portion of a while loop.
+    WhileLineSource: [
+      o('WHILE ExpressionLine',
+      function() {
+        return new While($2);
+      }),
+      o('WHILE ExpressionLine WHEN ExpressionLine',
+      function() {
+        return new While($2,
+      {
+          guard: $4
+        });
+      }),
+      o('UNTIL ExpressionLine',
+      function() {
+        return new While($2,
+      {
+          invert: true
+        });
+      }),
+      o('UNTIL ExpressionLine WHEN ExpressionLine',
+      function() {
+        return new While($2,
+      {
+          invert: true,
+          guard: $4
+        });
+      })
+    ],
+    WhileSource: [
+      o('WHILE Expression',
+      function() {
+        return new While($2);
+      }),
+      o('WHILE Expression WHEN Expression',
+      function() {
+        return new While($2,
+      {
+          guard: $4
+        });
+      }),
+      o('WHILE ExpressionLine WHEN Expression',
+      function() {
+        return new While($2,
+      {
+          guard: $4
+        });
+      }),
+      o('UNTIL Expression',
+      function() {
+        return new While($2,
+      {
+          invert: true
+        });
+      }),
+      o('UNTIL Expression WHEN Expression',
+      function() {
+        return new While($2,
+      {
+          invert: true,
+          guard: $4
+        });
+      }),
+      o('UNTIL ExpressionLine WHEN Expression',
+      function() {
+        return new While($2,
+      {
+          invert: true,
+          guard: $4
+        });
+      })
+    ],
+    // The while loop can either be normal, with a block of expressions to execute,
+    // or postfix, with a single expression. There is no do..while.
+    While: [
+      o('WhileSource Block',
+      function() {
+        return $1.addBody($2);
+      }),
+      o('WhileLineSource Block',
+      function() {
+        return $1.addBody($2);
+      }),
+      o('Statement  WhileSource',
+      function() {
+        return (Object.assign($2,
+      {
+          postfix: true
+        })).addBody(LOC(1)(Block.wrap([$1])));
+      }),
+      o('Expression WhileSource',
+      function() {
+        return (Object.assign($2,
+      {
+          postfix: true
+        })).addBody(LOC(1)(Block.wrap([$1])));
+      }),
+      o('Loop',
+      function() {
+        return $1;
+      })
+    ],
+    Loop: [
+      o('LOOP Block',
+      function() {
+        return new While(LOC(1)(new BooleanLiteral('true')),
+      {
+          isLoop: true
+        }).addBody($2);
+      }),
+      o('LOOP Expression',
+      function() {
+        return new While(LOC(1)(new BooleanLiteral('true')),
+      {
+          isLoop: true
+        }).addBody(LOC(2)(Block.wrap([$2])));
+      })
+    ],
+    // Array, object, and range comprehensions, at the most generic level.
+    // Comprehensions can either be normal, with a block of expressions to execute,
+    // or postfix, with a single expression.
+    For: [
+      o('Statement    ForBody',
+      function() {
+        $2.postfix = true;
+        return $2.addBody($1);
+      }),
+      o('Expression   ForBody',
+      function() {
+        $2.postfix = true;
+        return $2.addBody($1);
+      }),
+      o('ForBody      Block',
+      function() {
+        return $1.addBody($2);
+      }),
+      o('ForLineBody  Block',
+      function() {
+        return $1.addBody($2);
+      })
+    ],
+    ForBody: [
+      o('FOR Range',
+      function() {
+        return new For([],
+      {
+          source: LOC(2)(new Value($2))
+        });
+      }),
+      o('FOR Range BY Expression',
+      function() {
+        return new For([],
+      {
+          source: LOC(2)(new Value($2)),
+          step: $4
+        });
+      }),
+      o('ForStart ForSource',
+      function() {
+        return $1.addSource($2);
+      })
+    ],
+    ForLineBody: [
+      o('FOR Range BY ExpressionLine',
+      function() {
+        return new For([],
+      {
+          source: LOC(2)(new Value($2)),
+          step: $4
+        });
+      }),
+      o('ForStart ForLineSource',
+      function() {
+        return $1.addSource($2);
+      })
+    ],
+    ForStart: [
+      o('FOR ForVariables',
+      function() {
+        return new For([],
+      {
+          name: $2[0],
+          index: $2[1]
+        });
+      }),
+      o('FOR AWAIT ForVariables',
+      function() {
+        var index,
+      name;
+        [name,
+      index] = $3;
+        return new For([],
+      {
+          name,
+          index,
+          await: true,
+          awaitTag: LOC(2)(new Literal($2))
+        });
+      }),
+      o('FOR OWN ForVariables',
+      function() {
+        var index,
+      name;
+        [name,
+      index] = $3;
+        return new For([],
+      {
+          name,
+          index,
+          own: true,
+          ownTag: LOC(2)(new Literal($2))
+        });
+      })
+    ],
+    // An array of all accepted values for a variable inside the loop.
+    // This enables support for pattern matching.
+    ForValue: [
+      o('Identifier'),
+      o('ThisProperty'),
+      o('Array',
+      function() {
+        return new Value($1);
+      }),
+      o('Object',
+      function() {
+        return 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: [
+      o('ForValue',
+      function() {
+        return [$1];
+      }),
+      o('ForValue , ForValue',
+      function() {
+        return [$1,
+      $3];
+      })
+    ],
+    // The source of a comprehension is an array or object with an optional guard
+    // clause. If it’s an array comprehension, you can also choose to step through
+    // in fixed-size increments.
+    ForSource: [
+      o('FORIN Expression',
+      function() {
+        return {
+          source: $2
+        };
+      }),
+      o('FOROF Expression',
+      function() {
+        return {
+          source: $2,
+          object: true
+        };
+      }),
+      o('FORIN Expression WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4
+        };
+      }),
+      o('FORIN ExpressionLine WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4
+        };
+      }),
+      o('FOROF Expression WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          object: true
+        };
+      }),
+      o('FOROF ExpressionLine WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          object: true
+        };
+      }),
+      o('FORIN Expression BY Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4
+        };
+      }),
+      o('FORIN ExpressionLine BY Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4
+        };
+      }),
+      o('FORIN Expression WHEN Expression BY Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN ExpressionLine WHEN Expression BY Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN Expression WHEN ExpressionLine BY Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN ExpressionLine WHEN ExpressionLine BY Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN Expression BY Expression WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN ExpressionLine BY Expression WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN Expression BY ExpressionLine WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN ExpressionLine BY ExpressionLine WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORFROM Expression',
+      function() {
+        return {
+          source: $2,
+          from: true
+        };
+      }),
+      o('FORFROM Expression WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          from: true
+        };
+      }),
+      o('FORFROM ExpressionLine WHEN Expression',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          from: true
+        };
+      })
+    ],
+    ForLineSource: [
+      o('FORIN ExpressionLine',
+      function() {
+        return {
+          source: $2
+        };
+      }),
+      o('FOROF ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          object: true
+        };
+      }),
+      o('FORIN Expression WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4
+        };
+      }),
+      o('FORIN ExpressionLine WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4
+        };
+      }),
+      o('FOROF Expression WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          object: true
+        };
+      }),
+      o('FOROF ExpressionLine WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          object: true
+        };
+      }),
+      o('FORIN Expression BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4
+        };
+      }),
+      o('FORIN ExpressionLine BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4
+        };
+      }),
+      o('FORIN Expression WHEN Expression BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN ExpressionLine WHEN Expression BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN Expression WHEN ExpressionLine BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN ExpressionLine WHEN ExpressionLine BY ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          step: $6
+        };
+      }),
+      o('FORIN Expression BY Expression WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN ExpressionLine BY Expression WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN Expression BY ExpressionLine WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORIN ExpressionLine BY ExpressionLine WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          step: $4,
+          guard: $6
+        };
+      }),
+      o('FORFROM ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          from: true
+        };
+      }),
+      o('FORFROM Expression WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          from: true
+        };
+      }),
+      o('FORFROM ExpressionLine WHEN ExpressionLine',
+      function() {
+        return {
+          source: $2,
+          guard: $4,
+          from: true
+        };
+      })
+    ],
+    Switch: [
+      o('SWITCH Expression INDENT Whens OUTDENT',
+      function() {
+        return new Switch($2,
+      $4);
+      }),
+      o('SWITCH ExpressionLine INDENT Whens OUTDENT',
+      function() {
+        return new Switch($2,
+      $4);
+      }),
+      o('SWITCH Expression INDENT Whens ELSE Block OUTDENT',
+      function() {
+        return new Switch($2,
+      $4,
+      LOC(5,
+      6)($6));
+      }),
+      o('SWITCH ExpressionLine INDENT Whens ELSE Block OUTDENT',
+      function() {
+        return new Switch($2,
+      $4,
+      LOC(5,
+      6)($6));
+      }),
+      o('SWITCH INDENT Whens OUTDENT',
+      function() {
+        return new Switch(null,
+      $3);
+      }),
+      o('SWITCH INDENT Whens ELSE Block OUTDENT',
+      function() {
+        return new Switch(null,
+      $3,
+      LOC(4,
+      5)($5));
+      })
+    ],
+    Whens: [
+      o('When',
+      function() {
+        return [$1];
+      }),
+      o('Whens When',
+      function() {
+        return $1.concat($2);
+      })
+    ],
+    // An individual **When** clause, with action.
+    When: [
+      o('LEADING_WHEN SimpleArgs Block',
+      function() {
+        return new SwitchWhen($2,
+      $3);
+      }),
+      o('LEADING_WHEN SimpleArgs Block TERMINATOR',
+      function() {
+        return LOC(1,
+      3)(new SwitchWhen($2,
+      $3));
+      })
+    ],
+    // The most basic form of *if* is a condition and an action. The following
+    // if-related rules are broken up along these lines in order to avoid
+    // ambiguity.
+    IfBlock: [
+      o('IF Expression Block',
+      function() {
+        return new If($2,
+      $3,
+      {
+          type: $1
+        });
+      }),
+      o('IfBlock ELSE IF Expression Block',
+      function() {
+        return $1.addElse(LOC(3,
+      5)(new If($4,
+      $5,
+      {
+          type: $3
+        })));
+      })
+    ],
+    // The full complement of *if* expressions, including postfix one-liner
+    // *if* and *unless*.
+    If: [
+      o('IfBlock'),
+      o('IfBlock ELSE Block',
+      function() {
+        return $1.addElse($3);
+      }),
+      o('Statement  POST_IF Expression',
+      function() {
+        return new If($3,
+      LOC(1)(Block.wrap([$1])),
+      {
+          type: $2,
+          postfix: true
+        });
+      }),
+      o('Expression POST_IF Expression',
+      function() {
+        return new If($3,
+      LOC(1)(Block.wrap([$1])),
+      {
+          type: $2,
+          postfix: true
+        });
+      })
+    ],
+    IfBlockLine: [
+      o('IF ExpressionLine Block',
+      function() {
+        return new If($2,
+      $3,
+      {
+          type: $1
+        });
+      }),
+      o('IfBlockLine ELSE IF ExpressionLine Block',
+      function() {
+        return $1.addElse(LOC(3,
+      5)(new If($4,
+      $5,
+      {
+          type: $3
+        })));
+      })
+    ],
+    IfLine: [
+      o('IfBlockLine'),
+      o('IfBlockLine ELSE Block',
+      function() {
+        return $1.addElse($3);
+      }),
+      o('Statement  POST_IF ExpressionLine',
+      function() {
+        return new If($3,
+      LOC(1)(Block.wrap([$1])),
+      {
+          type: $2,
+          postfix: true
+        });
+      }),
+      o('Expression POST_IF ExpressionLine',
+      function() {
+        return new If($3,
+      LOC(1)(Block.wrap([$1])),
+      {
+          type: $2,
+          postfix: true
+        });
+      })
+    ],
+    // Arithmetic and logical operators, working on one or more operands.
+    // Here they are grouped by order of precedence. The actual precedence rules
+    // 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.
+    OperationLine: [
+      o('UNARY ExpressionLine',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('DO ExpressionLine',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('DO_IIFE CodeLine',
+      function() {
+        return new Op($1,
+      $2);
+      })
+    ],
+    Operation: [
+      o('UNARY Expression',
+      function() {
+        return new Op($1.toString(),
+      $2,
+      void 0,
+      void 0,
+      {
+          originalOperator: $1.original
+        });
+      }),
+      o('DO Expression',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('UNARY_MATH Expression',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('-     Expression',
+      (function() {
+        return new Op('-',
+      $2);
+      }),
+      {
+        prec: 'UNARY_MATH'
+      }),
+      o('+     Expression',
+      (function() {
+        return new Op('+',
+      $2);
+      }),
+      {
+        prec: 'UNARY_MATH'
+      }),
+      o('AWAIT Expression',
+      function() {
+        return new Op($1,
+      $2);
+      }),
+      o('AWAIT INDENT Object OUTDENT',
+      function() {
+        return new Op($1,
+      $3);
+      }),
+      o('-- SimpleAssignable',
+      function() {
+        return new Op('--',
+      $2);
+      }),
+      o('++ SimpleAssignable',
+      function() {
+        return new Op('++',
+      $2);
+      }),
+      o('SimpleAssignable --',
+      function() {
+        return new Op('--',
+      $1,
+      null,
+      true);
+      }),
+      o('SimpleAssignable ++',
+      function() {
+        return new Op('++',
+      $1,
+      null,
+      true);
+      }),
+      // [The existential operator](https://coffeescript.org/#existential-operator).
+      o('Expression ?',
+      function() {
+        return new Existence($1);
+      }),
+      o('Expression +  Expression',
+      function() {
+        return new Op('+',
+      $1,
+      $3);
+      }),
+      o('Expression -  Expression',
+      function() {
+        return new Op('-',
+      $1,
+      $3);
+      }),
+      o('Expression MATH     Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression **       Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression SHIFT    Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression COMPARE  Expression',
+      function() {
+        return new Op($2.toString(),
+      $1,
+      $3,
+      void 0,
+      {
+          originalOperator: $2.original
+        });
+      }),
+      o('Expression &        Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression ^        Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression |        Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression &&       Expression',
+      function() {
+        return new Op($2.toString(),
+      $1,
+      $3,
+      void 0,
+      {
+          originalOperator: $2.original
+        });
+      }),
+      o('Expression ||       Expression',
+      function() {
+        return new Op($2.toString(),
+      $1,
+      $3,
+      void 0,
+      {
+          originalOperator: $2.original
+        });
+      }),
+      o('Expression BIN?     Expression',
+      function() {
+        return new Op($2,
+      $1,
+      $3);
+      }),
+      o('Expression RELATION Expression',
+      function() {
+        var ref,
+      ref1;
+        return new Op($2.toString(),
+      $1,
+      $3,
+      void 0,
+      {
+          invertOperator: (ref = (ref1 = $2.invert) != null ? ref1.original : void 0) != null ? ref : $2.invert
+        });
+      }),
+      o('SimpleAssignable COMPOUND_ASSIGN Expression',
+      function() {
+        return new Assign($1,
+      $3,
+      $2.toString(),
+      {
+          originalContext: $2.original
+        });
+      }),
+      o('SimpleAssignable COMPOUND_ASSIGN INDENT Expression OUTDENT',
+      function() {
+        return new Assign($1,
+      $4,
+      $2.toString(),
+      {
+          originalContext: $2.original
+        });
+      }),
+      o('SimpleAssignable COMPOUND_ASSIGN TERMINATOR Expression',
+      function() {
+        return new Assign($1,
+      $4,
+      $2.toString(),
+      {
+          originalContext: $2.original
+        });
+      })
+    ],
+    DoIife: [
+      o('DO_IIFE Code',
+      function() {
+        return new Op($1,
+      $2);
+      })
+    ]
+  };
+
+  // Precedence
+  // ----------
+
+  // Operators at the top of this list have higher precedence than the ones lower
+  // down. Following these rules is what makes `2 + 3 * 4` parse as:
+
+  //     2 + (3 * 4)
+
+  // And not:
+
+  //     (2 + 3) * 4
+  operators = [['right', 'DO_IIFE'], ['left', '.', '?.', '::', '?::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY', 'DO'], ['right', 'AWAIT'], ['right', '**'], ['right', 'UNARY_MATH'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', '&'], ['left', '^'], ['left', '|'], ['left', '&&'], ['left', '||'], ['left', 'BIN?'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', 'YIELD'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'FORFROM', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS', 'IMPORT', 'EXPORT', 'DYNAMIC_IMPORT'], ['left', 'POST_IF']];
+
+  // Wrapping Up
+  // -----------
+
+  // Finally, now that we have our **grammar** and our **operators**, we can create
+  // our **Jison.Parser**. We do this by processing all of our rules, recording all
+  // terminals (every symbol which does not appear as the name of a rule above)
+  // as "tokens".
+  tokens = [];
+
+  for (name in grammar) {
+    alternatives = grammar[name];
+    grammar[name] = (function() {
+      var i, j, len, len1, ref, results;
+      results = [];
+      for (i = 0, len = alternatives.length; i < len; i++) {
+        alt = alternatives[i];
+        ref = alt[0].split(' ');
+        for (j = 0, len1 = ref.length; j < len1; j++) {
+          token = ref[j];
+          if (!grammar[token]) {
+            tokens.push(token);
+          }
+        }
+        if (name === 'Root') {
+          alt[1] = `return ${alt[1]}`;
+        }
+        results.push(alt);
+      }
+      return results;
+    })();
+  }
+
+  // Initialize the **Parser** with our list of terminal **tokens**, our **grammar**
+  // rules, and the name of the root. Reverse the operators because Jison orders
+  // precedence from low to high, and we have it high to low
+  // (as in [Yacc](http://dinosaur.compilertools.net/yacc/index.html)).
+  exports.parser = new Parser({
+    tokens: tokens.join(' '),
+    bnf: grammar,
+    operators: operators.reverse(),
+    startSymbol: 'Root'
+  });
+
+}).call(this);
diff --git a/lib/coffeescript/helpers.js b/lib/coffeescript/helpers.js
new file mode 100644
index 00000000..755e3ebf
--- /dev/null
+++ b/lib/coffeescript/helpers.js
@@ -0,0 +1,487 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // 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.
+  var UNICODE_CODE_POINT_ESCAPE, attachCommentsToNode, buildLocationData, buildLocationHash, buildTokenDataDictionary, extend, flatten, isBoolean, isNumber, isString, ref, repeat, syntaxErrorToString, unicodeCodePointToUnicodeEscapes,
+    indexOf = [].indexOf;
+
+  exports.starts = function(string, literal, start) {
+    return literal === string.substr(start, literal.length);
+  };
+
+  // Peek at the end of a given string to see if it matches a sequence.
+  exports.ends = function(string, literal, back) {
+    var len;
+    len = literal.length;
+    return literal === string.substr(string.length - len - (back || 0), len);
+  };
+
+  // Repeat a string `n` times.
+  exports.repeat = repeat = function(str, n) {
+    var res;
+    // Use clever algorithm to have O(log(n)) string concatenation operations.
+    res = '';
+    while (n > 0) {
+      if (n & 1) {
+        res += str;
+      }
+      n >>>= 1;
+      str += str;
+    }
+    return res;
+  };
+
+  // Trim out all falsy values from an array.
+  exports.compact = function(array) {
+    var i, item, len1, results;
+    results = [];
+    for (i = 0, len1 = array.length; i < len1; i++) {
+      item = array[i];
+      if (item) {
+        results.push(item);
+      }
+    }
+    return results;
+  };
+
+  // Count the number of occurrences of a string in a string.
+  exports.count = function(string, substr) {
+    var num, pos;
+    num = pos = 0;
+    if (!substr.length) {
+      return 1 / 0;
+    }
+    while (pos = 1 + string.indexOf(substr, pos)) {
+      num++;
+    }
+    return num;
+  };
+
+  // Merge objects, returning a fresh copy with attributes from both sides.
+  // Used every time `Base#compile` is called, to allow properties in the
+  // options hash to propagate down the tree without polluting other branches.
+  exports.merge = function(options, overrides) {
+    return extend(extend({}, options), overrides);
+  };
+
+  // Extend a source object with the properties of another object (shallow copy).
+  extend = exports.extend = function(object, properties) {
+    var key, val;
+    for (key in properties) {
+      val = properties[key];
+      object[key] = val;
+    }
+    return object;
+  };
+
+  // Return a flattened version of an array.
+  // Handy for getting a list of `children` from the nodes.
+  exports.flatten = flatten = function(array) {
+    var element, flattened, i, len1;
+    flattened = [];
+    for (i = 0, len1 = array.length; i < len1; i++) {
+      element = array[i];
+      if ('[object Array]' === Object.prototype.toString.call(element)) {
+        flattened = flattened.concat(flatten(element));
+      } else {
+        flattened.push(element);
+      }
+    }
+    return flattened;
+  };
+
+  // Delete a key from an object, returning the value. Useful when a node is
+  // looking for a particular method in an options hash.
+  exports.del = function(obj, key) {
+    var val;
+    val = obj[key];
+    delete obj[key];
+    return val;
+  };
+
+  // Typical Array::some
+  exports.some = (ref = Array.prototype.some) != null ? ref : function(fn) {
+    var e, i, len1, ref1;
+    ref1 = this;
+    for (i = 0, len1 = ref1.length; i < len1; i++) {
+      e = ref1[i];
+      if (fn(e)) {
+        return true;
+      }
+    }
+    return false;
+  };
+
+  // Helper function for extracting code from Literate CoffeeScript by stripping
+  // out all non-code blocks, producing a string of CoffeeScript code that can
+  // be compiled “normally.”
+  exports.invertLiterate = function(code) {
+    var blankLine, i, indented, insideComment, len1, line, listItemStart, out, ref1;
+    out = [];
+    blankLine = /^\s*$/;
+    indented = /^[\t ]/;
+    listItemStart = /^(?:\t?| {0,3})(?:[\*\-\+]|[0-9]{1,9}\.)[ \t]/; // Up to one tab, or up to three spaces, or neither;
+    // followed by `*`, `-` or `+`;
+    // or by an integer up to 9 digits long, followed by a period;
+    // followed by a space or a tab.
+    insideComment = false;
+    ref1 = code.split('\n');
+    for (i = 0, len1 = ref1.length; i < len1; i++) {
+      line = ref1[i];
+      if (blankLine.test(line)) {
+        insideComment = false;
+        out.push(line);
+      } else if (insideComment || listItemStart.test(line)) {
+        insideComment = true;
+        out.push(`# ${line}`);
+      } else if (!insideComment && indented.test(line)) {
+        out.push(line);
+      } else {
+        insideComment = true;
+        out.push(`# ${line}`);
+      }
+    }
+    return out.join('\n');
+  };
+
+  // Merge two jison-style location data objects together.
+  // If `last` is not provided, this will simply return `first`.
+  buildLocationData = function(first, last) {
+    if (!last) {
+      return first;
+    } else {
+      return {
+        first_line: first.first_line,
+        first_column: first.first_column,
+        last_line: last.last_line,
+        last_column: last.last_column,
+        last_line_exclusive: last.last_line_exclusive,
+        last_column_exclusive: last.last_column_exclusive,
+        range: [first.range[0], last.range[1]]
+      };
+    }
+  };
+
+  // Build a list of all comments attached to tokens.
+  exports.extractAllCommentTokens = function(tokens) {
+    var allCommentsObj, comment, commentKey, i, j, k, key, len1, len2, len3, ref1, results, sortedKeys, token;
+    allCommentsObj = {};
+    for (i = 0, len1 = tokens.length; i < len1; i++) {
+      token = tokens[i];
+      if (token.comments) {
+        ref1 = token.comments;
+        for (j = 0, len2 = ref1.length; j < len2; j++) {
+          comment = ref1[j];
+          commentKey = comment.locationData.range[0];
+          allCommentsObj[commentKey] = comment;
+        }
+      }
+    }
+    sortedKeys = Object.keys(allCommentsObj).sort(function(a, b) {
+      return a - b;
+    });
+    results = [];
+    for (k = 0, len3 = sortedKeys.length; k < len3; k++) {
+      key = sortedKeys[k];
+      results.push(allCommentsObj[key]);
+    }
+    return results;
+  };
+
+  // Get a lookup hash for a token based on its location data.
+  // Multiple tokens might have the same location hash, but using exclusive
+  // location data distinguishes e.g. zero-length generated tokens from
+  // actual source tokens.
+  buildLocationHash = function(loc) {
+    return `${loc.range[0]}-${loc.range[1]}`;
+  };
+
+  // Build a dictionary of extra token properties organized by tokens’ locations
+  // used as lookup hashes.
+  exports.buildTokenDataDictionary = buildTokenDataDictionary = function(tokens) {
+    var base1, i, len1, token, tokenData, tokenHash;
+    tokenData = {};
+    for (i = 0, len1 = tokens.length; i < len1; i++) {
+      token = tokens[i];
+      if (!token.comments) {
+        continue;
+      }
+      tokenHash = buildLocationHash(token[2]);
+      // Multiple tokens might have the same location hash, such as the generated
+      // `JS` tokens added at the start or end of the token stream to hold
+      // comments that start or end a file.
+      if (tokenData[tokenHash] == null) {
+        tokenData[tokenHash] = {};
+      }
+      if (token.comments) { // `comments` is always an array.
+        // For “overlapping” tokens, that is tokens with the same location data
+        // and therefore matching `tokenHash`es, merge the comments from both/all
+        // tokens together into one array, even if there are duplicate comments;
+        // they will get sorted out later.
+        ((base1 = tokenData[tokenHash]).comments != null ? base1.comments : base1.comments = []).push(...token.comments);
+      }
+    }
+    return tokenData;
+  };
+
+  // This returns a function which takes an object as a parameter, and if that
+  // object is an AST node, updates that object's locationData.
+  // The object is returned either way.
+  exports.addDataToNode = function(parserState, firstLocationData, firstValue, lastLocationData, lastValue, forceUpdateLocation = true) {
+    return function(obj) {
+      var locationData, objHash, ref1, ref2, ref3;
+      // Add location data.
+      locationData = buildLocationData((ref1 = firstValue != null ? firstValue.locationData : void 0) != null ? ref1 : firstLocationData, (ref2 = lastValue != null ? lastValue.locationData : void 0) != null ? ref2 : lastLocationData);
+      if (((obj != null ? obj.updateLocationDataIfMissing : void 0) != null) && (firstLocationData != null)) {
+        obj.updateLocationDataIfMissing(locationData, forceUpdateLocation);
+      } else {
+        obj.locationData = locationData;
+      }
+      // Add comments, building the dictionary of token data if it hasn’t been
+      // built yet.
+      if (parserState.tokenData == null) {
+        parserState.tokenData = buildTokenDataDictionary(parserState.parser.tokens);
+      }
+      if (obj.locationData != null) {
+        objHash = buildLocationHash(obj.locationData);
+        if (((ref3 = parserState.tokenData[objHash]) != null ? ref3.comments : void 0) != null) {
+          attachCommentsToNode(parserState.tokenData[objHash].comments, obj);
+        }
+      }
+      return obj;
+    };
+  };
+
+  exports.attachCommentsToNode = attachCommentsToNode = function(comments, node) {
+    if ((comments == null) || comments.length === 0) {
+      return;
+    }
+    if (node.comments == null) {
+      node.comments = [];
+    }
+    return node.comments.push(...comments);
+  };
+
+  // Convert jison location data to a string.
+  // `obj` can be a token, or a locationData.
+  exports.locationDataToString = function(obj) {
+    var locationData;
+    if (("2" in obj) && ("first_line" in obj[2])) {
+      locationData = obj[2];
+    } else if ("first_line" in obj) {
+      locationData = obj;
+    }
+    if (locationData) {
+      return `${locationData.first_line + 1}:${locationData.first_column + 1}-` + `${locationData.last_line + 1}:${locationData.last_column + 1}`;
+    } else {
+      return "No location data";
+    }
+  };
+
+  // Generate a unique anonymous file name so we can distinguish source map cache
+  // entries for any number of anonymous scripts.
+  exports.anonymousFileName = (function() {
+    var n;
+    n = 0;
+    return function() {
+      return `<anonymous-${n++}>`;
+    };
+  })();
+
+  // A `.coffee.md` compatible version of `basename`, that returns the file sans-extension.
+  exports.baseFileName = function(file, stripExt = false, useWinPathSep = false) {
+    var parts, pathSep;
+    pathSep = useWinPathSep ? /\\|\// : /\//;
+    parts = file.split(pathSep);
+    file = parts[parts.length - 1];
+    if (!(stripExt && file.indexOf('.') >= 0)) {
+      return file;
+    }
+    parts = file.split('.');
+    parts.pop();
+    if (parts[parts.length - 1] === 'coffee' && parts.length > 1) {
+      parts.pop();
+    }
+    return parts.join('.');
+  };
+
+  // Determine if a filename represents a CoffeeScript file.
+  exports.isCoffee = function(file) {
+    return /\.((lit)?coffee|coffee\.md)$/.test(file);
+  };
+
+  // Determine if a filename represents a Literate CoffeeScript file.
+  exports.isLiterate = function(file) {
+    return /\.(litcoffee|coffee\.md)$/.test(file);
+  };
+
+  // Throws a SyntaxError from a given location.
+  // The error's `toString` will return an error message following the "standard"
+  // format `<filename>:<line>:<col>: <message>` plus the line with the error and a
+  // marker showing where the error is.
+  exports.throwSyntaxError = function(message, location) {
+    var error;
+    error = new SyntaxError(message);
+    error.location = location;
+    error.toString = syntaxErrorToString;
+    // Instead of showing the compiler's stacktrace, show our custom error message
+    // (this is useful when the error bubbles up in Node.js applications that
+    // compile CoffeeScript for example).
+    error.stack = error.toString();
+    throw error;
+  };
+
+  // Update a compiler SyntaxError with source code information if it didn't have
+  // it already.
+  exports.updateSyntaxError = function(error, code, filename) {
+    // Avoid screwing up the `stack` property of other errors (i.e. possible bugs).
+    if (error.toString === syntaxErrorToString) {
+      error.code || (error.code = code);
+      error.filename || (error.filename = filename);
+      error.stack = error.toString();
+    }
+    return error;
+  };
+
+  syntaxErrorToString = function() {
+    var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, ref1, ref2, ref3, ref4, start;
+    if (!(this.code && this.location)) {
+      return Error.prototype.toString.call(this);
+    }
+    ({first_line, first_column, last_line, last_column} = this.location);
+    if (last_line == null) {
+      last_line = first_line;
+    }
+    if (last_column == null) {
+      last_column = first_column;
+    }
+    if ((ref1 = this.filename) != null ? ref1.startsWith('<anonymous') : void 0) {
+      filename = '[stdin]';
+    } else {
+      filename = this.filename || '[stdin]';
+    }
+    codeLine = this.code.split('\n')[first_line];
+    start = first_column;
+    // Show only the first line on multi-line errors.
+    end = first_line === last_line ? last_column + 1 : codeLine.length;
+    marker = codeLine.slice(0, start).replace(/[^\s]/g, ' ') + repeat('^', end - start);
+    // Check to see if we're running on a color-enabled TTY.
+    if (typeof process !== "undefined" && process !== null) {
+      colorsEnabled = ((ref2 = process.stdout) != null ? ref2.isTTY : void 0) && !((ref3 = process.env) != null ? ref3.NODE_DISABLE_COLORS : void 0);
+    }
+    if ((ref4 = this.colorful) != null ? ref4 : colorsEnabled) {
+      colorize = function(str) {
+        return `\x1B[1;31m${str}\x1B[0m`;
+      };
+      codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end);
+      marker = colorize(marker);
+    }
+    return `${filename}:${first_line + 1}:${first_column + 1}: error: ${this.message}
+${codeLine}
+${marker}`;
+  };
+
+  exports.nameWhitespaceCharacter = function(string) {
+    switch (string) {
+      case ' ':
+        return 'space';
+      case '\n':
+        return 'newline';
+      case '\r':
+        return 'carriage return';
+      case '\t':
+        return 'tab';
+      default:
+        return string;
+    }
+  };
+
+  exports.parseNumber = function(string) {
+    var base;
+    if (string == null) {
+      return 0/0;
+    }
+    base = (function() {
+      switch (string.charAt(1)) {
+        case 'b':
+          return 2;
+        case 'o':
+          return 8;
+        case 'x':
+          return 16;
+        default:
+          return null;
+      }
+    })();
+    if (base != null) {
+      return parseInt(string.slice(2).replace(/_/g, ''), base);
+    } else {
+      return parseFloat(string.replace(/_/g, ''));
+    }
+  };
+
+  exports.isFunction = function(obj) {
+    return Object.prototype.toString.call(obj) === '[object Function]';
+  };
+
+  exports.isNumber = isNumber = function(obj) {
+    return Object.prototype.toString.call(obj) === '[object Number]';
+  };
+
+  exports.isString = isString = function(obj) {
+    return Object.prototype.toString.call(obj) === '[object String]';
+  };
+
+  exports.isBoolean = isBoolean = function(obj) {
+    return obj === true || obj === false || Object.prototype.toString.call(obj) === '[object Boolean]';
+  };
+
+  exports.isPlainObject = function(obj) {
+    return typeof obj === 'object' && !!obj && !Array.isArray(obj) && !isNumber(obj) && !isString(obj) && !isBoolean(obj);
+  };
+
+  unicodeCodePointToUnicodeEscapes = function(codePoint) {
+    var high, low, toUnicodeEscape;
+    toUnicodeEscape = function(val) {
+      var str;
+      str = val.toString(16);
+      return `\\u${repeat('0', 4 - str.length)}${str}`;
+    };
+    if (codePoint < 0x10000) {
+      return toUnicodeEscape(codePoint);
+    }
+    // surrogate pair
+    high = Math.floor((codePoint - 0x10000) / 0x400) + 0xD800;
+    low = (codePoint - 0x10000) % 0x400 + 0xDC00;
+    return `${toUnicodeEscape(high)}${toUnicodeEscape(low)}`;
+  };
+
+  // Replace `\u{...}` with `\uxxxx[\uxxxx]` in regexes without `u` flag
+  exports.replaceUnicodeCodePointEscapes = function(str, {flags, error, delimiter = ''} = {}) {
+    var shouldReplace;
+    shouldReplace = (flags != null) && indexOf.call(flags, 'u') < 0;
+    return str.replace(UNICODE_CODE_POINT_ESCAPE, function(match, escapedBackslash, codePointHex, offset) {
+      var codePointDecimal;
+      if (escapedBackslash) {
+        return escapedBackslash;
+      }
+      codePointDecimal = parseInt(codePointHex, 16);
+      if (codePointDecimal > 0x10ffff) {
+        error("unicode code point escapes greater than \\u{10ffff} are not allowed", {
+          offset: offset + delimiter.length,
+          length: codePointHex.length + 4
+        });
+      }
+      if (!shouldReplace) {
+        return match;
+      }
+      return unicodeCodePointToUnicodeEscapes(codePointDecimal);
+    });
+  };
+
+  UNICODE_CODE_POINT_ESCAPE = /(\\\\)|\\u\{([\da-fA-F]+)\}/g; // Make sure the escape isn’t escaped.
+
+}).call(this);
diff --git a/lib/coffeescript/index.js b/lib/coffeescript/index.js
new file mode 100644
index 00000000..79c2b8eb
--- /dev/null
+++ b/lib/coffeescript/index.js
@@ -0,0 +1,217 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // Node.js Implementation
+  var CoffeeScript, ext, fs, helpers, i, len, path, ref, universalCompile, vm,
+    hasProp = {}.hasOwnProperty;
+
+  CoffeeScript = require('./coffeescript');
+
+  fs = require('fs');
+
+  vm = require('vm');
+
+  path = require('path');
+
+  helpers = CoffeeScript.helpers;
+
+  CoffeeScript.transpile = function(js, options) {
+    var babel;
+    try {
+      babel = require('@babel/core');
+    } catch (error) {
+      try {
+        babel = require('babel-core');
+      } catch (error) {
+        // This error is only for Node, as CLI users will see a different error
+        // earlier if they don’t have Babel installed.
+        throw new Error('To use the transpile option, you must have the \'@babel/core\' module installed');
+      }
+    }
+    return babel.transform(js, options);
+  };
+
+  // The `compile` method shared by the CLI, Node and browser APIs.
+  universalCompile = CoffeeScript.compile;
+
+  // The `compile` method particular to the Node API.
+  CoffeeScript.compile = function(code, options) {
+    // Pass a reference to Babel into the compiler, so that the transpile option
+    // is available in the Node API. We need to do this so that tools like Webpack
+    // can `require('coffeescript')` and build correctly, without trying to
+    // require Babel.
+    if (options != null ? options.transpile : void 0) {
+      options.transpile.transpile = CoffeeScript.transpile;
+    }
+    return universalCompile.call(CoffeeScript, code, options);
+  };
+
+  // Compile and execute a string of CoffeeScript (on the server), correctly
+  // setting `__filename`, `__dirname`, and relative `require()`.
+  CoffeeScript.run = function(code, options = {}) {
+    var answer, dir, mainModule, ref;
+    mainModule = require.main;
+    // Set the filename.
+    mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : helpers.anonymousFileName();
+    // Clear the module cache.
+    mainModule.moduleCache && (mainModule.moduleCache = {});
+    // Assign paths for node_modules loading
+    dir = options.filename != null ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
+    mainModule.paths = require('module')._nodeModulePaths(dir);
+    // Save the options for compiling child imports.
+    mainModule.options = options;
+    options.filename = mainModule.filename;
+    options.inlineMap = true;
+    // Compile.
+    answer = CoffeeScript.compile(code, options);
+    code = (ref = answer.js) != null ? ref : answer;
+    return 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.
+  CoffeeScript.eval = function(code, options = {}) {
+    var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;
+    if (!(code = code.trim())) {
+      return;
+    }
+    createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;
+    isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {
+      return options.sandbox instanceof createContext().constructor;
+    };
+    if (createContext) {
+      if (options.sandbox != null) {
+        if (isContext(options.sandbox)) {
+          sandbox = options.sandbox;
+        } else {
+          sandbox = createContext();
+          ref2 = options.sandbox;
+          for (k in ref2) {
+            if (!hasProp.call(ref2, k)) continue;
+            v = ref2[k];
+            sandbox[k] = v;
+          }
+        }
+        sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
+      } else {
+        sandbox = global;
+      }
+      sandbox.__filename = options.filename || 'eval';
+      sandbox.__dirname = path.dirname(sandbox.__filename);
+      // define module/require only if they chose not to specify their own
+      if (!(sandbox !== global || sandbox.module || sandbox.require)) {
+        Module = require('module');
+        sandbox.module = _module = new Module(options.modulename || 'eval');
+        sandbox.require = _require = function(path) {
+          return Module._load(path, _module, true);
+        };
+        _module.filename = sandbox.__filename;
+        ref3 = Object.getOwnPropertyNames(require);
+        for (i = 0, len = ref3.length; i < len; i++) {
+          r = ref3[i];
+          if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {
+            _require[r] = require[r];
+          }
+        }
+        // use the same hack node currently uses for their own REPL
+        _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
+        _require.resolve = function(request) {
+          return Module._resolveFilename(request, _module);
+        };
+      }
+    }
+    o = {};
+    for (k in options) {
+      if (!hasProp.call(options, k)) continue;
+      v = options[k];
+      o[k] = v;
+    }
+    o.bare = true; // ensure return value
+    js = CoffeeScript.compile(code, o);
+    if (sandbox === global) {
+      return vm.runInThisContext(js);
+    } else {
+      return vm.runInContext(js, sandbox);
+    }
+  };
+
+  CoffeeScript.register = function() {
+    return require('./register');
+  };
+
+  // Throw error with deprecation warning when depending upon implicit `require.extensions` registration
+  if (require.extensions) {
+    ref = CoffeeScript.FILE_EXTENSIONS;
+    for (i = 0, len = ref.length; i < len; i++) {
+      ext = ref[i];
+      (function(ext) {
+        var base;
+        return (base = require.extensions)[ext] != null ? base[ext] : base[ext] = function() {
+          throw new Error(`Use CoffeeScript.register() or require the coffeescript/register module to require ${ext} files.`);
+        };
+      })(ext);
+    }
+  }
+
+  CoffeeScript._compileRawFileContent = function(raw, filename, options = {}) {
+    var answer, err, stripped;
+    // Strip the Unicode byte order mark, if this file begins with one.
+    stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
+    options = Object.assign({}, options, {
+      filename: filename,
+      literate: helpers.isLiterate(filename),
+      sourceFiles: [filename]
+    });
+    try {
+      answer = CoffeeScript.compile(stripped, options);
+    } catch (error) {
+      err = error;
+      // As the filename and code of a dynamically loaded file will be different
+      // from the original file compiled with CoffeeScript.run, add that
+      // information to error so it can be pretty-printed later.
+      throw helpers.updateSyntaxError(err, stripped, filename);
+    }
+    return answer;
+  };
+
+  CoffeeScript._compileFile = function(filename, options = {}) {
+    var raw;
+    raw = fs.readFileSync(filename, 'utf8');
+    return CoffeeScript._compileRawFileContent(raw, filename, options);
+  };
+
+  module.exports = CoffeeScript;
+
+  // Explicitly define all named exports so that Node’s automatic detection of
+  // named exports from CommonJS packages finds all of them. This enables consuming
+  // packages to write code like `import { compile } from 'coffeescript'`.
+  // Don’t simplify this into a loop or similar; the `module.exports.name` part is
+  // essential for Node’s algorithm to successfully detect the name.
+  module.exports.VERSION = CoffeeScript.VERSION;
+
+  module.exports.FILE_EXTENSIONS = CoffeeScript.FILE_EXTENSIONS;
+
+  module.exports.helpers = CoffeeScript.helpers;
+
+  module.exports.registerCompiled = CoffeeScript.registerCompiled;
+
+  module.exports.compile = CoffeeScript.compile;
+
+  module.exports.tokens = CoffeeScript.tokens;
+
+  module.exports.nodes = CoffeeScript.nodes;
+
+  module.exports.register = CoffeeScript.register;
+
+  module.exports.eval = CoffeeScript.eval;
+
+  module.exports.run = CoffeeScript.run;
+
+  module.exports.transpile = CoffeeScript.transpile;
+
+  module.exports.patchStackTrace = CoffeeScript.patchStackTrace;
+
+  module.exports._compileRawFileContent = CoffeeScript._compileRawFileContent;
+
+  module.exports._compileFile = CoffeeScript._compileFile;
+
+}).call(this);
diff --git a/lib/coffeescript/lexer.js b/lib/coffeescript/lexer.js
new file mode 100644
index 00000000..b00e651c
--- /dev/null
+++ b/lib/coffeescript/lexer.js
@@ -0,0 +1,1943 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // 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:
+
+  //     [tag, value, locationData]
+
+  // where locationData is {first_line, first_column, last_line, last_column, last_line_exclusive, last_column_exclusive}, which is a
+  // format that can be fed directly into [Jison](https://github.com/zaach/jison).  These
+  // are read by jison in the `parser.lexer` function defined in coffeescript.coffee.
+  var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARABLE_LEFT_SIDE, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_COMMENT, HERE_JSTOKEN, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INSIDE_JSX, INVERSES, JSTOKEN, JSX_ATTRIBUTE, JSX_FRAGMENT_IDENTIFIER, JSX_IDENTIFIER, JSX_IDENTIFIER_PART, JSX_INTERPOLATION, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, REGEX_INVALID_ESCAPE, RELATION, RESERVED, Rewriter, SHIFT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_INVALID_ESCAPE, STRING_SINGLE, STRING_START, TRAILING_SPACES, UNARY, UNARY_MATH, UNFINISHED, VALID_FLAGS, WHITESPACE, addTokenData, attachCommentsToNode, compact, count, flatten, invertLiterate, isForFrom, isUnassignable, key, locationDataToString, merge, parseNumber, repeat, replaceUnicodeCodePointEscapes, starts, throwSyntaxError,
+    indexOf = [].indexOf,
+    slice = [].slice;
+
+  ({Rewriter, INVERSES, UNFINISHED} = require('./rewriter'));
+
+  // Import the helpers we need.
+  ({count, starts, compact, repeat, invertLiterate, merge, attachCommentsToNode, locationDataToString, throwSyntaxError, replaceUnicodeCodePointEscapes, flatten, parseNumber} = require('./helpers'));
+
+  // The Lexer Class
+  // ---------------
+
+  // The Lexer class reads a stream of CoffeeScript and divvies it up into tagged
+  // tokens. Some potential ambiguity in the grammar has been avoided by
+  // pushing some extra smarts into the Lexer.
+  exports.Lexer = Lexer = class Lexer {
+    constructor() {
+      // Throws an error at either a given offset from the current chunk or at the
+      // location of a token (`token[2]`).
+      this.error = this.error.bind(this);
+    }
+
+    // **tokenize** is the Lexer's main method. Scan by attempting to match tokens
+    // one at a time, using a regular expression anchored at the start of the
+    // remaining code, or a custom recursive token-matching method
+    // (for interpolations). When the next token has been recorded, we move forward
+    // within the code past the token, and begin again.
+
+    // Each tokenizing method is responsible for returning the number of characters
+    // it has consumed.
+
+    // Before returning the token stream, run it through the [Rewriter](rewriter.html).
+    tokenize(code, opts = {}) {
+      var consumed, end, i, ref;
+      this.literate = opts.literate; // Are we lexing literate CoffeeScript?
+      this.indent = 0; // The current indentation level.
+      this.baseIndent = 0; // The overall minimum indentation level.
+      this.continuationLineAdditionalIndent = 0; // The over-indentation at the current level.
+      this.outdebt = 0; // The under-outdentation at the current level.
+      this.indents = []; // The stack of all current indentation levels.
+      this.indentLiteral = ''; // The indentation.
+      this.ends = []; // The stack for pairing up tokens.
+      this.tokens = []; // Stream of parsed tokens in the form `['TYPE', value, location data]`.
+      this.seenFor = false; // Used to recognize `FORIN`, `FOROF` and `FORFROM` tokens.
+      this.seenImport = false; // Used to recognize `IMPORT FROM? AS?` tokens.
+      this.seenExport = false; // Used to recognize `EXPORT FROM? AS?` tokens.
+      this.importSpecifierList = false; // Used to identify when in an `IMPORT {...} FROM? ...`.
+      this.exportSpecifierList = false; // Used to identify when in an `EXPORT {...} FROM? ...`.
+      this.jsxDepth = 0; // Used to optimize JSX checks, how deep in JSX we are.
+      this.jsxObjAttribute = {}; // Used to detect if JSX attributes is wrapped in {} (<div {props...} />).
+      this.chunkLine = opts.line || 0; // The start line for the current @chunk.
+      this.chunkColumn = opts.column || 0; // The start column of the current @chunk.
+      this.chunkOffset = opts.offset || 0; // The start offset for the current @chunk.
+      this.locationDataCompensations = opts.locationDataCompensations || {};
+      code = this.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 (this.chunk = code.slice(i)) {
+        consumed = this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.stringToken() || this.numberToken() || this.jsxToken() || this.regexToken() || this.jsToken() || this.literalToken();
+        // Update position.
+        [this.chunkLine, this.chunkColumn, this.chunkOffset] = this.getLineAndColumnFromChunk(consumed);
+        i += consumed;
+        if (opts.untilBalanced && this.ends.length === 0) {
+          return {
+            tokens: this.tokens,
+            index: i
+          };
+        }
+      }
+      this.closeIndentation();
+      if (end = this.ends.pop()) {
+        this.error(`missing ${end.tag}`, ((ref = end.origin) != null ? ref : end)[2]);
+      }
+      if (opts.rewrite === false) {
+        return this.tokens;
+      }
+      return (new Rewriter()).rewrite(this.tokens);
+    }
+
+    // Preprocess the code to remove leading and trailing whitespace, carriage
+    // 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) {
+      var base, thusFar;
+      thusFar = 0;
+      if (code.charCodeAt(0) === BOM) {
+        code = code.slice(1);
+        this.locationDataCompensations[0] = 1;
+        thusFar += 1;
+      }
+      if (WHITESPACE.test(code)) {
+        code = `\n${code}`;
+        this.chunkLine--;
+        if ((base = this.locationDataCompensations)[0] == null) {
+          base[0] = 0;
+        }
+        this.locationDataCompensations[0] -= 1;
+      }
+      code = code.replace(/\r/g, (match, offset) => {
+        this.locationDataCompensations[thusFar + offset] = 1;
+        return '';
+      }).replace(TRAILING_SPACES, '');
+      if (this.literate) {
+        code = invertLiterate(code);
+      }
+      return code;
+    }
+
+    // Tokenizers
+    // ----------
+
+      // Matches identifying literals: variables, keywords, method names, etc.
+    // Check to ensure that JavaScript reserved words aren’t being used as
+    // identifiers. Because CoffeeScript reserves a handful of keywords that are
+    // allowed in JavaScript, we’re careful not to tag them as keywords when
+    // referenced as property names here, so you can still do `jQuery.is()` even
+    // though `is` means `===` otherwise.
+    identifierToken() {
+      var alias, colon, colonOffset, colonToken, id, idLength, inJSXTag, input, match, poppedToken, prev, prevprev, ref, ref1, ref10, ref11, ref12, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, regExSuper, regex, sup, tag, tagToken, tokenData;
+      inJSXTag = this.atJSXTag();
+      regex = inJSXTag ? JSX_ATTRIBUTE : IDENTIFIER;
+      if (!(match = regex.exec(this.chunk))) {
+        return 0;
+      }
+      [input, id, colon] = match;
+      // Preserve length of id for location data
+      idLength = id.length;
+      poppedToken = void 0;
+      if (id === 'own' && this.tag() === 'FOR') {
+        this.token('OWN', id);
+        return id.length;
+      }
+      if (id === 'from' && this.tag() === 'YIELD') {
+        this.token('FROM', id);
+        return id.length;
+      }
+      if (id === 'as' && this.seenImport) {
+        if (this.value() === '*') {
+          this.tokens[this.tokens.length - 1][0] = 'IMPORT_ALL';
+        } else if (ref = this.value(true), indexOf.call(COFFEE_KEYWORDS, ref) >= 0) {
+          prev = this.prev();
+          [prev[0], prev[1]] = ['IDENTIFIER', this.value(true)];
+        }
+        if ((ref1 = this.tag()) === 'DEFAULT' || ref1 === 'IMPORT_ALL' || ref1 === 'IDENTIFIER') {
+          this.token('AS', id);
+          return id.length;
+        }
+      }
+      if (id === 'as' && this.seenExport) {
+        if ((ref2 = this.tag()) === 'IDENTIFIER' || ref2 === 'DEFAULT') {
+          this.token('AS', id);
+          return id.length;
+        }
+        if (ref3 = this.value(true), indexOf.call(COFFEE_KEYWORDS, ref3) >= 0) {
+          prev = this.prev();
+          [prev[0], prev[1]] = ['IDENTIFIER', this.value(true)];
+          this.token('AS', id);
+          return id.length;
+        }
+      }
+      if (id === 'default' && this.seenExport && ((ref4 = this.tag()) === 'EXPORT' || ref4 === 'AS')) {
+        this.token('DEFAULT', id);
+        return id.length;
+      }
+      if (id === 'assert' && (this.seenImport || this.seenExport) && this.tag() === 'STRING') {
+        this.token('ASSERT', id);
+        return id.length;
+      }
+      if (id === 'do' && (regExSuper = /^(\s*super)(?!\(\))/.exec(this.chunk.slice(3)))) {
+        this.token('SUPER', 'super');
+        this.token('CALL_START', '(');
+        this.token('CALL_END', ')');
+        [input, sup] = regExSuper;
+        return sup.length + 3;
+      }
+      prev = this.prev();
+      tag = colon || (prev != null) && (((ref5 = prev[0]) === '.' || ref5 === '?.' || ref5 === '::' || ref5 === '?::') || !prev.spaced && prev[0] === '@') ? 'PROPERTY' : 'IDENTIFIER';
+      tokenData = {};
+      if (tag === 'IDENTIFIER' && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(COFFEE_KEYWORDS, id) >= 0) && !(this.exportSpecifierList && indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
+        tag = id.toUpperCase();
+        if (tag === 'WHEN' && (ref6 = this.tag(), indexOf.call(LINE_BREAK, ref6) >= 0)) {
+          tag = 'LEADING_WHEN';
+        } else if (tag === 'FOR') {
+          this.seenFor = {
+            endsLength: this.ends.length
+          };
+        } else if (tag === 'UNLESS') {
+          tag = 'IF';
+        } else if (tag === 'IMPORT') {
+          this.seenImport = true;
+        } else if (tag === 'EXPORT') {
+          this.seenExport = true;
+        } else if (indexOf.call(UNARY, tag) >= 0) {
+          tag = 'UNARY';
+        } else if (indexOf.call(RELATION, tag) >= 0) {
+          if (tag !== 'INSTANCEOF' && this.seenFor) {
+            tag = 'FOR' + tag;
+            this.seenFor = false;
+          } else {
+            tag = 'RELATION';
+            if (this.value() === '!') {
+              poppedToken = this.tokens.pop();
+              tokenData.invert = (ref7 = (ref8 = poppedToken.data) != null ? ref8.original : void 0) != null ? ref7 : poppedToken[1];
+            }
+          }
+        }
+      } else if (tag === 'IDENTIFIER' && this.seenFor && id === 'from' && isForFrom(prev)) {
+        tag = 'FORFROM';
+        this.seenFor = false;
+      // Throw an error on attempts to use `get` or `set` as keywords, or
+      // what CoffeeScript would normally interpret as calls to functions named
+      // `get` or `set`, i.e. `get({foo: function () {}})`.
+      } else if (tag === 'PROPERTY' && prev) {
+        if (prev.spaced && (ref9 = prev[0], indexOf.call(CALLABLE, ref9) >= 0) && /^[gs]et$/.test(prev[1]) && this.tokens.length > 1 && ((ref10 = this.tokens[this.tokens.length - 2][0]) !== '.' && ref10 !== '?.' && ref10 !== '@')) {
+          this.error(`'${prev[1]}' cannot be used as a keyword, or as a function call without parentheses`, prev[2]);
+        } else if (prev[0] === '.' && this.tokens.length > 1 && (prevprev = this.tokens[this.tokens.length - 2])[0] === 'UNARY' && prevprev[1] === 'new') {
+          prevprev[0] = 'NEW_TARGET';
+        } else if (prev[0] === '.' && this.tokens.length > 1 && (prevprev = this.tokens[this.tokens.length - 2])[0] === 'IMPORT' && prevprev[1] === 'import') {
+          this.seenImport = false;
+          prevprev[0] = 'IMPORT_META';
+        } else if (this.tokens.length > 2) {
+          prevprev = this.tokens[this.tokens.length - 2];
+          if (((ref11 = prev[0]) === '@' || ref11 === 'THIS') && prevprev && prevprev.spaced && /^[gs]et$/.test(prevprev[1]) && ((ref12 = this.tokens[this.tokens.length - 3][0]) !== '.' && ref12 !== '?.' && ref12 !== '@')) {
+            this.error(`'${prevprev[1]}' cannot be used as a keyword, or as a function call without parentheses`, prevprev[2]);
+          }
+        }
+      }
+      if (tag === 'IDENTIFIER' && indexOf.call(RESERVED, id) >= 0 && !inJSXTag) {
+        this.error(`reserved word '${id}'`, {
+          length: id.length
+        });
+      }
+      if (!(tag === 'PROPERTY' || this.exportSpecifierList || this.importSpecifierList)) {
+        if (indexOf.call(COFFEE_ALIASES, id) >= 0) {
+          alias = id;
+          id = COFFEE_ALIAS_MAP[id];
+          tokenData.original = alias;
+        }
+        tag = (function() {
+          switch (id) {
+            case '!':
+              return 'UNARY';
+            case '==':
+            case '!=':
+              return 'COMPARE';
+            case 'true':
+            case 'false':
+              return 'BOOL';
+            case 'break':
+            case 'continue':
+            case 'debugger':
+              return 'STATEMENT';
+            case '&&':
+            case '||':
+              return id;
+            default:
+              return tag;
+          }
+        })();
+      }
+      tagToken = this.token(tag, id, {
+        length: idLength,
+        data: tokenData
+      });
+      if (alias) {
+        tagToken.origin = [tag, alias, tagToken[2]];
+      }
+      if (poppedToken) {
+        [tagToken[2].first_line, tagToken[2].first_column, tagToken[2].range[0]] = [poppedToken[2].first_line, poppedToken[2].first_column, poppedToken[2].range[0]];
+      }
+      if (colon) {
+        colonOffset = input.lastIndexOf(inJSXTag ? '=' : ':');
+        colonToken = this.token(':', ':', {
+          offset: colonOffset
+        });
+        if (inJSXTag) { // used by rewriter
+          colonToken.jsxColon = true;
+        }
+      }
+      if (inJSXTag && tag === 'IDENTIFIER' && prev[0] !== ':') {
+        this.token(',', ',', {
+          length: 0,
+          origin: tagToken,
+          generated: true
+        });
+      }
+      return input.length;
+    }
+
+    // Matches numbers, including decimals, hex, and exponential notation.
+    // Be careful not to interfere with ranges in progress.
+    numberToken() {
+      var lexedLength, match, number, parsedValue, tag, tokenData;
+      if (!(match = NUMBER.exec(this.chunk))) {
+        return 0;
+      }
+      number = match[0];
+      lexedLength = number.length;
+      switch (false) {
+        case !/^0[BOX]/.test(number):
+          this.error(`radix prefix in '${number}' must be lowercase`, {
+            offset: 1
+          });
+          break;
+        case !/^0\d*[89]/.test(number):
+          this.error(`decimal literal '${number}' must not be prefixed with '0'`, {
+            length: lexedLength
+          });
+          break;
+        case !/^0\d+/.test(number):
+          this.error(`octal literal '${number}' must be prefixed with '0o'`, {
+            length: lexedLength
+          });
+      }
+      parsedValue = parseNumber(number);
+      tokenData = {parsedValue};
+      tag = parsedValue === 2e308 ? 'INFINITY' : 'NUMBER';
+      if (tag === 'INFINITY') {
+        tokenData.original = number;
+      }
+      this.token(tag, number, {
+        length: lexedLength,
+        data: tokenData
+      });
+      return lexedLength;
+    }
+
+    // Matches strings, including multiline strings, as well as heredocs, with or without
+    // interpolation.
+    stringToken() {
+      var attempt, delimiter, doc, end, heredoc, i, indent, match, prev, quote, ref, regex, token, tokens;
+      [quote] = STRING_START.exec(this.chunk) || [];
+      if (!quote) {
+        return 0;
+      }
+      // If the preceding token is `from` and this is an import or export statement,
+      // properly tag the `from`.
+      prev = this.prev();
+      if (prev && this.value() === 'from' && (this.seenImport || this.seenExport)) {
+        prev[0] = 'FROM';
+      }
+      regex = (function() {
+        switch (quote) {
+          case "'":
+            return STRING_SINGLE;
+          case '"':
+            return STRING_DOUBLE;
+          case "'''":
+            return HEREDOC_SINGLE;
+          case '"""':
+            return HEREDOC_DOUBLE;
+        }
+      })();
+      ({
+        tokens,
+        index: end
+      } = this.matchWithInterpolations(regex, quote));
+      heredoc = quote.length === 3;
+      if (heredoc) {
+        // Find the smallest indentation. It will be removed from all lines later.
+        indent = null;
+        doc = ((function() {
+          var j, len, results;
+          results = [];
+          for (i = j = 0, len = tokens.length; j < len; i = ++j) {
+            token = tokens[i];
+            if (token[0] === 'NEOSTRING') {
+              results.push(token[1]);
+            }
+          }
+          return results;
+        })()).join('#{}');
+        while (match = HEREDOC_INDENT.exec(doc)) {
+          attempt = match[1];
+          if (indent === null || (0 < (ref = attempt.length) && ref < indent.length)) {
+            indent = attempt;
+          }
+        }
+      }
+      delimiter = quote.charAt(0);
+      this.mergeInterpolationTokens(tokens, {
+        quote,
+        indent,
+        endOffset: end
+      }, (value) => {
+        return this.validateUnicodeCodePointEscapes(value, {
+          delimiter: quote
+        });
+      });
+      if (this.atJSXTag()) {
+        this.token(',', ',', {
+          length: 0,
+          origin: this.prev,
+          generated: true
+        });
+      }
+      return end;
+    }
+
+    // Matches and consumes comments. The comments are taken out of the token
+    // stream and saved for later, to be reinserted into the output after
+    // everything has been parsed and the JavaScript code generated.
+    commentToken(chunk = this.chunk, {heregex, returnCommentTokens = false, offsetInChunk = 0} = {}) {
+      var commentAttachment, commentAttachments, commentWithSurroundingWhitespace, content, contents, getIndentSize, hasSeenFirstCommentLine, hereComment, hereLeadingWhitespace, hereTrailingWhitespace, i, indentSize, leadingNewline, leadingNewlineOffset, leadingNewlines, leadingWhitespace, length, lineComment, match, matchIllegal, noIndent, nonInitial, placeholderToken, precededByBlankLine, precedingNonCommentLines, prev;
+      if (!(match = chunk.match(COMMENT))) {
+        return 0;
+      }
+      [commentWithSurroundingWhitespace, hereLeadingWhitespace, hereComment, hereTrailingWhitespace, lineComment] = match;
+      contents = null;
+      // Does this comment follow code on the same line?
+      leadingNewline = /^\s*\n+\s*#/.test(commentWithSurroundingWhitespace);
+      if (hereComment) {
+        matchIllegal = HERECOMMENT_ILLEGAL.exec(hereComment);
+        if (matchIllegal) {
+          this.error(`block comments cannot contain ${matchIllegal[0]}`, {
+            offset: '###'.length + matchIllegal.index,
+            length: matchIllegal[0].length
+          });
+        }
+        // Parse indentation or outdentation as if this block comment didn’t exist.
+        chunk = chunk.replace(`###${hereComment}###`, '');
+        // Remove leading newlines, like `Rewriter::removeLeadingNewlines`, to
+        // avoid the creation of unwanted `TERMINATOR` tokens.
+        chunk = chunk.replace(/^\n+/, '');
+        this.lineToken({chunk});
+        // Pull out the ###-style comment’s content, and format it.
+        content = hereComment;
+        contents = [
+          {
+            content,
+            length: commentWithSurroundingWhitespace.length - hereLeadingWhitespace.length - hereTrailingWhitespace.length,
+            leadingWhitespace: hereLeadingWhitespace
+          }
+        ];
+      } else {
+        // The `COMMENT` regex captures successive line comments as one token.
+        // Remove any leading newlines before the first comment, but preserve
+        // blank lines between line comments.
+        leadingNewlines = '';
+        content = lineComment.replace(/^(\n*)/, function(leading) {
+          leadingNewlines = leading;
+          return '';
+        });
+        precedingNonCommentLines = '';
+        hasSeenFirstCommentLine = false;
+        contents = content.split('\n').map(function(line, index) {
+          var comment, leadingWhitespace;
+          if (!(line.indexOf('#') > -1)) {
+            precedingNonCommentLines += `\n${line}`;
+            return;
+          }
+          leadingWhitespace = '';
+          content = line.replace(/^([ |\t]*)#/, function(_, whitespace) {
+            leadingWhitespace = whitespace;
+            return '';
+          });
+          comment = {
+            content,
+            length: '#'.length + content.length,
+            leadingWhitespace: `${!hasSeenFirstCommentLine ? leadingNewlines : ''}${precedingNonCommentLines}${leadingWhitespace}`,
+            precededByBlankLine: !!precedingNonCommentLines
+          };
+          hasSeenFirstCommentLine = true;
+          precedingNonCommentLines = '';
+          return comment;
+        }).filter(function(comment) {
+          return comment;
+        });
+      }
+      getIndentSize = function({leadingWhitespace, nonInitial}) {
+        var lastNewlineIndex;
+        lastNewlineIndex = leadingWhitespace.lastIndexOf('\n');
+        if ((hereComment != null) || !nonInitial) {
+          if (!(lastNewlineIndex > -1)) {
+            return null;
+          }
+        } else {
+          if (lastNewlineIndex == null) {
+            lastNewlineIndex = -1;
+          }
+        }
+        return leadingWhitespace.length - 1 - lastNewlineIndex;
+      };
+      commentAttachments = (function() {
+        var j, len, results;
+        results = [];
+        for (i = j = 0, len = contents.length; j < len; i = ++j) {
+          ({content, length, leadingWhitespace, precededByBlankLine} = contents[i]);
+          nonInitial = i !== 0;
+          leadingNewlineOffset = nonInitial ? 1 : 0;
+          offsetInChunk += leadingNewlineOffset + leadingWhitespace.length;
+          indentSize = getIndentSize({leadingWhitespace, nonInitial});
+          noIndent = (indentSize == null) || indentSize === -1;
+          commentAttachment = {
+            content,
+            here: hereComment != null,
+            newLine: leadingNewline || nonInitial, // Line comments after the first one start new lines, by definition.
+            locationData: this.makeLocationData({offsetInChunk, length}),
+            precededByBlankLine,
+            indentSize,
+            indented: !noIndent && indentSize > this.indent,
+            outdented: !noIndent && indentSize < this.indent
+          };
+          if (heregex) {
+            commentAttachment.heregex = true;
+          }
+          offsetInChunk += length;
+          results.push(commentAttachment);
+        }
+        return results;
+      }).call(this);
+      prev = this.prev();
+      if (!prev) {
+        // If there’s no previous token, create a placeholder token to attach
+        // this comment to; and follow with a newline.
+        commentAttachments[0].newLine = true;
+        this.lineToken({
+          chunk: this.chunk.slice(commentWithSurroundingWhitespace.length),
+          offset: commentWithSurroundingWhitespace.length // Set the indent.
+        });
+        placeholderToken = this.makeToken('JS', '', {
+          offset: commentWithSurroundingWhitespace.length,
+          generated: true
+        });
+        placeholderToken.comments = commentAttachments;
+        this.tokens.push(placeholderToken);
+        this.newlineToken(commentWithSurroundingWhitespace.length);
+      } else {
+        attachCommentsToNode(commentAttachments, prev);
+      }
+      if (returnCommentTokens) {
+        return commentAttachments;
+      }
+      return commentWithSurroundingWhitespace.length;
+    }
+
+    // Matches JavaScript interpolated directly into the source via backticks.
+    jsToken() {
+      var length, match, matchedHere, script;
+      if (!(this.chunk.charAt(0) === '`' && (match = (matchedHere = HERE_JSTOKEN.exec(this.chunk)) || JSTOKEN.exec(this.chunk)))) {
+        return 0;
+      }
+      // Convert escaped backticks to backticks, and escaped backslashes
+      // just before escaped backticks to backslashes
+      script = match[1];
+      ({length} = match[0]);
+      this.token('JS', script, {
+        length,
+        data: {
+          here: !!matchedHere
+        }
+      });
+      return length;
+    }
+
+    // Matches regular expression literals, as well as multiline extended ones.
+    // Lexing regular expressions is difficult to distinguish from division, so we
+    // borrow some basic heuristics from JavaScript and Ruby.
+    regexToken() {
+      var body, closed, comment, commentIndex, commentOpts, commentTokens, comments, delimiter, end, flags, fullMatch, index, leadingWhitespace, match, matchedComment, origin, prev, ref, ref1, regex, tokens;
+      switch (false) {
+        case !(match = REGEX_ILLEGAL.exec(this.chunk)):
+          this.error(`regular expressions cannot begin with ${match[2]}`, {
+            offset: match.index + match[1].length
+          });
+          break;
+        case !(match = this.matchWithInterpolations(HEREGEX, '///')):
+          ({tokens, index} = match);
+          comments = [];
+          while (matchedComment = HEREGEX_COMMENT.exec(this.chunk.slice(0, index))) {
+            ({
+              index: commentIndex
+            } = matchedComment);
+            [fullMatch, leadingWhitespace, comment] = matchedComment;
+            comments.push({
+              comment,
+              offsetInChunk: commentIndex + leadingWhitespace.length
+            });
+          }
+          commentTokens = flatten((function() {
+            var j, len, results;
+            results = [];
+            for (j = 0, len = comments.length; j < len; j++) {
+              commentOpts = comments[j];
+              results.push(this.commentToken(commentOpts.comment, Object.assign(commentOpts, {
+                heregex: true,
+                returnCommentTokens: true
+              })));
+            }
+            return results;
+          }).call(this));
+          break;
+        case !(match = REGEX.exec(this.chunk)):
+          [regex, body, closed] = match;
+          this.validateEscapes(body, {
+            isRegex: true,
+            offsetInChunk: 1
+          });
+          index = regex.length;
+          prev = this.prev();
+          if (prev) {
+            if (prev.spaced && (ref = prev[0], indexOf.call(CALLABLE, ref) >= 0)) {
+              if (!closed || POSSIBLY_DIVISION.test(regex)) {
+                return 0;
+              }
+            } else if (ref1 = prev[0], indexOf.call(NOT_REGEX, ref1) >= 0) {
+              return 0;
+            }
+          }
+          if (!closed) {
+            this.error('missing / (unclosed regex)');
+          }
+          break;
+        default:
+          return 0;
+      }
+      [flags] = REGEX_FLAGS.exec(this.chunk.slice(index));
+      end = index + flags.length;
+      origin = this.makeToken('REGEX', null, {
+        length: end
+      });
+      switch (false) {
+        case !!VALID_FLAGS.test(flags):
+          this.error(`invalid regular expression flags ${flags}`, {
+            offset: index,
+            length: flags.length
+          });
+          break;
+        case !(regex || tokens.length === 1):
+          delimiter = body ? '/' : '///';
+          if (body == null) {
+            body = tokens[0][1];
+          }
+          this.validateUnicodeCodePointEscapes(body, {delimiter});
+          this.token('REGEX', `/${body}/${flags}`, {
+            length: end,
+            origin,
+            data: {delimiter}
+          });
+          break;
+        default:
+          this.token('REGEX_START', '(', {
+            length: 0,
+            origin,
+            generated: true
+          });
+          this.token('IDENTIFIER', 'RegExp', {
+            length: 0,
+            generated: true
+          });
+          this.token('CALL_START', '(', {
+            length: 0,
+            generated: true
+          });
+          this.mergeInterpolationTokens(tokens, {
+            double: true,
+            heregex: {flags},
+            endOffset: end - flags.length,
+            quote: '///'
+          }, (str) => {
+            return this.validateUnicodeCodePointEscapes(str, {delimiter});
+          });
+          if (flags) {
+            this.token(',', ',', {
+              offset: index - 1,
+              length: 0,
+              generated: true
+            });
+            this.token('STRING', '"' + flags + '"', {
+              offset: index,
+              length: flags.length
+            });
+          }
+          this.token(')', ')', {
+            offset: end,
+            length: 0,
+            generated: true
+          });
+          this.token('REGEX_END', ')', {
+            offset: end,
+            length: 0,
+            generated: true
+          });
+      }
+      // Explicitly attach any heregex comments to the REGEX/REGEX_END token.
+      if (commentTokens != null ? commentTokens.length : void 0) {
+        addTokenData(this.tokens[this.tokens.length - 1], {
+          heregexCommentTokens: commentTokens
+        });
+      }
+      return end;
+    }
+
+    // Matches newlines, indents, and outdents, and determines which is which.
+    // If we can detect that the current line is continued onto the next line,
+    // then the newline is suppressed:
+
+    //     elements
+    //       .each( ... )
+    //       .map( ... )
+
+    // Keeps track of the level of indentation, because a single outdent token
+    // can close multiple indents, so we need to know how far in we happen to be.
+    lineToken({chunk = this.chunk, offset = 0} = {}) {
+      var backslash, diff, endsContinuationLineIndentation, indent, match, minLiteralLength, newIndentLiteral, noNewlines, prev, ref, size;
+      if (!(match = MULTI_DENT.exec(chunk))) {
+        return 0;
+      }
+      indent = match[0];
+      prev = this.prev();
+      backslash = (prev != null ? prev[0] : void 0) === '\\';
+      if (!((backslash || ((ref = this.seenFor) != null ? ref.endsLength : void 0) < this.ends.length) && this.seenFor)) {
+        this.seenFor = false;
+      }
+      if (!((backslash && this.seenImport) || this.importSpecifierList)) {
+        this.seenImport = false;
+      }
+      if (!((backslash && this.seenExport) || this.exportSpecifierList)) {
+        this.seenExport = false;
+      }
+      size = indent.length - 1 - indent.lastIndexOf('\n');
+      noNewlines = this.unfinished();
+      newIndentLiteral = size > 0 ? indent.slice(-size) : '';
+      if (!/^(.?)\1*$/.exec(newIndentLiteral)) {
+        this.error('mixed indentation', {
+          offset: indent.length
+        });
+        return indent.length;
+      }
+      minLiteralLength = Math.min(newIndentLiteral.length, this.indentLiteral.length);
+      if (newIndentLiteral.slice(0, minLiteralLength) !== this.indentLiteral.slice(0, minLiteralLength)) {
+        this.error('indentation mismatch', {
+          offset: indent.length
+        });
+        return indent.length;
+      }
+      if (size - this.continuationLineAdditionalIndent === this.indent) {
+        if (noNewlines) {
+          this.suppressNewlines();
+        } else {
+          this.newlineToken(offset);
+        }
+        return indent.length;
+      }
+      if (size > this.indent) {
+        if (noNewlines) {
+          if (!backslash) {
+            this.continuationLineAdditionalIndent = size - this.indent;
+          }
+          if (this.continuationLineAdditionalIndent) {
+            prev.continuationLineIndent = this.indent + this.continuationLineAdditionalIndent;
+          }
+          this.suppressNewlines();
+          return indent.length;
+        }
+        if (!this.tokens.length) {
+          this.baseIndent = this.indent = size;
+          this.indentLiteral = newIndentLiteral;
+          return indent.length;
+        }
+        diff = size - this.indent + this.outdebt;
+        this.token('INDENT', diff, {
+          offset: offset + indent.length - size,
+          length: size
+        });
+        this.indents.push(diff);
+        this.ends.push({
+          tag: 'OUTDENT'
+        });
+        this.outdebt = this.continuationLineAdditionalIndent = 0;
+        this.indent = size;
+        this.indentLiteral = newIndentLiteral;
+      } else if (size < this.baseIndent) {
+        this.error('missing indentation', {
+          offset: offset + indent.length
+        });
+      } else {
+        endsContinuationLineIndentation = this.continuationLineAdditionalIndent > 0;
+        this.continuationLineAdditionalIndent = 0;
+        this.outdentToken({
+          moveOut: this.indent - size,
+          noNewlines,
+          outdentLength: indent.length,
+          offset,
+          indentSize: size,
+          endsContinuationLineIndentation
+        });
+      }
+      return indent.length;
+    }
+
+    // Record an outdent token or multiple tokens, if we happen to be moving back
+    // inwards past several recorded indents. Sets new @indent value.
+    outdentToken({moveOut, noNewlines, outdentLength = 0, offset = 0, indentSize, endsContinuationLineIndentation}) {
+      var decreasedIndent, dent, lastIndent, ref, terminatorToken;
+      decreasedIndent = this.indent - moveOut;
+      while (moveOut > 0) {
+        lastIndent = this.indents[this.indents.length - 1];
+        if (!lastIndent) {
+          this.outdebt = moveOut = 0;
+        } else if (this.outdebt && moveOut <= this.outdebt) {
+          this.outdebt -= moveOut;
+          moveOut = 0;
+        } else {
+          dent = this.indents.pop() + this.outdebt;
+          if (outdentLength && (ref = this.chunk[outdentLength], indexOf.call(INDENTABLE_CLOSERS, ref) >= 0)) {
+            decreasedIndent -= dent - moveOut;
+            moveOut = dent;
+          }
+          this.outdebt = 0;
+          // pair might call outdentToken, so preserve decreasedIndent
+          this.pair('OUTDENT');
+          this.token('OUTDENT', moveOut, {
+            length: outdentLength,
+            indentSize: indentSize + moveOut - dent
+          });
+          moveOut -= dent;
+        }
+      }
+      if (dent) {
+        this.outdebt -= moveOut;
+      }
+      this.suppressSemicolons();
+      if (!(this.tag() === 'TERMINATOR' || noNewlines)) {
+        terminatorToken = this.token('TERMINATOR', '\n', {
+          offset: offset + outdentLength,
+          length: 0
+        });
+        if (endsContinuationLineIndentation) {
+          terminatorToken.endsContinuationLineIndentation = {
+            preContinuationLineIndent: this.indent
+          };
+        }
+      }
+      this.indent = decreasedIndent;
+      this.indentLiteral = this.indentLiteral.slice(0, decreasedIndent);
+      return this;
+    }
+
+    // Matches and consumes non-meaningful whitespace. Tag the previous token
+    // as being “spaced”, because there are some cases where it makes a difference.
+    whitespaceToken() {
+      var match, nline, prev;
+      if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) {
+        return 0;
+      }
+      prev = this.prev();
+      if (prev) {
+        prev[match ? 'spaced' : 'newLine'] = true;
+      }
+      if (match) {
+        return match[0].length;
+      } else {
+        return 0;
+      }
+    }
+
+    // Generate a newline token. Consecutive newlines get merged together.
+    newlineToken(offset) {
+      this.suppressSemicolons();
+      if (this.tag() !== 'TERMINATOR') {
+        this.token('TERMINATOR', '\n', {
+          offset,
+          length: 0
+        });
+      }
+      return this;
+    }
+
+    // Use a `\` at a line-ending to suppress the newline.
+    // The slash is removed here once its job is done.
+    suppressNewlines() {
+      var prev;
+      prev = this.prev();
+      if (prev[1] === '\\') {
+        if (prev.comments && this.tokens.length > 1) {
+          // `@tokens.length` should be at least 2 (some code, then `\`).
+          // If something puts a `\` after nothing, they deserve to lose any
+          // comments that trail it.
+          attachCommentsToNode(prev.comments, this.tokens[this.tokens.length - 2]);
+        }
+        this.tokens.pop();
+      }
+      return this;
+    }
+
+    jsxToken() {
+      var afterTag, end, endToken, firstChar, fullId, fullTagName, id, input, j, jsxTag, len, match, offset, openingTagToken, prev, prevChar, properties, property, ref, tagToken, token, tokens;
+      firstChar = this.chunk[0];
+      // Check the previous token to detect if attribute is spread.
+      prevChar = this.tokens.length > 0 ? this.tokens[this.tokens.length - 1][0] : '';
+      if (firstChar === '<') {
+        match = JSX_IDENTIFIER.exec(this.chunk.slice(1)) || JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(1));
+        // Not the right hand side of an unspaced comparison (i.e. `a<b`).
+        if (!(match && (this.jsxDepth > 0 || !(prev = this.prev()) || prev.spaced || (ref = prev[0], indexOf.call(COMPARABLE_LEFT_SIDE, ref) < 0)))) {
+          return 0;
+        }
+        [input, id] = match;
+        fullId = id;
+        if (indexOf.call(id, '.') >= 0) {
+          [id, ...properties] = id.split('.');
+        } else {
+          properties = [];
+        }
+        tagToken = this.token('JSX_TAG', id, {
+          length: id.length + 1,
+          data: {
+            openingBracketToken: this.makeToken('<', '<'),
+            tagNameToken: this.makeToken('IDENTIFIER', id, {
+              offset: 1
+            })
+          }
+        });
+        offset = id.length + 1;
+        for (j = 0, len = properties.length; j < len; j++) {
+          property = properties[j];
+          this.token('.', '.', {offset});
+          offset += 1;
+          this.token('PROPERTY', property, {offset});
+          offset += property.length;
+        }
+        this.token('CALL_START', '(', {
+          generated: true
+        });
+        this.token('[', '[', {
+          generated: true
+        });
+        this.ends.push({
+          tag: '/>',
+          origin: tagToken,
+          name: id,
+          properties
+        });
+        this.jsxDepth++;
+        return fullId.length + 1;
+      } else if (jsxTag = this.atJSXTag()) {
+        if (this.chunk.slice(0, 2) === '/>') { // Self-closing tag.
+          this.pair('/>');
+          this.token(']', ']', {
+            length: 2,
+            generated: true
+          });
+          this.token('CALL_END', ')', {
+            length: 2,
+            generated: true,
+            data: {
+              selfClosingSlashToken: this.makeToken('/', '/'),
+              closingBracketToken: this.makeToken('>', '>', {
+                offset: 1
+              })
+            }
+          });
+          this.jsxDepth--;
+          return 2;
+        } else if (firstChar === '{') {
+          if (prevChar === ':') {
+            // This token represents the start of a JSX attribute value
+            // that’s an expression (e.g. the `{b}` in `<div a={b} />`).
+            // Our grammar represents the beginnings of expressions as `(`
+            // tokens, so make this into a `(` token that displays as `{`.
+            token = this.token('(', '{');
+            this.jsxObjAttribute[this.jsxDepth] = false;
+            // tag attribute name as JSX
+            addTokenData(this.tokens[this.tokens.length - 3], {
+              jsx: true
+            });
+          } else {
+            token = this.token('{', '{');
+            this.jsxObjAttribute[this.jsxDepth] = true;
+          }
+          this.ends.push({
+            tag: '}',
+            origin: token
+          });
+          return 1;
+        } else if (firstChar === '>') { // end of opening tag
+          ({
+            // Ignore terminators inside a tag.
+            origin: openingTagToken
+          } = this.pair('/>')); // As if the current tag was self-closing.
+          this.token(']', ']', {
+            generated: true,
+            data: {
+              closingBracketToken: this.makeToken('>', '>')
+            }
+          });
+          this.token(',', 'JSX_COMMA', {
+            generated: true
+          });
+          ({
+            tokens,
+            index: end
+          } = this.matchWithInterpolations(INSIDE_JSX, '>', '</', JSX_INTERPOLATION));
+          this.mergeInterpolationTokens(tokens, {
+            endOffset: end,
+            jsx: true
+          }, (value) => {
+            return this.validateUnicodeCodePointEscapes(value, {
+              delimiter: '>'
+            });
+          });
+          match = JSX_IDENTIFIER.exec(this.chunk.slice(end)) || JSX_FRAGMENT_IDENTIFIER.exec(this.chunk.slice(end));
+          if (!match || match[1] !== `${jsxTag.name}${((function() {
+            var k, len1, ref1, results;
+            ref1 = jsxTag.properties;
+            results = [];
+            for (k = 0, len1 = ref1.length; k < len1; k++) {
+              property = ref1[k];
+              results.push(`.${property}`);
+            }
+            return results;
+          })()).join('')}`) {
+            this.error(`expected corresponding JSX closing tag for ${jsxTag.name}`, jsxTag.origin.data.tagNameToken[2]);
+          }
+          [, fullTagName] = match;
+          afterTag = end + fullTagName.length;
+          if (this.chunk[afterTag] !== '>') {
+            this.error("missing closing > after tag name", {
+              offset: afterTag,
+              length: 1
+            });
+          }
+          // -2/+2 for the opening `</` and +1 for the closing `>`.
+          endToken = this.token('CALL_END', ')', {
+            offset: end - 2,
+            length: fullTagName.length + 3,
+            generated: true,
+            data: {
+              closingTagOpeningBracketToken: this.makeToken('<', '<', {
+                offset: end - 2
+              }),
+              closingTagSlashToken: this.makeToken('/', '/', {
+                offset: end - 1
+              }),
+              // TODO: individual tokens for complex tag name? eg < / A . B >
+              closingTagNameToken: this.makeToken('IDENTIFIER', fullTagName, {
+                offset: end
+              }),
+              closingTagClosingBracketToken: this.makeToken('>', '>', {
+                offset: end + fullTagName.length
+              })
+            }
+          });
+          // make the closing tag location data more easily accessible to the grammar
+          addTokenData(openingTagToken, endToken.data);
+          this.jsxDepth--;
+          return afterTag + 1;
+        } else {
+          return 0;
+        }
+      } else if (this.atJSXTag(1)) {
+        if (firstChar === '}') {
+          this.pair(firstChar);
+          if (this.jsxObjAttribute[this.jsxDepth]) {
+            this.token('}', '}');
+            this.jsxObjAttribute[this.jsxDepth] = false;
+          } else {
+            this.token(')', '}');
+          }
+          this.token(',', ',', {
+            generated: true
+          });
+          return 1;
+        } else {
+          return 0;
+        }
+      } else {
+        return 0;
+      }
+    }
+
+    atJSXTag(depth = 0) {
+      var i, last, ref;
+      if (this.jsxDepth === 0) {
+        return false;
+      }
+      i = this.ends.length - 1;
+      while (((ref = this.ends[i]) != null ? ref.tag : void 0) === 'OUTDENT' || depth-- > 0) { // Ignore indents.
+        i--;
+      }
+      last = this.ends[i];
+      return (last != null ? last.tag : void 0) === '/>' && last;
+    }
+
+    // We treat all other single characters as a token. E.g.: `( ) , . !`
+    // Multi-character operators are also literal tokens, so that Jison can assign
+    // the proper order of operations. There are some symbols that we tag specially
+    // here. `;` and newlines are both treated as a `TERMINATOR`, we distinguish
+    // parentheses that indicate a method call from regular parentheses, and so on.
+    literalToken() {
+      var match, message, origin, prev, ref, ref1, ref2, ref3, ref4, ref5, skipToken, tag, token, value;
+      if (match = OPERATOR.exec(this.chunk)) {
+        [value] = match;
+        if (CODE.test(value)) {
+          this.tagParameters();
+        }
+      } else {
+        value = this.chunk.charAt(0);
+      }
+      tag = value;
+      prev = this.prev();
+      if (prev && indexOf.call(['=', ...COMPOUND_ASSIGN], value) >= 0) {
+        skipToken = false;
+        if (value === '=' && ((ref = prev[1]) === '||' || ref === '&&') && !prev.spaced) {
+          prev[0] = 'COMPOUND_ASSIGN';
+          prev[1] += '=';
+          if ((ref1 = prev.data) != null ? ref1.original : void 0) {
+            prev.data.original += '=';
+          }
+          prev[2].range = [prev[2].range[0], prev[2].range[1] + 1];
+          prev[2].last_column += 1;
+          prev[2].last_column_exclusive += 1;
+          prev = this.tokens[this.tokens.length - 2];
+          skipToken = true;
+        }
+        if (prev && prev[0] !== 'PROPERTY') {
+          origin = (ref2 = prev.origin) != null ? ref2 : prev;
+          message = isUnassignable(prev[1], origin[1]);
+          if (message) {
+            this.error(message, origin[2]);
+          }
+        }
+        if (skipToken) {
+          return value.length;
+        }
+      }
+      if (value === '(' && (prev != null ? prev[0] : void 0) === 'IMPORT') {
+        prev[0] = 'DYNAMIC_IMPORT';
+      }
+      if (value === '{' && this.seenImport) {
+        this.importSpecifierList = true;
+      } else if (this.importSpecifierList && value === '}') {
+        this.importSpecifierList = false;
+      } else if (value === '{' && (prev != null ? prev[0] : void 0) === 'EXPORT') {
+        this.exportSpecifierList = true;
+      } else if (this.exportSpecifierList && value === '}') {
+        this.exportSpecifierList = false;
+      }
+      if (value === ';') {
+        if (ref3 = prev != null ? prev[0] : void 0, indexOf.call(['=', ...UNFINISHED], ref3) >= 0) {
+          this.error('unexpected ;');
+        }
+        this.seenFor = this.seenImport = this.seenExport = false;
+        tag = 'TERMINATOR';
+      } else if (value === '*' && (prev != null ? prev[0] : void 0) === 'EXPORT') {
+        tag = 'EXPORT_ALL';
+      } else if (indexOf.call(MATH, value) >= 0) {
+        tag = 'MATH';
+      } else if (indexOf.call(COMPARE, value) >= 0) {
+        tag = 'COMPARE';
+      } else if (indexOf.call(COMPOUND_ASSIGN, value) >= 0) {
+        tag = 'COMPOUND_ASSIGN';
+      } else if (indexOf.call(UNARY, value) >= 0) {
+        tag = 'UNARY';
+      } else if (indexOf.call(UNARY_MATH, value) >= 0) {
+        tag = 'UNARY_MATH';
+      } else if (indexOf.call(SHIFT, value) >= 0) {
+        tag = 'SHIFT';
+      } else if (value === '?' && (prev != null ? prev.spaced : void 0)) {
+        tag = 'BIN?';
+      } else if (prev) {
+        if (value === '(' && !prev.spaced && (ref4 = prev[0], indexOf.call(CALLABLE, ref4) >= 0)) {
+          if (prev[0] === '?') {
+            prev[0] = 'FUNC_EXIST';
+          }
+          tag = 'CALL_START';
+        } else if (value === '[' && (((ref5 = prev[0], indexOf.call(INDEXABLE, ref5) >= 0) && !prev.spaced) || (prev[0] === '::'))) { // `.prototype` can’t be a method you can call.
+          tag = 'INDEX_START';
+          switch (prev[0]) {
+            case '?':
+              prev[0] = 'INDEX_SOAK';
+          }
+        }
+      }
+      token = this.makeToken(tag, value);
+      switch (value) {
+        case '(':
+        case '{':
+        case '[':
+          this.ends.push({
+            tag: INVERSES[value],
+            origin: token
+          });
+          break;
+        case ')':
+        case '}':
+        case ']':
+          this.pair(value);
+      }
+      this.tokens.push(this.makeToken(tag, value));
+      return value.length;
+    }
+
+    // Token Manipulators
+    // ------------------
+
+      // A source of ambiguity in our grammar used to be parameter lists in function
+    // definitions versus argument lists in function calls. Walk backwards, tagging
+    // parameters specially in order to make things easier for the parser.
+    tagParameters() {
+      var i, paramEndToken, stack, tok, tokens;
+      if (this.tag() !== ')') {
+        return this.tagDoIife();
+      }
+      stack = [];
+      ({tokens} = this);
+      i = tokens.length;
+      paramEndToken = tokens[--i];
+      paramEndToken[0] = 'PARAM_END';
+      while (tok = tokens[--i]) {
+        switch (tok[0]) {
+          case ')':
+            stack.push(tok);
+            break;
+          case '(':
+          case 'CALL_START':
+            if (stack.length) {
+              stack.pop();
+            } else if (tok[0] === '(') {
+              tok[0] = 'PARAM_START';
+              return this.tagDoIife(i - 1);
+            } else {
+              paramEndToken[0] = 'CALL_END';
+              return this;
+            }
+        }
+      }
+      return this;
+    }
+
+    // Tag `do` followed by a function differently than `do` followed by eg an
+    // identifier to allow for different grammar precedence
+    tagDoIife(tokenIndex) {
+      var tok;
+      tok = this.tokens[tokenIndex != null ? tokenIndex : this.tokens.length - 1];
+      if ((tok != null ? tok[0] : void 0) !== 'DO') {
+        return this;
+      }
+      tok[0] = 'DO_IIFE';
+      return this;
+    }
+
+    // Close up all remaining open blocks at the end of the file.
+    closeIndentation() {
+      return this.outdentToken({
+        moveOut: this.indent,
+        indentSize: 0
+      });
+    }
+
+    // Match the contents of a delimited token and expand variables and expressions
+    // inside it using Ruby-like notation for substitution of arbitrary
+    // expressions.
+
+    //     "Hello #{name.capitalize()}."
+
+    // If it encounters an interpolation, this method will recursively create a new
+    // Lexer and tokenize until the `{` of `#{` is balanced with a `}`.
+
+    //  - `regex` matches the contents of a token (but not `delimiter`, and not
+    //    `#{` if interpolations are desired).
+    //  - `delimiter` is the delimiter of the token. Examples are `'`, `"`, `'''`,
+    //    `"""` and `///`.
+    //  - `closingDelimiter` is different from `delimiter` only in JSX
+    //  - `interpolators` matches the start of an interpolation, for JSX it's both
+    //    `{` and `<` (i.e. nested JSX tag)
+
+    // This method allows us to have strings within interpolations within strings,
+    // ad infinitum.
+    matchWithInterpolations(regex, delimiter, closingDelimiter = delimiter, interpolators = /^#\{/) {
+      var braceInterpolator, close, column, index, interpolationOffset, interpolator, line, match, nested, offset, offsetInChunk, open, ref, ref1, rest, str, strPart, tokens;
+      tokens = [];
+      offsetInChunk = delimiter.length;
+      if (this.chunk.slice(0, offsetInChunk) !== delimiter) {
+        return null;
+      }
+      str = this.chunk.slice(offsetInChunk);
+      while (true) {
+        [strPart] = regex.exec(str);
+        this.validateEscapes(strPart, {
+          isRegex: delimiter.charAt(0) === '/',
+          offsetInChunk
+        });
+        // Push a fake `'NEOSTRING'` token, which will get turned into a real string later.
+        tokens.push(this.makeToken('NEOSTRING', strPart, {
+          offset: offsetInChunk
+        }));
+        str = str.slice(strPart.length);
+        offsetInChunk += strPart.length;
+        if (!(match = interpolators.exec(str))) {
+          break;
+        }
+        [interpolator] = match;
+        // To remove the `#` in `#{`.
+        interpolationOffset = interpolator.length - 1;
+        [line, column, offset] = this.getLineAndColumnFromChunk(offsetInChunk + interpolationOffset);
+        rest = str.slice(interpolationOffset);
+        ({
+          tokens: nested,
+          index
+        } = new Lexer().tokenize(rest, {
+          line,
+          column,
+          offset,
+          untilBalanced: true,
+          locationDataCompensations: this.locationDataCompensations
+        }));
+        // Account for the `#` in `#{`.
+        index += interpolationOffset;
+        braceInterpolator = str[index - 1] === '}';
+        if (braceInterpolator) {
+          // Turn the leading and trailing `{` and `}` into parentheses. Unnecessary
+          // parentheses will be removed later.
+          [open] = nested, [close] = slice.call(nested, -1);
+          open[0] = 'INTERPOLATION_START';
+          open[1] = '(';
+          open[2].first_column -= interpolationOffset;
+          open[2].range = [open[2].range[0] - interpolationOffset, open[2].range[1]];
+          close[0] = 'INTERPOLATION_END';
+          close[1] = ')';
+          close.origin = ['', 'end of interpolation', close[2]];
+        }
+        if (((ref = nested[1]) != null ? ref[0] : void 0) === 'TERMINATOR') {
+          // Remove leading `'TERMINATOR'` (if any).
+          nested.splice(1, 1);
+        }
+        if (((ref1 = nested[nested.length - 3]) != null ? ref1[0] : void 0) === 'INDENT' && nested[nested.length - 2][0] === 'OUTDENT') {
+          // Remove trailing `'INDENT'/'OUTDENT'` pair (if any).
+          nested.splice(-3, 2);
+        }
+        if (!braceInterpolator) {
+          // We are not using `{` and `}`, so wrap the interpolated tokens instead.
+          open = this.makeToken('INTERPOLATION_START', '(', {
+            offset: offsetInChunk,
+            length: 0,
+            generated: true
+          });
+          close = this.makeToken('INTERPOLATION_END', ')', {
+            offset: offsetInChunk + index,
+            length: 0,
+            generated: true
+          });
+          nested = [open, ...nested, close];
+        }
+        // Push a fake `'TOKENS'` token, which will get turned into real tokens later.
+        tokens.push(['TOKENS', nested]);
+        str = str.slice(index);
+        offsetInChunk += index;
+      }
+      if (str.slice(0, closingDelimiter.length) !== closingDelimiter) {
+        this.error(`missing ${closingDelimiter}`, {
+          length: delimiter.length
+        });
+      }
+      return {
+        tokens,
+        index: offsetInChunk + closingDelimiter.length
+      };
+    }
+
+    // Merge the array `tokens` of the fake token types `'TOKENS'` and `'NEOSTRING'`
+    // (as returned by `matchWithInterpolations`) into the token stream. The value
+    // of `'NEOSTRING'`s are converted using `fn` and turned into strings using
+    // `options` first.
+    mergeInterpolationTokens(tokens, options, fn) {
+      var $, converted, double, endOffset, firstIndex, heregex, i, indent, j, jsx, k, lastToken, len, len1, locationToken, lparen, placeholderToken, quote, ref, ref1, rparen, tag, token, tokensToPush, val, value;
+      ({quote, indent, double, heregex, endOffset, jsx} = options);
+      if (tokens.length > 1) {
+        lparen = this.token('STRING_START', '(', {
+          length: (ref = quote != null ? quote.length : void 0) != null ? ref : 0,
+          data: {quote},
+          generated: !(quote != null ? quote.length : void 0)
+        });
+      }
+      firstIndex = this.tokens.length;
+      $ = tokens.length - 1;
+      for (i = j = 0, len = tokens.length; j < len; i = ++j) {
+        token = tokens[i];
+        [tag, value] = token;
+        switch (tag) {
+          case 'TOKENS':
+            // There are comments (and nothing else) in this interpolation.
+            if (value.length === 2 && (value[0].comments || value[1].comments)) {
+              placeholderToken = this.makeToken('JS', '', {
+                generated: true
+              });
+              // Use the same location data as the first parenthesis.
+              placeholderToken[2] = value[0][2];
+              for (k = 0, len1 = value.length; k < len1; k++) {
+                val = value[k];
+                if (!val.comments) {
+                  continue;
+                }
+                if (placeholderToken.comments == null) {
+                  placeholderToken.comments = [];
+                }
+                placeholderToken.comments.push(...val.comments);
+              }
+              value.splice(1, 0, placeholderToken);
+            }
+            // Push all the tokens in the fake `'TOKENS'` token. These already have
+            // sane location data.
+            locationToken = value[0];
+            tokensToPush = value;
+            break;
+          case 'NEOSTRING':
+            // Convert `'NEOSTRING'` into `'STRING'`.
+            converted = fn.call(this, token[1], i);
+            if (i === 0) {
+              addTokenData(token, {
+                initialChunk: true
+              });
+            }
+            if (i === $) {
+              addTokenData(token, {
+                finalChunk: true
+              });
+            }
+            addTokenData(token, {indent, quote, double});
+            if (heregex) {
+              addTokenData(token, {heregex});
+            }
+            if (jsx) {
+              addTokenData(token, {jsx});
+            }
+            token[0] = 'STRING';
+            token[1] = '"' + converted + '"';
+            if (tokens.length === 1 && (quote != null)) {
+              token[2].first_column -= quote.length;
+              if (token[1].substr(-2, 1) === '\n') {
+                token[2].last_line += 1;
+                token[2].last_column = quote.length - 1;
+              } else {
+                token[2].last_column += quote.length;
+                if (token[1].length === 2) {
+                  token[2].last_column -= 1;
+                }
+              }
+              token[2].last_column_exclusive += quote.length;
+              token[2].range = [token[2].range[0] - quote.length, token[2].range[1] + quote.length];
+            }
+            locationToken = token;
+            tokensToPush = [token];
+        }
+        this.tokens.push(...tokensToPush);
+      }
+      if (lparen) {
+        [lastToken] = slice.call(tokens, -1);
+        lparen.origin = [
+          'STRING',
+          null,
+          {
+            first_line: lparen[2].first_line,
+            first_column: lparen[2].first_column,
+            last_line: lastToken[2].last_line,
+            last_column: lastToken[2].last_column,
+            last_line_exclusive: lastToken[2].last_line_exclusive,
+            last_column_exclusive: lastToken[2].last_column_exclusive,
+            range: [lparen[2].range[0],
+          lastToken[2].range[1]]
+          }
+        ];
+        if (!(quote != null ? quote.length : void 0)) {
+          lparen[2] = lparen.origin[2];
+        }
+        return rparen = this.token('STRING_END', ')', {
+          offset: endOffset - (quote != null ? quote : '').length,
+          length: (ref1 = quote != null ? quote.length : void 0) != null ? ref1 : 0,
+          generated: !(quote != null ? quote.length : void 0)
+        });
+      }
+    }
+
+    // Pairs up a closing token, ensuring that all listed pairs of tokens are
+    // correctly balanced throughout the course of the token stream.
+    pair(tag) {
+      var lastIndent, prev, ref, ref1, wanted;
+      ref = this.ends, [prev] = slice.call(ref, -1);
+      if (tag !== (wanted = prev != null ? prev.tag : void 0)) {
+        if ('OUTDENT' !== wanted) {
+          this.error(`unmatched ${tag}`);
+        }
+        // Auto-close `INDENT` to support syntax like this:
+
+        //     el.click((event) ->
+        //       el.hide())
+
+        ref1 = this.indents, [lastIndent] = slice.call(ref1, -1);
+        this.outdentToken({
+          moveOut: lastIndent,
+          noNewlines: true
+        });
+        return this.pair(tag);
+      }
+      return this.ends.pop();
+    }
+
+    // Helpers
+    // -------
+
+      // Compensate for the things we strip out initially (e.g. carriage returns)
+    // so that location data stays accurate with respect to the original source file.
+    getLocationDataCompensation(start, end) {
+      var compensation, current, initialEnd, totalCompensation;
+      totalCompensation = 0;
+      initialEnd = end;
+      current = start;
+      while (current <= end) {
+        if (current === end && start !== initialEnd) {
+          break;
+        }
+        compensation = this.locationDataCompensations[current];
+        if (compensation != null) {
+          totalCompensation += compensation;
+          end += compensation;
+        }
+        current++;
+      }
+      return totalCompensation;
+    }
+
+    // Returns the line and column number from an offset into the current chunk.
+
+    // `offset` is a number of characters into `@chunk`.
+    getLineAndColumnFromChunk(offset) {
+      var column, columnCompensation, compensation, lastLine, lineCount, previousLinesCompensation, ref, string;
+      compensation = this.getLocationDataCompensation(this.chunkOffset, this.chunkOffset + offset);
+      if (offset === 0) {
+        return [this.chunkLine, this.chunkColumn + compensation, this.chunkOffset + compensation];
+      }
+      if (offset >= this.chunk.length) {
+        string = this.chunk;
+      } else {
+        string = this.chunk.slice(0, +(offset - 1) + 1 || 9e9);
+      }
+      lineCount = count(string, '\n');
+      column = this.chunkColumn;
+      if (lineCount > 0) {
+        ref = string.split('\n'), [lastLine] = slice.call(ref, -1);
+        column = lastLine.length;
+        previousLinesCompensation = this.getLocationDataCompensation(this.chunkOffset, this.chunkOffset + offset - column);
+        if (previousLinesCompensation < 0) {
+          // Don't recompensate for initially inserted newline.
+          previousLinesCompensation = 0;
+        }
+        columnCompensation = this.getLocationDataCompensation(this.chunkOffset + offset + previousLinesCompensation - column, this.chunkOffset + offset + previousLinesCompensation);
+      } else {
+        column += string.length;
+        columnCompensation = compensation;
+      }
+      return [this.chunkLine + lineCount, column + columnCompensation, this.chunkOffset + offset + compensation];
+    }
+
+    makeLocationData({offsetInChunk, length}) {
+      var endOffset, lastCharacter, locationData;
+      locationData = {
+        range: []
+      };
+      [locationData.first_line, locationData.first_column, locationData.range[0]] = this.getLineAndColumnFromChunk(offsetInChunk);
+      // Use length - 1 for the final offset - we’re supplying the last_line and the last_column,
+      // so if last_column == first_column, then we’re looking at a character of length 1.
+      lastCharacter = length > 0 ? length - 1 : 0;
+      [locationData.last_line, locationData.last_column, endOffset] = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter);
+      [locationData.last_line_exclusive, locationData.last_column_exclusive] = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter + (length > 0 ? 1 : 0));
+      locationData.range[1] = length > 0 ? endOffset + 1 : endOffset;
+      return locationData;
+    }
+
+    // Same as `token`, except this just returns the token without adding it
+    // to the results.
+    makeToken(tag, value, {
+        offset: offsetInChunk = 0,
+        length = value.length,
+        origin,
+        generated,
+        indentSize
+      } = {}) {
+      var token;
+      token = [tag, value, this.makeLocationData({offsetInChunk, length})];
+      if (origin) {
+        token.origin = origin;
+      }
+      if (generated) {
+        token.generated = true;
+      }
+      if (indentSize != null) {
+        token.indentSize = indentSize;
+      }
+      return 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.
+
+    // Returns the new token.
+    token(tag, value, {offset, length, origin, data, generated, indentSize} = {}) {
+      var token;
+      token = this.makeToken(tag, value, {offset, length, origin, generated, indentSize});
+      if (data) {
+        addTokenData(token, data);
+      }
+      this.tokens.push(token);
+      return token;
+    }
+
+    // Peek at the last tag in the token stream.
+    tag() {
+      var ref, token;
+      ref = this.tokens, [token] = slice.call(ref, -1);
+      return token != null ? token[0] : void 0;
+    }
+
+    // Peek at the last value in the token stream.
+    value(useOrigin = false) {
+      var ref, token;
+      ref = this.tokens, [token] = slice.call(ref, -1);
+      if (useOrigin && ((token != null ? token.origin : void 0) != null)) {
+        return token.origin[1];
+      } else {
+        return token != null ? token[1] : void 0;
+      }
+    }
+
+    // Get the previous token in the token stream.
+    prev() {
+      return this.tokens[this.tokens.length - 1];
+    }
+
+    // Are we in the midst of an unfinished expression?
+    unfinished() {
+      var ref;
+      return LINE_CONTINUER.test(this.chunk) || (ref = this.tag(), indexOf.call(UNFINISHED, ref) >= 0);
+    }
+
+    validateUnicodeCodePointEscapes(str, options) {
+      return replaceUnicodeCodePointEscapes(str, merge(options, {error: this.error}));
+    }
+
+    // Validates escapes in strings and regexes.
+    validateEscapes(str, options = {}) {
+      var before, hex, invalidEscape, invalidEscapeRegex, match, message, octal, ref, unicode, unicodeCodePoint;
+      invalidEscapeRegex = options.isRegex ? REGEX_INVALID_ESCAPE : STRING_INVALID_ESCAPE;
+      match = invalidEscapeRegex.exec(str);
+      if (!match) {
+        return;
+      }
+      match[0], before = match[1], octal = match[2], hex = match[3], unicodeCodePoint = match[4], unicode = match[5];
+      message = octal ? "octal escape sequences are not allowed" : "invalid escape sequence";
+      invalidEscape = `\\${octal || hex || unicodeCodePoint || unicode}`;
+      return this.error(`${message} ${invalidEscape}`, {
+        offset: ((ref = options.offsetInChunk) != null ? ref : 0) + match.index + before.length,
+        length: invalidEscape.length
+      });
+    }
+
+    suppressSemicolons() {
+      var ref, ref1, results;
+      results = [];
+      while (this.value() === ';') {
+        this.tokens.pop();
+        if (ref = (ref1 = this.prev()) != null ? ref1[0] : void 0, indexOf.call(['=', ...UNFINISHED], ref) >= 0) {
+          results.push(this.error('unexpected ;'));
+        } else {
+          results.push(void 0);
+        }
+      }
+      return results;
+    }
+
+    error(message, options = {}) {
+      var first_column, first_line, location, ref, ref1;
+      location = 'first_line' in options ? options : ([first_line, first_column] = this.getLineAndColumnFromChunk((ref = options.offset) != null ? ref : 0), {
+        first_line,
+        first_column,
+        last_column: first_column + ((ref1 = options.length) != null ? ref1 : 1) - 1
+      });
+      return throwSyntaxError(message, location);
+    }
+
+  };
+
+  // Helper functions
+  // ----------------
+  isUnassignable = function(name, displayName = name) {
+    switch (false) {
+      case indexOf.call([...JS_KEYWORDS, ...COFFEE_KEYWORDS], name) < 0:
+        return `keyword '${displayName}' can't be assigned`;
+      case indexOf.call(STRICT_PROSCRIBED, name) < 0:
+        return `'${displayName}' can't be assigned`;
+      case indexOf.call(RESERVED, name) < 0:
+        return `reserved word '${displayName}' can't be assigned`;
+      default:
+        return false;
+    }
+  };
+
+  exports.isUnassignable = isUnassignable;
+
+  // `from` isn’t a CoffeeScript keyword, but it behaves like one in `import` and
+  // `export` statements (handled above) and in the declaration line of a `for`
+  // loop. Try to detect when `from` is a variable identifier and when it is this
+  // “sometimes” keyword.
+  isForFrom = function(prev) {
+    var ref;
+    // `for i from iterable`
+    if (prev[0] === 'IDENTIFIER') {
+      return true;
+    // `for from…`
+    } else if (prev[0] === 'FOR') {
+      return false;
+    // `for {from}…`, `for [from]…`, `for {a, from}…`, `for {a: from}…`
+    } else if ((ref = prev[1]) === '{' || ref === '[' || ref === ',' || ref === ':') {
+      return false;
+    } else {
+      return true;
+    }
+  };
+
+  addTokenData = function(token, data) {
+    return Object.assign((token.data != null ? token.data : token.data = {}), data);
+  };
+
+  // Constants
+  // ---------
+
+  // Keywords that CoffeeScript shares in common with JavaScript.
+  JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'yield', 'await', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super', 'import', 'export', 'default'];
+
+  // CoffeeScript-only keywords.
+  COFFEE_KEYWORDS = ['undefined', 'Infinity', 'NaN', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];
+
+  COFFEE_ALIAS_MAP = {
+    and: '&&',
+    or: '||',
+    is: '==',
+    isnt: '!=',
+    not: '!',
+    yes: 'true',
+    no: 'false',
+    on: 'true',
+    off: 'false'
+  };
+
+  COFFEE_ALIASES = (function() {
+    var results;
+    results = [];
+    for (key in COFFEE_ALIAS_MAP) {
+      results.push(key);
+    }
+    return results;
+  })();
+
+  COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);
+
+  // The list of keywords that are reserved by JavaScript, but not used, or are
+  // used by CoffeeScript internally. We throw an error when these are encountered,
+  // to avoid having a JavaScript error at runtime.
+  RESERVED = ['case', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'native', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static'];
+
+  STRICT_PROSCRIBED = ['arguments', 'eval'];
+
+  // The superset of both JavaScript keywords and reserved words, none of which may
+  // be used as identifiers or properties.
+  exports.JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);
+
+  // The character code of the nasty Microsoft madness otherwise known as the BOM.
+  BOM = 65279;
+
+  // Token matching regexes.
+  IDENTIFIER = /^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/; // Is this a property name?
+
+  // Like `IDENTIFIER`, but includes `-`s
+  JSX_IDENTIFIER_PART = /(?:(?!\s)[\-$\w\x7f-\uffff])+/.source;
+
+  // In https://facebook.github.io/jsx/ spec, JSXElementName can be
+  // JSXIdentifier, JSXNamespacedName (JSXIdentifier : JSXIdentifier), or
+  // JSXMemberExpression (two or more JSXIdentifier connected by `.`s).
+  JSX_IDENTIFIER = RegExp(`^(?![\\d<])(${JSX_IDENTIFIER_PART // Must not start with `<`.
+  // JSXNamespacedName
+  // JSXMemberExpression
+}(?:\\s*:\\s*${JSX_IDENTIFIER_PART}|(?:\\s*\\.\\s*${JSX_IDENTIFIER_PART})+)?)`);
+
+  // Fragment: <></>
+  JSX_FRAGMENT_IDENTIFIER = /^()>/; // Ends immediately with `>`.
+
+  // In https://facebook.github.io/jsx/ spec, JSXAttributeName can be either
+  // JSXIdentifier or JSXNamespacedName which is JSXIdentifier : JSXIdentifier
+  JSX_ATTRIBUTE = RegExp(`^(?!\\d)(${JSX_IDENTIFIER_PART // JSXNamespacedName
+  // Is this an attribute with a value?
+}(?:\\s*:\\s*${JSX_IDENTIFIER_PART})?)([^\\S]*=(?!=))?`);
+
+  NUMBER = /^0b[01](?:_?[01])*n?|^0o[0-7](?:_?[0-7])*n?|^0x[\da-f](?:_?[\da-f])*n?|^\d+(?:_\d+)*n|^(?:\d+(?:_\d+)*)?\.?\d+(?:_\d+)*(?:e[+-]?\d+(?:_\d+)*)?/i; // binary
+  // octal
+  // hex
+  // decimal bigint
+  // decimal
+  // decimal without support for numeric literal separators for reference:
+  // \d*\.?\d+ (?:e[+-]?\d+)?
+
+  OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/; // function
+  // compound assign / compare
+  // zero-fill right shift
+  // doubles
+  // logic / shift / power / floor division / modulo
+  // soak access
+  // range or splat
+
+  WHITESPACE = /^[^\n\S]+/;
+
+  COMMENT = /^(\s*)###([^#][\s\S]*?)(?:###([^\n\S]*)|###$)|^((?:\s*#(?!##[^#]).*)+)/;
+
+  CODE = /^[-=]>/;
+
+  MULTI_DENT = /^(?:\n[^\n\S]*)+/;
+
+  JSTOKEN = /^`(?!``)((?:[^`\\]|\\[\s\S])*)`/;
+
+  HERE_JSTOKEN = /^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/;
+
+  // String-matching-regexes.
+  STRING_START = /^(?:'''|"""|'|")/;
+
+  STRING_SINGLE = /^(?:[^\\']|\\[\s\S])*/;
+
+  STRING_DOUBLE = /^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/;
+
+  HEREDOC_SINGLE = /^(?:[^\\']|\\[\s\S]|'(?!''))*/;
+
+  HEREDOC_DOUBLE = /^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/;
+
+  INSIDE_JSX = /^(?:[^\{<])*/; // Start of CoffeeScript interpolation. // Similar to `HEREDOC_DOUBLE` but there is no escaping.
+  // Maybe JSX tag (`<` not allowed even if bare).
+
+  JSX_INTERPOLATION = /^(?:\{|<(?!\/))/; // CoffeeScript interpolation.
+  // JSX opening tag.
+
+  HEREDOC_INDENT = /\n+([^\n\S]*)(?=\S)/g;
+
+  // Regex-matching-regexes.
+  REGEX = /^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/; // Every other thing.
+  // Anything but newlines escaped.
+  // Character class.
+
+  REGEX_FLAGS = /^\w*/;
+
+  VALID_FLAGS = /^(?!.*(.).*\1)[gimsuy]*$/;
+
+  HEREGEX = /^(?:[^\\\/#\s]|\\[\s\S]|\/(?!\/\/)|\#(?!\{)|\s+(?:#(?!\{).*)?)*/; // Match any character, except those that need special handling below.
+  // Match `\` followed by any character.
+  // Match any `/` except `///`.
+  // Match `#` which is not part of interpolation, e.g. `#{}`.
+  // Comments consume everything until the end of the line, including `///`.
+
+  HEREGEX_COMMENT = /(\s+)(#(?!{).*)/gm;
+
+  REGEX_ILLEGAL = /^(\/|\/{3}\s*)(\*)/;
+
+  POSSIBLY_DIVISION = /^\/=?\s/;
+
+  // Other regexes.
+  HERECOMMENT_ILLEGAL = /\*\//;
+
+  LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|\??::)/;
+
+  STRING_INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0\d|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/; // Make sure the escape isn’t escaped.
+  // octal escape
+  // hex escape
+  // unicode code point escape
+  // unicode escape
+
+  REGEX_INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0\d)|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/; // Make sure the escape isn’t escaped.
+  // octal escape
+  // hex escape
+  // unicode code point escape
+  // unicode escape
+
+  TRAILING_SPACES = /\s+$/;
+
+  // Compound assignment tokens.
+  COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '**=', '//=', '%%='];
+
+  // Unary tokens.
+  UNARY = ['NEW', 'TYPEOF', 'DELETE'];
+
+  UNARY_MATH = ['!', '~'];
+
+  // Bit-shifting tokens.
+  SHIFT = ['<<', '>>', '>>>'];
+
+  // Comparison tokens.
+  COMPARE = ['==', '!=', '<', '>', '<=', '>='];
+
+  // Mathematical tokens.
+  MATH = ['*', '/', '%', '//', '%%'];
+
+  // Relational tokens that are negatable with `not` prefix.
+  RELATION = ['IN', 'OF', 'INSTANCEOF'];
+
+  // Boolean tokens.
+  BOOL = ['TRUE', 'FALSE'];
+
+  // Tokens which could legitimately be invoked or indexed. An opening
+  // parentheses or bracket following these tokens will be recorded as the start
+  // of a function invocation or indexing operation.
+  CALLABLE = ['IDENTIFIER', 'PROPERTY', ')', ']', '?', '@', 'THIS', 'SUPER', 'DYNAMIC_IMPORT'];
+
+  INDEXABLE = CALLABLE.concat(['NUMBER', 'INFINITY', 'NAN', 'STRING', 'STRING_END', 'REGEX', 'REGEX_END', 'BOOL', 'NULL', 'UNDEFINED', '}', '::']);
+
+  // Tokens which can be the left-hand side of a less-than comparison, i.e. `a<b`.
+  COMPARABLE_LEFT_SIDE = ['IDENTIFIER', ')', ']', 'NUMBER'];
+
+  // Tokens which a regular expression will never immediately follow (except spaced
+  // CALLABLEs in some cases), but which a division operator can.
+
+  // See: http://www-archive.mozilla.org/js/language/js20-2002-04/rationale/syntax.html#regular-expressions
+  NOT_REGEX = INDEXABLE.concat(['++', '--']);
+
+  // Tokens that, when immediately preceding a `WHEN`, indicate that the `WHEN`
+  // occurs at the start of a line. We disambiguate these from trailing whens to
+  // avoid an ambiguity in the grammar.
+  LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];
+
+  // Additional indent in front of these is ignored.
+  INDENTABLE_CLOSERS = [')', '}', ']'];
+
+}).call(this);
diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js
new file mode 100644
index 00000000..3b9bc9b5
--- /dev/null
+++ b/lib/coffeescript/nodes.js
@@ -0,0 +1,9204 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // `nodes.coffee` contains all of the node classes for the syntax tree. Most
+  // nodes are created as the result of actions in the [grammar](grammar.html),
+  // 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.
+  var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, Call, Catch, Class, ClassProperty, ClassPrototypeProperty, Code, CodeFragment, ComputedPropertyName, DefaultLiteral, Directive, DynamicImport, DynamicImportCall, Elision, EmptyInterpolation, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, FuncDirectiveReturn, FuncGlyph, HEREGEX_OMIT, HereComment, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, Interpolation, JSXAttribute, JSXAttributes, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXIdentifier, JSXNamespacedName, JSXTag, JSXText, JS_FORBIDDEN, LEADING_BLANK_LINE, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, LineComment, Literal, MetaProperty, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, ObjectProperty, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, Root, SIMPLENUM, SIMPLE_STRING_OMIT, STRING_OMIT, Scope, Sequence, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, SwitchCase, SwitchWhen, TAB, THIS, TRAILING_BLANK_LINE, TaggedTemplateCall, TemplateElement, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, astAsBlockIfNeeded, attachCommentsToNode, compact, del, emptyExpressionLocationData, ends, extend, extractSameLineLocationDataFirst, extractSameLineLocationDataLast, flatten, fragmentsToText, greater, hasLineComments, indentInitial, isAstLocGreater, isFunction, isLiteralArguments, isLiteralThis, isLocationDataEndGreater, isLocationDataStartGreater, isNumber, isPlainObject, isUnassignable, jisonLocationDataToAstLocationData, lesser, locationDataToString, makeDelimitedLiteral, merge, mergeAstLocationData, mergeLocationData, moveComments, multident, parseNumber, replaceUnicodeCodePointEscapes, shouldCacheOrIsAssignable, sniffDirectives, some, starts, throwSyntaxError, unfoldSoak, unshiftAfterComments, utility, zeroWidthLocationDataFromEndLocation,
+    indexOf = [].indexOf,
+    splice = [].splice,
+    slice1 = [].slice;
+
+  Error.stackTraceLimit = 2e308;
+
+  ({Scope} = require('./scope'));
+
+  ({isUnassignable, JS_FORBIDDEN} = require('./lexer'));
+
+  // Import the helpers we plan to use.
+  ({compact, flatten, extend, merge, del, starts, ends, some, addDataToNode, attachCommentsToNode, locationDataToString, throwSyntaxError, replaceUnicodeCodePointEscapes, isFunction, isPlainObject, isNumber, parseNumber} = require('./helpers'));
+
+  // Functions required by parser.
+  exports.extend = extend;
+
+  exports.addDataToNode = addDataToNode;
+
+  // Constant functions for nodes that don’t need customization.
+  YES = function() {
+    return true;
+  };
+
+  NO = function() {
+    return false;
+  };
+
+  THIS = function() {
+    return this;
+  };
+
+  NEGATE = function() {
+    this.negated = !this.negated;
+    return 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 = CodeFragment = class CodeFragment {
+    constructor(parent, code) {
+      var ref1;
+      this.code = `${code}`;
+      this.type = (parent != null ? (ref1 = parent.constructor) != null ? ref1.name : void 0 : void 0) || 'unknown';
+      this.locationData = parent != null ? parent.locationData : void 0;
+      this.comments = parent != null ? parent.comments : void 0;
+    }
+
+    toString() {
+      // This is only intended for debugging.
+      return `${this.code}${this.locationData ? ": " + locationDataToString(this.locationData) : ''}`;
+    }
+
+  };
+
+  // Convert an array of CodeFragments into a string.
+  fragmentsToText = function(fragments) {
+    var fragment;
+    return ((function() {
+      var j, len1, results1;
+      results1 = [];
+      for (j = 0, len1 = fragments.length; j < len1; j++) {
+        fragment = fragments[j];
+        results1.push(fragment.code);
+      }
+      return results1;
+    })()).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,
+  // 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 = Base = (function() {
+    class Base {
+      compile(o, lvl) {
+        return fragmentsToText(this.compileToFragments(o, lvl));
+      }
+
+      // Occasionally a node is compiled multiple times, for example to get the name
+      // of a variable to add to scope tracking. When we know that a “premature”
+      // compilation won’t result in comments being output, set those comments aside
+      // so that they’re preserved for a later `compile` call that will result in
+      // the comments being included in the output.
+      compileWithoutComments(o, lvl, method = 'compile') {
+        var fragments, unwrapped;
+        if (this.comments) {
+          this.ignoreTheseCommentsTemporarily = this.comments;
+          delete this.comments;
+        }
+        unwrapped = this.unwrapAll();
+        if (unwrapped.comments) {
+          unwrapped.ignoreTheseCommentsTemporarily = unwrapped.comments;
+          delete unwrapped.comments;
+        }
+        fragments = this[method](o, lvl);
+        if (this.ignoreTheseCommentsTemporarily) {
+          this.comments = this.ignoreTheseCommentsTemporarily;
+          delete this.ignoreTheseCommentsTemporarily;
+        }
+        if (unwrapped.ignoreTheseCommentsTemporarily) {
+          unwrapped.comments = unwrapped.ignoreTheseCommentsTemporarily;
+          delete unwrapped.ignoreTheseCommentsTemporarily;
+        }
+        return fragments;
+      }
+
+      compileNodeWithoutComments(o, lvl) {
+        return this.compileWithoutComments(o, lvl, 'compileNode');
+      }
+
+      // 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).
+      compileToFragments(o, lvl) {
+        var fragments, node;
+        o = extend({}, o);
+        if (lvl) {
+          o.level = lvl;
+        }
+        node = this.unfoldSoak(o) || this;
+        node.tab = o.indent;
+        fragments = o.level === LEVEL_TOP || !node.isStatement(o) ? node.compileNode(o) : node.compileClosure(o);
+        this.compileCommentFragments(o, node, fragments);
+        return fragments;
+      }
+
+      compileToFragmentsWithoutComments(o, lvl) {
+        return this.compileWithoutComments(o, lvl, 'compileToFragments');
+      }
+
+      // Statements converted into expressions via closure-wrapping share a scope
+      // object with their parent closure, to preserve the expected lexical scope.
+      compileClosure(o) {
+        var args, argumentsNode, func, meth, parts, ref1, ref2;
+        this.checkForPureStatementInExpression();
+        o.sharedScope = true;
+        func = new Code([], Block.wrap([this]));
+        args = [];
+        if (this.contains((function(node) {
+          return node instanceof SuperCall;
+        }))) {
+          func.bound = true;
+        } else if ((argumentsNode = this.contains(isLiteralArguments)) || this.contains(isLiteralThis)) {
+          args = [new ThisLiteral()];
+          if (argumentsNode) {
+            meth = 'apply';
+            args.push(new IdentifierLiteral('arguments'));
+          } else {
+            meth = 'call';
+          }
+          func = new Value(func, [new Access(new PropertyName(meth))]);
+        }
+        parts = (new Call(func, args)).compileNode(o);
+        switch (false) {
+          case !(func.isGenerator || ((ref1 = func.base) != null ? ref1.isGenerator : void 0)):
+            parts.unshift(this.makeCode("(yield* "));
+            parts.push(this.makeCode(")"));
+            break;
+          case !(func.isAsync || ((ref2 = func.base) != null ? ref2.isAsync : void 0)):
+            parts.unshift(this.makeCode("(await "));
+            parts.push(this.makeCode(")"));
+        }
+        return parts;
+      }
+
+      compileCommentFragments(o, node, fragments) {
+        var base1, base2, comment, commentFragment, j, len1, ref1, unshiftCommentFragment;
+        if (!node.comments) {
+          return fragments;
+        }
+        // This is where comments, that are attached to nodes as a `comments`
+        // property, become `CodeFragment`s. “Inline block comments,” e.g.
+        // `/* */`-delimited comments that are interspersed within code on a line,
+        // are added to the current `fragments` stream. All other fragments are
+        // attached as properties to the nearest preceding or following fragment,
+        // to remain stowaways until they get properly output in `compileComments`
+        // later on.
+        unshiftCommentFragment = function(commentFragment) {
+          var precedingFragment;
+          if (commentFragment.unshift) {
+            // Find the first non-comment fragment and insert `commentFragment`
+            // before it.
+            return unshiftAfterComments(fragments, commentFragment);
+          } else {
+            if (fragments.length !== 0) {
+              precedingFragment = fragments[fragments.length - 1];
+              if (commentFragment.newLine && precedingFragment.code !== '' && !/\n\s*$/.test(precedingFragment.code)) {
+                commentFragment.code = `\n${commentFragment.code}`;
+              }
+            }
+            return fragments.push(commentFragment);
+          }
+        };
+        ref1 = node.comments;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          comment = ref1[j];
+          if (!(indexOf.call(this.compiledComments, comment) < 0)) {
+            continue;
+          }
+          this.compiledComments.push(comment); // Don’t output this comment twice.
+          // For block/here comments, denoted by `###`, that are inline comments
+          // like `1 + ### comment ### 2`, create fragments and insert them into
+          // the fragments array.
+          // Otherwise attach comment fragments to their closest fragment for now,
+          // so they can be inserted into the output later after all the newlines
+          // have been added.
+          if (comment.here) { // Block comment, delimited by `###`.
+            commentFragment = new HereComment(comment).compileNode(o); // Line comment, delimited by `#`.
+          } else {
+            commentFragment = new LineComment(comment).compileNode(o);
+          }
+          if ((commentFragment.isHereComment && !commentFragment.newLine) || node.includeCommentFragments()) {
+            // Inline block comments, like `1 + /* comment */ 2`, or a node whose
+            // `compileToFragments` method has logic for outputting comments.
+            unshiftCommentFragment(commentFragment);
+          } else {
+            if (fragments.length === 0) {
+              fragments.push(this.makeCode(''));
+            }
+            if (commentFragment.unshift) {
+              if ((base1 = fragments[0]).precedingComments == null) {
+                base1.precedingComments = [];
+              }
+              fragments[0].precedingComments.push(commentFragment);
+            } else {
+              if ((base2 = fragments[fragments.length - 1]).followingComments == null) {
+                base2.followingComments = [];
+              }
+              fragments[fragments.length - 1].followingComments.push(commentFragment);
+            }
+          }
+        }
+        return fragments;
+      }
+
+      // 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.
+
+      // 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, shouldCache) {
+        var complex, ref, sub;
+        complex = shouldCache != null ? shouldCache(this) : this.shouldCache();
+        if (complex) {
+          ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
+          sub = new Assign(ref, this);
+          if (level) {
+            return [sub.compileToFragments(o, level), [this.makeCode(ref.value)]];
+          } else {
+            return [sub, ref];
+          }
+        } else {
+          ref = level ? this.compileToFragments(o, level) : this;
+          return [ref, ref];
+        }
+      }
+
+      // Occasionally it may be useful to make an expression behave as if it was 'hoisted', whereby the
+      // result of the expression is available before its location in the source, but the expression's
+      // variable scope corresponds to the source position. This is used extensively to deal with executable
+      // class bodies in classes.
+
+      // Calling this method mutates the node, proxying the `compileNode` and `compileToFragments`
+      // methods to store their result for later replacing the `target` node, which is returned by the
+      // call.
+      hoist() {
+        var compileNode, compileToFragments, target;
+        this.hoisted = true;
+        target = new HoistTarget(this);
+        compileNode = this.compileNode;
+        compileToFragments = this.compileToFragments;
+        this.compileNode = function(o) {
+          return target.update(compileNode, o);
+        };
+        this.compileToFragments = function(o) {
+          return target.update(compileToFragments, o);
+        };
+        return target;
+      }
+
+      cacheToCodeFragments(cacheValues) {
+        return [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(results, mark) {
+        var node;
+        if (mark) {
+          // Mark this node as implicitly returned, so that it can be part of the
+          // node metadata returned in the AST.
+          this.canBeReturned = true;
+          return;
+        }
+        node = this.unwrapAll();
+        if (results) {
+          return new Call(new Literal(`${results}.push`), [node]);
+        } else {
+          return new Return(node);
+        }
+      }
+
+      // Does this node, or any of its children, contain a node of a certain kind?
+      // Recursively traverses down the *children* nodes and returns the first one
+      // that verifies `pred`. Otherwise return undefined. `contains` does not cross
+      // scope boundaries.
+      contains(pred) {
+        var node;
+        node = void 0;
+        this.traverseChildren(false, function(n) {
+          if (pred(n)) {
+            node = n;
+            return false;
+          }
+        });
+        return node;
+      }
+
+      // Pull out the last node of a node list.
+      lastNode(list) {
+        if (list.length === 0) {
+          return null;
+        } else {
+          return list[list.length - 1];
+        }
+      }
+
+      // Debugging representation of the node, for inspecting the parse tree.
+      // This is what `coffee --nodes` prints out.
+      toString(idt = '', name = this.constructor.name) {
+        var tree;
+        tree = '\n' + idt + name;
+        if (this.soak) {
+          tree += '?';
+        }
+        this.eachChild(function(node) {
+          return tree += node.toString(idt + TAB);
+        });
+        return tree;
+      }
+
+      checkForPureStatementInExpression() {
+        var jumpNode;
+        if (jumpNode = this.jumps()) {
+          return jumpNode.error('cannot use a pure statement in an expression');
+        }
+      }
+
+      // Plain JavaScript object representation of the node, that can be serialized
+      // as JSON. This is what the `ast` option in the Node API returns.
+      // We try to follow the [Babel AST spec](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md)
+      // as closely as possible, for improved interoperability with other tools.
+      // **WARNING: DO NOT OVERRIDE THIS METHOD IN CHILD CLASSES.**
+      // Only override the component `ast*` methods as needed.
+      ast(o, level) {
+        var astNode;
+        // Merge `level` into `o` and perform other universal checks.
+        o = this.astInitialize(o, level);
+        // Create serializable representation of this node.
+        astNode = this.astNode(o);
+        // Mark AST nodes that correspond to expressions that (implicitly) return.
+        // We can’t do this as part of `astNode` because we need to assemble child
+        // nodes first before marking the parent being returned.
+        if ((this.astNode != null) && this.canBeReturned) {
+          Object.assign(astNode, {
+            returns: true
+          });
+        }
+        return astNode;
+      }
+
+      astInitialize(o, level) {
+        o = Object.assign({}, o);
+        if (level != null) {
+          o.level = level;
+        }
+        if (o.level > LEVEL_TOP) {
+          this.checkForPureStatementInExpression();
+        }
+        if (this.isStatement(o) && o.level !== LEVEL_TOP && (o.scope != null)) {
+          // `@makeReturn` must be called before `astProperties`, because the latter may call
+          // `.ast()` for child nodes and those nodes would need the return logic from `makeReturn`
+          // already executed by then.
+          this.makeReturn(null, true);
+        }
+        return o;
+      }
+
+      astNode(o) {
+        // Every abstract syntax tree node object has four categories of properties:
+        // - type, stored in the `type` field and a string like `NumberLiteral`.
+        // - location data, stored in the `loc`, `start`, `end` and `range` fields.
+        // - properties specific to this node, like `parsedValue`.
+        // - properties that are themselves child nodes, like `body`.
+        // These fields are all intermixed in the Babel spec; `type` and `start` and
+        // `parsedValue` are all top level fields in the AST node object. We have
+        // separate methods for returning each category, that we merge together here.
+        return Object.assign({}, {
+          type: this.astType(o)
+        }, this.astProperties(o), this.astLocationData());
+      }
+
+      // By default, a node class has no specific properties.
+      astProperties() {
+        return {};
+      }
+
+      // By default, a node class’s AST `type` is its class name.
+      astType() {
+        return this.constructor.name;
+      }
+
+      // The AST location data is a rearranged version of our Jison location data,
+      // mutated into the structure that the Babel spec uses.
+      astLocationData() {
+        return jisonLocationDataToAstLocationData(this.locationData);
+      }
+
+      // Determines whether an AST node needs an `ExpressionStatement` wrapper.
+      // Typically matches our `isStatement()` logic but this allows overriding.
+      isStatementAst(o) {
+        return this.isStatement(o);
+      }
+
+      // Passes each child to a function, breaking when the function returns `false`.
+      eachChild(func) {
+        var attr, child, j, k, len1, len2, ref1, ref2;
+        if (!this.children) {
+          return this;
+        }
+        ref1 = this.children;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          attr = ref1[j];
+          if (this[attr]) {
+            ref2 = flatten([this[attr]]);
+            for (k = 0, len2 = ref2.length; k < len2; k++) {
+              child = ref2[k];
+              if (func(child) === false) {
+                return this;
+              }
+            }
+          }
+        }
+        return this;
+      }
+
+      traverseChildren(crossScope, func) {
+        return this.eachChild(function(child) {
+          var recur;
+          recur = func(child);
+          if (recur !== false) {
+            return child.traverseChildren(crossScope, func);
+          }
+        });
+      }
+
+      // `replaceInContext` will traverse children looking for a node for which `match` returns
+      // true. Once found, the matching node will be replaced by the result of calling `replacement`.
+      replaceInContext(match, replacement) {
+        var attr, child, children, i, j, k, len1, len2, ref1, ref2;
+        if (!this.children) {
+          return false;
+        }
+        ref1 = this.children;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          attr = ref1[j];
+          if (children = this[attr]) {
+            if (Array.isArray(children)) {
+              for (i = k = 0, len2 = children.length; k < len2; i = ++k) {
+                child = children[i];
+                if (match(child)) {
+                  splice.apply(children, [i, i - i + 1].concat(ref2 = replacement(child, this))), ref2;
+                  return true;
+                } else {
+                  if (child.replaceInContext(match, replacement)) {
+                    return true;
+                  }
+                }
+              }
+            } else if (match(children)) {
+              this[attr] = replacement(children, this);
+              return true;
+            } else {
+              if (children.replaceInContext(match, replacement)) {
+                return true;
+              }
+            }
+          }
+        }
+      }
+
+      invert() {
+        return new Op('!', this);
+      }
+
+      unwrapAll() {
+        var node;
+        node = this;
+        while (node !== (node = node.unwrap())) {
+          continue;
+        }
+        return node;
+      }
+
+      // For this node and all descendents, set the location data to `locationData`
+      // if the location data is not already set.
+      updateLocationDataIfMissing(locationData, force) {
+        if (force) {
+          this.forceUpdateLocation = true;
+        }
+        if (this.locationData && !this.forceUpdateLocation) {
+          return this;
+        }
+        delete this.forceUpdateLocation;
+        this.locationData = locationData;
+        return this.eachChild(function(child) {
+          return child.updateLocationDataIfMissing(locationData);
+        });
+      }
+
+      // Add location data from another node
+      withLocationDataFrom({locationData}) {
+        return this.updateLocationDataIfMissing(locationData);
+      }
+
+      // Add location data and comments from another node
+      withLocationDataAndCommentsFrom(node) {
+        var comments;
+        this.withLocationDataFrom(node);
+        ({comments} = node);
+        if (comments != null ? comments.length : void 0) {
+          this.comments = comments;
+        }
+        return this;
+      }
+
+      // Throw a SyntaxError associated with this node’s location.
+      error(message) {
+        return throwSyntaxError(message, this.locationData);
+      }
+
+      makeCode(code) {
+        return new CodeFragment(this, code);
+      }
+
+      wrapInParentheses(fragments) {
+        return [this.makeCode('('), ...fragments, this.makeCode(')')];
+      }
+
+      wrapInBraces(fragments) {
+        return [this.makeCode('{'), ...fragments, this.makeCode('}')];
+      }
+
+      // `fragmentsList` is an array of arrays of fragments. Each array in fragmentsList will be
+      // concatenated together, with `joinStr` added in between each, to produce a final flat array
+      // of fragments.
+      joinFragmentArrays(fragmentsList, joinStr) {
+        var answer, fragments, i, j, len1;
+        answer = [];
+        for (i = j = 0, len1 = fragmentsList.length; j < len1; i = ++j) {
+          fragments = fragmentsList[i];
+          if (i) {
+            answer.push(this.makeCode(joinStr));
+          }
+          answer = answer.concat(fragments);
+        }
+        return answer;
+      }
+
+    };
+
+    // Default implementations of the common node properties and methods. Nodes
+    // will override these with custom logic, if needed.
+
+    // `children` are the properties to recurse into when tree walking. The
+    // `children` list *is* the structure of the AST. The `parent` pointer, and
+    // the pointer to the `children` are how you can traverse the tree.
+    Base.prototype.children = [];
+
+    // `isStatement` has to do with “everything is an expression”. A few things
+    // can’t be expressions, such as `break`. Things that `isStatement` returns
+    // `true` for are things that can’t be used as expressions. There are some
+    // error messages that come from `nodes.coffee` due to statements ending up
+    // in expression position.
+    Base.prototype.isStatement = NO;
+
+    // Track comments that have been compiled into fragments, to avoid outputting
+    // them twice.
+    Base.prototype.compiledComments = [];
+
+    // `includeCommentFragments` lets `compileCommentFragments` know whether this node
+    // has special awareness of how to handle comments within its output.
+    Base.prototype.includeCommentFragments = NO;
+
+    // `jumps` tells you if an expression, or an internal part of an expression,
+    // has a flow control construct (like `break`, `continue`, or `return`)
+    // that jumps out of the normal flow of control and can’t be used as a value.
+    // (Note that `throw` is not considered a flow control construct.)
+    // This is important because flow control in the middle of an expression
+    // makes no sense; we have to disallow it.
+    Base.prototype.jumps = NO;
+
+    // If `node.shouldCache() is false`, it is safe to use `node` more than once.
+    // Otherwise you need to store the value of `node` in a variable and output
+    // that variable several times instead. Kind of like this: `5` need not be
+    // cached. `returnFive()`, however, could have side effects as a result of
+    // evaluating it more than once, and therefore we need to cache it. The
+    // parameter is named `shouldCache` rather than `mustCache` because there are
+    // also cases where we might not need to cache but where we want to, for
+    // example a long expression that may well be idempotent but we want to cache
+    // for brevity.
+    Base.prototype.shouldCache = YES;
+
+    Base.prototype.isChainable = NO;
+
+    Base.prototype.isAssignable = NO;
+
+    Base.prototype.isNumber = NO;
+
+    Base.prototype.unwrap = THIS;
+
+    Base.prototype.unfoldSoak = NO;
+
+    // Is this node used to assign a certain variable?
+    Base.prototype.assigns = NO;
+
+    return Base;
+
+  }).call(this);
+
+  //### HoistTarget
+
+  // A **HoistTargetNode** represents the output location in the node tree for a hoisted node.
+  // See Base#hoist.
+  exports.HoistTarget = HoistTarget = class HoistTarget extends Base {
+    // Expands hoisted fragments in the given array
+    static expand(fragments) {
+      var fragment, i, j, ref1;
+      for (i = j = fragments.length - 1; j >= 0; i = j += -1) {
+        fragment = fragments[i];
+        if (fragment.fragments) {
+          splice.apply(fragments, [i, i - i + 1].concat(ref1 = this.expand(fragment.fragments))), ref1;
+        }
+      }
+      return fragments;
+    }
+
+    constructor(source1) {
+      super();
+      this.source = source1;
+      // Holds presentational options to apply when the source node is compiled.
+      this.options = {};
+      // Placeholder fragments to be replaced by the source node’s compilation.
+      this.targetFragments = {
+        fragments: []
+      };
+    }
+
+    isStatement(o) {
+      return this.source.isStatement(o);
+    }
+
+    // Update the target fragments with the result of compiling the source.
+    // Calls the given compile function with the node and options (overriden with the target
+    // presentational options).
+    update(compile, o) {
+      return this.targetFragments.fragments = compile.call(this.source, merge(o, this.options));
+    }
+
+    // Copies the target indent and level, and returns the placeholder fragments
+    compileToFragments(o, level) {
+      this.options.indent = o.indent;
+      this.options.level = level != null ? level : o.level;
+      return [this.targetFragments];
+    }
+
+    compileNode(o) {
+      return this.compileToFragments(o);
+    }
+
+    compileClosure(o) {
+      return this.compileToFragments(o);
+    }
+
+  };
+
+  //### Root
+
+  // The root node of the node tree
+  exports.Root = Root = (function() {
+    class Root extends Base {
+      constructor(body1) {
+        super();
+        this.body = body1;
+        this.isAsync = (new Code([], this.body)).isAsync;
+      }
+
+      // 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.
+      compileNode(o) {
+        var fragments, functionKeyword;
+        o.indent = o.bare ? '' : TAB;
+        o.level = LEVEL_TOP;
+        o.compiling = true;
+        this.initializeScope(o);
+        fragments = this.body.compileRoot(o);
+        if (o.bare) {
+          return fragments;
+        }
+        functionKeyword = `${this.isAsync ? 'async ' : ''}function`;
+        return [].concat(this.makeCode(`(${functionKeyword}() {\n`), fragments, this.makeCode("\n}).call(this);\n"));
+      }
+
+      initializeScope(o) {
+        var j, len1, name, ref1, ref2, results1;
+        o.scope = new Scope(null, this.body, null, (ref1 = o.referencedVars) != null ? ref1 : []);
+        ref2 = o.locals || [];
+        results1 = [];
+        for (j = 0, len1 = ref2.length; j < len1; j++) {
+          name = ref2[j];
+          // Mark given local variables in the root scope as parameters so they don’t
+          // end up being declared on the root block.
+          results1.push(o.scope.parameter(name));
+        }
+        return results1;
+      }
+
+      commentsAst() {
+        var comment, commentToken, j, len1, ref1, results1;
+        if (this.allComments == null) {
+          this.allComments = (function() {
+            var j, len1, ref1, ref2, results1;
+            ref2 = (ref1 = this.allCommentTokens) != null ? ref1 : [];
+            results1 = [];
+            for (j = 0, len1 = ref2.length; j < len1; j++) {
+              commentToken = ref2[j];
+              if (!commentToken.heregex) {
+                if (commentToken.here) {
+                  results1.push(new HereComment(commentToken));
+                } else {
+                  results1.push(new LineComment(commentToken));
+                }
+              }
+            }
+            return results1;
+          }).call(this);
+        }
+        ref1 = this.allComments;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          comment = ref1[j];
+          results1.push(comment.ast());
+        }
+        return results1;
+      }
+
+      astNode(o) {
+        o.level = LEVEL_TOP;
+        this.initializeScope(o);
+        return super.astNode(o);
+      }
+
+      astType() {
+        return 'File';
+      }
+
+      astProperties(o) {
+        this.body.isRootBlock = true;
+        return {
+          program: Object.assign(this.body.ast(o), this.astLocationData()),
+          comments: this.commentsAst()
+        };
+      }
+
+    };
+
+    Root.prototype.children = ['body'];
+
+    return Root;
+
+  }).call(this);
+
+  //### 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 = Block = (function() {
+    class Block extends Base {
+      constructor(nodes) {
+        super();
+        this.expressions = compact(flatten(nodes || []));
+      }
+
+      // Tack an expression on to the end of this expression list.
+      push(node) {
+        this.expressions.push(node);
+        return this;
+      }
+
+      // Remove and return the last expression of this expression list.
+      pop() {
+        return this.expressions.pop();
+      }
+
+      // Add an expression at the beginning of this expression list.
+      unshift(node) {
+        this.expressions.unshift(node);
+        return this;
+      }
+
+      // If this Block consists of just a single node, unwrap it by pulling
+      // it back out.
+      unwrap() {
+        if (this.expressions.length === 1) {
+          return this.expressions[0];
+        } else {
+          return this;
+        }
+      }
+
+      // Is this an empty block of code?
+      isEmpty() {
+        return !this.expressions.length;
+      }
+
+      isStatement(o) {
+        var exp, j, len1, ref1;
+        ref1 = this.expressions;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          exp = ref1[j];
+          if (exp.isStatement(o)) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      jumps(o) {
+        var exp, j, jumpNode, len1, ref1;
+        ref1 = this.expressions;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          exp = ref1[j];
+          if (jumpNode = exp.jumps(o)) {
+            return jumpNode;
+          }
+        }
+      }
+
+      // A Block node does not return its entire body, rather it
+      // ensures that the final expression is returned.
+      makeReturn(results, mark) {
+        var expr, expressions, last, lastExp, len, penult, ref1, ref2;
+        len = this.expressions.length;
+        ref1 = this.expressions, [lastExp] = slice1.call(ref1, -1);
+        lastExp = (lastExp != null ? lastExp.unwrap() : void 0) || false;
+        // We also need to check that we’re not returning a JSX tag if there’s an
+        // adjacent one at the same level; JSX doesn’t allow that.
+        if (lastExp && lastExp instanceof Parens && lastExp.body.expressions.length > 1) {
+          ({
+            body: {expressions}
+          } = lastExp);
+          [penult, last] = slice1.call(expressions, -2);
+          penult = penult.unwrap();
+          last = last.unwrap();
+          if (penult instanceof JSXElement && last instanceof JSXElement) {
+            expressions[expressions.length - 1].error('Adjacent JSX elements must be wrapped in an enclosing tag');
+          }
+        }
+        if (mark) {
+          if ((ref2 = this.expressions[len - 1]) != null) {
+            ref2.makeReturn(results, mark);
+          }
+          return;
+        }
+        while (len--) {
+          expr = this.expressions[len];
+          this.expressions[len] = expr.makeReturn(results);
+          if (expr instanceof Return && !expr.expression) {
+            this.expressions.splice(len, 1);
+          }
+          break;
+        }
+        return this;
+      }
+
+      compile(o, lvl) {
+        if (!o.scope) {
+          return new Root(this).withLocationDataFrom(this).compile(o, lvl);
+        }
+        return super.compile(o, lvl);
+      }
+
+      // 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) {
+        var answer, compiledNodes, fragments, index, j, lastFragment, len1, node, ref1, top;
+        this.tab = o.indent;
+        top = o.level === LEVEL_TOP;
+        compiledNodes = [];
+        ref1 = this.expressions;
+        for (index = j = 0, len1 = ref1.length; j < len1; index = ++j) {
+          node = ref1[index];
+          if (node.hoisted) {
+            // This is a hoisted expression.
+            // We want to compile this and ignore the result.
+            node.compileToFragments(o);
+            continue;
+          }
+          node = node.unfoldSoak(o) || node;
+          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.
+            compiledNodes.push(node.compileNode(o));
+          } else if (top) {
+            node.front = true;
+            fragments = node.compileToFragments(o);
+            if (!node.isStatement(o)) {
+              fragments = indentInitial(fragments, this);
+              [lastFragment] = slice1.call(fragments, -1);
+              if (!(lastFragment.code === '' || lastFragment.isComment)) {
+                fragments.push(this.makeCode(';'));
+              }
+            }
+            compiledNodes.push(fragments);
+          } else {
+            compiledNodes.push(node.compileToFragments(o, LEVEL_LIST));
+          }
+        }
+        if (top) {
+          if (this.spaced) {
+            return [].concat(this.joinFragmentArrays(compiledNodes, '\n\n'), this.makeCode('\n'));
+          } else {
+            return this.joinFragmentArrays(compiledNodes, '\n');
+          }
+        }
+        if (compiledNodes.length) {
+          answer = this.joinFragmentArrays(compiledNodes, ', ');
+        } else {
+          answer = [this.makeCode('void 0')];
+        }
+        if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) {
+          return this.wrapInParentheses(answer);
+        } else {
+          return answer;
+        }
+      }
+
+      compileRoot(o) {
+        var fragments;
+        this.spaced = true;
+        fragments = this.compileWithDeclarations(o);
+        HoistTarget.expand(fragments);
+        return this.compileComments(fragments);
+      }
+
+      // Compile the expressions body for the contents of a function, with
+      // declarations of all inner variables pushed up to the top.
+      compileWithDeclarations(o) {
+        var assigns, declaredVariable, declaredVariables, declaredVariablesIndex, declars, exp, fragments, i, j, k, len1, len2, post, ref1, rest, scope, spaced;
+        fragments = [];
+        post = [];
+        ref1 = this.expressions;
+        for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+          exp = ref1[i];
+          exp = exp.unwrap();
+          if (!(exp instanceof Literal)) {
+            break;
+          }
+        }
+        o = merge(o, {
+          level: LEVEL_TOP
+        });
+        if (i) {
+          rest = this.expressions.splice(i, 9e9);
+          [spaced, this.spaced] = [this.spaced, false];
+          [fragments, this.spaced] = [this.compileNode(o), spaced];
+          this.expressions = rest;
+        }
+        post = this.compileNode(o);
+        ({scope} = o);
+        if (scope.expressions === this) {
+          declars = o.scope.hasDeclarations();
+          assigns = scope.hasAssignments;
+          if (declars || assigns) {
+            if (i) {
+              fragments.push(this.makeCode('\n'));
+            }
+            fragments.push(this.makeCode(`${this.tab}var `));
+            if (declars) {
+              declaredVariables = scope.declaredVariables();
+              for (declaredVariablesIndex = k = 0, len2 = declaredVariables.length; k < len2; declaredVariablesIndex = ++k) {
+                declaredVariable = declaredVariables[declaredVariablesIndex];
+                fragments.push(this.makeCode(declaredVariable));
+                if (Object.prototype.hasOwnProperty.call(o.scope.comments, declaredVariable)) {
+                  fragments.push(...o.scope.comments[declaredVariable]);
+                }
+                if (declaredVariablesIndex !== declaredVariables.length - 1) {
+                  fragments.push(this.makeCode(', '));
+                }
+              }
+            }
+            if (assigns) {
+              if (declars) {
+                fragments.push(this.makeCode(`,\n${this.tab + TAB}`));
+              }
+              fragments.push(this.makeCode(scope.assignedVariables().join(`,\n${this.tab + TAB}`)));
+            }
+            fragments.push(this.makeCode(`;\n${this.spaced ? '\n' : ''}`));
+          } else if (fragments.length && post.length) {
+            fragments.push(this.makeCode("\n"));
+          }
+        }
+        return fragments.concat(post);
+      }
+
+      compileComments(fragments) {
+        var code, commentFragment, fragment, fragmentIndent, fragmentIndex, indent, j, k, l, len1, len2, len3, newLineIndex, onNextLine, p, pastFragment, pastFragmentIndex, q, ref1, ref2, ref3, ref4, trail, upcomingFragment, upcomingFragmentIndex;
+        for (fragmentIndex = j = 0, len1 = fragments.length; j < len1; fragmentIndex = ++j) {
+          fragment = fragments[fragmentIndex];
+          // Insert comments into the output at the next or previous newline.
+          // If there are no newlines at which to place comments, create them.
+          if (fragment.precedingComments) {
+            // Determine the indentation level of the fragment that we are about
+            // to insert comments before, and use that indentation level for our
+            // inserted comments. At this point, the fragments’ `code` property
+            // is the generated output JavaScript, and CoffeeScript always
+            // generates output indented by two spaces; so all we need to do is
+            // search for a `code` property that begins with at least two spaces.
+            fragmentIndent = '';
+            ref1 = fragments.slice(0, (fragmentIndex + 1));
+            for (k = ref1.length - 1; k >= 0; k += -1) {
+              pastFragment = ref1[k];
+              indent = /^ {2,}/m.exec(pastFragment.code);
+              if (indent) {
+                fragmentIndent = indent[0];
+                break;
+              } else if (indexOf.call(pastFragment.code, '\n') >= 0) {
+                break;
+              }
+            }
+            code = `\n${fragmentIndent}` + ((function() {
+              var l, len2, ref2, results1;
+              ref2 = fragment.precedingComments;
+              results1 = [];
+              for (l = 0, len2 = ref2.length; l < len2; l++) {
+                commentFragment = ref2[l];
+                if (commentFragment.isHereComment && commentFragment.multiline) {
+                  results1.push(multident(commentFragment.code, fragmentIndent, false));
+                } else {
+                  results1.push(commentFragment.code);
+                }
+              }
+              return results1;
+            })()).join(`\n${fragmentIndent}`).replace(/^(\s*)$/gm, '');
+            ref2 = fragments.slice(0, (fragmentIndex + 1));
+            for (pastFragmentIndex = l = ref2.length - 1; l >= 0; pastFragmentIndex = l += -1) {
+              pastFragment = ref2[pastFragmentIndex];
+              newLineIndex = pastFragment.code.lastIndexOf('\n');
+              if (newLineIndex === -1) {
+                // Keep searching previous fragments until we can’t go back any
+                // further, either because there are no fragments left or we’ve
+                // discovered that we’re in a code block that is interpolated
+                // inside a string.
+                if (pastFragmentIndex === 0) {
+                  pastFragment.code = '\n' + pastFragment.code;
+                  newLineIndex = 0;
+                } else if (pastFragment.isStringWithInterpolations && pastFragment.code === '{') {
+                  code = code.slice(1) + '\n'; // Move newline to end.
+                  newLineIndex = 1;
+                } else {
+                  continue;
+                }
+              }
+              delete fragment.precedingComments;
+              pastFragment.code = pastFragment.code.slice(0, newLineIndex) + code + pastFragment.code.slice(newLineIndex);
+              break;
+            }
+          }
+          // Yes, this is awfully similar to the previous `if` block, but if you
+          // look closely you’ll find lots of tiny differences that make this
+          // confusing if it were abstracted into a function that both blocks share.
+          if (fragment.followingComments) {
+            // Does the first trailing comment follow at the end of a line of code,
+            // like `; // Comment`, or does it start a new line after a line of code?
+            trail = fragment.followingComments[0].trail;
+            fragmentIndent = '';
+            // Find the indent of the next line of code, if we have any non-trailing
+            // comments to output. We need to first find the next newline, as these
+            // comments will be output after that; and then the indent of the line
+            // that follows the next newline.
+            if (!(trail && fragment.followingComments.length === 1)) {
+              onNextLine = false;
+              ref3 = fragments.slice(fragmentIndex);
+              for (p = 0, len2 = ref3.length; p < len2; p++) {
+                upcomingFragment = ref3[p];
+                if (!onNextLine) {
+                  if (indexOf.call(upcomingFragment.code, '\n') >= 0) {
+                    onNextLine = true;
+                  } else {
+                    continue;
+                  }
+                } else {
+                  indent = /^ {2,}/m.exec(upcomingFragment.code);
+                  if (indent) {
+                    fragmentIndent = indent[0];
+                    break;
+                  } else if (indexOf.call(upcomingFragment.code, '\n') >= 0) {
+                    break;
+                  }
+                }
+              }
+            }
+            // Is this comment following the indent inserted by bare mode?
+            // If so, there’s no need to indent this further.
+            code = fragmentIndex === 1 && /^\s+$/.test(fragments[0].code) ? '' : trail ? ' ' : `\n${fragmentIndent}`;
+            // Assemble properly indented comments.
+            code += ((function() {
+              var len3, q, ref4, results1;
+              ref4 = fragment.followingComments;
+              results1 = [];
+              for (q = 0, len3 = ref4.length; q < len3; q++) {
+                commentFragment = ref4[q];
+                if (commentFragment.isHereComment && commentFragment.multiline) {
+                  results1.push(multident(commentFragment.code, fragmentIndent, false));
+                } else {
+                  results1.push(commentFragment.code);
+                }
+              }
+              return results1;
+            })()).join(`\n${fragmentIndent}`).replace(/^(\s*)$/gm, '');
+            ref4 = fragments.slice(fragmentIndex);
+            for (upcomingFragmentIndex = q = 0, len3 = ref4.length; q < len3; upcomingFragmentIndex = ++q) {
+              upcomingFragment = ref4[upcomingFragmentIndex];
+              newLineIndex = upcomingFragment.code.indexOf('\n');
+              if (newLineIndex === -1) {
+                // Keep searching upcoming fragments until we can’t go any
+                // further, either because there are no fragments left or we’ve
+                // discovered that we’re in a code block that is interpolated
+                // inside a string.
+                if (upcomingFragmentIndex === fragments.length - 1) {
+                  upcomingFragment.code = upcomingFragment.code + '\n';
+                  newLineIndex = upcomingFragment.code.length;
+                } else if (upcomingFragment.isStringWithInterpolations && upcomingFragment.code === '}') {
+                  code = `${code}\n`;
+                  newLineIndex = 0;
+                } else {
+                  continue;
+                }
+              }
+              delete fragment.followingComments;
+              if (upcomingFragment.code === '\n') {
+                // Avoid inserting extra blank lines.
+                code = code.replace(/^\n/, '');
+              }
+              upcomingFragment.code = upcomingFragment.code.slice(0, newLineIndex) + code + upcomingFragment.code.slice(newLineIndex);
+              break;
+            }
+          }
+        }
+        return fragments;
+      }
+
+      // Wrap up the given nodes as a **Block**, unless it already happens
+      // to be one.
+      static wrap(nodes) {
+        if (nodes.length === 1 && nodes[0] instanceof Block) {
+          return nodes[0];
+        }
+        return new Block(nodes);
+      }
+
+      astNode(o) {
+        if (((o.level != null) && o.level !== LEVEL_TOP) && this.expressions.length) {
+          return (new Sequence(this.expressions).withLocationDataFrom(this)).ast(o);
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isRootBlock) {
+          return 'Program';
+        } else if (this.isClassBody) {
+          return 'ClassBody';
+        } else {
+          return 'BlockStatement';
+        }
+      }
+
+      astProperties(o) {
+        var body, checkForDirectives, directives, expression, expressionAst, j, len1, ref1;
+        checkForDirectives = del(o, 'checkForDirectives');
+        if (this.isRootBlock || checkForDirectives) {
+          sniffDirectives(this.expressions, {
+            notFinalExpression: checkForDirectives
+          });
+        }
+        directives = [];
+        body = [];
+        ref1 = this.expressions;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          expression = ref1[j];
+          expressionAst = expression.ast(o);
+          // Ignore generated PassthroughLiteral
+          if (expressionAst == null) {
+            continue;
+          } else if (expression instanceof Directive) {
+            directives.push(expressionAst);
+          // If an expression is a statement, it can be added to the body as is.
+          } else if (expression.isStatementAst(o)) {
+            body.push(expressionAst);
+          } else {
+            // Otherwise, we need to wrap it in an `ExpressionStatement` AST node.
+            body.push(Object.assign({
+              type: 'ExpressionStatement',
+              expression: expressionAst
+            }, expression.astLocationData()));
+          }
+        }
+        // For now, we’re not including `sourceType` on the `Program` AST node.
+        // Its value could be either `'script'` or `'module'`, and there’s no way
+        // for CoffeeScript to always know which it should be. The presence of an
+        // `import` or `export` statement in source code would imply that it should
+        // be a `module`, but a project may consist of mostly such files and also
+        // an outlier file that lacks `import` or `export` but is still imported
+        // into the project and therefore expects to be treated as a `module`.
+        // Determining the value of `sourceType` is essentially the same challenge
+        // posed by determining the parse goal of a JavaScript file, also `module`
+        // or `script`, and so if Node figures out a way to do so for `.js` files
+        // then CoffeeScript can copy Node’s algorithm.
+
+          // sourceType: 'module'
+        return {body, directives};
+      }
+
+      astLocationData() {
+        if (this.isRootBlock && (this.locationData == null)) {
+          return;
+        }
+        return super.astLocationData();
+      }
+
+    };
+
+    Block.prototype.children = ['expressions'];
+
+    return Block;
+
+  }).call(this);
+
+  // A directive e.g. 'use strict'.
+  // Currently only used during AST generation.
+  exports.Directive = Directive = class Directive extends Base {
+    constructor(value1) {
+      super();
+      this.value = value1;
+    }
+
+    astProperties(o) {
+      return {
+        value: Object.assign({}, this.value.ast(o), {
+          type: 'DirectiveLiteral'
+        })
+      };
+    }
+
+  };
+
+  //### Literal
+
+  // `Literal` is a base class for static values that can be passed through
+  // directly into JavaScript without translation, such as: strings, numbers,
+  // `true`, `false`, `null`...
+  exports.Literal = Literal = (function() {
+    class Literal extends Base {
+      constructor(value1) {
+        super();
+        this.value = value1;
+      }
+
+      assigns(name) {
+        return name === this.value;
+      }
+
+      compileNode(o) {
+        return [this.makeCode(this.value)];
+      }
+
+      astProperties() {
+        return {
+          value: this.value
+        };
+      }
+
+      toString() {
+        // This is only intended for debugging.
+        return ` ${this.isStatement() ? super.toString() : this.constructor.name}: ${this.value}`;
+      }
+
+    };
+
+    Literal.prototype.shouldCache = NO;
+
+    return Literal;
+
+  }).call(this);
+
+  exports.NumberLiteral = NumberLiteral = class NumberLiteral extends Literal {
+    constructor(value1, {parsedValue} = {}) {
+      super();
+      this.value = value1;
+      this.parsedValue = parsedValue;
+      if (this.parsedValue == null) {
+        if (isNumber(this.value)) {
+          this.parsedValue = this.value;
+          this.value = `${this.value}`;
+        } else {
+          this.parsedValue = parseNumber(this.value);
+        }
+      }
+    }
+
+    isBigInt() {
+      return /n$/.test(this.value);
+    }
+
+    astType() {
+      if (this.isBigInt()) {
+        return 'BigIntLiteral';
+      } else {
+        return 'NumericLiteral';
+      }
+    }
+
+    astProperties() {
+      return {
+        value: this.isBigInt() ? this.parsedValue.toString() : this.parsedValue,
+        extra: {
+          rawValue: this.isBigInt() ? this.parsedValue.toString() : this.parsedValue,
+          raw: this.value
+        }
+      };
+    }
+
+  };
+
+  exports.InfinityLiteral = InfinityLiteral = class InfinityLiteral extends NumberLiteral {
+    constructor(value1, {originalValue: originalValue = 'Infinity'} = {}) {
+      super();
+      this.value = value1;
+      this.originalValue = originalValue;
+    }
+
+    compileNode() {
+      return [this.makeCode('2e308')];
+    }
+
+    astNode(o) {
+      if (this.originalValue !== 'Infinity') {
+        return new NumberLiteral(this.value).withLocationDataFrom(this).ast(o);
+      }
+      return super.astNode(o);
+    }
+
+    astType() {
+      return 'Identifier';
+    }
+
+    astProperties() {
+      return {
+        name: 'Infinity',
+        declaration: false
+      };
+    }
+
+  };
+
+  exports.NaNLiteral = NaNLiteral = class NaNLiteral extends NumberLiteral {
+    constructor() {
+      super('NaN');
+    }
+
+    compileNode(o) {
+      var code;
+      code = [this.makeCode('0/0')];
+      if (o.level >= LEVEL_OP) {
+        return this.wrapInParentheses(code);
+      } else {
+        return code;
+      }
+    }
+
+    astType() {
+      return 'Identifier';
+    }
+
+    astProperties() {
+      return {
+        name: 'NaN',
+        declaration: false
+      };
+    }
+
+  };
+
+  exports.StringLiteral = StringLiteral = class StringLiteral extends Literal {
+    constructor(originalValue, {
+        quote,
+        initialChunk,
+        finalChunk,
+        indent: indent1,
+        double: double1,
+        heregex: heregex1
+      } = {}) {
+      var heredoc, indentRegex, val;
+      super('');
+      this.originalValue = originalValue;
+      this.quote = quote;
+      this.initialChunk = initialChunk;
+      this.finalChunk = finalChunk;
+      this.indent = indent1;
+      this.double = double1;
+      this.heregex = heregex1;
+      if (this.quote === '///') {
+        this.quote = null;
+      }
+      this.fromSourceString = this.quote != null;
+      if (this.quote == null) {
+        this.quote = '"';
+      }
+      heredoc = this.isFromHeredoc();
+      val = this.originalValue;
+      if (this.heregex) {
+        val = val.replace(HEREGEX_OMIT, '$1$2');
+        val = replaceUnicodeCodePointEscapes(val, {
+          flags: this.heregex.flags
+        });
+      } else {
+        val = val.replace(STRING_OMIT, '$1');
+        val = !this.fromSourceString ? val : heredoc ? (this.indent ? indentRegex = RegExp(`\\n${this.indent}`, "g") : void 0, indentRegex ? val = val.replace(indentRegex, '\n') : void 0, this.initialChunk ? val = val.replace(LEADING_BLANK_LINE, '') : void 0, this.finalChunk ? val = val.replace(TRAILING_BLANK_LINE, '') : void 0, val) : val.replace(SIMPLE_STRING_OMIT, (match, offset) => {
+          if ((this.initialChunk && offset === 0) || (this.finalChunk && offset + match.length === val.length)) {
+            return '';
+          } else {
+            return ' ';
+          }
+        });
+      }
+      this.delimiter = this.quote.charAt(0);
+      this.value = makeDelimitedLiteral(val, {delimiter: this.delimiter, double: this.double});
+      this.unquotedValueForTemplateLiteral = makeDelimitedLiteral(val, {
+        delimiter: '`',
+        double: this.double,
+        escapeNewlines: false,
+        includeDelimiters: false,
+        convertTrailingNullEscapes: true
+      });
+      this.unquotedValueForJSX = makeDelimitedLiteral(val, {
+        double: this.double,
+        escapeNewlines: false,
+        includeDelimiters: false,
+        escapeDelimiter: false
+      });
+    }
+
+    compileNode(o) {
+      if (this.shouldGenerateTemplateLiteral()) {
+        return StringWithInterpolations.fromStringLiteral(this).compileNode(o);
+      }
+      if (this.jsx) {
+        return [this.makeCode(this.unquotedValueForJSX)];
+      }
+      return super.compileNode(o);
+    }
+
+    // `StringLiteral`s can represent either entire literal strings
+    // or pieces of text inside of e.g. an interpolated string.
+    // When parsed as the former but needing to be treated as the latter
+    // (e.g. the string part of a tagged template literal), this will return
+    // a copy of the `StringLiteral` with the quotes trimmed from its location
+    // data (like it would have if parsed as part of an interpolated string).
+    withoutQuotesInLocationData() {
+      var copy, endsWithNewline, locationData;
+      endsWithNewline = this.originalValue.slice(-1) === '\n';
+      locationData = Object.assign({}, this.locationData);
+      locationData.first_column += this.quote.length;
+      if (endsWithNewline) {
+        locationData.last_line -= 1;
+        locationData.last_column = locationData.last_line === locationData.first_line ? locationData.first_column + this.originalValue.length - '\n'.length : this.originalValue.slice(0, -1).length - '\n'.length - this.originalValue.slice(0, -1).lastIndexOf('\n');
+      } else {
+        locationData.last_column -= this.quote.length;
+      }
+      locationData.last_column_exclusive -= this.quote.length;
+      locationData.range = [locationData.range[0] + this.quote.length, locationData.range[1] - this.quote.length];
+      copy = new StringLiteral(this.originalValue, {quote: this.quote, initialChunk: this.initialChunk, finalChunk: this.finalChunk, indent: this.indent, double: this.double, heregex: this.heregex});
+      copy.locationData = locationData;
+      return copy;
+    }
+
+    isFromHeredoc() {
+      return this.quote.length === 3;
+    }
+
+    shouldGenerateTemplateLiteral() {
+      return this.isFromHeredoc();
+    }
+
+    astNode(o) {
+      if (this.shouldGenerateTemplateLiteral()) {
+        return StringWithInterpolations.fromStringLiteral(this).ast(o);
+      }
+      return super.astNode(o);
+    }
+
+    astProperties() {
+      return {
+        value: this.originalValue,
+        extra: {
+          raw: `${this.delimiter}${this.originalValue}${this.delimiter}`
+        }
+      };
+    }
+
+  };
+
+  exports.RegexLiteral = RegexLiteral = (function() {
+    class RegexLiteral extends Literal {
+      constructor(value, {delimiter: delimiter1 = '/', heregexCommentTokens: heregexCommentTokens = []} = {}) {
+        var endDelimiterIndex, heregex, val;
+        super('');
+        this.delimiter = delimiter1;
+        this.heregexCommentTokens = heregexCommentTokens;
+        heregex = this.delimiter === '///';
+        endDelimiterIndex = value.lastIndexOf('/');
+        this.flags = value.slice(endDelimiterIndex + 1);
+        val = this.originalValue = value.slice(1, endDelimiterIndex);
+        if (heregex) {
+          val = val.replace(HEREGEX_OMIT, '$1$2');
+        }
+        val = replaceUnicodeCodePointEscapes(val, {flags: this.flags});
+        this.value = `${makeDelimitedLiteral(val, {
+          delimiter: '/'
+        })}${this.flags}`;
+      }
+
+      astType() {
+        return 'RegExpLiteral';
+      }
+
+      astProperties(o) {
+        var heregexCommentToken, pattern;
+        [, pattern] = this.REGEX_REGEX.exec(this.value);
+        return {
+          value: void 0,
+          pattern,
+          flags: this.flags,
+          delimiter: this.delimiter,
+          originalPattern: this.originalValue,
+          extra: {
+            raw: this.value,
+            originalRaw: `${this.delimiter}${this.originalValue}${this.delimiter}${this.flags}`,
+            rawValue: void 0
+          },
+          comments: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.heregexCommentTokens;
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              heregexCommentToken = ref1[j];
+              if (heregexCommentToken.here) {
+                results1.push(new HereComment(heregexCommentToken).ast(o));
+              } else {
+                results1.push(new LineComment(heregexCommentToken).ast(o));
+              }
+            }
+            return results1;
+          }).call(this)
+        };
+      }
+
+    };
+
+    RegexLiteral.prototype.REGEX_REGEX = /^\/(.*)\/\w*$/;
+
+    return RegexLiteral;
+
+  }).call(this);
+
+  exports.PassthroughLiteral = PassthroughLiteral = class PassthroughLiteral extends Literal {
+    constructor(originalValue, {here, generated} = {}) {
+      super('');
+      this.originalValue = originalValue;
+      this.here = here;
+      this.generated = generated;
+      this.value = this.originalValue.replace(/\\+(`|$)/g, function(string) {
+        // `string` is always a value like '\`', '\\\`', '\\\\\`', etc.
+        // By reducing it to its latter half, we turn '\`' to '`', '\\\`' to '\`', etc.
+        return string.slice(-Math.ceil(string.length / 2));
+      });
+    }
+
+    astNode(o) {
+      if (this.generated) {
+        return null;
+      }
+      return super.astNode(o);
+    }
+
+    astProperties() {
+      return {
+        value: this.originalValue,
+        here: !!this.here
+      };
+    }
+
+  };
+
+  exports.IdentifierLiteral = IdentifierLiteral = (function() {
+    class IdentifierLiteral extends Literal {
+      eachName(iterator) {
+        return iterator(this);
+      }
+
+      astType() {
+        if (this.jsx) {
+          return 'JSXIdentifier';
+        } else {
+          return 'Identifier';
+        }
+      }
+
+      astProperties() {
+        return {
+          name: this.value,
+          declaration: !!this.isDeclaration
+        };
+      }
+
+    };
+
+    IdentifierLiteral.prototype.isAssignable = YES;
+
+    return IdentifierLiteral;
+
+  }).call(this);
+
+  exports.PropertyName = PropertyName = (function() {
+    class PropertyName extends Literal {
+      astType() {
+        if (this.jsx) {
+          return 'JSXIdentifier';
+        } else {
+          return 'Identifier';
+        }
+      }
+
+      astProperties() {
+        return {
+          name: this.value,
+          declaration: false
+        };
+      }
+
+    };
+
+    PropertyName.prototype.isAssignable = YES;
+
+    return PropertyName;
+
+  }).call(this);
+
+  exports.ComputedPropertyName = ComputedPropertyName = class ComputedPropertyName extends PropertyName {
+    compileNode(o) {
+      return [this.makeCode('['), ...this.value.compileToFragments(o, LEVEL_LIST), this.makeCode(']')];
+    }
+
+    astNode(o) {
+      return this.value.ast(o);
+    }
+
+  };
+
+  exports.StatementLiteral = StatementLiteral = (function() {
+    class StatementLiteral extends Literal {
+      jumps(o) {
+        if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {
+          return this;
+        }
+        if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {
+          return this;
+        }
+      }
+
+      compileNode(o) {
+        return [this.makeCode(`${this.tab}${this.value};`)];
+      }
+
+      astType() {
+        switch (this.value) {
+          case 'continue':
+            return 'ContinueStatement';
+          case 'break':
+            return 'BreakStatement';
+          case 'debugger':
+            return 'DebuggerStatement';
+        }
+      }
+
+    };
+
+    StatementLiteral.prototype.isStatement = YES;
+
+    StatementLiteral.prototype.makeReturn = THIS;
+
+    return StatementLiteral;
+
+  }).call(this);
+
+  exports.ThisLiteral = ThisLiteral = class ThisLiteral extends Literal {
+    constructor(value) {
+      super('this');
+      this.shorthand = value === '@';
+    }
+
+    compileNode(o) {
+      var code, ref1;
+      code = ((ref1 = o.scope.method) != null ? ref1.bound : void 0) ? o.scope.method.context : this.value;
+      return [this.makeCode(code)];
+    }
+
+    astType() {
+      return 'ThisExpression';
+    }
+
+    astProperties() {
+      return {
+        shorthand: this.shorthand
+      };
+    }
+
+  };
+
+  exports.UndefinedLiteral = UndefinedLiteral = class UndefinedLiteral extends Literal {
+    constructor() {
+      super('undefined');
+    }
+
+    compileNode(o) {
+      return [this.makeCode(o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0')];
+    }
+
+    astType() {
+      return 'Identifier';
+    }
+
+    astProperties() {
+      return {
+        name: this.value,
+        declaration: false
+      };
+    }
+
+  };
+
+  exports.NullLiteral = NullLiteral = class NullLiteral extends Literal {
+    constructor() {
+      super('null');
+    }
+
+  };
+
+  exports.BooleanLiteral = BooleanLiteral = class BooleanLiteral extends Literal {
+    constructor(value, {originalValue} = {}) {
+      super(value);
+      this.originalValue = originalValue;
+      if (this.originalValue == null) {
+        this.originalValue = this.value;
+      }
+    }
+
+    astProperties() {
+      return {
+        value: this.value === 'true' ? true : false,
+        name: this.originalValue
+      };
+    }
+
+  };
+
+  exports.DefaultLiteral = DefaultLiteral = class DefaultLiteral extends Literal {
+    astType() {
+      return 'Identifier';
+    }
+
+    astProperties() {
+      return {
+        name: 'default',
+        declaration: false
+      };
+    }
+
+  };
+
+  //### Return
+
+  // A `return` is a *pureStatement*—wrapping it in a closure wouldn’t make sense.
+  exports.Return = Return = (function() {
+    class Return extends Base {
+      constructor(expression1, {belongsToFuncDirectiveReturn} = {}) {
+        super();
+        this.expression = expression1;
+        this.belongsToFuncDirectiveReturn = belongsToFuncDirectiveReturn;
+      }
+
+      compileToFragments(o, level) {
+        var expr, ref1;
+        expr = (ref1 = this.expression) != null ? ref1.makeReturn() : void 0;
+        if (expr && !(expr instanceof Return)) {
+          return expr.compileToFragments(o, level);
+        } else {
+          return super.compileToFragments(o, level);
+        }
+      }
+
+      compileNode(o) {
+        var answer, fragment, j, len1;
+        answer = [];
+        // TODO: If we call `expression.compile()` here twice, we’ll sometimes
+        // get back different results!
+        if (this.expression) {
+          answer = this.expression.compileToFragments(o, LEVEL_PAREN);
+          unshiftAfterComments(answer, this.makeCode(`${this.tab}return `));
+// Since the `return` got indented by `@tab`, preceding comments that are
+// multiline need to be indented.
+          for (j = 0, len1 = answer.length; j < len1; j++) {
+            fragment = answer[j];
+            if (fragment.isHereComment && indexOf.call(fragment.code, '\n') >= 0) {
+              fragment.code = multident(fragment.code, this.tab);
+            } else if (fragment.isLineComment) {
+              fragment.code = `${this.tab}${fragment.code}`;
+            } else {
+              break;
+            }
+          }
+        } else {
+          answer.push(this.makeCode(`${this.tab}return`));
+        }
+        answer.push(this.makeCode(';'));
+        return answer;
+      }
+
+      checkForPureStatementInExpression() {
+        // don’t flag `return` from `await return`/`yield return` as invalid.
+        if (this.belongsToFuncDirectiveReturn) {
+          return;
+        }
+        return super.checkForPureStatementInExpression();
+      }
+
+      astType() {
+        return 'ReturnStatement';
+      }
+
+      astProperties(o) {
+        var ref1, ref2;
+        return {
+          argument: (ref1 = (ref2 = this.expression) != null ? ref2.ast(o, LEVEL_PAREN) : void 0) != null ? ref1 : null
+        };
+      }
+
+    };
+
+    Return.prototype.children = ['expression'];
+
+    Return.prototype.isStatement = YES;
+
+    Return.prototype.makeReturn = THIS;
+
+    Return.prototype.jumps = THIS;
+
+    return Return;
+
+  }).call(this);
+
+  // Parent class for `YieldReturn`/`AwaitReturn`.
+  exports.FuncDirectiveReturn = FuncDirectiveReturn = (function() {
+    class FuncDirectiveReturn extends Return {
+      constructor(expression, {returnKeyword}) {
+        super(expression);
+        this.returnKeyword = returnKeyword;
+      }
+
+      compileNode(o) {
+        this.checkScope(o);
+        return super.compileNode(o);
+      }
+
+      checkScope(o) {
+        if (o.scope.parent == null) {
+          return this.error(`${this.keyword} can only occur inside functions`);
+        }
+      }
+
+      astNode(o) {
+        this.checkScope(o);
+        return new Op(this.keyword, new Return(this.expression, {
+          belongsToFuncDirectiveReturn: true
+        }).withLocationDataFrom(this.expression != null ? {
+          locationData: mergeLocationData(this.returnKeyword.locationData, this.expression.locationData)
+        } : this.returnKeyword)).withLocationDataFrom(this).ast(o);
+      }
+
+    };
+
+    FuncDirectiveReturn.prototype.isStatementAst = NO;
+
+    return FuncDirectiveReturn;
+
+  }).call(this);
+
+  // `yield return` works exactly like `return`, except that it turns the function
+  // into a generator.
+  exports.YieldReturn = YieldReturn = (function() {
+    class YieldReturn extends FuncDirectiveReturn {};
+
+    YieldReturn.prototype.keyword = 'yield';
+
+    return YieldReturn;
+
+  }).call(this);
+
+  exports.AwaitReturn = AwaitReturn = (function() {
+    class AwaitReturn extends FuncDirectiveReturn {};
+
+    AwaitReturn.prototype.keyword = 'await';
+
+    return AwaitReturn;
+
+  }).call(this);
+
+  //### Value
+
+  // A value, variable or literal or parenthesized, indexed or dotted into,
+  // or vanilla.
+  exports.Value = Value = (function() {
+    class Value extends Base {
+      constructor(base, props, tag, isDefaultValue = false) {
+        var ref1, ref2;
+        super();
+        if (!props && base instanceof Value) {
+          return base;
+        }
+        this.base = base;
+        this.properties = props || [];
+        this.tag = tag;
+        if (tag) {
+          this[tag] = true;
+        }
+        this.isDefaultValue = isDefaultValue;
+        // If this is a `@foo =` assignment, if there are comments on `@` move them
+        // to be on `foo`.
+        if (((ref1 = this.base) != null ? ref1.comments : void 0) && this.base instanceof ThisLiteral && (((ref2 = this.properties[0]) != null ? ref2.name : void 0) != null)) {
+          moveComments(this.base, this.properties[0].name);
+        }
+      }
+
+      // Add a property (or *properties* ) `Access` to the list.
+      add(props) {
+        this.properties = this.properties.concat(props);
+        this.forceUpdateLocation = true;
+        return this;
+      }
+
+      hasProperties() {
+        return this.properties.length !== 0;
+      }
+
+      bareLiteral(type) {
+        return !this.properties.length && this.base instanceof type;
+      }
+
+      // Some boolean checks for the benefit of other nodes.
+      isArray() {
+        return this.bareLiteral(Arr);
+      }
+
+      isRange() {
+        return this.bareLiteral(Range);
+      }
+
+      shouldCache() {
+        return this.hasProperties() || this.base.shouldCache();
+      }
+
+      isAssignable(opts) {
+        return this.hasProperties() || this.base.isAssignable(opts);
+      }
+
+      isNumber() {
+        return this.bareLiteral(NumberLiteral);
+      }
+
+      isString() {
+        return this.bareLiteral(StringLiteral);
+      }
+
+      isRegex() {
+        return this.bareLiteral(RegexLiteral);
+      }
+
+      isUndefined() {
+        return this.bareLiteral(UndefinedLiteral);
+      }
+
+      isNull() {
+        return this.bareLiteral(NullLiteral);
+      }
+
+      isBoolean() {
+        return this.bareLiteral(BooleanLiteral);
+      }
+
+      isAtomic() {
+        var j, len1, node, ref1;
+        ref1 = this.properties.concat(this.base);
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          node = ref1[j];
+          if (node.soak || node instanceof Call || node instanceof Op && node.operator === 'do') {
+            return false;
+          }
+        }
+        return true;
+      }
+
+      isNotCallable() {
+        return this.isNumber() || this.isString() || this.isRegex() || this.isArray() || this.isRange() || this.isSplice() || this.isObject() || this.isUndefined() || this.isNull() || this.isBoolean();
+      }
+
+      isStatement(o) {
+        return !this.properties.length && this.base.isStatement(o);
+      }
+
+      isJSXTag() {
+        return this.base instanceof JSXTag;
+      }
+
+      assigns(name) {
+        return !this.properties.length && this.base.assigns(name);
+      }
+
+      jumps(o) {
+        return !this.properties.length && this.base.jumps(o);
+      }
+
+      isObject(onlyGenerated) {
+        if (this.properties.length) {
+          return false;
+        }
+        return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);
+      }
+
+      isElision() {
+        if (!(this.base instanceof Arr)) {
+          return false;
+        }
+        return this.base.hasElision();
+      }
+
+      isSplice() {
+        var lastProperty, ref1;
+        ref1 = this.properties, [lastProperty] = slice1.call(ref1, -1);
+        return lastProperty instanceof Slice;
+      }
+
+      looksStatic(className) {
+        var name, ref1, thisLiteral;
+        if (!(((thisLiteral = this.base) instanceof ThisLiteral || (name = this.base).value === className) && this.properties.length === 1 && ((ref1 = this.properties[0].name) != null ? ref1.value : void 0) !== 'prototype')) {
+          return false;
+        }
+        return {
+          staticClassName: thisLiteral != null ? thisLiteral : name
+        };
+      }
+
+      // The value can be unwrapped as its inner node, if there are no attached
+      // properties.
+      unwrap() {
+        if (this.properties.length) {
+          return this;
+        } else {
+          return this.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) {
+        var base, bref, name, nref, ref1;
+        ref1 = this.properties, [name] = slice1.call(ref1, -1);
+        if (this.properties.length < 2 && !this.base.shouldCache() && !(name != null ? name.shouldCache() : void 0)) {
+          return [this, this]; // `a` `a.b`
+        }
+        base = new Value(this.base, this.properties.slice(0, -1));
+        if (base.shouldCache()) { // `a().b`
+          bref = new IdentifierLiteral(o.scope.freeVariable('base'));
+          base = new Value(new Parens(new Assign(bref, base)));
+        }
+        if (!name) { // `a()`
+          return [base, bref];
+        }
+        if (name.shouldCache()) { // `a[b()]`
+          nref = new IdentifierLiteral(o.scope.freeVariable('name'));
+          name = new Index(new Assign(nref, name.index));
+          nref = new Index(nref);
+        }
+        return [base.add(name), new Value(bref || base.base, [nref || 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) {
+        var fragments, j, len1, prop, props;
+        this.base.front = this.front;
+        props = this.properties;
+        if (props.length && (this.base.cached != null)) {
+          // Cached fragments enable correct order of the compilation,
+          // and reuse of variables in the scope.
+          // Example:
+          // `a(x = 5).b(-> x = 6)` should compile in the same order as
+          // `a(x = 5); b(-> x = 6)`
+          // (see issue #4437, https://github.com/jashkenas/coffeescript/issues/4437)
+          fragments = this.base.cached;
+        } else {
+          fragments = this.base.compileToFragments(o, (props.length ? LEVEL_ACCESS : null));
+        }
+        if (props.length && SIMPLENUM.test(fragmentsToText(fragments))) {
+          fragments.push(this.makeCode('.'));
+        }
+        for (j = 0, len1 = props.length; j < len1; j++) {
+          prop = props[j];
+          fragments.push(...(prop.compileToFragments(o)));
+        }
+        return fragments;
+      }
+
+      // Unfold a soak into an `If`: `a?.b` -> `a.b if a?`
+      unfoldSoak(o) {
+        return this.unfoldedSoak != null ? this.unfoldedSoak : this.unfoldedSoak = (() => {
+          var fst, i, ifn, j, len1, prop, ref, ref1, snd;
+          ifn = this.base.unfoldSoak(o);
+          if (ifn) {
+            ifn.body.properties.push(...this.properties);
+            return ifn;
+          }
+          ref1 = this.properties;
+          for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+            prop = ref1[i];
+            if (!prop.soak) {
+              continue;
+            }
+            prop.soak = false;
+            fst = new Value(this.base, this.properties.slice(0, i));
+            snd = new Value(this.base, this.properties.slice(i));
+            if (fst.shouldCache()) {
+              ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
+              fst = new Parens(new Assign(ref, fst));
+              snd.base = ref;
+            }
+            return new If(new Existence(fst), snd, {
+              soak: true
+            });
+          }
+          return false;
+        })();
+      }
+
+      eachName(iterator, {checkAssignability = true} = {}) {
+        if (this.hasProperties()) {
+          return iterator(this);
+        } else if (!checkAssignability || this.base.isAssignable()) {
+          return this.base.eachName(iterator);
+        } else {
+          return this.error('tried to assign to unassignable value');
+        }
+      }
+
+      // For AST generation, we need an `object` that’s this `Value` minus its last
+      // property, if it has properties.
+      object() {
+        var initialProperties, object;
+        if (!this.hasProperties()) {
+          return this;
+        }
+        // Get all properties except the last one; for a `Value` with only one
+        // property, `initialProperties` is an empty array.
+        initialProperties = this.properties.slice(0, this.properties.length - 1);
+        // Create the `object` that becomes the new “base” for the split-off final
+        // property.
+        object = new Value(this.base, initialProperties, this.tag, this.isDefaultValue);
+        // Add location data to our new node, so that it has correct location data
+        // for source maps or later conversion into AST location data.
+        // This new `Value` has only one property, so the location data is just
+        // that of the parent `Value`’s base.
+        // This new `Value` has multiple properties, so the location data spans
+        // from the parent `Value`’s base to the last property that’s included
+        // in this new node (a.k.a. the second-to-last property of the parent).
+        object.locationData = initialProperties.length === 0 ? this.base.locationData : mergeLocationData(this.base.locationData, initialProperties[initialProperties.length - 1].locationData);
+        return object;
+      }
+
+      containsSoak() {
+        var j, len1, property, ref1;
+        if (!this.hasProperties()) {
+          return false;
+        }
+        ref1 = this.properties;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          property = ref1[j];
+          if (property.soak) {
+            return true;
+          }
+        }
+        if (this.base instanceof Call && this.base.soak) {
+          return true;
+        }
+        return false;
+      }
+
+      astNode(o) {
+        if (!this.hasProperties()) {
+          // If the `Value` has no properties, the AST node is just whatever this
+          // node’s `base` is.
+          return this.base.ast(o);
+        }
+        // Otherwise, call `Base::ast` which in turn calls the `astType` and
+        // `astProperties` methods below.
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isJSXTag()) {
+          return 'JSXMemberExpression';
+        } else if (this.containsSoak()) {
+          return 'OptionalMemberExpression';
+        } else {
+          return 'MemberExpression';
+        }
+      }
+
+      // If this `Value` has properties, the *last* property (e.g. `c` in `a.b.c`)
+      // becomes the `property`, and the preceding properties (e.g. `a.b`) become
+      // a child `Value` node assigned to the `object` property.
+      astProperties(o) {
+        var computed, property, ref1, ref2;
+        ref1 = this.properties, [property] = slice1.call(ref1, -1);
+        if (this.isJSXTag()) {
+          property.name.jsx = true;
+        }
+        computed = property instanceof Index || !(((ref2 = property.name) != null ? ref2.unwrap() : void 0) instanceof PropertyName);
+        return {
+          object: this.object().ast(o, LEVEL_ACCESS),
+          property: property.ast(o, (computed ? LEVEL_PAREN : void 0)),
+          computed,
+          optional: !!property.soak,
+          shorthand: !!property.shorthand
+        };
+      }
+
+      astLocationData() {
+        if (!this.isJSXTag()) {
+          return super.astLocationData();
+        }
+        // don't include leading < of JSX tag in location data
+        return mergeAstLocationData(jisonLocationDataToAstLocationData(this.base.tagNameLocationData), jisonLocationDataToAstLocationData(this.properties[this.properties.length - 1].locationData));
+      }
+
+    };
+
+    Value.prototype.children = ['base', 'properties'];
+
+    return Value;
+
+  }).call(this);
+
+  exports.MetaProperty = MetaProperty = (function() {
+    class MetaProperty extends Base {
+      constructor(meta, property1) {
+        super();
+        this.meta = meta;
+        this.property = property1;
+      }
+
+      checkValid(o) {
+        if (this.meta.value === 'new') {
+          if (this.property instanceof Access && this.property.name.value === 'target') {
+            if (o.scope.parent == null) {
+              return this.error("new.target can only occur inside functions");
+            }
+          } else {
+            return this.error("the only valid meta property for new is new.target");
+          }
+        } else if (this.meta.value === 'import') {
+          if (!(this.property instanceof Access && this.property.name.value === 'meta')) {
+            return this.error("the only valid meta property for import is import.meta");
+          }
+        }
+      }
+
+      compileNode(o) {
+        var fragments;
+        this.checkValid(o);
+        fragments = [];
+        fragments.push(...this.meta.compileToFragments(o, LEVEL_ACCESS));
+        fragments.push(...this.property.compileToFragments(o));
+        return fragments;
+      }
+
+      astProperties(o) {
+        this.checkValid(o);
+        return {
+          meta: this.meta.ast(o, LEVEL_ACCESS),
+          property: this.property.ast(o)
+        };
+      }
+
+    };
+
+    MetaProperty.prototype.children = ['meta', 'property'];
+
+    return MetaProperty;
+
+  }).call(this);
+
+  //### HereComment
+
+  // Comment delimited by `###` (becoming `/* */`).
+  exports.HereComment = HereComment = class HereComment extends Base {
+    constructor({
+        content: content1,
+        newLine,
+        unshift,
+        locationData: locationData1
+      }) {
+      super();
+      this.content = content1;
+      this.newLine = newLine;
+      this.unshift = unshift;
+      this.locationData = locationData1;
+    }
+
+    compileNode(o) {
+      var fragment, hasLeadingMarks, indent, j, leadingWhitespace, len1, line, multiline, ref1;
+      multiline = indexOf.call(this.content, '\n') >= 0;
+      // Unindent multiline comments. They will be reindented later.
+      if (multiline) {
+        indent = null;
+        ref1 = this.content.split('\n');
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          line = ref1[j];
+          leadingWhitespace = /^\s*/.exec(line)[0];
+          if (!indent || leadingWhitespace.length < indent.length) {
+            indent = leadingWhitespace;
+          }
+        }
+        if (indent) {
+          this.content = this.content.replace(RegExp(`\\n${indent}`, "g"), '\n');
+        }
+      }
+      hasLeadingMarks = /\n\s*[#|\*]/.test(this.content);
+      if (hasLeadingMarks) {
+        this.content = this.content.replace(/^([ \t]*)#(?=\s)/gm, ' *');
+      }
+      this.content = `/*${this.content}${hasLeadingMarks ? ' ' : ''}*/`;
+      fragment = this.makeCode(this.content);
+      fragment.newLine = this.newLine;
+      fragment.unshift = this.unshift;
+      fragment.multiline = multiline;
+      // Don’t rely on `fragment.type`, which can break when the compiler is minified.
+      fragment.isComment = fragment.isHereComment = true;
+      return fragment;
+    }
+
+    astType() {
+      return 'CommentBlock';
+    }
+
+    astProperties() {
+      return {
+        value: this.content
+      };
+    }
+
+  };
+
+  //### LineComment
+
+  // Comment running from `#` to the end of a line (becoming `//`).
+  exports.LineComment = LineComment = class LineComment extends Base {
+    constructor({
+        content: content1,
+        newLine,
+        unshift,
+        locationData: locationData1,
+        precededByBlankLine
+      }) {
+      super();
+      this.content = content1;
+      this.newLine = newLine;
+      this.unshift = unshift;
+      this.locationData = locationData1;
+      this.precededByBlankLine = precededByBlankLine;
+    }
+
+    compileNode(o) {
+      var fragment;
+      fragment = this.makeCode(/^\s*$/.test(this.content) ? '' : `${this.precededByBlankLine ? `\n${o.indent}` : ''}//${this.content}`);
+      fragment.newLine = this.newLine;
+      fragment.unshift = this.unshift;
+      fragment.trail = !this.newLine && !this.unshift;
+      // Don’t rely on `fragment.type`, which can break when the compiler is minified.
+      fragment.isComment = fragment.isLineComment = true;
+      return fragment;
+    }
+
+    astType() {
+      return 'CommentLine';
+    }
+
+    astProperties() {
+      return {
+        value: this.content
+      };
+    }
+
+  };
+
+  //### JSX
+  exports.JSXIdentifier = JSXIdentifier = class JSXIdentifier extends IdentifierLiteral {
+    astType() {
+      return 'JSXIdentifier';
+    }
+
+  };
+
+  exports.JSXTag = JSXTag = class JSXTag extends JSXIdentifier {
+    constructor(value, {tagNameLocationData, closingTagOpeningBracketLocationData, closingTagSlashLocationData, closingTagNameLocationData, closingTagClosingBracketLocationData}) {
+      super(value);
+      this.tagNameLocationData = tagNameLocationData;
+      this.closingTagOpeningBracketLocationData = closingTagOpeningBracketLocationData;
+      this.closingTagSlashLocationData = closingTagSlashLocationData;
+      this.closingTagNameLocationData = closingTagNameLocationData;
+      this.closingTagClosingBracketLocationData = closingTagClosingBracketLocationData;
+    }
+
+    astProperties() {
+      return {
+        name: this.value
+      };
+    }
+
+  };
+
+  exports.JSXExpressionContainer = JSXExpressionContainer = (function() {
+    class JSXExpressionContainer extends Base {
+      constructor(expression1, {locationData} = {}) {
+        super();
+        this.expression = expression1;
+        this.expression.jsxAttribute = true;
+        this.locationData = locationData != null ? locationData : this.expression.locationData;
+      }
+
+      compileNode(o) {
+        return this.expression.compileNode(o);
+      }
+
+      astProperties(o) {
+        return {
+          expression: astAsBlockIfNeeded(this.expression, o)
+        };
+      }
+
+    };
+
+    JSXExpressionContainer.prototype.children = ['expression'];
+
+    return JSXExpressionContainer;
+
+  }).call(this);
+
+  exports.JSXEmptyExpression = JSXEmptyExpression = class JSXEmptyExpression extends Base {};
+
+  exports.JSXText = JSXText = class JSXText extends Base {
+    constructor(stringLiteral) {
+      super();
+      this.value = stringLiteral.unquotedValueForJSX;
+      this.locationData = stringLiteral.locationData;
+    }
+
+    astProperties() {
+      return {
+        value: this.value,
+        extra: {
+          raw: this.value
+        }
+      };
+    }
+
+  };
+
+  exports.JSXAttribute = JSXAttribute = (function() {
+    class JSXAttribute extends Base {
+      constructor({
+          name: name1,
+          value
+        }) {
+        var ref1;
+        super();
+        this.name = name1;
+        this.value = value != null ? (value = value.base, value instanceof StringLiteral && !value.shouldGenerateTemplateLiteral() ? value : new JSXExpressionContainer(value)) : null;
+        if ((ref1 = this.value) != null) {
+          ref1.comments = value.comments;
+        }
+      }
+
+      compileNode(o) {
+        var compiledName, val;
+        compiledName = this.name.compileToFragments(o, LEVEL_LIST);
+        if (this.value == null) {
+          return compiledName;
+        }
+        val = this.value.compileToFragments(o, LEVEL_LIST);
+        return compiledName.concat(this.makeCode('='), val);
+      }
+
+      astProperties(o) {
+        var name, ref1, ref2;
+        name = this.name;
+        if (indexOf.call(name.value, ':') >= 0) {
+          name = new JSXNamespacedName(name);
+        }
+        return {
+          name: name.ast(o),
+          value: (ref1 = (ref2 = this.value) != null ? ref2.ast(o) : void 0) != null ? ref1 : null
+        };
+      }
+
+    };
+
+    JSXAttribute.prototype.children = ['name', 'value'];
+
+    return JSXAttribute;
+
+  }).call(this);
+
+  exports.JSXAttributes = JSXAttributes = (function() {
+    class JSXAttributes extends Base {
+      constructor(arr) {
+        var attribute, base, j, k, len1, len2, object, property, ref1, ref2, value, variable;
+        super();
+        this.attributes = [];
+        ref1 = arr.objects;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          object = ref1[j];
+          this.checkValidAttribute(object);
+          ({base} = object);
+          if (base instanceof IdentifierLiteral) {
+            // attribute with no value eg disabled
+            attribute = new JSXAttribute({
+              name: new JSXIdentifier(base.value).withLocationDataAndCommentsFrom(base)
+            });
+            attribute.locationData = base.locationData;
+            this.attributes.push(attribute);
+          } else if (!base.generated) {
+            // object spread attribute eg {...props}
+            attribute = base.properties[0];
+            attribute.jsx = true;
+            attribute.locationData = base.locationData;
+            this.attributes.push(attribute);
+          } else {
+            ref2 = base.properties;
+            // Obj containing attributes with values eg a="b" c={d}
+            for (k = 0, len2 = ref2.length; k < len2; k++) {
+              property = ref2[k];
+              ({variable, value} = property);
+              attribute = new JSXAttribute({
+                name: new JSXIdentifier(variable.base.value).withLocationDataAndCommentsFrom(variable.base),
+                value
+              });
+              attribute.locationData = property.locationData;
+              this.attributes.push(attribute);
+            }
+          }
+        }
+        this.locationData = arr.locationData;
+      }
+
+      // Catch invalid attributes: <div {a:"b", props} {props} "value" />
+      checkValidAttribute(object) {
+        var attribute, properties;
+        ({
+          base: attribute
+        } = object);
+        properties = (attribute != null ? attribute.properties : void 0) || [];
+        if (!(attribute instanceof Obj || attribute instanceof IdentifierLiteral) || (attribute instanceof Obj && !attribute.generated && (properties.length > 1 || !(properties[0] instanceof Splat)))) {
+          return object.error(`Unexpected token. Allowed JSX attributes are: id="val", src={source}, {props...} or attribute.`);
+        }
+      }
+
+      compileNode(o) {
+        var attribute, fragments, j, len1, ref1;
+        fragments = [];
+        ref1 = this.attributes;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          attribute = ref1[j];
+          fragments.push(this.makeCode(' '));
+          fragments.push(...attribute.compileToFragments(o, LEVEL_TOP));
+        }
+        return fragments;
+      }
+
+      astNode(o) {
+        var attribute, j, len1, ref1, results1;
+        ref1 = this.attributes;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          attribute = ref1[j];
+          results1.push(attribute.ast(o));
+        }
+        return results1;
+      }
+
+    };
+
+    JSXAttributes.prototype.children = ['attributes'];
+
+    return JSXAttributes;
+
+  }).call(this);
+
+  exports.JSXNamespacedName = JSXNamespacedName = (function() {
+    class JSXNamespacedName extends Base {
+      constructor(tag) {
+        var name, namespace;
+        super();
+        [namespace, name] = tag.value.split(':');
+        this.namespace = new JSXIdentifier(namespace).withLocationDataFrom({
+          locationData: extractSameLineLocationDataFirst(namespace.length)(tag.locationData)
+        });
+        this.name = new JSXIdentifier(name).withLocationDataFrom({
+          locationData: extractSameLineLocationDataLast(name.length)(tag.locationData)
+        });
+        this.locationData = tag.locationData;
+      }
+
+      astProperties(o) {
+        return {
+          namespace: this.namespace.ast(o),
+          name: this.name.ast(o)
+        };
+      }
+
+    };
+
+    JSXNamespacedName.prototype.children = ['namespace', 'name'];
+
+    return JSXNamespacedName;
+
+  }).call(this);
+
+  // Node for a JSX element
+  exports.JSXElement = JSXElement = (function() {
+    class JSXElement extends Base {
+      constructor({
+          tagName: tagName1,
+          attributes,
+          content: content1
+        }) {
+        super();
+        this.tagName = tagName1;
+        this.attributes = attributes;
+        this.content = content1;
+      }
+
+      compileNode(o) {
+        var fragments, ref1, tag;
+        if ((ref1 = this.content) != null) {
+          ref1.base.jsx = true;
+        }
+        fragments = [this.makeCode('<')];
+        fragments.push(...(tag = this.tagName.compileToFragments(o, LEVEL_ACCESS)));
+        fragments.push(...this.attributes.compileToFragments(o));
+        if (this.content) {
+          fragments.push(this.makeCode('>'));
+          fragments.push(...this.content.compileNode(o, LEVEL_LIST));
+          fragments.push(...[this.makeCode('</'), ...tag, this.makeCode('>')]);
+        } else {
+          fragments.push(this.makeCode(' />'));
+        }
+        return fragments;
+      }
+
+      isFragment() {
+        return !this.tagName.base.value.length;
+      }
+
+      astNode(o) {
+        var tagName;
+        // The location data spanning the opening element < ... > is captured by
+        // the generated Arr which contains the element's attributes
+        this.openingElementLocationData = jisonLocationDataToAstLocationData(this.attributes.locationData);
+        tagName = this.tagName.base;
+        tagName.locationData = tagName.tagNameLocationData;
+        if (this.content != null) {
+          this.closingElementLocationData = mergeAstLocationData(jisonLocationDataToAstLocationData(tagName.closingTagOpeningBracketLocationData), jisonLocationDataToAstLocationData(tagName.closingTagClosingBracketLocationData));
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isFragment()) {
+          return 'JSXFragment';
+        } else {
+          return 'JSXElement';
+        }
+      }
+
+      elementAstProperties(o) {
+        var closingElement, columnDiff, currentExpr, openingElement, rangeDiff, ref1, shiftAstLocationData, tagNameAst;
+        tagNameAst = () => {
+          var tag;
+          tag = this.tagName.unwrap();
+          if ((tag != null ? tag.value : void 0) && indexOf.call(tag.value, ':') >= 0) {
+            tag = new JSXNamespacedName(tag);
+          }
+          return tag.ast(o);
+        };
+        openingElement = Object.assign({
+          type: 'JSXOpeningElement',
+          name: tagNameAst(),
+          selfClosing: this.closingElementLocationData == null,
+          attributes: this.attributes.ast(o)
+        }, this.openingElementLocationData);
+        closingElement = null;
+        if (this.closingElementLocationData != null) {
+          closingElement = Object.assign({
+            type: 'JSXClosingElement',
+            name: Object.assign(tagNameAst(), jisonLocationDataToAstLocationData(this.tagName.base.closingTagNameLocationData))
+          }, this.closingElementLocationData);
+          if ((ref1 = closingElement.name.type) === 'JSXMemberExpression' || ref1 === 'JSXNamespacedName') {
+            rangeDiff = closingElement.range[0] - openingElement.range[0] + '/'.length;
+            columnDiff = closingElement.loc.start.column - openingElement.loc.start.column + '/'.length;
+            shiftAstLocationData = (node) => {
+              node.range = [node.range[0] + rangeDiff, node.range[1] + rangeDiff];
+              node.start += rangeDiff;
+              node.end += rangeDiff;
+              node.loc.start = {
+                line: this.closingElementLocationData.loc.start.line,
+                column: node.loc.start.column + columnDiff
+              };
+              return node.loc.end = {
+                line: this.closingElementLocationData.loc.start.line,
+                column: node.loc.end.column + columnDiff
+              };
+            };
+            if (closingElement.name.type === 'JSXMemberExpression') {
+              currentExpr = closingElement.name;
+              while (currentExpr.type === 'JSXMemberExpression') {
+                if (currentExpr !== closingElement.name) {
+                  shiftAstLocationData(currentExpr);
+                }
+                shiftAstLocationData(currentExpr.property);
+                currentExpr = currentExpr.object;
+              }
+              shiftAstLocationData(currentExpr); // JSXNamespacedName
+            } else {
+              shiftAstLocationData(closingElement.name.namespace);
+              shiftAstLocationData(closingElement.name.name);
+            }
+          }
+        }
+        return {openingElement, closingElement};
+      }
+
+      fragmentAstProperties(o) {
+        var closingFragment, openingFragment;
+        openingFragment = Object.assign({
+          type: 'JSXOpeningFragment'
+        }, this.openingElementLocationData);
+        closingFragment = Object.assign({
+          type: 'JSXClosingFragment'
+        }, this.closingElementLocationData);
+        return {openingFragment, closingFragment};
+      }
+
+      contentAst(o) {
+        var base1, child, children, content, element, emptyExpression, expression, j, len1, results1, unwrapped;
+        if (!(this.content && !(typeof (base1 = this.content.base).isEmpty === "function" ? base1.isEmpty() : void 0))) {
+          return [];
+        }
+        content = this.content.unwrapAll();
+        children = (function() {
+          var j, len1, ref1, results1;
+          if (content instanceof StringLiteral) {
+            return [new JSXText(content)]; // StringWithInterpolations
+          } else {
+            ref1 = this.content.unwrapAll().extractElements(o, {
+              includeInterpolationWrappers: true,
+              isJsx: true
+            });
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              element = ref1[j];
+              if (element instanceof StringLiteral) {
+                results1.push(new JSXText(element)); // Interpolation
+              } else {
+                ({expression} = element);
+                if (expression == null) {
+                  emptyExpression = new JSXEmptyExpression();
+                  emptyExpression.locationData = emptyExpressionLocationData({
+                    interpolationNode: element,
+                    openingBrace: '{',
+                    closingBrace: '}'
+                  });
+                  results1.push(new JSXExpressionContainer(emptyExpression, {
+                    locationData: element.locationData
+                  }));
+                } else {
+                  unwrapped = expression.unwrapAll();
+                  // distinguish `<a><b /></a>` from `<a>{<b />}</a>`
+                  if (unwrapped instanceof JSXElement && unwrapped.locationData.range[0] === element.locationData.range[0]) {
+                    results1.push(unwrapped);
+                  } else {
+                    results1.push(new JSXExpressionContainer(unwrapped, {
+                      locationData: element.locationData
+                    }));
+                  }
+                }
+              }
+            }
+            return results1;
+          }
+        }).call(this);
+        results1 = [];
+        for (j = 0, len1 = children.length; j < len1; j++) {
+          child = children[j];
+          if (!(child instanceof JSXText && child.value.length === 0)) {
+            results1.push(child.ast(o));
+          }
+        }
+        return results1;
+      }
+
+      astProperties(o) {
+        return Object.assign(this.isFragment() ? this.fragmentAstProperties(o) : this.elementAstProperties(o), {
+          children: this.contentAst(o)
+        });
+      }
+
+      astLocationData() {
+        if (this.closingElementLocationData != null) {
+          return mergeAstLocationData(this.openingElementLocationData, this.closingElementLocationData);
+        } else {
+          return this.openingElementLocationData;
+        }
+      }
+
+    };
+
+    JSXElement.prototype.children = ['tagName', 'attributes', 'content'];
+
+    return JSXElement;
+
+  }).call(this);
+
+  //### Call
+
+  // Node for a function invocation.
+  exports.Call = Call = (function() {
+    class Call extends Base {
+      constructor(variable1, args1 = [], soak1, token1) {
+        var ref1;
+        super();
+        this.variable = variable1;
+        this.args = args1;
+        this.soak = soak1;
+        this.token = token1;
+        this.implicit = this.args.implicit;
+        this.isNew = false;
+        if (this.variable instanceof Value && this.variable.isNotCallable()) {
+          this.variable.error("literal is not a function");
+        }
+        if (this.variable.base instanceof JSXTag) {
+          return new JSXElement({
+            tagName: this.variable,
+            attributes: new JSXAttributes(this.args[0].base),
+            content: this.args[1]
+          });
+        }
+        // `@variable` never gets output as a result of this node getting created as
+        // part of `RegexWithInterpolations`, so for that case move any comments to
+        // the `args` property that gets passed into `RegexWithInterpolations` via
+        // the grammar.
+        if (((ref1 = this.variable.base) != null ? ref1.value : void 0) === 'RegExp' && this.args.length !== 0) {
+          moveComments(this.variable, this.args[0]);
+        }
+      }
+
+      // When setting the location, we sometimes need to update the start location to
+      // account for a newly-discovered `new` operator to the left of us. This
+      // expands the range on the left, but not the right.
+      updateLocationDataIfMissing(locationData) {
+        var base, ref1;
+        if (this.locationData && this.needsUpdatedStartLocation) {
+          this.locationData = Object.assign({}, this.locationData, {
+            first_line: locationData.first_line,
+            first_column: locationData.first_column,
+            range: [locationData.range[0], this.locationData.range[1]]
+          });
+          base = ((ref1 = this.variable) != null ? ref1.base : void 0) || this.variable;
+          if (base.needsUpdatedStartLocation) {
+            this.variable.locationData = Object.assign({}, this.variable.locationData, {
+              first_line: locationData.first_line,
+              first_column: locationData.first_column,
+              range: [locationData.range[0], this.variable.locationData.range[1]]
+            });
+            base.updateLocationDataIfMissing(locationData);
+          }
+          delete this.needsUpdatedStartLocation;
+        }
+        return super.updateLocationDataIfMissing(locationData);
+      }
+
+      // Tag this invocation as creating a new instance.
+      newInstance() {
+        var base, ref1;
+        base = ((ref1 = this.variable) != null ? ref1.base : void 0) || this.variable;
+        if (base instanceof Call && !base.isNew) {
+          base.newInstance();
+        } else {
+          this.isNew = true;
+        }
+        this.needsUpdatedStartLocation = true;
+        return this;
+      }
+
+      // Soaked chained invocations unfold into if/else ternary structures.
+      unfoldSoak(o) {
+        var call, ifn, j, left, len1, list, ref1, rite;
+        if (this.soak) {
+          if (this.variable instanceof Super) {
+            left = new Literal(this.variable.compile(o));
+            rite = new Value(left);
+            if (this.variable.accessor == null) {
+              this.variable.error("Unsupported reference to 'super'");
+            }
+          } else {
+            if (ifn = unfoldSoak(o, this, 'variable')) {
+              return ifn;
+            }
+            [left, rite] = new Value(this.variable).cacheReference(o);
+          }
+          rite = new Call(rite, this.args);
+          rite.isNew = this.isNew;
+          left = new Literal(`typeof ${left.compile(o)} === \"function\"`);
+          return new If(left, new Value(rite), {
+            soak: true
+          });
+        }
+        call = this;
+        list = [];
+        while (true) {
+          if (call.variable instanceof Call) {
+            list.push(call);
+            call = call.variable;
+            continue;
+          }
+          if (!(call.variable instanceof Value)) {
+            break;
+          }
+          list.push(call);
+          if (!((call = call.variable.base) instanceof Call)) {
+            break;
+          }
+        }
+        ref1 = list.reverse();
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          call = ref1[j];
+          if (ifn) {
+            if (call.variable instanceof Call) {
+              call.variable = ifn;
+            } else {
+              call.variable.base = ifn;
+            }
+          }
+          ifn = unfoldSoak(o, call, 'variable');
+        }
+        return ifn;
+      }
+
+      // Compile a vanilla function call.
+      compileNode(o) {
+        var arg, argCode, argIndex, cache, compiledArgs, fragments, j, len1, ref1, ref2, ref3, ref4, varAccess;
+        this.checkForNewSuper();
+        if ((ref1 = this.variable) != null) {
+          ref1.front = this.front;
+        }
+        compiledArgs = [];
+        // If variable is `Accessor` fragments are cached and used later
+        // in `Value::compileNode` to ensure correct order of the compilation,
+        // and reuse of variables in the scope.
+        // Example:
+        // `a(x = 5).b(-> x = 6)` should compile in the same order as
+        // `a(x = 5); b(-> x = 6)`
+        // (see issue #4437, https://github.com/jashkenas/coffeescript/issues/4437)
+        varAccess = ((ref2 = this.variable) != null ? (ref3 = ref2.properties) != null ? ref3[0] : void 0 : void 0) instanceof Access;
+        argCode = (function() {
+          var j, len1, ref4, results1;
+          ref4 = this.args || [];
+          results1 = [];
+          for (j = 0, len1 = ref4.length; j < len1; j++) {
+            arg = ref4[j];
+            if (arg instanceof Code) {
+              results1.push(arg);
+            }
+          }
+          return results1;
+        }).call(this);
+        if (argCode.length > 0 && varAccess && !this.variable.base.cached) {
+          [cache] = this.variable.base.cache(o, LEVEL_ACCESS, function() {
+            return false;
+          });
+          this.variable.base.cached = cache;
+        }
+        ref4 = this.args;
+        for (argIndex = j = 0, len1 = ref4.length; j < len1; argIndex = ++j) {
+          arg = ref4[argIndex];
+          if (argIndex) {
+            compiledArgs.push(this.makeCode(", "));
+          }
+          compiledArgs.push(...(arg.compileToFragments(o, LEVEL_LIST)));
+        }
+        fragments = [];
+        if (this.isNew) {
+          fragments.push(this.makeCode('new '));
+        }
+        fragments.push(...this.variable.compileToFragments(o, LEVEL_ACCESS));
+        fragments.push(this.makeCode('('), ...compiledArgs, this.makeCode(')'));
+        return fragments;
+      }
+
+      checkForNewSuper() {
+        if (this.isNew) {
+          if (this.variable instanceof Super) {
+            return this.variable.error("Unsupported reference to 'super'");
+          }
+        }
+      }
+
+      containsSoak() {
+        var ref1;
+        if (this.soak) {
+          return true;
+        }
+        if ((ref1 = this.variable) != null ? typeof ref1.containsSoak === "function" ? ref1.containsSoak() : void 0 : void 0) {
+          return true;
+        }
+        return false;
+      }
+
+      astNode(o) {
+        var ref1;
+        if (this.soak && this.variable instanceof Super && ((ref1 = o.scope.namedMethod()) != null ? ref1.ctor : void 0)) {
+          this.variable.error("Unsupported reference to 'super'");
+        }
+        this.checkForNewSuper();
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isNew) {
+          return 'NewExpression';
+        } else if (this.containsSoak()) {
+          return 'OptionalCallExpression';
+        } else {
+          return 'CallExpression';
+        }
+      }
+
+      astProperties(o) {
+        var arg;
+        return {
+          callee: this.variable.ast(o, LEVEL_ACCESS),
+          arguments: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.args;
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              arg = ref1[j];
+              results1.push(arg.ast(o, LEVEL_LIST));
+            }
+            return results1;
+          }).call(this),
+          optional: !!this.soak,
+          implicit: !!this.implicit
+        };
+      }
+
+    };
+
+    Call.prototype.children = ['variable', 'args'];
+
+    return Call;
+
+  }).call(this);
+
+  //### Super
+
+  // Takes care of converting `super()` calls into calls against the prototype's
+  // function of the same name.
+  // When `expressions` are set the call will be compiled in such a way that the
+  // expressions are evaluated without altering the return value of the `SuperCall`
+  // expression.
+  exports.SuperCall = SuperCall = (function() {
+    class SuperCall extends Call {
+      isStatement(o) {
+        var ref1;
+        return ((ref1 = this.expressions) != null ? ref1.length : void 0) && o.level === LEVEL_TOP;
+      }
+
+      compileNode(o) {
+        var ref, ref1, replacement, superCall;
+        if (!((ref1 = this.expressions) != null ? ref1.length : void 0)) {
+          return super.compileNode(o);
+        }
+        superCall = new Literal(fragmentsToText(super.compileNode(o)));
+        replacement = new Block(this.expressions.slice());
+        if (o.level > LEVEL_TOP) {
+          // If we might be in an expression we need to cache and return the result
+          [superCall, ref] = superCall.cache(o, null, YES);
+          replacement.push(ref);
+        }
+        replacement.unshift(superCall);
+        return replacement.compileToFragments(o, o.level === LEVEL_TOP ? o.level : LEVEL_LIST);
+      }
+
+    };
+
+    SuperCall.prototype.children = Call.prototype.children.concat(['expressions']);
+
+    return SuperCall;
+
+  }).call(this);
+
+  exports.Super = Super = (function() {
+    class Super extends Base {
+      constructor(accessor, superLiteral) {
+        super();
+        this.accessor = accessor;
+        this.superLiteral = superLiteral;
+      }
+
+      compileNode(o) {
+        var fragments, method, name, nref, ref1, ref2, salvagedComments, variable;
+        this.checkInInstanceMethod(o);
+        method = o.scope.namedMethod();
+        if (!((method.ctor != null) || (this.accessor != null))) {
+          ({name, variable} = method);
+          if (name.shouldCache() || (name instanceof Index && name.index.isAssignable())) {
+            nref = new IdentifierLiteral(o.scope.parent.freeVariable('name'));
+            name.index = new Assign(nref, name.index);
+          }
+          this.accessor = nref != null ? new Index(nref) : name;
+        }
+        if ((ref1 = this.accessor) != null ? (ref2 = ref1.name) != null ? ref2.comments : void 0 : void 0) {
+          // A `super()` call gets compiled to e.g. `super.method()`, which means
+          // the `method` property name gets compiled for the first time here, and
+          // again when the `method:` property of the class gets compiled. Since
+          // this compilation happens first, comments attached to `method:` would
+          // get incorrectly output near `super.method()`, when we want them to
+          // get output on the second pass when `method:` is output. So set them
+          // aside during this compilation pass, and put them back on the object so
+          // that they’re there for the later compilation.
+          salvagedComments = this.accessor.name.comments;
+          delete this.accessor.name.comments;
+        }
+        fragments = (new Value(new Literal('super'), this.accessor ? [this.accessor] : [])).compileToFragments(o);
+        if (salvagedComments) {
+          attachCommentsToNode(salvagedComments, this.accessor.name);
+        }
+        return fragments;
+      }
+
+      checkInInstanceMethod(o) {
+        var method;
+        method = o.scope.namedMethod();
+        if (!(method != null ? method.isMethod : void 0)) {
+          return this.error('cannot use super outside of an instance method');
+        }
+      }
+
+      astNode(o) {
+        var ref1;
+        this.checkInInstanceMethod(o);
+        if (this.accessor != null) {
+          return (new Value(new Super().withLocationDataFrom((ref1 = this.superLiteral) != null ? ref1 : this), [this.accessor]).withLocationDataFrom(this)).ast(o);
+        }
+        return super.astNode(o);
+      }
+
+    };
+
+    Super.prototype.children = ['accessor'];
+
+    return Super;
+
+  }).call(this);
+
+  //### RegexWithInterpolations
+
+  // Regexes with interpolations are in fact just a variation of a `Call` (a
+  // `RegExp()` call to be precise) with a `StringWithInterpolations` inside.
+  exports.RegexWithInterpolations = RegexWithInterpolations = (function() {
+    class RegexWithInterpolations extends Base {
+      constructor(call1, {heregexCommentTokens: heregexCommentTokens = []} = {}) {
+        super();
+        this.call = call1;
+        this.heregexCommentTokens = heregexCommentTokens;
+      }
+
+      compileNode(o) {
+        return this.call.compileNode(o);
+      }
+
+      astType() {
+        return 'InterpolatedRegExpLiteral';
+      }
+
+      astProperties(o) {
+        var heregexCommentToken, ref1, ref2;
+        return {
+          interpolatedPattern: this.call.args[0].ast(o),
+          flags: (ref1 = (ref2 = this.call.args[1]) != null ? ref2.unwrap().originalValue : void 0) != null ? ref1 : '',
+          comments: (function() {
+            var j, len1, ref3, results1;
+            ref3 = this.heregexCommentTokens;
+            results1 = [];
+            for (j = 0, len1 = ref3.length; j < len1; j++) {
+              heregexCommentToken = ref3[j];
+              if (heregexCommentToken.here) {
+                results1.push(new HereComment(heregexCommentToken).ast(o));
+              } else {
+                results1.push(new LineComment(heregexCommentToken).ast(o));
+              }
+            }
+            return results1;
+          }).call(this)
+        };
+      }
+
+    };
+
+    RegexWithInterpolations.prototype.children = ['call'];
+
+    return RegexWithInterpolations;
+
+  }).call(this);
+
+  //### TaggedTemplateCall
+  exports.TaggedTemplateCall = TaggedTemplateCall = class TaggedTemplateCall extends Call {
+    constructor(variable, arg, soak) {
+      if (arg instanceof StringLiteral) {
+        arg = StringWithInterpolations.fromStringLiteral(arg);
+      }
+      super(variable, [arg], soak);
+    }
+
+    compileNode(o) {
+      return this.variable.compileToFragments(o, LEVEL_ACCESS).concat(this.args[0].compileToFragments(o, LEVEL_LIST));
+    }
+
+    astType() {
+      return 'TaggedTemplateExpression';
+    }
+
+    astProperties(o) {
+      return {
+        tag: this.variable.ast(o, LEVEL_ACCESS),
+        quasi: this.args[0].ast(o, LEVEL_LIST)
+      };
+    }
+
+  };
+
+  //### Extends
+
+  // Node to extend an object's prototype with an ancestor object.
+  // After `goog.inherits` from the
+  // [Closure Library](https://github.com/google/closure-library/blob/master/closure/goog/base.js).
+  exports.Extends = Extends = (function() {
+    class Extends extends Base {
+      constructor(child1, parent1) {
+        super();
+        this.child = child1;
+        this.parent = parent1;
+      }
+
+      // Hooks one constructor into another's prototype chain.
+      compileToFragments(o) {
+        return new Call(new Value(new Literal(utility('extend', o))), [this.child, this.parent]).compileToFragments(o);
+      }
+
+    };
+
+    Extends.prototype.children = ['child', 'parent'];
+
+    return Extends;
+
+  }).call(this);
+
+  //### Access
+
+  // A `.` access into a property of a value, or the `::` shorthand for
+  // an access into the object's prototype.
+  exports.Access = Access = (function() {
+    class Access extends Base {
+      constructor(name1, {
+          soak: soak1,
+          shorthand
+        } = {}) {
+        super();
+        this.name = name1;
+        this.soak = soak1;
+        this.shorthand = shorthand;
+      }
+
+      compileToFragments(o) {
+        var name, node;
+        name = this.name.compileToFragments(o);
+        node = this.name.unwrap();
+        if (node instanceof PropertyName) {
+          return [this.makeCode('.'), ...name];
+        } else {
+          return [this.makeCode('['), ...name, this.makeCode(']')];
+        }
+      }
+
+      astNode(o) {
+        // Babel doesn’t have an AST node for `Access`, but rather just includes
+        // this Access node’s child `name` Identifier node as the `property` of
+        // the `MemberExpression` node.
+        return this.name.ast(o);
+      }
+
+    };
+
+    Access.prototype.children = ['name'];
+
+    Access.prototype.shouldCache = NO;
+
+    return Access;
+
+  }).call(this);
+
+  //### Index
+
+  // A `[ ... ]` indexed access into an array or object.
+  exports.Index = Index = (function() {
+    class Index extends Base {
+      constructor(index1) {
+        super();
+        this.index = index1;
+      }
+
+      compileToFragments(o) {
+        return [].concat(this.makeCode("["), this.index.compileToFragments(o, LEVEL_PAREN), this.makeCode("]"));
+      }
+
+      shouldCache() {
+        return this.index.shouldCache();
+      }
+
+      astNode(o) {
+        // Babel doesn’t have an AST node for `Index`, but rather just includes
+        // this Index node’s child `index` Identifier node as the `property` of
+        // the `MemberExpression` node. The fact that the `MemberExpression`’s
+        // `property` is an Index means that `computed` is `true` for the
+        // `MemberExpression`.
+        return this.index.ast(o);
+      }
+
+    };
+
+    Index.prototype.children = ['index'];
+
+    return Index;
+
+  }).call(this);
+
+  //### 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 = Range = (function() {
+    class Range extends Base {
+      constructor(from1, to1, tag) {
+        super();
+        this.from = from1;
+        this.to = to1;
+        this.exclusive = tag === 'exclusive';
+        this.equals = this.exclusive ? '' : '=';
+      }
+
+      // 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) {
+        var shouldCache, step;
+        o = merge(o, {
+          top: true
+        });
+        shouldCache = del(o, 'shouldCache');
+        [this.fromC, this.fromVar] = this.cacheToCodeFragments(this.from.cache(o, LEVEL_LIST, shouldCache));
+        [this.toC, this.toVar] = this.cacheToCodeFragments(this.to.cache(o, LEVEL_LIST, shouldCache));
+        if (step = del(o, 'step')) {
+          [this.step, this.stepVar] = this.cacheToCodeFragments(step.cache(o, LEVEL_LIST, shouldCache));
+        }
+        this.fromNum = this.from.isNumber() ? parseNumber(this.fromVar) : null;
+        this.toNum = this.to.isNumber() ? parseNumber(this.toVar) : null;
+        return this.stepNum = (step != null ? step.isNumber() : void 0) ? parseNumber(this.stepVar) : null;
+      }
+
+      // 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) {
+        var cond, condPart, from, gt, idx, idxName, known, lowerBound, lt, namedIndex, ref1, ref2, stepCond, stepNotZero, stepPart, to, upperBound, varPart;
+        if (!this.fromVar) {
+          this.compileVariables(o);
+        }
+        if (!o.index) {
+          return this.compileArray(o);
+        }
+        // Set up endpoints.
+        known = (this.fromNum != null) && (this.toNum != null);
+        idx = del(o, 'index');
+        idxName = del(o, 'name');
+        namedIndex = idxName && idxName !== idx;
+        varPart = known && !namedIndex ? `var ${idx} = ${this.fromC}` : `${idx} = ${this.fromC}`;
+        if (this.toC !== this.toVar) {
+          varPart += `, ${this.toC}`;
+        }
+        if (this.step !== this.stepVar) {
+          varPart += `, ${this.step}`;
+        }
+        [lt, gt] = [`${idx} <${this.equals}`, `${idx} >${this.equals}`];
+        // Generate the condition.
+        [from, to] = [this.fromNum, this.toNum];
+        // Always check if the `step` isn't zero to avoid the infinite loop.
+        stepNotZero = `${(ref1 = this.stepNum) != null ? ref1 : this.stepVar} !== 0`;
+        stepCond = `${(ref2 = this.stepNum) != null ? ref2 : this.stepVar} > 0`;
+        lowerBound = `${lt} ${known ? to : this.toVar}`;
+        upperBound = `${gt} ${known ? to : this.toVar}`;
+        condPart = this.step != null ? (this.stepNum != null) && this.stepNum !== 0 ? this.stepNum > 0 ? `${lowerBound}` : `${upperBound}` : `${stepNotZero} && (${stepCond} ? ${lowerBound} : ${upperBound})` : known ? `${from <= to ? lt : gt} ${to}` : `(${this.fromVar} <= ${this.toVar} ? ${lowerBound} : ${upperBound})`;
+        cond = this.stepVar ? `${this.stepVar} > 0` : `${this.fromVar} <= ${this.toVar}`;
+        // Generate the step.
+        stepPart = this.stepVar ? `${idx} += ${this.stepVar}` : known ? namedIndex ? from <= to ? `++${idx}` : `--${idx}` : from <= to ? `${idx}++` : `${idx}--` : namedIndex ? `${cond} ? ++${idx} : --${idx}` : `${cond} ? ${idx}++ : ${idx}--`;
+        if (namedIndex) {
+          varPart = `${idxName} = ${varPart}`;
+        }
+        if (namedIndex) {
+          stepPart = `${idxName} = ${stepPart}`;
+        }
+        // The final loop body.
+        return [this.makeCode(`${varPart}; ${condPart}; ${stepPart}`)];
+      }
+
+      // When used as a value, expand the range into the equivalent array.
+      compileArray(o) {
+        var args, body, cond, hasArgs, i, idt, known, post, pre, range, ref1, ref2, result, vars;
+        known = (this.fromNum != null) && (this.toNum != null);
+        if (known && Math.abs(this.fromNum - this.toNum) <= 20) {
+          range = (function() {
+            var results1 = [];
+            for (var j = ref1 = this.fromNum, ref2 = this.toNum; ref1 <= ref2 ? j <= ref2 : j >= ref2; ref1 <= ref2 ? j++ : j--){ results1.push(j); }
+            return results1;
+          }).apply(this);
+          if (this.exclusive) {
+            range.pop();
+          }
+          return [this.makeCode(`[${range.join(', ')}]`)];
+        }
+        idt = this.tab + TAB;
+        i = o.scope.freeVariable('i', {
+          single: true,
+          reserve: false
+        });
+        result = o.scope.freeVariable('results', {
+          reserve: false
+        });
+        pre = `\n${idt}var ${result} = [];`;
+        if (known) {
+          o.index = i;
+          body = fragmentsToText(this.compileNode(o));
+        } else {
+          vars = `${i} = ${this.fromC}` + (this.toC !== this.toVar ? `, ${this.toC}` : '');
+          cond = `${this.fromVar} <= ${this.toVar}`;
+          body = `var ${vars}; ${cond} ? ${i} <${this.equals} ${this.toVar} : ${i} >${this.equals} ${this.toVar}; ${cond} ? ${i}++ : ${i}--`;
+        }
+        post = `{ ${result}.push(${i}); }\n${idt}return ${result};\n${o.indent}`;
+        hasArgs = function(node) {
+          return node != null ? node.contains(isLiteralArguments) : void 0;
+        };
+        if (hasArgs(this.from) || hasArgs(this.to)) {
+          args = ', arguments';
+        }
+        return [this.makeCode(`(function() {${pre}\n${idt}for (${body})${post}}).apply(this${args != null ? args : ''})`)];
+      }
+
+      astProperties(o) {
+        var ref1, ref2, ref3, ref4;
+        return {
+          from: (ref1 = (ref2 = this.from) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+          to: (ref3 = (ref4 = this.to) != null ? ref4.ast(o) : void 0) != null ? ref3 : null,
+          exclusive: this.exclusive
+        };
+      }
+
+    };
+
+    Range.prototype.children = ['from', 'to'];
+
+    return Range;
+
+  }).call(this);
+
+  //### 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 = Slice = (function() {
+    class Slice extends Base {
+      constructor(range1) {
+        super();
+        this.range = range1;
+      }
+
+      // 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) {
+        var compiled, compiledText, from, fromCompiled, to, toStr;
+        ({to, from} = this.range);
+        // Handle an expression in the property access, e.g. `a[!b in c..]`.
+        if (from != null ? from.shouldCache() : void 0) {
+          from = new Value(new Parens(from));
+        }
+        if (to != null ? to.shouldCache() : void 0) {
+          to = new Value(new Parens(to));
+        }
+        fromCompiled = (from != null ? from.compileToFragments(o, LEVEL_PAREN) : void 0) || [this.makeCode('0')];
+        if (to) {
+          compiled = to.compileToFragments(o, LEVEL_PAREN);
+          compiledText = fragmentsToText(compiled);
+          if (!(!this.range.exclusive && +compiledText === -1)) {
+            toStr = ', ' + (this.range.exclusive ? compiledText : to.isNumber() ? `${+compiledText + 1}` : (compiled = to.compileToFragments(o, LEVEL_ACCESS), `+${fragmentsToText(compiled)} + 1 || 9e9`));
+          }
+        }
+        return [this.makeCode(`.slice(${fragmentsToText(fromCompiled)}${toStr || ''})`)];
+      }
+
+      astNode(o) {
+        return this.range.ast(o);
+      }
+
+    };
+
+    Slice.prototype.children = ['range'];
+
+    return Slice;
+
+  }).call(this);
+
+  //### Obj
+
+  // An object literal, nothing fancy.
+  exports.Obj = Obj = (function() {
+    class Obj extends Base {
+      constructor(props, generated = false) {
+        super();
+        this.generated = generated;
+        this.objects = this.properties = props || [];
+      }
+
+      isAssignable(opts) {
+        var j, len1, message, prop, ref1, ref2;
+        ref1 = this.properties;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          prop = ref1[j];
+          // Check for reserved words.
+          message = isUnassignable(prop.unwrapAll().value);
+          if (message) {
+            prop.error(message);
+          }
+          if (prop instanceof Assign && prop.context === 'object' && !(((ref2 = prop.value) != null ? ref2.base : void 0) instanceof Arr)) {
+            prop = prop.value;
+          }
+          if (!prop.isAssignable(opts)) {
+            return false;
+          }
+        }
+        return true;
+      }
+
+      shouldCache() {
+        return !this.isAssignable();
+      }
+
+      // Check if object contains splat.
+      hasSplat() {
+        var j, len1, prop, ref1;
+        ref1 = this.properties;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          prop = ref1[j];
+          if (prop instanceof Splat) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      // Move rest property to the end of the list.
+      // `{a, rest..., b} = obj` -> `{a, b, rest...} = obj`
+      // `foo = ({a, rest..., b}) ->` -> `foo = {a, b, rest...}) ->`
+      reorderProperties() {
+        var props, splatProp, splatProps;
+        props = this.properties;
+        splatProps = this.getAndCheckSplatProps();
+        splatProp = props.splice(splatProps[0], 1);
+        return this.objects = this.properties = [].concat(props, splatProp);
+      }
+
+      compileNode(o) {
+        var answer, i, idt, indent, isCompact, j, join, k, key, l, lastNode, len1, len2, len3, node, prop, props, ref1, value;
+        if (this.hasSplat() && this.lhs) {
+          this.reorderProperties();
+        }
+        props = this.properties;
+        if (this.generated) {
+          for (j = 0, len1 = props.length; j < len1; j++) {
+            node = props[j];
+            if (node instanceof Value) {
+              node.error('cannot have an implicit value in an implicit object');
+            }
+          }
+        }
+        idt = o.indent += TAB;
+        lastNode = this.lastNode(this.properties);
+        // If this object is the left-hand side of an assignment, all its children
+        // are too.
+        this.propagateLhs();
+        isCompact = true;
+        ref1 = this.properties;
+        for (k = 0, len2 = ref1.length; k < len2; k++) {
+          prop = ref1[k];
+          if (prop instanceof Assign && prop.context === 'object') {
+            isCompact = false;
+          }
+        }
+        answer = [];
+        answer.push(this.makeCode(isCompact ? '' : '\n'));
+        for (i = l = 0, len3 = props.length; l < len3; i = ++l) {
+          prop = props[i];
+          join = i === props.length - 1 ? '' : isCompact ? ', ' : prop === lastNode ? '\n' : ',\n';
+          indent = isCompact ? '' : idt;
+          key = prop instanceof Assign && prop.context === 'object' ? prop.variable : prop instanceof Assign ? (!this.lhs ? prop.operatorToken.error(`unexpected ${prop.operatorToken.value}`) : void 0, prop.variable) : prop;
+          if (key instanceof Value && key.hasProperties()) {
+            if (prop.context === 'object' || !key.this) {
+              key.error('invalid object key');
+            }
+            key = key.properties[0].name;
+            prop = new Assign(key, prop, 'object');
+          }
+          if (key === prop) {
+            if (prop.shouldCache()) {
+              [key, value] = prop.base.cache(o);
+              if (key instanceof IdentifierLiteral) {
+                key = new PropertyName(key.value);
+              }
+              prop = new Assign(key, value, 'object');
+            } else if (key instanceof Value && key.base instanceof ComputedPropertyName) {
+              // `{ [foo()] }` output as `{ [ref = foo()]: ref }`.
+              if (prop.base.value.shouldCache()) {
+                [key, value] = prop.base.value.cache(o);
+                if (key instanceof IdentifierLiteral) {
+                  key = new ComputedPropertyName(key.value);
+                }
+                prop = new Assign(key, value, 'object');
+              } else {
+                // `{ [expression] }` output as `{ [expression]: expression }`.
+                prop = new Assign(key, prop.base.value, 'object');
+              }
+            } else if (!(typeof prop.bareLiteral === "function" ? prop.bareLiteral(IdentifierLiteral) : void 0) && !(prop instanceof Splat)) {
+              prop = new Assign(prop, prop, 'object');
+            }
+          }
+          if (indent) {
+            answer.push(this.makeCode(indent));
+          }
+          answer.push(...prop.compileToFragments(o, LEVEL_TOP));
+          if (join) {
+            answer.push(this.makeCode(join));
+          }
+        }
+        answer.push(this.makeCode(isCompact ? '' : `\n${this.tab}`));
+        answer = this.wrapInBraces(answer);
+        if (this.front) {
+          return this.wrapInParentheses(answer);
+        } else {
+          return answer;
+        }
+      }
+
+      getAndCheckSplatProps() {
+        var i, prop, props, splatProps;
+        if (!(this.hasSplat() && this.lhs)) {
+          return;
+        }
+        props = this.properties;
+        splatProps = (function() {
+          var j, len1, results1;
+          results1 = [];
+          for (i = j = 0, len1 = props.length; j < len1; i = ++j) {
+            prop = props[i];
+            if (prop instanceof Splat) {
+              results1.push(i);
+            }
+          }
+          return results1;
+        })();
+        if ((splatProps != null ? splatProps.length : void 0) > 1) {
+          props[splatProps[1]].error("multiple spread elements are disallowed");
+        }
+        return splatProps;
+      }
+
+      assigns(name) {
+        var j, len1, prop, ref1;
+        ref1 = this.properties;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          prop = ref1[j];
+          if (prop.assigns(name)) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      eachName(iterator) {
+        var j, len1, prop, ref1, results1;
+        ref1 = this.properties;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          prop = ref1[j];
+          if (prop instanceof Assign && prop.context === 'object') {
+            prop = prop.value;
+          }
+          prop = prop.unwrapAll();
+          if (prop.eachName != null) {
+            results1.push(prop.eachName(iterator));
+          } else {
+            results1.push(void 0);
+          }
+        }
+        return results1;
+      }
+
+      // Convert “bare” properties to `ObjectProperty`s (or `Splat`s).
+      expandProperty(property) {
+        var context, key, operatorToken, variable;
+        ({variable, context, operatorToken} = property);
+        key = property instanceof Assign && context === 'object' ? variable : property instanceof Assign ? (!this.lhs ? operatorToken.error(`unexpected ${operatorToken.value}`) : void 0, variable) : property;
+        if (key instanceof Value && key.hasProperties()) {
+          if (!(context !== 'object' && key.this)) {
+            key.error('invalid object key');
+          }
+          if (property instanceof Assign) {
+            return new ObjectProperty({
+              fromAssign: property
+            });
+          } else {
+            return new ObjectProperty({
+              key: property
+            });
+          }
+        }
+        if (key !== property) {
+          return new ObjectProperty({
+            fromAssign: property
+          });
+        }
+        if (property instanceof Splat) {
+          return property;
+        }
+        return new ObjectProperty({
+          key: property
+        });
+      }
+
+      expandProperties() {
+        var j, len1, property, ref1, results1;
+        ref1 = this.properties;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          property = ref1[j];
+          results1.push(this.expandProperty(property));
+        }
+        return results1;
+      }
+
+      propagateLhs(setLhs) {
+        var j, len1, property, ref1, results1, unwrappedValue, value;
+        if (setLhs) {
+          this.lhs = true;
+        }
+        if (!this.lhs) {
+          return;
+        }
+        ref1 = this.properties;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          property = ref1[j];
+          if (property instanceof Assign && property.context === 'object') {
+            ({value} = property);
+            unwrappedValue = value.unwrapAll();
+            if (unwrappedValue instanceof Arr || unwrappedValue instanceof Obj) {
+              results1.push(unwrappedValue.propagateLhs(true));
+            } else if (unwrappedValue instanceof Assign) {
+              results1.push(unwrappedValue.nestedLhs = true);
+            } else {
+              results1.push(void 0);
+            }
+          } else if (property instanceof Assign) {
+            // Shorthand property with default, e.g. `{a = 1} = b`.
+            results1.push(property.nestedLhs = true);
+          } else if (property instanceof Splat) {
+            results1.push(property.propagateLhs(true));
+          } else {
+            results1.push(void 0);
+          }
+        }
+        return results1;
+      }
+
+      astNode(o) {
+        this.getAndCheckSplatProps();
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.lhs) {
+          return 'ObjectPattern';
+        } else {
+          return 'ObjectExpression';
+        }
+      }
+
+      astProperties(o) {
+        var property;
+        return {
+          implicit: !!this.generated,
+          properties: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.expandProperties();
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              property = ref1[j];
+              results1.push(property.ast(o));
+            }
+            return results1;
+          }).call(this)
+        };
+      }
+
+    };
+
+    Obj.prototype.children = ['properties'];
+
+    return Obj;
+
+  }).call(this);
+
+  exports.ObjectProperty = ObjectProperty = class ObjectProperty extends Base {
+    constructor({key, fromAssign}) {
+      var context, value;
+      super();
+      if (fromAssign) {
+        ({
+          variable: this.key,
+          value,
+          context
+        } = fromAssign);
+        if (context === 'object') {
+          // All non-shorthand properties (i.e. includes `:`).
+          this.value = value;
+        } else {
+          // Left-hand-side shorthand with default e.g. `{a = 1} = b`.
+          this.value = fromAssign;
+          this.shorthand = true;
+        }
+        this.locationData = fromAssign.locationData;
+      } else {
+        // Shorthand without default e.g. `{a}` or `{@a}` or `{[a]}`.
+        this.key = key;
+        this.shorthand = true;
+        this.locationData = key.locationData;
+      }
+    }
+
+    astProperties(o) {
+      var isComputedPropertyName, keyAst, ref1, ref2;
+      isComputedPropertyName = (this.key instanceof Value && this.key.base instanceof ComputedPropertyName) || this.key.unwrap() instanceof StringWithInterpolations;
+      keyAst = this.key.ast(o, LEVEL_LIST);
+      return {
+        key: (keyAst != null ? keyAst.declaration : void 0) ? Object.assign({}, keyAst, {
+          declaration: false
+        }) : keyAst,
+        value: (ref1 = (ref2 = this.value) != null ? ref2.ast(o, LEVEL_LIST) : void 0) != null ? ref1 : keyAst,
+        shorthand: !!this.shorthand,
+        computed: !!isComputedPropertyName,
+        method: false
+      };
+    }
+
+  };
+
+  //### Arr
+
+  // An array literal.
+  exports.Arr = Arr = (function() {
+    class Arr extends Base {
+      constructor(objs, lhs1 = false) {
+        super();
+        this.lhs = lhs1;
+        this.objects = objs || [];
+        this.propagateLhs();
+      }
+
+      hasElision() {
+        var j, len1, obj, ref1;
+        ref1 = this.objects;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          obj = ref1[j];
+          if (obj instanceof Elision) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      isAssignable(opts) {
+        var allowEmptyArray, allowExpansion, allowNontrailingSplat, i, j, len1, obj, ref1;
+        ({allowExpansion, allowNontrailingSplat, allowEmptyArray = false} = opts != null ? opts : {});
+        if (!this.objects.length) {
+          return allowEmptyArray;
+        }
+        ref1 = this.objects;
+        for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+          obj = ref1[i];
+          if (!allowNontrailingSplat && obj instanceof Splat && i + 1 !== this.objects.length) {
+            return false;
+          }
+          if (!((allowExpansion && obj instanceof Expansion) || (obj.isAssignable(opts) && (!obj.isAtomic || obj.isAtomic())))) {
+            return false;
+          }
+        }
+        return true;
+      }
+
+      shouldCache() {
+        return !this.isAssignable();
+      }
+
+      compileNode(o) {
+        var answer, compiledObjs, fragment, fragmentIndex, fragmentIsElision, fragments, includesLineCommentsOnNonFirstElement, index, j, k, l, len1, len2, len3, len4, len5, obj, objIndex, olen, p, passedElision, q, ref1, ref2, unwrappedObj;
+        if (!this.objects.length) {
+          return [this.makeCode('[]')];
+        }
+        o.indent += TAB;
+        fragmentIsElision = function([fragment]) {
+          return fragment.type === 'Elision' && fragment.code.trim() === ',';
+        };
+        // Detect if `Elision`s at the beginning of the array are processed (e.g. [, , , a]).
+        passedElision = false;
+        answer = [];
+        ref1 = this.objects;
+        for (objIndex = j = 0, len1 = ref1.length; j < len1; objIndex = ++j) {
+          obj = ref1[objIndex];
+          unwrappedObj = obj.unwrapAll();
+          // Let `compileCommentFragments` know to intersperse block comments
+          // into the fragments created when compiling this array.
+          if (unwrappedObj.comments && unwrappedObj.comments.filter(function(comment) {
+            return !comment.here;
+          }).length === 0) {
+            unwrappedObj.includeCommentFragments = YES;
+          }
+        }
+        compiledObjs = (function() {
+          var k, len2, ref2, results1;
+          ref2 = this.objects;
+          results1 = [];
+          for (k = 0, len2 = ref2.length; k < len2; k++) {
+            obj = ref2[k];
+            results1.push(obj.compileToFragments(o, LEVEL_LIST));
+          }
+          return results1;
+        }).call(this);
+        olen = compiledObjs.length;
+        // If `compiledObjs` includes newlines, we will output this as a multiline
+        // array (i.e. with a newline and indentation after the `[`). If an element
+        // contains line comments, that should also trigger multiline output since
+        // by definition line comments will introduce newlines into our output.
+        // The exception is if only the first element has line comments; in that
+        // case, output as the compact form if we otherwise would have, so that the
+        // first element’s line comments get output before or after the array.
+        includesLineCommentsOnNonFirstElement = false;
+        for (index = k = 0, len2 = compiledObjs.length; k < len2; index = ++k) {
+          fragments = compiledObjs[index];
+          for (l = 0, len3 = fragments.length; l < len3; l++) {
+            fragment = fragments[l];
+            if (fragment.isHereComment) {
+              fragment.code = fragment.code.trim();
+            } else if (index !== 0 && includesLineCommentsOnNonFirstElement === false && hasLineComments(fragment)) {
+              includesLineCommentsOnNonFirstElement = true;
+            }
+          }
+          // Add ', ' if all `Elisions` from the beginning of the array are processed (e.g. [, , , a]) and
+          // element isn't `Elision` or last element is `Elision` (e.g. [a,,b,,])
+          if (index !== 0 && passedElision && (!fragmentIsElision(fragments) || index === olen - 1)) {
+            answer.push(this.makeCode(', '));
+          }
+          passedElision = passedElision || !fragmentIsElision(fragments);
+          answer.push(...fragments);
+        }
+        if (includesLineCommentsOnNonFirstElement || indexOf.call(fragmentsToText(answer), '\n') >= 0) {
+          for (fragmentIndex = p = 0, len4 = answer.length; p < len4; fragmentIndex = ++p) {
+            fragment = answer[fragmentIndex];
+            if (fragment.isHereComment) {
+              fragment.code = `${multident(fragment.code, o.indent, false)}\n${o.indent}`;
+            } else if (fragment.code === ', ' && !(fragment != null ? fragment.isElision : void 0) && ((ref2 = fragment.type) !== 'StringLiteral' && ref2 !== 'StringWithInterpolations')) {
+              fragment.code = `,\n${o.indent}`;
+            }
+          }
+          answer.unshift(this.makeCode(`[\n${o.indent}`));
+          answer.push(this.makeCode(`\n${this.tab}]`));
+        } else {
+          for (q = 0, len5 = answer.length; q < len5; q++) {
+            fragment = answer[q];
+            if (fragment.isHereComment) {
+              fragment.code = `${fragment.code} `;
+            }
+          }
+          answer.unshift(this.makeCode('['));
+          answer.push(this.makeCode(']'));
+        }
+        return answer;
+      }
+
+      assigns(name) {
+        var j, len1, obj, ref1;
+        ref1 = this.objects;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          obj = ref1[j];
+          if (obj.assigns(name)) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      eachName(iterator) {
+        var j, len1, obj, ref1, results1;
+        ref1 = this.objects;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          obj = ref1[j];
+          obj = obj.unwrapAll();
+          results1.push(obj.eachName(iterator));
+        }
+        return results1;
+      }
+
+      // If this array is the left-hand side of an assignment, all its children
+      // are too.
+      propagateLhs(setLhs) {
+        var j, len1, object, ref1, results1, unwrappedObject;
+        if (setLhs) {
+          this.lhs = true;
+        }
+        if (!this.lhs) {
+          return;
+        }
+        ref1 = this.objects;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          object = ref1[j];
+          if (object instanceof Splat || object instanceof Expansion) {
+            object.lhs = true;
+          }
+          unwrappedObject = object.unwrapAll();
+          if (unwrappedObject instanceof Arr || unwrappedObject instanceof Obj) {
+            results1.push(unwrappedObject.propagateLhs(true));
+          } else if (unwrappedObject instanceof Assign) {
+            results1.push(unwrappedObject.nestedLhs = true);
+          } else {
+            results1.push(void 0);
+          }
+        }
+        return results1;
+      }
+
+      astType() {
+        if (this.lhs) {
+          return 'ArrayPattern';
+        } else {
+          return 'ArrayExpression';
+        }
+      }
+
+      astProperties(o) {
+        var object;
+        return {
+          elements: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.objects;
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              object = ref1[j];
+              results1.push(object.ast(o, LEVEL_LIST));
+            }
+            return results1;
+          }).call(this)
+        };
+      }
+
+    };
+
+    Arr.prototype.children = ['objects'];
+
+    return Arr;
+
+  }).call(this);
+
+  //### Class
+
+  // The CoffeeScript class definition.
+  // Initialize a **Class** with its name, an optional superclass, and a body.
+  exports.Class = Class = (function() {
+    class Class extends Base {
+      constructor(variable1, parent1, body1) {
+        super();
+        this.variable = variable1;
+        this.parent = parent1;
+        this.body = body1;
+        if (this.body == null) {
+          this.body = new Block();
+          this.hasGeneratedBody = true;
+        }
+      }
+
+      compileNode(o) {
+        var executableBody, node, parentName;
+        this.name = this.determineName();
+        executableBody = this.walkBody(o);
+        if (this.parent instanceof Value && !this.parent.hasProperties()) {
+          // Special handling to allow `class expr.A extends A` declarations
+          parentName = this.parent.base.value;
+        }
+        this.hasNameClash = (this.name != null) && this.name === parentName;
+        node = this;
+        if (executableBody || this.hasNameClash) {
+          node = new ExecutableClassBody(node, executableBody);
+        } else if ((this.name == null) && o.level === LEVEL_TOP) {
+          // Anonymous classes are only valid in expressions
+          node = new Parens(node);
+        }
+        if (this.boundMethods.length && this.parent) {
+          if (this.variable == null) {
+            this.variable = new IdentifierLiteral(o.scope.freeVariable('_class'));
+          }
+          if (this.variableRef == null) {
+            [this.variable, this.variableRef] = this.variable.cache(o);
+          }
+        }
+        if (this.variable) {
+          node = new Assign(this.variable, node, null, {moduleDeclaration: this.moduleDeclaration});
+        }
+        this.compileNode = this.compileClassDeclaration;
+        try {
+          return node.compileToFragments(o);
+        } finally {
+          delete this.compileNode;
+        }
+      }
+
+      compileClassDeclaration(o) {
+        var ref1, ref2, result;
+        if (this.externalCtor || this.boundMethods.length) {
+          if (this.ctor == null) {
+            this.ctor = this.makeDefaultConstructor();
+          }
+        }
+        if ((ref1 = this.ctor) != null) {
+          ref1.noReturn = true;
+        }
+        if (this.boundMethods.length) {
+          this.proxyBoundMethods();
+        }
+        o.indent += TAB;
+        result = [];
+        result.push(this.makeCode("class "));
+        if (this.name) {
+          result.push(this.makeCode(this.name));
+        }
+        if (((ref2 = this.variable) != null ? ref2.comments : void 0) != null) {
+          this.compileCommentFragments(o, this.variable, result);
+        }
+        if (this.name) {
+          result.push(this.makeCode(' '));
+        }
+        if (this.parent) {
+          result.push(this.makeCode('extends '), ...this.parent.compileToFragments(o), this.makeCode(' '));
+        }
+        result.push(this.makeCode('{'));
+        if (!this.body.isEmpty()) {
+          this.body.spaced = true;
+          result.push(this.makeCode('\n'));
+          result.push(...this.body.compileToFragments(o, LEVEL_TOP));
+          result.push(this.makeCode(`\n${this.tab}`));
+        }
+        result.push(this.makeCode('}'));
+        return result;
+      }
+
+      // Figure out the appropriate name for this class
+      determineName() {
+        var message, name, node, ref1, tail;
+        if (!this.variable) {
+          return null;
+        }
+        ref1 = this.variable.properties, [tail] = slice1.call(ref1, -1);
+        node = tail ? tail instanceof Access && tail.name : this.variable.base;
+        if (!(node instanceof IdentifierLiteral || node instanceof PropertyName)) {
+          return null;
+        }
+        name = node.value;
+        if (!tail) {
+          message = isUnassignable(name);
+          if (message) {
+            this.variable.error(message);
+          }
+        }
+        if (indexOf.call(JS_FORBIDDEN, name) >= 0) {
+          return `_${name}`;
+        } else {
+          return name;
+        }
+      }
+
+      walkBody(o) {
+        var assign, end, executableBody, expression, expressions, exprs, i, initializer, initializerExpression, j, k, len1, len2, method, properties, pushSlice, ref1, start;
+        this.ctor = null;
+        this.boundMethods = [];
+        executableBody = null;
+        initializer = [];
+        ({expressions} = this.body);
+        i = 0;
+        ref1 = expressions.slice();
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          expression = ref1[j];
+          if (expression instanceof Value && expression.isObject(true)) {
+            ({properties} = expression.base);
+            exprs = [];
+            end = 0;
+            start = 0;
+            pushSlice = function() {
+              if (end > start) {
+                return exprs.push(new Value(new Obj(properties.slice(start, end), true)));
+              }
+            };
+            while (assign = properties[end]) {
+              if (initializerExpression = this.addInitializerExpression(assign, o)) {
+                pushSlice();
+                exprs.push(initializerExpression);
+                initializer.push(initializerExpression);
+                start = end + 1;
+              }
+              end++;
+            }
+            pushSlice();
+            splice.apply(expressions, [i, i - i + 1].concat(exprs)), exprs;
+            i += exprs.length;
+          } else {
+            if (initializerExpression = this.addInitializerExpression(expression, o)) {
+              initializer.push(initializerExpression);
+              expressions[i] = initializerExpression;
+            }
+            i += 1;
+          }
+        }
+        for (k = 0, len2 = initializer.length; k < len2; k++) {
+          method = initializer[k];
+          if (method instanceof Code) {
+            if (method.ctor) {
+              if (this.ctor) {
+                method.error('Cannot define more than one constructor in a class');
+              }
+              this.ctor = method;
+            } else if (method.isStatic && method.bound) {
+              method.context = this.name;
+            } else if (method.bound) {
+              this.boundMethods.push(method);
+            }
+          }
+        }
+        if (!o.compiling) {
+          return;
+        }
+        if (initializer.length !== expressions.length) {
+          this.body.expressions = (function() {
+            var l, len3, results1;
+            results1 = [];
+            for (l = 0, len3 = initializer.length; l < len3; l++) {
+              expression = initializer[l];
+              results1.push(expression.hoist());
+            }
+            return results1;
+          })();
+          return new Block(expressions);
+        }
+      }
+
+      // Add an expression to the class initializer
+
+      // This is the key method for determining whether an expression in a class
+      // body should appear in the initializer or the executable body. If the given
+      // `node` is valid in a class body the method will return a (new, modified,
+      // or identical) node for inclusion in the class initializer, otherwise
+      // nothing will be returned and the node will appear in the executable body.
+
+      // At time of writing, only methods (instance and static) are valid in ES
+      // class initializers. As new ES class features (such as class fields) reach
+      // Stage 4, this method will need to be updated to support them. We
+      // additionally allow `PassthroughLiteral`s (backticked expressions) in the
+      // initializer as an escape hatch for ES features that are not implemented
+      // (e.g. getters and setters defined via the `get` and `set` keywords as
+      // opposed to the `Object.defineProperty` method).
+      addInitializerExpression(node, o) {
+        if (node.unwrapAll() instanceof PassthroughLiteral) {
+          return node;
+        } else if (this.validInitializerMethod(node)) {
+          return this.addInitializerMethod(node);
+        } else if (!o.compiling && this.validClassProperty(node)) {
+          return this.addClassProperty(node);
+        } else if (!o.compiling && this.validClassPrototypeProperty(node)) {
+          return this.addClassPrototypeProperty(node);
+        } else {
+          return null;
+        }
+      }
+
+      // Checks if the given node is a valid ES class initializer method.
+      validInitializerMethod(node) {
+        if (!(node instanceof Assign && node.value instanceof Code)) {
+          return false;
+        }
+        if (node.context === 'object' && !node.variable.hasProperties()) {
+          return true;
+        }
+        return node.variable.looksStatic(this.name) && (this.name || !node.value.bound);
+      }
+
+      // Returns a configured class initializer method
+      addInitializerMethod(assign) {
+        var isConstructor, method, methodName, operatorToken, variable;
+        ({
+          variable,
+          value: method,
+          operatorToken
+        } = assign);
+        method.isMethod = true;
+        method.isStatic = variable.looksStatic(this.name);
+        if (method.isStatic) {
+          method.name = variable.properties[0];
+        } else {
+          methodName = variable.base;
+          method.name = new (methodName.shouldCache() ? Index : Access)(methodName);
+          method.name.updateLocationDataIfMissing(methodName.locationData);
+          isConstructor = methodName instanceof StringLiteral ? methodName.originalValue === 'constructor' : methodName.value === 'constructor';
+          if (isConstructor) {
+            method.ctor = (this.parent ? 'derived' : 'base');
+          }
+          if (method.bound && method.ctor) {
+            method.error('Cannot define a constructor as a bound (fat arrow) function');
+          }
+        }
+        method.operatorToken = operatorToken;
+        return method;
+      }
+
+      validClassProperty(node) {
+        if (!(node instanceof Assign)) {
+          return false;
+        }
+        return node.variable.looksStatic(this.name);
+      }
+
+      addClassProperty(assign) {
+        var operatorToken, staticClassName, value, variable;
+        ({variable, value, operatorToken} = assign);
+        ({staticClassName} = variable.looksStatic(this.name));
+        return new ClassProperty({
+          name: variable.properties[0],
+          isStatic: true,
+          staticClassName,
+          value,
+          operatorToken
+        }).withLocationDataFrom(assign);
+      }
+
+      validClassPrototypeProperty(node) {
+        if (!(node instanceof Assign)) {
+          return false;
+        }
+        return node.context === 'object' && !node.variable.hasProperties();
+      }
+
+      addClassPrototypeProperty(assign) {
+        var value, variable;
+        ({variable, value} = assign);
+        return new ClassPrototypeProperty({
+          name: variable.base,
+          value
+        }).withLocationDataFrom(assign);
+      }
+
+      makeDefaultConstructor() {
+        var applyArgs, applyCtor, ctor;
+        ctor = this.addInitializerMethod(new Assign(new Value(new PropertyName('constructor')), new Code()));
+        this.body.unshift(ctor);
+        if (this.parent) {
+          ctor.body.push(new SuperCall(new Super(), [new Splat(new IdentifierLiteral('arguments'))]));
+        }
+        if (this.externalCtor) {
+          applyCtor = new Value(this.externalCtor, [new Access(new PropertyName('apply'))]);
+          applyArgs = [new ThisLiteral(), new IdentifierLiteral('arguments')];
+          ctor.body.push(new Call(applyCtor, applyArgs));
+          ctor.body.makeReturn();
+        }
+        return ctor;
+      }
+
+      proxyBoundMethods() {
+        var method, name;
+        this.ctor.thisAssignments = (function() {
+          var j, len1, ref1, results1;
+          ref1 = this.boundMethods;
+          results1 = [];
+          for (j = 0, len1 = ref1.length; j < len1; j++) {
+            method = ref1[j];
+            if (this.parent) {
+              method.classVariable = this.variableRef;
+            }
+            name = new Value(new ThisLiteral(), [method.name]);
+            results1.push(new Assign(name, new Call(new Value(name, [new Access(new PropertyName('bind'))]), [new ThisLiteral()])));
+          }
+          return results1;
+        }).call(this);
+        return null;
+      }
+
+      declareName(o) {
+        var alreadyDeclared, name, ref1;
+        if (!((name = (ref1 = this.variable) != null ? ref1.unwrap() : void 0) instanceof IdentifierLiteral)) {
+          return;
+        }
+        alreadyDeclared = o.scope.find(name.value);
+        return name.isDeclaration = !alreadyDeclared;
+      }
+
+      isStatementAst() {
+        return true;
+      }
+
+      astNode(o) {
+        var argumentsNode, jumpNode, ref1;
+        if (jumpNode = this.body.jumps()) {
+          jumpNode.error('Class bodies cannot contain pure statements');
+        }
+        if (argumentsNode = this.body.contains(isLiteralArguments)) {
+          argumentsNode.error("Class bodies shouldn't reference arguments");
+        }
+        this.declareName(o);
+        this.name = this.determineName();
+        this.body.isClassBody = true;
+        if (this.hasGeneratedBody) {
+          this.body.locationData = zeroWidthLocationDataFromEndLocation(this.locationData);
+        }
+        this.walkBody(o);
+        sniffDirectives(this.body.expressions);
+        if ((ref1 = this.ctor) != null) {
+          ref1.noReturn = true;
+        }
+        return super.astNode(o);
+      }
+
+      astType(o) {
+        if (o.level === LEVEL_TOP) {
+          return 'ClassDeclaration';
+        } else {
+          return 'ClassExpression';
+        }
+      }
+
+      astProperties(o) {
+        var ref1, ref2, ref3, ref4;
+        return {
+          id: (ref1 = (ref2 = this.variable) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+          superClass: (ref3 = (ref4 = this.parent) != null ? ref4.ast(o, LEVEL_PAREN) : void 0) != null ? ref3 : null,
+          body: this.body.ast(o, LEVEL_TOP)
+        };
+      }
+
+    };
+
+    Class.prototype.children = ['variable', 'parent', 'body'];
+
+    return Class;
+
+  }).call(this);
+
+  exports.ExecutableClassBody = ExecutableClassBody = (function() {
+    class ExecutableClassBody extends Base {
+      constructor(_class, body1 = new Block()) {
+        super();
+        this.class = _class;
+        this.body = body1;
+      }
+
+      compileNode(o) {
+        var args, argumentsNode, directives, externalCtor, ident, jumpNode, klass, params, parent, ref1, wrapper;
+        if (jumpNode = this.body.jumps()) {
+          jumpNode.error('Class bodies cannot contain pure statements');
+        }
+        if (argumentsNode = this.body.contains(isLiteralArguments)) {
+          argumentsNode.error("Class bodies shouldn't reference arguments");
+        }
+        params = [];
+        args = [new ThisLiteral()];
+        wrapper = new Code(params, this.body);
+        klass = new Parens(new Call(new Value(wrapper, [new Access(new PropertyName('call'))]), args));
+        this.body.spaced = true;
+        o.classScope = wrapper.makeScope(o.scope);
+        this.name = (ref1 = this.class.name) != null ? ref1 : o.classScope.freeVariable(this.defaultClassVariableName);
+        ident = new IdentifierLiteral(this.name);
+        directives = this.walkBody();
+        this.setContext();
+        if (this.class.hasNameClash) {
+          parent = new IdentifierLiteral(o.classScope.freeVariable('superClass'));
+          wrapper.params.push(new Param(parent));
+          args.push(this.class.parent);
+          this.class.parent = parent;
+        }
+        if (this.externalCtor) {
+          externalCtor = new IdentifierLiteral(o.classScope.freeVariable('ctor', {
+            reserve: false
+          }));
+          this.class.externalCtor = externalCtor;
+          this.externalCtor.variable.base = externalCtor;
+        }
+        if (this.name !== this.class.name) {
+          this.body.expressions.unshift(new Assign(new IdentifierLiteral(this.name), this.class));
+        } else {
+          this.body.expressions.unshift(this.class);
+        }
+        this.body.expressions.unshift(...directives);
+        this.body.push(ident);
+        return klass.compileToFragments(o);
+      }
+
+      // Traverse the class's children and:
+      // - Hoist valid ES properties into `@properties`
+      // - Hoist static assignments into `@properties`
+      // - Convert invalid ES properties into class or prototype assignments
+      walkBody() {
+        var directives, expr, index;
+        directives = [];
+        index = 0;
+        while (expr = this.body.expressions[index]) {
+          if (!(expr instanceof Value && expr.isString())) {
+            break;
+          }
+          if (expr.hoisted) {
+            index++;
+          } else {
+            directives.push(...this.body.expressions.splice(index, 1));
+          }
+        }
+        this.traverseChildren(false, (child) => {
+          var cont, i, j, len1, node, ref1;
+          if (child instanceof Class || child instanceof HoistTarget) {
+            return false;
+          }
+          cont = true;
+          if (child instanceof Block) {
+            ref1 = child.expressions;
+            for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+              node = ref1[i];
+              if (node instanceof Value && node.isObject(true)) {
+                cont = false;
+                child.expressions[i] = this.addProperties(node.base.properties);
+              } else if (node instanceof Assign && node.variable.looksStatic(this.name)) {
+                node.value.isStatic = true;
+              }
+            }
+            child.expressions = flatten(child.expressions);
+          }
+          return cont;
+        });
+        return directives;
+      }
+
+      setContext() {
+        return this.body.traverseChildren(false, (node) => {
+          if (node instanceof ThisLiteral) {
+            return node.value = this.name;
+          } else if (node instanceof Code && node.bound && (node.isStatic || !node.name)) {
+            return node.context = this.name;
+          }
+        });
+      }
+
+      // Make class/prototype assignments for invalid ES properties
+      addProperties(assigns) {
+        var assign, base, name, prototype, result, value, variable;
+        result = (function() {
+          var j, len1, results1;
+          results1 = [];
+          for (j = 0, len1 = assigns.length; j < len1; j++) {
+            assign = assigns[j];
+            variable = assign.variable;
+            base = variable != null ? variable.base : void 0;
+            value = assign.value;
+            delete assign.context;
+            if (base.value === 'constructor') {
+              if (value instanceof Code) {
+                base.error('constructors must be defined at the top level of a class body');
+              }
+              // The class scope is not available yet, so return the assignment to update later
+              assign = this.externalCtor = new Assign(new Value(), value);
+            } else if (!assign.variable.this) {
+              name = base instanceof ComputedPropertyName ? new Index(base.value) : new (base.shouldCache() ? Index : Access)(base);
+              prototype = new Access(new PropertyName('prototype'));
+              variable = new Value(new ThisLiteral(), [prototype, name]);
+              assign.variable = variable;
+            } else if (assign.value instanceof Code) {
+              assign.value.isStatic = true;
+            }
+            results1.push(assign);
+          }
+          return results1;
+        }).call(this);
+        return compact(result);
+      }
+
+    };
+
+    ExecutableClassBody.prototype.children = ['class', 'body'];
+
+    ExecutableClassBody.prototype.defaultClassVariableName = '_Class';
+
+    return ExecutableClassBody;
+
+  }).call(this);
+
+  exports.ClassProperty = ClassProperty = (function() {
+    class ClassProperty extends Base {
+      constructor({
+          name: name1,
+          isStatic,
+          staticClassName: staticClassName1,
+          value: value1,
+          operatorToken: operatorToken1
+        }) {
+        super();
+        this.name = name1;
+        this.isStatic = isStatic;
+        this.staticClassName = staticClassName1;
+        this.value = value1;
+        this.operatorToken = operatorToken1;
+      }
+
+      astProperties(o) {
+        var ref1, ref2, ref3, ref4;
+        return {
+          key: this.name.ast(o, LEVEL_LIST),
+          value: this.value.ast(o, LEVEL_LIST),
+          static: !!this.isStatic,
+          computed: this.name instanceof Index || this.name instanceof ComputedPropertyName,
+          operator: (ref1 = (ref2 = this.operatorToken) != null ? ref2.value : void 0) != null ? ref1 : '=',
+          staticClassName: (ref3 = (ref4 = this.staticClassName) != null ? ref4.ast(o) : void 0) != null ? ref3 : null
+        };
+      }
+
+    };
+
+    ClassProperty.prototype.children = ['name', 'value', 'staticClassName'];
+
+    ClassProperty.prototype.isStatement = YES;
+
+    return ClassProperty;
+
+  }).call(this);
+
+  exports.ClassPrototypeProperty = ClassPrototypeProperty = (function() {
+    class ClassPrototypeProperty extends Base {
+      constructor({
+          name: name1,
+          value: value1
+        }) {
+        super();
+        this.name = name1;
+        this.value = value1;
+      }
+
+      astProperties(o) {
+        return {
+          key: this.name.ast(o, LEVEL_LIST),
+          value: this.value.ast(o, LEVEL_LIST),
+          computed: this.name instanceof ComputedPropertyName || this.name instanceof StringWithInterpolations
+        };
+      }
+
+    };
+
+    ClassPrototypeProperty.prototype.children = ['name', 'value'];
+
+    ClassPrototypeProperty.prototype.isStatement = YES;
+
+    return ClassPrototypeProperty;
+
+  }).call(this);
+
+  //### Import and Export
+  exports.ModuleDeclaration = ModuleDeclaration = (function() {
+    class ModuleDeclaration extends Base {
+      constructor(clause, source1, assertions) {
+        super();
+        this.clause = clause;
+        this.source = source1;
+        this.assertions = assertions;
+        this.checkSource();
+      }
+
+      checkSource() {
+        if ((this.source != null) && this.source instanceof StringWithInterpolations) {
+          return this.source.error('the name of the module to be imported from must be an uninterpolated string');
+        }
+      }
+
+      checkScope(o, moduleDeclarationType) {
+        // TODO: would be appropriate to flag this error during AST generation (as
+        // well as when compiling to JS). But `o.indent` isn’t tracked during AST
+        // generation, and there doesn’t seem to be a current alternative way to track
+        // whether we’re at the “program top-level”.
+        if (o.indent.length !== 0) {
+          return this.error(`${moduleDeclarationType} statements must be at top-level scope`);
+        }
+      }
+
+      astAssertions(o) {
+        var ref1;
+        if (((ref1 = this.assertions) != null ? ref1.properties : void 0) != null) {
+          return this.assertions.properties.map((assertion) => {
+            var end, left, loc, right, start;
+            ({start, end, loc, left, right} = assertion.ast(o));
+            return {
+              type: 'ImportAttribute',
+              start,
+              end,
+              loc,
+              key: left,
+              value: right
+            };
+          });
+        } else {
+          return [];
+        }
+      }
+
+    };
+
+    ModuleDeclaration.prototype.children = ['clause', 'source', 'assertions'];
+
+    ModuleDeclaration.prototype.isStatement = YES;
+
+    ModuleDeclaration.prototype.jumps = THIS;
+
+    ModuleDeclaration.prototype.makeReturn = THIS;
+
+    return ModuleDeclaration;
+
+  }).call(this);
+
+  exports.ImportDeclaration = ImportDeclaration = class ImportDeclaration extends ModuleDeclaration {
+    compileNode(o) {
+      var code, ref1;
+      this.checkScope(o, 'import');
+      o.importedSymbols = [];
+      code = [];
+      code.push(this.makeCode(`${this.tab}import `));
+      if (this.clause != null) {
+        code.push(...this.clause.compileNode(o));
+      }
+      if (((ref1 = this.source) != null ? ref1.value : void 0) != null) {
+        if (this.clause !== null) {
+          code.push(this.makeCode(' from '));
+        }
+        code.push(this.makeCode(this.source.value));
+        if (this.assertions != null) {
+          code.push(this.makeCode(' assert '));
+          code.push(...this.assertions.compileToFragments(o));
+        }
+      }
+      code.push(this.makeCode(';'));
+      return code;
+    }
+
+    astNode(o) {
+      o.importedSymbols = [];
+      return super.astNode(o);
+    }
+
+    astProperties(o) {
+      var ref1, ref2, ret;
+      ret = {
+        specifiers: (ref1 = (ref2 = this.clause) != null ? ref2.ast(o) : void 0) != null ? ref1 : [],
+        source: this.source.ast(o),
+        assertions: this.astAssertions(o)
+      };
+      if (this.clause) {
+        ret.importKind = 'value';
+      }
+      return ret;
+    }
+
+  };
+
+  exports.ImportClause = ImportClause = (function() {
+    class ImportClause extends Base {
+      constructor(defaultBinding, namedImports) {
+        super();
+        this.defaultBinding = defaultBinding;
+        this.namedImports = namedImports;
+      }
+
+      compileNode(o) {
+        var code;
+        code = [];
+        if (this.defaultBinding != null) {
+          code.push(...this.defaultBinding.compileNode(o));
+          if (this.namedImports != null) {
+            code.push(this.makeCode(', '));
+          }
+        }
+        if (this.namedImports != null) {
+          code.push(...this.namedImports.compileNode(o));
+        }
+        return code;
+      }
+
+      astNode(o) {
+        var ref1, ref2;
+        // The AST for `ImportClause` is the non-nested list of import specifiers
+        // that will be the `specifiers` property of an `ImportDeclaration` AST
+        return compact(flatten([(ref1 = this.defaultBinding) != null ? ref1.ast(o) : void 0, (ref2 = this.namedImports) != null ? ref2.ast(o) : void 0]));
+      }
+
+    };
+
+    ImportClause.prototype.children = ['defaultBinding', 'namedImports'];
+
+    return ImportClause;
+
+  }).call(this);
+
+  exports.ExportDeclaration = ExportDeclaration = class ExportDeclaration extends ModuleDeclaration {
+    compileNode(o) {
+      var code, ref1;
+      this.checkScope(o, 'export');
+      this.checkForAnonymousClassExport();
+      code = [];
+      code.push(this.makeCode(`${this.tab}export `));
+      if (this instanceof ExportDefaultDeclaration) {
+        code.push(this.makeCode('default '));
+      }
+      if (!(this instanceof ExportDefaultDeclaration) && (this.clause instanceof Assign || this.clause instanceof Class)) {
+        code.push(this.makeCode('var '));
+        this.clause.moduleDeclaration = 'export';
+      }
+      if ((this.clause.body != null) && this.clause.body instanceof Block) {
+        code = code.concat(this.clause.compileToFragments(o, LEVEL_TOP));
+      } else {
+        code = code.concat(this.clause.compileNode(o));
+      }
+      if (((ref1 = this.source) != null ? ref1.value : void 0) != null) {
+        code.push(this.makeCode(` from ${this.source.value}`));
+        if (this.assertions != null) {
+          code.push(this.makeCode(' assert '));
+          code.push(...this.assertions.compileToFragments(o));
+        }
+      }
+      code.push(this.makeCode(';'));
+      return code;
+    }
+
+    // Prevent exporting an anonymous class; all exported members must be named
+    checkForAnonymousClassExport() {
+      if (!(this instanceof ExportDefaultDeclaration) && this.clause instanceof Class && !this.clause.variable) {
+        return this.clause.error('anonymous classes cannot be exported');
+      }
+    }
+
+    astNode(o) {
+      this.checkForAnonymousClassExport();
+      return super.astNode(o);
+    }
+
+  };
+
+  exports.ExportNamedDeclaration = ExportNamedDeclaration = class ExportNamedDeclaration extends ExportDeclaration {
+    astProperties(o) {
+      var clauseAst, ref1, ref2, ret;
+      ret = {
+        source: (ref1 = (ref2 = this.source) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+        assertions: this.astAssertions(o),
+        exportKind: 'value'
+      };
+      clauseAst = this.clause.ast(o);
+      if (this.clause instanceof ExportSpecifierList) {
+        ret.specifiers = clauseAst;
+        ret.declaration = null;
+      } else {
+        ret.specifiers = [];
+        ret.declaration = clauseAst;
+      }
+      return ret;
+    }
+
+  };
+
+  exports.ExportDefaultDeclaration = ExportDefaultDeclaration = class ExportDefaultDeclaration extends ExportDeclaration {
+    astProperties(o) {
+      return {
+        declaration: this.clause.ast(o),
+        assertions: this.astAssertions(o)
+      };
+    }
+
+  };
+
+  exports.ExportAllDeclaration = ExportAllDeclaration = class ExportAllDeclaration extends ExportDeclaration {
+    astProperties(o) {
+      return {
+        source: this.source.ast(o),
+        assertions: this.astAssertions(o),
+        exportKind: 'value'
+      };
+    }
+
+  };
+
+  exports.ModuleSpecifierList = ModuleSpecifierList = (function() {
+    class ModuleSpecifierList extends Base {
+      constructor(specifiers) {
+        super();
+        this.specifiers = specifiers;
+      }
+
+      compileNode(o) {
+        var code, compiledList, fragments, index, j, len1, specifier;
+        code = [];
+        o.indent += TAB;
+        compiledList = (function() {
+          var j, len1, ref1, results1;
+          ref1 = this.specifiers;
+          results1 = [];
+          for (j = 0, len1 = ref1.length; j < len1; j++) {
+            specifier = ref1[j];
+            results1.push(specifier.compileToFragments(o, LEVEL_LIST));
+          }
+          return results1;
+        }).call(this);
+        if (this.specifiers.length !== 0) {
+          code.push(this.makeCode(`{\n${o.indent}`));
+          for (index = j = 0, len1 = compiledList.length; j < len1; index = ++j) {
+            fragments = compiledList[index];
+            if (index) {
+              code.push(this.makeCode(`,\n${o.indent}`));
+            }
+            code.push(...fragments);
+          }
+          code.push(this.makeCode("\n}"));
+        } else {
+          code.push(this.makeCode('{}'));
+        }
+        return code;
+      }
+
+      astNode(o) {
+        var j, len1, ref1, results1, specifier;
+        ref1 = this.specifiers;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          specifier = ref1[j];
+          results1.push(specifier.ast(o));
+        }
+        return results1;
+      }
+
+    };
+
+    ModuleSpecifierList.prototype.children = ['specifiers'];
+
+    return ModuleSpecifierList;
+
+  }).call(this);
+
+  exports.ImportSpecifierList = ImportSpecifierList = class ImportSpecifierList extends ModuleSpecifierList {};
+
+  exports.ExportSpecifierList = ExportSpecifierList = class ExportSpecifierList extends ModuleSpecifierList {};
+
+  exports.ModuleSpecifier = ModuleSpecifier = (function() {
+    class ModuleSpecifier extends Base {
+      constructor(original, alias, moduleDeclarationType1) {
+        var ref1, ref2;
+        super();
+        this.original = original;
+        this.alias = alias;
+        this.moduleDeclarationType = moduleDeclarationType1;
+        if (this.original.comments || ((ref1 = this.alias) != null ? ref1.comments : void 0)) {
+          this.comments = [];
+          if (this.original.comments) {
+            this.comments.push(...this.original.comments);
+          }
+          if ((ref2 = this.alias) != null ? ref2.comments : void 0) {
+            this.comments.push(...this.alias.comments);
+          }
+        }
+        // The name of the variable entering the local scope
+        this.identifier = this.alias != null ? this.alias.value : this.original.value;
+      }
+
+      compileNode(o) {
+        var code;
+        this.addIdentifierToScope(o);
+        code = [];
+        code.push(this.makeCode(this.original.value));
+        if (this.alias != null) {
+          code.push(this.makeCode(` as ${this.alias.value}`));
+        }
+        return code;
+      }
+
+      addIdentifierToScope(o) {
+        return o.scope.find(this.identifier, this.moduleDeclarationType);
+      }
+
+      astNode(o) {
+        this.addIdentifierToScope(o);
+        return super.astNode(o);
+      }
+
+    };
+
+    ModuleSpecifier.prototype.children = ['original', 'alias'];
+
+    return ModuleSpecifier;
+
+  }).call(this);
+
+  exports.ImportSpecifier = ImportSpecifier = class ImportSpecifier extends ModuleSpecifier {
+    constructor(imported, local) {
+      super(imported, local, 'import');
+    }
+
+    addIdentifierToScope(o) {
+      var ref1;
+      // Per the spec, symbols can’t be imported multiple times
+      // (e.g. `import { foo, foo } from 'lib'` is invalid)
+      if ((ref1 = this.identifier, indexOf.call(o.importedSymbols, ref1) >= 0) || o.scope.check(this.identifier)) {
+        this.error(`'${this.identifier}' has already been declared`);
+      } else {
+        o.importedSymbols.push(this.identifier);
+      }
+      return super.addIdentifierToScope(o);
+    }
+
+    astProperties(o) {
+      var originalAst, ref1, ref2;
+      originalAst = this.original.ast(o);
+      return {
+        imported: originalAst,
+        local: (ref1 = (ref2 = this.alias) != null ? ref2.ast(o) : void 0) != null ? ref1 : originalAst,
+        importKind: null
+      };
+    }
+
+  };
+
+  exports.ImportDefaultSpecifier = ImportDefaultSpecifier = class ImportDefaultSpecifier extends ImportSpecifier {
+    astProperties(o) {
+      return {
+        local: this.original.ast(o)
+      };
+    }
+
+  };
+
+  exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier = class ImportNamespaceSpecifier extends ImportSpecifier {
+    astProperties(o) {
+      return {
+        local: this.alias.ast(o)
+      };
+    }
+
+  };
+
+  exports.ExportSpecifier = ExportSpecifier = class ExportSpecifier extends ModuleSpecifier {
+    constructor(local, exported) {
+      super(local, exported, 'export');
+    }
+
+    astProperties(o) {
+      var originalAst, ref1, ref2;
+      originalAst = this.original.ast(o);
+      return {
+        local: originalAst,
+        exported: (ref1 = (ref2 = this.alias) != null ? ref2.ast(o) : void 0) != null ? ref1 : originalAst
+      };
+    }
+
+  };
+
+  exports.DynamicImport = DynamicImport = class DynamicImport extends Base {
+    compileNode() {
+      return [this.makeCode('import')];
+    }
+
+    astType() {
+      return 'Import';
+    }
+
+  };
+
+  exports.DynamicImportCall = DynamicImportCall = class DynamicImportCall extends Call {
+    compileNode(o) {
+      this.checkArguments();
+      return super.compileNode(o);
+    }
+
+    checkArguments() {
+      var ref1;
+      if (!((1 <= (ref1 = this.args.length) && ref1 <= 2))) {
+        return this.error('import() accepts either one or two arguments');
+      }
+    }
+
+    astNode(o) {
+      this.checkArguments();
+      return super.astNode(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 = Assign = (function() {
+    class Assign extends Base {
+      constructor(variable1, value1, context1, options = {}) {
+        super();
+        this.variable = variable1;
+        this.value = value1;
+        this.context = context1;
+        ({param: this.param, subpattern: this.subpattern, operatorToken: this.operatorToken, moduleDeclaration: this.moduleDeclaration, originalContext: this.originalContext = this.context} = options);
+        this.propagateLhs();
+      }
+
+      isStatement(o) {
+        return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && (this.moduleDeclaration || indexOf.call(this.context, "?") >= 0);
+      }
+
+      checkNameAssignability(o, varBase) {
+        if (o.scope.type(varBase.value) === 'import') {
+          return varBase.error(`'${varBase.value}' is read-only`);
+        }
+      }
+
+      assigns(name) {
+        return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);
+      }
+
+      unfoldSoak(o) {
+        return unfoldSoak(o, this, 'variable');
+      }
+
+      // During AST generation, we need to allow assignment to these constructs
+      // that are considered “unassignable” during compile-to-JS, while still
+      // flagging things like `[null] = b`.
+      addScopeVariables(o, {allowAssignmentToExpansion = false, allowAssignmentToNontrailingSplat = false, allowAssignmentToEmptyArray = false, allowAssignmentToComplexSplat = false} = {}) {
+        var varBase;
+        if (!(!this.context || this.context === '**=')) {
+          return;
+        }
+        varBase = this.variable.unwrapAll();
+        if (!varBase.isAssignable({
+          allowExpansion: allowAssignmentToExpansion,
+          allowNontrailingSplat: allowAssignmentToNontrailingSplat,
+          allowEmptyArray: allowAssignmentToEmptyArray,
+          allowComplexSplat: allowAssignmentToComplexSplat
+        })) {
+          this.variable.error(`'${this.variable.compile(o)}' can't be assigned`);
+        }
+        return varBase.eachName((name) => {
+          var alreadyDeclared, commentFragments, commentsNode, message;
+          if (typeof name.hasProperties === "function" ? name.hasProperties() : void 0) {
+            return;
+          }
+          message = isUnassignable(name.value);
+          if (message) {
+            name.error(message);
+          }
+          // `moduleDeclaration` can be `'import'` or `'export'`.
+          this.checkNameAssignability(o, name);
+          if (this.moduleDeclaration) {
+            o.scope.add(name.value, this.moduleDeclaration);
+            return name.isDeclaration = true;
+          } else if (this.param) {
+            return o.scope.add(name.value, this.param === 'alwaysDeclare' ? 'var' : 'param');
+          } else {
+            alreadyDeclared = o.scope.find(name.value);
+            if (name.isDeclaration == null) {
+              name.isDeclaration = !alreadyDeclared;
+            }
+            // If this assignment identifier has one or more herecomments
+            // attached, output them as part of the declarations line (unless
+            // other herecomments are already staged there) for compatibility
+            // with Flow typing. Don’t do this if this assignment is for a
+            // class, e.g. `ClassName = class ClassName {`, as Flow requires
+            // the comment to be between the class name and the `{`.
+            if (name.comments && !o.scope.comments[name.value] && !(this.value instanceof Class) && name.comments.every(function(comment) {
+              return comment.here && !comment.multiline;
+            })) {
+              commentsNode = new IdentifierLiteral(name.value);
+              commentsNode.comments = name.comments;
+              commentFragments = [];
+              this.compileCommentFragments(o, commentsNode, commentFragments);
+              return o.scope.comments[name.value] = commentFragments;
+            }
+          }
+        });
+      }
+
+      // Compile an assignment, delegating to `compileDestructuring` 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) {
+        var answer, compiledName, isValue, name, properties, prototype, ref1, ref2, ref3, ref4, val;
+        isValue = this.variable instanceof Value;
+        if (isValue) {
+          // If `@variable` is an array or an object, we’re destructuring;
+          // if it’s also `isAssignable()`, the destructuring syntax is supported
+          // in ES and we can output it as is; otherwise we `@compileDestructuring`
+          // and convert this ES-unsupported destructuring into acceptable output.
+          if (this.variable.isArray() || this.variable.isObject()) {
+            if (!this.variable.isAssignable()) {
+              if (this.variable.isObject() && this.variable.base.hasSplat()) {
+                return this.compileObjectDestruct(o);
+              } else {
+                return this.compileDestructuring(o);
+              }
+            }
+          }
+          if (this.variable.isSplice()) {
+            return this.compileSplice(o);
+          }
+          if (this.isConditional()) {
+            return this.compileConditional(o);
+          }
+          if ((ref1 = this.context) === '//=' || ref1 === '%%=') {
+            return this.compileSpecialMath(o);
+          }
+        }
+        this.addScopeVariables(o);
+        if (this.value instanceof Code) {
+          if (this.value.isStatic) {
+            this.value.name = this.variable.properties[0];
+          } else if (((ref2 = this.variable.properties) != null ? ref2.length : void 0) >= 2) {
+            ref3 = this.variable.properties, [...properties] = ref3, [prototype, name] = splice.call(properties, -2);
+            if (((ref4 = prototype.name) != null ? ref4.value : void 0) === 'prototype') {
+              this.value.name = name;
+            }
+          }
+        }
+        val = this.value.compileToFragments(o, LEVEL_LIST);
+        compiledName = this.variable.compileToFragments(o, LEVEL_LIST);
+        if (this.context === 'object') {
+          if (this.variable.shouldCache()) {
+            compiledName.unshift(this.makeCode('['));
+            compiledName.push(this.makeCode(']'));
+          }
+          return compiledName.concat(this.makeCode(': '), val);
+        }
+        answer = compiledName.concat(this.makeCode(` ${this.context || '='} `), val);
+        // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Assignment_without_declaration,
+        // if we’re destructuring without declaring, the destructuring assignment must be wrapped in parentheses.
+        // The assignment is wrapped in parentheses if 'o.level' has lower precedence than LEVEL_LIST (3)
+        // (i.e. LEVEL_COND (4), LEVEL_OP (5) or LEVEL_ACCESS (6)), or if we're destructuring object, e.g. {a,b} = obj.
+        if (o.level > LEVEL_LIST || isValue && this.variable.base instanceof Obj && !this.nestedLhs && !(this.param === true)) {
+          return this.wrapInParentheses(answer);
+        } else {
+          return answer;
+        }
+      }
+
+      // Object rest property is not assignable: `{{a}...}`
+      compileObjectDestruct(o) {
+        var assigns, props, refVal, splat, splatProp;
+        this.variable.base.reorderProperties();
+        ({
+          properties: props
+        } = this.variable.base);
+        [splat] = slice1.call(props, -1);
+        splatProp = splat.name;
+        assigns = [];
+        refVal = new Value(new IdentifierLiteral(o.scope.freeVariable('ref')));
+        props.splice(-1, 1, new Splat(refVal));
+        assigns.push(new Assign(new Value(new Obj(props)), this.value).compileToFragments(o, LEVEL_LIST));
+        assigns.push(new Assign(new Value(splatProp), refVal).compileToFragments(o, LEVEL_LIST));
+        return this.joinFragmentArrays(assigns, ', ');
+      }
+
+      // Brief implementation of recursive pattern matching, when assigning array or
+      // object literals to a value. Peeks at their properties to assign inner names.
+      compileDestructuring(o) {
+        var assignObjects, assigns, code, compSlice, compSplice, complexObjects, expIdx, expans, fragments, hasObjAssigns, isExpans, isSplat, leftObjs, loopObjects, obj, objIsUnassignable, objects, olen, processObjects, pushAssign, ref, refExp, restVar, rightObjs, slicer, splatVar, splatVarAssign, splatVarRef, splats, splatsAndExpans, top, value, vvar, vvarText;
+        top = o.level === LEVEL_TOP;
+        ({value} = this);
+        ({objects} = this.variable.base);
+        olen = objects.length;
+        // Special-case for `{} = a` and `[] = a` (empty patterns).
+        // Compile to simply `a`.
+        if (olen === 0) {
+          code = value.compileToFragments(o);
+          if (o.level >= LEVEL_OP) {
+            return this.wrapInParentheses(code);
+          } else {
+            return code;
+          }
+        }
+        [obj] = objects;
+        this.disallowLoneExpansion();
+        ({splats, expans, splatsAndExpans} = this.getAndCheckSplatsAndExpansions());
+        isSplat = (splats != null ? splats.length : void 0) > 0;
+        isExpans = (expans != null ? expans.length : void 0) > 0;
+        vvar = value.compileToFragments(o, LEVEL_LIST);
+        vvarText = fragmentsToText(vvar);
+        assigns = [];
+        pushAssign = (variable, val) => {
+          return assigns.push(new Assign(variable, val, null, {
+            param: this.param,
+            subpattern: true
+          }).compileToFragments(o, LEVEL_LIST));
+        };
+        if (isSplat) {
+          splatVar = objects[splats[0]].name.unwrap();
+          if (splatVar instanceof Arr || splatVar instanceof Obj) {
+            splatVarRef = new IdentifierLiteral(o.scope.freeVariable('ref'));
+            objects[splats[0]].name = splatVarRef;
+            splatVarAssign = function() {
+              return pushAssign(new Value(splatVar), splatVarRef);
+            };
+          }
+        }
+        // At this point, there are several things to destructure. So the `fn()` in
+        // `{a, b} = fn()` must be cached, for example. Make vvar into a simple
+        // variable if it isn’t already.
+        if (!(value.unwrap() instanceof IdentifierLiteral) || this.variable.assigns(vvarText)) {
+          ref = o.scope.freeVariable('ref');
+          assigns.push([this.makeCode(ref + ' = '), ...vvar]);
+          vvar = [this.makeCode(ref)];
+          vvarText = ref;
+        }
+        slicer = function(type) {
+          return function(vvar, start, end = false) {
+            var args, slice;
+            if (!(vvar instanceof Value)) {
+              vvar = new IdentifierLiteral(vvar);
+            }
+            args = [vvar, new NumberLiteral(start)];
+            if (end) {
+              args.push(new NumberLiteral(end));
+            }
+            slice = new Value(new IdentifierLiteral(utility(type, o)), [new Access(new PropertyName('call'))]);
+            return new Value(new Call(slice, args));
+          };
+        };
+        // Helper which outputs `[].slice` code.
+        compSlice = slicer("slice");
+        // Helper which outputs `[].splice` code.
+        compSplice = slicer("splice");
+        // Check if `objects` array contains any instance of `Assign`, e.g. {a:1}.
+        hasObjAssigns = function(objs) {
+          var i, j, len1, results1;
+          results1 = [];
+          for (i = j = 0, len1 = objs.length; j < len1; i = ++j) {
+            obj = objs[i];
+            if (obj instanceof Assign && obj.context === 'object') {
+              results1.push(i);
+            }
+          }
+          return results1;
+        };
+        // Check if `objects` array contains any unassignable object.
+        objIsUnassignable = function(objs) {
+          var j, len1;
+          for (j = 0, len1 = objs.length; j < len1; j++) {
+            obj = objs[j];
+            if (!obj.isAssignable()) {
+              return true;
+            }
+          }
+          return false;
+        };
+        // `objects` are complex when there is object assign ({a:1}),
+        // unassignable object, or just a single node.
+        complexObjects = function(objs) {
+          return hasObjAssigns(objs).length || objIsUnassignable(objs) || olen === 1;
+        };
+        // "Complex" `objects` are processed in a loop.
+        // Examples: [a, b, {c, r...}, d], [a, ..., {b, r...}, c, d]
+        loopObjects = (objs, vvar, vvarTxt) => {
+          var acc, i, idx, j, len1, message, results1, vval;
+          results1 = [];
+          for (i = j = 0, len1 = objs.length; j < len1; i = ++j) {
+            obj = objs[i];
+            if (obj instanceof Elision) {
+              // `Elision` can be skipped.
+              continue;
+            }
+            // If `obj` is {a: 1}
+            if (obj instanceof Assign && obj.context === 'object') {
+              ({
+                variable: {
+                  base: idx
+                },
+                value: vvar
+              } = obj);
+              if (vvar instanceof Assign) {
+                ({
+                  variable: vvar
+                } = vvar);
+              }
+              idx = vvar.this ? vvar.properties[0].name : new PropertyName(vvar.unwrap().value);
+              acc = idx.unwrap() instanceof PropertyName;
+              vval = new Value(value, [new (acc ? Access : Index)(idx)]);
+            } else {
+              // `obj` is [a...], {a...} or a
+              vvar = (function() {
+                switch (false) {
+                  case !(obj instanceof Splat):
+                    return new Value(obj.name);
+                  default:
+                    return obj;
+                }
+              })();
+              vval = (function() {
+                switch (false) {
+                  case !(obj instanceof Splat):
+                    return compSlice(vvarTxt, i);
+                  default:
+                    return new Value(new Literal(vvarTxt), [new Index(new NumberLiteral(i))]);
+                }
+              })();
+            }
+            message = isUnassignable(vvar.unwrap().value);
+            if (message) {
+              vvar.error(message);
+            }
+            results1.push(pushAssign(vvar, vval));
+          }
+          return results1;
+        };
+        // "Simple" `objects` can be split and compiled to arrays, [a, b, c] = arr, [a, b, c...] = arr
+        assignObjects = (objs, vvar, vvarTxt) => {
+          var vval;
+          vvar = new Value(new Arr(objs, true));
+          vval = vvarTxt instanceof Value ? vvarTxt : new Value(new Literal(vvarTxt));
+          return pushAssign(vvar, vval);
+        };
+        processObjects = function(objs, vvar, vvarTxt) {
+          if (complexObjects(objs)) {
+            return loopObjects(objs, vvar, vvarTxt);
+          } else {
+            return assignObjects(objs, vvar, vvarTxt);
+          }
+        };
+        // In case there is `Splat` or `Expansion` in `objects`,
+        // we can split array in two simple subarrays.
+        // `Splat` [a, b, c..., d, e] can be split into  [a, b, c...] and [d, e].
+        // `Expansion` [a, b, ..., c, d] can be split into [a, b] and [c, d].
+        // Examples:
+        // a) `Splat`
+        //   CS: [a, b, c..., d, e] = arr
+        //   JS: [a, b, ...c] = arr, [d, e] = splice.call(c, -2)
+        // b) `Expansion`
+        //   CS: [a, b, ..., d, e] = arr
+        //   JS: [a, b] = arr, [d, e] = slice.call(arr, -2)
+        if (splatsAndExpans.length) {
+          expIdx = splatsAndExpans[0];
+          leftObjs = objects.slice(0, expIdx + (isSplat ? 1 : 0));
+          rightObjs = objects.slice(expIdx + 1);
+          if (leftObjs.length !== 0) {
+            processObjects(leftObjs, vvar, vvarText);
+          }
+          if (rightObjs.length !== 0) {
+            // Slice or splice `objects`.
+            refExp = (function() {
+              switch (false) {
+                case !isSplat:
+                  return compSplice(new Value(objects[expIdx].name), rightObjs.length * -1);
+                case !isExpans:
+                  return compSlice(vvarText, rightObjs.length * -1);
+              }
+            })();
+            if (complexObjects(rightObjs)) {
+              restVar = refExp;
+              refExp = o.scope.freeVariable('ref');
+              assigns.push([this.makeCode(refExp + ' = '), ...restVar.compileToFragments(o, LEVEL_LIST)]);
+            }
+            processObjects(rightObjs, vvar, refExp);
+          }
+        } else {
+          // There is no `Splat` or `Expansion` in `objects`.
+          processObjects(objects, vvar, vvarText);
+        }
+        if (typeof splatVarAssign === "function") {
+          splatVarAssign();
+        }
+        if (!(top || this.subpattern)) {
+          assigns.push(vvar);
+        }
+        fragments = this.joinFragmentArrays(assigns, ', ');
+        if (o.level < LEVEL_LIST) {
+          return fragments;
+        } else {
+          return this.wrapInParentheses(fragments);
+        }
+      }
+
+      // Disallow `[...] = a` for some reason. (Could be equivalent to `[] = a`?)
+      disallowLoneExpansion() {
+        var loneObject, objects;
+        if (!(this.variable.base instanceof Arr)) {
+          return;
+        }
+        ({objects} = this.variable.base);
+        if ((objects != null ? objects.length : void 0) !== 1) {
+          return;
+        }
+        [loneObject] = objects;
+        if (loneObject instanceof Expansion) {
+          return loneObject.error('Destructuring assignment has no target');
+        }
+      }
+
+      // Show error if there is more than one `Splat`, or `Expansion`.
+      // Examples: [a, b, c..., d, e, f...], [a, b, ..., c, d, ...], [a, b, ..., c, d, e...]
+      getAndCheckSplatsAndExpansions() {
+        var expans, i, obj, objects, splats, splatsAndExpans;
+        if (!(this.variable.base instanceof Arr)) {
+          return {
+            splats: [],
+            expans: [],
+            splatsAndExpans: []
+          };
+        }
+        ({objects} = this.variable.base);
+        // Count all `Splats`: [a, b, c..., d, e]
+        splats = (function() {
+          var j, len1, results1;
+          results1 = [];
+          for (i = j = 0, len1 = objects.length; j < len1; i = ++j) {
+            obj = objects[i];
+            if (obj instanceof Splat) {
+              results1.push(i);
+            }
+          }
+          return results1;
+        })();
+        // Count all `Expansions`: [a, b, ..., c, d]
+        expans = (function() {
+          var j, len1, results1;
+          results1 = [];
+          for (i = j = 0, len1 = objects.length; j < len1; i = ++j) {
+            obj = objects[i];
+            if (obj instanceof Expansion) {
+              results1.push(i);
+            }
+          }
+          return results1;
+        })();
+        // Combine splats and expansions.
+        splatsAndExpans = [...splats, ...expans];
+        if (splatsAndExpans.length > 1) {
+          // Sort 'splatsAndExpans' so we can show error at first disallowed token.
+          objects[splatsAndExpans.sort()[1]].error("multiple splats/expansions are disallowed in an assignment");
+        }
+        return {splats, expans, splatsAndExpans};
+      }
+
+      // 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) {
+        var fragments, left, right;
+        [left, right] = this.variable.cacheReference(o);
+        // Disallow conditional assignment of undefined variables.
+        if (!left.properties.length && left.base instanceof Literal && !(left.base instanceof ThisLiteral) && !o.scope.check(left.base.value)) {
+          this.throwUnassignableConditionalError(left.base.value);
+        }
+        if (indexOf.call(this.context, "?") >= 0) {
+          o.isExistentialEquals = true;
+          return new If(new Existence(left), right, {
+            type: 'if'
+          }).addElse(new Assign(right, this.value, '=')).compileToFragments(o);
+        } else {
+          fragments = new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compileToFragments(o);
+          if (o.level <= LEVEL_LIST) {
+            return fragments;
+          } else {
+            return this.wrapInParentheses(fragments);
+          }
+        }
+      }
+
+      // Convert special math assignment operators like `a //= b` to the equivalent
+      // extended form `a = a ** b` and then compiles that.
+      compileSpecialMath(o) {
+        var left, right;
+        [left, right] = this.variable.cacheReference(o);
+        return new Assign(left, new Op(this.context.slice(0, -1), right, this.value)).compileToFragments(o);
+      }
+
+      // Compile the assignment from an array splice literal, using JavaScript's
+      // `Array#splice` method.
+      compileSplice(o) {
+        var answer, exclusive, from, fromDecl, fromRef, name, to, unwrappedVar, valDef, valRef;
+        ({
+          range: {from, to, exclusive}
+        } = this.variable.properties.pop());
+        unwrappedVar = this.variable.unwrapAll();
+        if (unwrappedVar.comments) {
+          moveComments(unwrappedVar, this);
+          delete this.variable.comments;
+        }
+        name = this.variable.compile(o);
+        if (from) {
+          [fromDecl, fromRef] = this.cacheToCodeFragments(from.cache(o, LEVEL_OP));
+        } else {
+          fromDecl = fromRef = '0';
+        }
+        if (to) {
+          if ((from != null ? from.isNumber() : void 0) && to.isNumber()) {
+            to = to.compile(o) - fromRef;
+            if (!exclusive) {
+              to += 1;
+            }
+          } else {
+            to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;
+            if (!exclusive) {
+              to += ' + 1';
+            }
+          }
+        } else {
+          to = "9e9";
+        }
+        [valDef, valRef] = this.value.cache(o, LEVEL_LIST);
+        answer = [].concat(this.makeCode(`${utility('splice', o)}.apply(${name}, [${fromDecl}, ${to}].concat(`), valDef, this.makeCode(")), "), valRef);
+        if (o.level > LEVEL_TOP) {
+          return this.wrapInParentheses(answer);
+        } else {
+          return answer;
+        }
+      }
+
+      eachName(iterator) {
+        return this.variable.unwrapAll().eachName(iterator);
+      }
+
+      isDefaultAssignment() {
+        return this.param || this.nestedLhs;
+      }
+
+      propagateLhs() {
+        var ref1, ref2;
+        if (!(((ref1 = this.variable) != null ? typeof ref1.isArray === "function" ? ref1.isArray() : void 0 : void 0) || ((ref2 = this.variable) != null ? typeof ref2.isObject === "function" ? ref2.isObject() : void 0 : void 0))) {
+          return;
+        }
+        // This is the left-hand side of an assignment; let `Arr` and `Obj`
+        // know that, so that those nodes know that they’re assignable as
+        // destructured variables.
+        return this.variable.base.propagateLhs(true);
+      }
+
+      throwUnassignableConditionalError(name) {
+        return this.variable.error(`the variable \"${name}\" can't be assigned with ${this.context} because it has not been declared before`);
+      }
+
+      isConditional() {
+        var ref1;
+        return (ref1 = this.context) === '||=' || ref1 === '&&=' || ref1 === '?=';
+      }
+
+      astNode(o) {
+        var variable;
+        this.disallowLoneExpansion();
+        this.getAndCheckSplatsAndExpansions();
+        if (this.isConditional()) {
+          variable = this.variable.unwrap();
+          if (variable instanceof IdentifierLiteral && !o.scope.check(variable.value)) {
+            this.throwUnassignableConditionalError(variable.value);
+          }
+        }
+        this.addScopeVariables(o, {
+          allowAssignmentToExpansion: true,
+          allowAssignmentToNontrailingSplat: true,
+          allowAssignmentToEmptyArray: true,
+          allowAssignmentToComplexSplat: true
+        });
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isDefaultAssignment()) {
+          return 'AssignmentPattern';
+        } else {
+          return 'AssignmentExpression';
+        }
+      }
+
+      astProperties(o) {
+        var ref1, ret;
+        ret = {
+          right: this.value.ast(o, LEVEL_LIST),
+          left: this.variable.ast(o, LEVEL_LIST)
+        };
+        if (!this.isDefaultAssignment()) {
+          ret.operator = (ref1 = this.originalContext) != null ? ref1 : '=';
+        }
+        return ret;
+      }
+
+    };
+
+    Assign.prototype.children = ['variable', 'value'];
+
+    Assign.prototype.isAssignable = YES;
+
+    Assign.prototype.isStatementAst = NO;
+
+    return Assign;
+
+  }).call(this);
+
+  //### FuncGlyph
+  exports.FuncGlyph = FuncGlyph = class FuncGlyph extends Base {
+    constructor(glyph) {
+      super();
+      this.glyph = glyph;
+    }
+
+  };
+
+  //### 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 = Code = (function() {
+    class Code extends Base {
+      constructor(params, body, funcGlyph, paramStart) {
+        var ref1;
+        super();
+        this.funcGlyph = funcGlyph;
+        this.paramStart = paramStart;
+        this.params = params || [];
+        this.body = body || new Block();
+        this.bound = ((ref1 = this.funcGlyph) != null ? ref1.glyph : void 0) === '=>';
+        this.isGenerator = false;
+        this.isAsync = false;
+        this.isMethod = false;
+        this.body.traverseChildren(false, (node) => {
+          if ((node instanceof Op && node.isYield()) || node instanceof YieldReturn) {
+            this.isGenerator = true;
+          }
+          if ((node instanceof Op && node.isAwait()) || node instanceof AwaitReturn) {
+            this.isAsync = true;
+          }
+          if (node instanceof For && node.isAwait()) {
+            return this.isAsync = true;
+          }
+        });
+        this.propagateLhs();
+      }
+
+      isStatement() {
+        return this.isMethod;
+      }
+
+      makeScope(parentScope) {
+        return new Scope(parentScope, this.body, this);
+      }
+
+      // Compilation creates a new scope unless explicitly asked to share with the
+      // outer scope. Handles splat parameters in the parameter list by setting
+      // such parameters to be the final parameter in the function definition, as
+      // required per the ES2015 spec. If the CoffeeScript function definition had
+      // parameters after the splat, they are declared via expressions in the
+      // function body.
+      compileNode(o) {
+        var answer, body, boundMethodCheck, comment, condition, exprs, generatedVariables, haveBodyParam, haveSplatParam, i, ifTrue, j, k, l, len1, len2, len3, m, methodScope, modifiers, name, param, paramToAddToScope, params, paramsAfterSplat, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, scopeVariablesCount, signature, splatParamName, thisAssignments, wasEmpty, yieldNode;
+        this.checkForAsyncOrGeneratorConstructor();
+        if (this.bound) {
+          if ((ref1 = o.scope.method) != null ? ref1.bound : void 0) {
+            this.context = o.scope.method.context;
+          }
+          if (!this.context) {
+            this.context = 'this';
+          }
+        }
+        this.updateOptions(o);
+        params = [];
+        exprs = [];
+        thisAssignments = (ref2 = (ref3 = this.thisAssignments) != null ? ref3.slice() : void 0) != null ? ref2 : [];
+        paramsAfterSplat = [];
+        haveSplatParam = false;
+        haveBodyParam = false;
+        this.checkForDuplicateParams();
+        this.disallowLoneExpansionAndMultipleSplats();
+        // Separate `this` assignments.
+        this.eachParamName(function(name, node, param, obj) {
+          var replacement, target;
+          if (node.this) {
+            name = node.properties[0].name.value;
+            if (indexOf.call(JS_FORBIDDEN, name) >= 0) {
+              name = `_${name}`;
+            }
+            target = new IdentifierLiteral(o.scope.freeVariable(name, {
+              reserve: false
+            }));
+            // `Param` is object destructuring with a default value: ({@prop = 1}) ->
+            // In a case when the variable name is already reserved, we have to assign
+            // a new variable name to the destructured variable: ({prop:prop1 = 1}) ->
+            replacement = param.name instanceof Obj && obj instanceof Assign && obj.operatorToken.value === '=' ? new Assign(new IdentifierLiteral(name), target, 'object') : target; //, operatorToken: new Literal ':'
+            param.renameParam(node, replacement);
+            return thisAssignments.push(new Assign(node, target));
+          }
+        });
+        ref4 = this.params;
+        // Parse the parameters, adding them to the list of parameters to put in the
+        // function definition; and dealing with splats or expansions, including
+        // adding expressions to the function body to declare all parameter
+        // variables that would have been after the splat/expansion parameter.
+        // If we encounter a parameter that needs to be declared in the function
+        // body for any reason, for example it’s destructured with `this`, also
+        // declare and assign all subsequent parameters in the function body so that
+        // any non-idempotent parameters are evaluated in the correct order.
+        for (i = j = 0, len1 = ref4.length; j < len1; i = ++j) {
+          param = ref4[i];
+          // Was `...` used with this parameter? Splat/expansion parameters cannot
+          // have default values, so we need not worry about that.
+          if (param.splat || param instanceof Expansion) {
+            haveSplatParam = true;
+            if (param.splat) {
+              if (param.name instanceof Arr || param.name instanceof Obj) {
+                // Splat arrays are treated oddly by ES; deal with them the legacy
+                // way in the function body. TODO: Should this be handled in the
+                // function parameter list, and if so, how?
+                splatParamName = o.scope.freeVariable('arg');
+                params.push(ref = new Value(new IdentifierLiteral(splatParamName)));
+                exprs.push(new Assign(new Value(param.name), ref));
+              } else {
+                params.push(ref = param.asReference(o));
+                splatParamName = fragmentsToText(ref.compileNodeWithoutComments(o));
+              }
+              if (param.shouldCache()) {
+                exprs.push(new Assign(new Value(param.name), ref)); // `param` is an Expansion
+              }
+            } else {
+              splatParamName = o.scope.freeVariable('args');
+              params.push(new Value(new IdentifierLiteral(splatParamName)));
+            }
+            o.scope.parameter(splatParamName);
+          } else {
+            // Parse all other parameters; if a splat paramater has not yet been
+            // encountered, add these other parameters to the list to be output in
+            // the function definition.
+            if (param.shouldCache() || haveBodyParam) {
+              param.assignedInBody = true;
+              haveBodyParam = true;
+              // This parameter cannot be declared or assigned in the parameter
+              // list. So put a reference in the parameter list and add a statement
+              // to the function body assigning it, e.g.
+              // `(arg) => { var a = arg.a; }`, with a default value if it has one.
+              if (param.value != null) {
+                condition = new Op('===', param, new UndefinedLiteral());
+                ifTrue = new Assign(new Value(param.name), param.value);
+                exprs.push(new If(condition, ifTrue));
+              } else {
+                exprs.push(new Assign(new Value(param.name), param.asReference(o), null, {
+                  param: 'alwaysDeclare'
+                }));
+              }
+            }
+            // If this parameter comes before the splat or expansion, it will go
+            // in the function definition parameter list.
+            if (!haveSplatParam) {
+              // If this parameter has a default value, and it hasn’t already been
+              // set by the `shouldCache()` block above, define it as a statement in
+              // the function body. This parameter comes after the splat parameter,
+              // so we can’t define its default value in the parameter list.
+              if (param.shouldCache()) {
+                ref = param.asReference(o);
+              } else {
+                if ((param.value != null) && !param.assignedInBody) {
+                  ref = new Assign(new Value(param.name), param.value, null, {
+                    param: true
+                  });
+                } else {
+                  ref = param;
+                }
+              }
+              // Add this parameter’s reference(s) to the function scope.
+              if (param.name instanceof Arr || param.name instanceof Obj) {
+                // This parameter is destructured.
+                param.name.lhs = true;
+                if (!param.shouldCache()) {
+                  param.name.eachName(function(prop) {
+                    return o.scope.parameter(prop.value);
+                  });
+                }
+              } else {
+                // This compilation of the parameter is only to get its name to add
+                // to the scope name tracking; since the compilation output here
+                // isn’t kept for eventual output, don’t include comments in this
+                // compilation, so that they get output the “real” time this param
+                // is compiled.
+                paramToAddToScope = param.value != null ? param : ref;
+                o.scope.parameter(fragmentsToText(paramToAddToScope.compileToFragmentsWithoutComments(o)));
+              }
+              params.push(ref);
+            } else {
+              paramsAfterSplat.push(param);
+              // If this parameter had a default value, since it’s no longer in the
+              // function parameter list we need to assign its default value
+              // (if necessary) as an expression in the body.
+              if ((param.value != null) && !param.shouldCache()) {
+                condition = new Op('===', param, new UndefinedLiteral());
+                ifTrue = new Assign(new Value(param.name), param.value);
+                exprs.push(new If(condition, ifTrue));
+              }
+              if (((ref5 = param.name) != null ? ref5.value : void 0) != null) {
+                // Add this parameter to the scope, since it wouldn’t have been added
+                // yet since it was skipped earlier.
+                o.scope.add(param.name.value, 'var', true);
+              }
+            }
+          }
+        }
+        // If there were parameters after the splat or expansion parameter, those
+        // parameters need to be assigned in the body of the function.
+        if (paramsAfterSplat.length !== 0) {
+          // Create a destructured assignment, e.g. `[a, b, c] = [args..., b, c]`
+          exprs.unshift(new Assign(new Value(new Arr([
+            new Splat(new IdentifierLiteral(splatParamName)),
+            ...((function() {
+              var k,
+            len2,
+            results1;
+              results1 = [];
+              for (k = 0, len2 = paramsAfterSplat.length; k < len2; k++) {
+                param = paramsAfterSplat[k];
+                results1.push(param.asReference(o));
+              }
+              return results1;
+            })())
+          ])), new Value(new IdentifierLiteral(splatParamName))));
+        }
+        // Add new expressions to the function body
+        wasEmpty = this.body.isEmpty();
+        this.disallowSuperInParamDefaults();
+        this.checkSuperCallsInConstructorBody();
+        if (!this.expandCtorSuper(thisAssignments)) {
+          this.body.expressions.unshift(...thisAssignments);
+        }
+        this.body.expressions.unshift(...exprs);
+        if (this.isMethod && this.bound && !this.isStatic && this.classVariable) {
+          boundMethodCheck = new Value(new Literal(utility('boundMethodCheck', o)));
+          this.body.expressions.unshift(new Call(boundMethodCheck, [new Value(new ThisLiteral()), this.classVariable]));
+        }
+        if (!(wasEmpty || this.noReturn)) {
+          this.body.makeReturn();
+        }
+        // JavaScript doesn’t allow bound (`=>`) functions to also be generators.
+        // This is usually caught via `Op::compileContinuation`, but double-check:
+        if (this.bound && this.isGenerator) {
+          yieldNode = this.body.contains(function(node) {
+            return node instanceof Op && node.operator === 'yield';
+          });
+          (yieldNode || this).error('yield cannot occur inside bound (fat arrow) functions');
+        }
+        // Assemble the output
+        modifiers = [];
+        if (this.isMethod && this.isStatic) {
+          modifiers.push('static');
+        }
+        if (this.isAsync) {
+          modifiers.push('async');
+        }
+        if (!(this.isMethod || this.bound)) {
+          modifiers.push(`function${this.isGenerator ? '*' : ''}`);
+        } else if (this.isGenerator) {
+          modifiers.push('*');
+        }
+        signature = [this.makeCode('(')];
+        // Block comments between a function name and `(` get output between
+        // `function` and `(`.
+        if (((ref6 = this.paramStart) != null ? ref6.comments : void 0) != null) {
+          this.compileCommentFragments(o, this.paramStart, signature);
+        }
+        for (i = k = 0, len2 = params.length; k < len2; i = ++k) {
+          param = params[i];
+          if (i !== 0) {
+            signature.push(this.makeCode(', '));
+          }
+          if (haveSplatParam && i === params.length - 1) {
+            signature.push(this.makeCode('...'));
+          }
+          // Compile this parameter, but if any generated variables get created
+          // (e.g. `ref`), shift those into the parent scope since we can’t put a
+          // `var` line inside a function parameter list.
+          scopeVariablesCount = o.scope.variables.length;
+          signature.push(...param.compileToFragments(o, LEVEL_PAREN));
+          if (scopeVariablesCount !== o.scope.variables.length) {
+            generatedVariables = o.scope.variables.splice(scopeVariablesCount);
+            o.scope.parent.variables.push(...generatedVariables);
+          }
+        }
+        signature.push(this.makeCode(')'));
+        // Block comments between `)` and `->`/`=>` get output between `)` and `{`.
+        if (((ref7 = this.funcGlyph) != null ? ref7.comments : void 0) != null) {
+          ref8 = this.funcGlyph.comments;
+          for (l = 0, len3 = ref8.length; l < len3; l++) {
+            comment = ref8[l];
+            comment.unshift = false;
+          }
+          this.compileCommentFragments(o, this.funcGlyph, signature);
+        }
+        if (!this.body.isEmpty()) {
+          body = this.body.compileWithDeclarations(o);
+        }
+        // We need to compile the body before method names to ensure `super`
+        // references are handled.
+        if (this.isMethod) {
+          [methodScope, o.scope] = [o.scope, o.scope.parent];
+          name = this.name.compileToFragments(o);
+          if (name[0].code === '.') {
+            name.shift();
+          }
+          o.scope = methodScope;
+        }
+        answer = this.joinFragmentArrays((function() {
+          var len4, p, results1;
+          results1 = [];
+          for (p = 0, len4 = modifiers.length; p < len4; p++) {
+            m = modifiers[p];
+            results1.push(this.makeCode(m));
+          }
+          return results1;
+        }).call(this), ' ');
+        if (modifiers.length && name) {
+          answer.push(this.makeCode(' '));
+        }
+        if (name) {
+          answer.push(...name);
+        }
+        answer.push(...signature);
+        if (this.bound && !this.isMethod) {
+          answer.push(this.makeCode(' =>'));
+        }
+        answer.push(this.makeCode(' {'));
+        if (body != null ? body.length : void 0) {
+          answer.push(this.makeCode('\n'), ...body, this.makeCode(`\n${this.tab}`));
+        }
+        answer.push(this.makeCode('}'));
+        if (this.isMethod) {
+          return indentInitial(answer, this);
+        }
+        if (this.front || (o.level >= LEVEL_ACCESS)) {
+          return this.wrapInParentheses(answer);
+        } else {
+          return answer;
+        }
+      }
+
+      updateOptions(o) {
+        o.scope = del(o, 'classScope') || this.makeScope(o.scope);
+        o.scope.shared = del(o, 'sharedScope');
+        o.indent += TAB;
+        delete o.bare;
+        return delete o.isExistentialEquals;
+      }
+
+      checkForDuplicateParams() {
+        var paramNames;
+        paramNames = [];
+        return this.eachParamName(function(name, node, param) {
+          if (indexOf.call(paramNames, name) >= 0) {
+            node.error(`multiple parameters named '${name}'`);
+          }
+          return paramNames.push(name);
+        });
+      }
+
+      eachParamName(iterator) {
+        var j, len1, param, ref1, results1;
+        ref1 = this.params;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          param = ref1[j];
+          results1.push(param.eachName(iterator));
+        }
+        return results1;
+      }
+
+      // Short-circuit `traverseChildren` method to prevent it from crossing scope
+      // boundaries unless `crossScope` is `true`.
+      traverseChildren(crossScope, func) {
+        if (crossScope) {
+          return super.traverseChildren(crossScope, func);
+        }
+      }
+
+      // Short-circuit `replaceInContext` method to prevent it from crossing context boundaries. Bound
+      // functions have the same context.
+      replaceInContext(child, replacement) {
+        if (this.bound) {
+          return super.replaceInContext(child, replacement);
+        } else {
+          return false;
+        }
+      }
+
+      disallowSuperInParamDefaults({forAst} = {}) {
+        if (!this.ctor) {
+          return false;
+        }
+        return this.eachSuperCall(Block.wrap(this.params), function(superCall) {
+          return superCall.error("'super' is not allowed in constructor parameter defaults");
+        }, {
+          checkForThisBeforeSuper: !forAst
+        });
+      }
+
+      checkSuperCallsInConstructorBody() {
+        var seenSuper;
+        if (!this.ctor) {
+          return false;
+        }
+        seenSuper = this.eachSuperCall(this.body, (superCall) => {
+          if (this.ctor === 'base') {
+            return superCall.error("'super' is only allowed in derived class constructors");
+          }
+        });
+        return seenSuper;
+      }
+
+      flagThisParamInDerivedClassConstructorWithoutCallingSuper(param) {
+        return param.error("Can't use @params in derived class constructors without calling super");
+      }
+
+      checkForAsyncOrGeneratorConstructor() {
+        if (this.ctor) {
+          if (this.isAsync) {
+            this.name.error('Class constructor may not be async');
+          }
+          if (this.isGenerator) {
+            return this.name.error('Class constructor may not be a generator');
+          }
+        }
+      }
+
+      disallowLoneExpansionAndMultipleSplats() {
+        var j, len1, param, ref1, results1, seenSplatParam;
+        seenSplatParam = false;
+        ref1 = this.params;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          param = ref1[j];
+          // Was `...` used with this parameter? (Only one such parameter is allowed
+          // per function.)
+          if (param.splat || param instanceof Expansion) {
+            if (seenSplatParam) {
+              param.error('only one splat or expansion parameter is allowed per function definition');
+            } else if (param instanceof Expansion && this.params.length === 1) {
+              param.error('an expansion parameter cannot be the only parameter in a function definition');
+            }
+            results1.push(seenSplatParam = true);
+          } else {
+            results1.push(void 0);
+          }
+        }
+        return results1;
+      }
+
+      expandCtorSuper(thisAssignments) {
+        var haveThisParam, param, ref1, seenSuper;
+        if (!this.ctor) {
+          return false;
+        }
+        seenSuper = this.eachSuperCall(this.body, (superCall) => {
+          return superCall.expressions = thisAssignments;
+        });
+        haveThisParam = thisAssignments.length && thisAssignments.length !== ((ref1 = this.thisAssignments) != null ? ref1.length : void 0);
+        if (this.ctor === 'derived' && !seenSuper && haveThisParam) {
+          param = thisAssignments[0].variable;
+          this.flagThisParamInDerivedClassConstructorWithoutCallingSuper(param);
+        }
+        return seenSuper;
+      }
+
+      // Find all super calls in the given context node;
+      // returns `true` if `iterator` is called.
+      eachSuperCall(context, iterator, {checkForThisBeforeSuper = true} = {}) {
+        var seenSuper;
+        seenSuper = false;
+        context.traverseChildren(true, (child) => {
+          var childArgs;
+          if (child instanceof SuperCall) {
+            // `super` in a constructor (the only `super` without an accessor)
+            // cannot be given an argument with a reference to `this`, as that would
+            // be referencing `this` before calling `super`.
+            if (!child.variable.accessor) {
+              childArgs = child.args.filter(function(arg) {
+                return !(arg instanceof Class) && (!(arg instanceof Code) || arg.bound);
+              });
+              Block.wrap(childArgs).traverseChildren(true, (node) => {
+                if (node.this) {
+                  return node.error("Can't call super with @params in derived class constructors");
+                }
+              });
+            }
+            seenSuper = true;
+            iterator(child);
+          } else if (checkForThisBeforeSuper && child instanceof ThisLiteral && this.ctor === 'derived' && !seenSuper) {
+            child.error("Can't reference 'this' before calling super in derived class constructors");
+          }
+          // `super` has the same target in bound (arrow) functions, so check them too
+          return !(child instanceof SuperCall) && (!(child instanceof Code) || child.bound);
+        });
+        return seenSuper;
+      }
+
+      propagateLhs() {
+        var j, len1, name, param, ref1, results1;
+        ref1 = this.params;
+        results1 = [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          param = ref1[j];
+          ({name} = param);
+          if (name instanceof Arr || name instanceof Obj) {
+            results1.push(name.propagateLhs(true));
+          } else if (param instanceof Expansion) {
+            results1.push(param.lhs = true);
+          } else {
+            results1.push(void 0);
+          }
+        }
+        return results1;
+      }
+
+      astAddParamsToScope(o) {
+        return this.eachParamName(function(name) {
+          return o.scope.add(name, 'param');
+        });
+      }
+
+      astNode(o) {
+        var seenSuper;
+        this.updateOptions(o);
+        this.checkForAsyncOrGeneratorConstructor();
+        this.checkForDuplicateParams();
+        this.disallowSuperInParamDefaults({
+          forAst: true
+        });
+        this.disallowLoneExpansionAndMultipleSplats();
+        seenSuper = this.checkSuperCallsInConstructorBody();
+        if (this.ctor === 'derived' && !seenSuper) {
+          this.eachParamName((name, node) => {
+            if (node.this) {
+              return this.flagThisParamInDerivedClassConstructorWithoutCallingSuper(node);
+            }
+          });
+        }
+        this.astAddParamsToScope(o);
+        if (!(this.body.isEmpty() || this.noReturn)) {
+          this.body.makeReturn(null, true);
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isMethod) {
+          return 'ClassMethod';
+        } else if (this.bound) {
+          return 'ArrowFunctionExpression';
+        } else {
+          return 'FunctionExpression';
+        }
+      }
+
+      paramForAst(param) {
+        var name, splat, value;
+        if (param instanceof Expansion) {
+          return param;
+        }
+        ({name, value, splat} = param);
+        if (splat) {
+          return new Splat(name, {
+            lhs: true,
+            postfix: splat.postfix
+          }).withLocationDataFrom(param);
+        } else if (value != null) {
+          return new Assign(name, value, null, {
+            param: true
+          }).withLocationDataFrom({
+            locationData: mergeLocationData(name.locationData, value.locationData)
+          });
+        } else {
+          return name;
+        }
+      }
+
+      methodAstProperties(o) {
+        var getIsComputed, ref1, ref2, ref3, ref4;
+        getIsComputed = () => {
+          if (this.name instanceof Index) {
+            return true;
+          }
+          if (this.name instanceof ComputedPropertyName) {
+            return true;
+          }
+          if (this.name.name instanceof ComputedPropertyName) {
+            return true;
+          }
+          return false;
+        };
+        return {
+          static: !!this.isStatic,
+          key: this.name.ast(o),
+          computed: getIsComputed(),
+          kind: this.ctor ? 'constructor' : 'method',
+          operator: (ref1 = (ref2 = this.operatorToken) != null ? ref2.value : void 0) != null ? ref1 : '=',
+          staticClassName: (ref3 = (ref4 = this.isStatic.staticClassName) != null ? ref4.ast(o) : void 0) != null ? ref3 : null,
+          bound: !!this.bound
+        };
+      }
+
+      astProperties(o) {
+        var param, ref1;
+        return Object.assign({
+          params: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.params;
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              param = ref1[j];
+              results1.push(this.paramForAst(param).ast(o));
+            }
+            return results1;
+          }).call(this),
+          body: this.body.ast(Object.assign({}, o, {
+            checkForDirectives: true
+          }), LEVEL_TOP),
+          generator: !!this.isGenerator,
+          async: !!this.isAsync,
+          // We never generate named functions, so specify `id` as `null`, which
+          // matches the Babel AST for anonymous function expressions/arrow functions
+          id: null,
+          hasIndentedBody: this.body.locationData.first_line > ((ref1 = this.funcGlyph) != null ? ref1.locationData.first_line : void 0)
+        }, this.isMethod ? this.methodAstProperties(o) : {});
+      }
+
+      astLocationData() {
+        var astLocationData, functionLocationData;
+        functionLocationData = super.astLocationData();
+        if (!this.isMethod) {
+          return functionLocationData;
+        }
+        astLocationData = mergeAstLocationData(this.name.astLocationData(), functionLocationData);
+        if (this.isStatic.staticClassName != null) {
+          astLocationData = mergeAstLocationData(this.isStatic.staticClassName.astLocationData(), astLocationData);
+        }
+        return astLocationData;
+      }
+
+    };
+
+    Code.prototype.children = ['params', 'body'];
+
+    Code.prototype.jumps = NO;
+
+    return Code;
+
+  }).call(this);
+
+  //### 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 = Param = (function() {
+    class Param extends Base {
+      constructor(name1, value1, splat1) {
+        var message, token;
+        super();
+        this.name = name1;
+        this.value = value1;
+        this.splat = splat1;
+        message = isUnassignable(this.name.unwrapAll().value);
+        if (message) {
+          this.name.error(message);
+        }
+        if (this.name instanceof Obj && this.name.generated) {
+          token = this.name.objects[0].operatorToken;
+          token.error(`unexpected ${token.value}`);
+        }
+      }
+
+      compileToFragments(o) {
+        return this.name.compileToFragments(o, LEVEL_LIST);
+      }
+
+      compileToFragmentsWithoutComments(o) {
+        return this.name.compileToFragmentsWithoutComments(o, LEVEL_LIST);
+      }
+
+      asReference(o) {
+        var name, node;
+        if (this.reference) {
+          return this.reference;
+        }
+        node = this.name;
+        if (node.this) {
+          name = node.properties[0].name.value;
+          if (indexOf.call(JS_FORBIDDEN, name) >= 0) {
+            name = `_${name}`;
+          }
+          node = new IdentifierLiteral(o.scope.freeVariable(name));
+        } else if (node.shouldCache()) {
+          node = new IdentifierLiteral(o.scope.freeVariable('arg'));
+        }
+        node = new Value(node);
+        node.updateLocationDataIfMissing(this.locationData);
+        return this.reference = node;
+      }
+
+      shouldCache() {
+        return this.name.shouldCache();
+      }
+
+      // Iterates the name or names of a `Param`.
+      // In a sense, a destructured parameter represents multiple JS parameters. This
+      // method allows to iterate them all.
+      // The `iterator` function will be called as `iterator(name, node)` where
+      // `name` is the name of the parameter and `node` is the AST node corresponding
+      // to that name.
+      eachName(iterator, name = this.name) {
+        var atParam, checkAssignabilityOfLiteral, j, len1, nObj, node, obj, ref1, ref2;
+        checkAssignabilityOfLiteral = function(literal) {
+          var message;
+          message = isUnassignable(literal.value);
+          if (message) {
+            literal.error(message);
+          }
+          if (!literal.isAssignable()) {
+            return literal.error(`'${literal.value}' can't be assigned`);
+          }
+        };
+        atParam = (obj, originalObj = null) => {
+          return iterator(`@${obj.properties[0].name.value}`, obj, this, originalObj);
+        };
+        if (name instanceof Call) {
+          name.error("Function invocation can't be assigned");
+        }
+        // * simple literals `foo`
+        if (name instanceof Literal) {
+          checkAssignabilityOfLiteral(name);
+          return iterator(name.value, name, this);
+        }
+        if (name instanceof Value) {
+          // * at-params `@foo`
+          return atParam(name);
+        }
+        ref2 = (ref1 = name.objects) != null ? ref1 : [];
+        for (j = 0, len1 = ref2.length; j < len1; j++) {
+          obj = ref2[j];
+          // Save original obj.
+          nObj = obj;
+          // * destructured parameter with default value
+          if (obj instanceof Assign && (obj.context == null)) {
+            obj = obj.variable;
+          }
+          // * assignments within destructured parameters `{foo:bar}`
+          if (obj instanceof Assign) {
+            // ... possibly with a default value
+            if (obj.value instanceof Assign) {
+              obj = obj.value.variable;
+            } else {
+              obj = obj.value;
+            }
+            this.eachName(iterator, obj.unwrap());
+          // * splats within destructured parameters `[xs...]`
+          } else if (obj instanceof Splat) {
+            node = obj.name.unwrap();
+            iterator(node.value, node, this);
+          } else if (obj instanceof Value) {
+            // * destructured parameters within destructured parameters `[{a}]`
+            if (obj.isArray() || obj.isObject()) {
+              this.eachName(iterator, obj.base);
+            // * at-params within destructured parameters `{@foo}`
+            } else if (obj.this) {
+              atParam(obj, nObj);
+            } else {
+              // * simple destructured parameters {foo}
+              checkAssignabilityOfLiteral(obj.base);
+              iterator(obj.base.value, obj.base, this);
+            }
+          } else if (obj instanceof Elision) {
+            obj;
+          } else if (!(obj instanceof Expansion)) {
+            obj.error(`illegal parameter ${obj.compile()}`);
+          }
+        }
+      }
+
+      // Rename a param by replacing the given AST node for a name with a new node.
+      // This needs to ensure that the the source for object destructuring does not change.
+      renameParam(node, newNode) {
+        var isNode, replacement;
+        isNode = function(candidate) {
+          return candidate === node;
+        };
+        replacement = (node, parent) => {
+          var key;
+          if (parent instanceof Obj) {
+            key = node;
+            if (node.this) {
+              key = node.properties[0].name;
+            }
+            // No need to assign a new variable for the destructured variable if the variable isn't reserved.
+            // Examples:
+            // `({@foo}) ->`  should compile to `({foo}) { this.foo = foo}`
+            // `foo = 1; ({@foo}) ->` should compile to `foo = 1; ({foo:foo1}) { this.foo = foo1 }`
+            if (node.this && key.value === newNode.value) {
+              return new Value(newNode);
+            } else {
+              return new Assign(new Value(key), newNode, 'object');
+            }
+          } else {
+            return newNode;
+          }
+        };
+        return this.replaceInContext(isNode, replacement);
+      }
+
+    };
+
+    Param.prototype.children = ['name', 'value'];
+
+    return Param;
+
+  }).call(this);
+
+  //### Splat
+
+  // A splat, either as a parameter to a function, an argument to a call,
+  // or as part of a destructuring assignment.
+  exports.Splat = Splat = (function() {
+    class Splat extends Base {
+      constructor(name, {
+          lhs: lhs1,
+          postfix: postfix = true
+        } = {}) {
+        super();
+        this.lhs = lhs1;
+        this.postfix = postfix;
+        this.name = name.compile ? name : new Literal(name);
+      }
+
+      shouldCache() {
+        return false;
+      }
+
+      isAssignable({allowComplexSplat = false} = {}) {
+        if (this.name instanceof Obj || this.name instanceof Parens) {
+          return allowComplexSplat;
+        }
+        return this.name.isAssignable() && (!this.name.isAtomic || this.name.isAtomic());
+      }
+
+      assigns(name) {
+        return this.name.assigns(name);
+      }
+
+      compileNode(o) {
+        var compiledSplat;
+        compiledSplat = [this.makeCode('...'), ...this.name.compileToFragments(o, LEVEL_OP)];
+        if (!this.jsx) {
+          return compiledSplat;
+        }
+        return [this.makeCode('{'), ...compiledSplat, this.makeCode('}')];
+      }
+
+      unwrap() {
+        return this.name;
+      }
+
+      propagateLhs(setLhs) {
+        var base1;
+        if (setLhs) {
+          this.lhs = true;
+        }
+        if (!this.lhs) {
+          return;
+        }
+        return typeof (base1 = this.name).propagateLhs === "function" ? base1.propagateLhs(true) : void 0;
+      }
+
+      astType() {
+        if (this.jsx) {
+          return 'JSXSpreadAttribute';
+        } else if (this.lhs) {
+          return 'RestElement';
+        } else {
+          return 'SpreadElement';
+        }
+      }
+
+      astProperties(o) {
+        return {
+          argument: this.name.ast(o, LEVEL_OP),
+          postfix: this.postfix
+        };
+      }
+
+    };
+
+    Splat.prototype.children = ['name'];
+
+    return Splat;
+
+  }).call(this);
+
+  //### Expansion
+
+  // Used to skip values inside an array destructuring (pattern matching) or
+  // parameter list.
+  exports.Expansion = Expansion = (function() {
+    class Expansion extends Base {
+      compileNode(o) {
+        return this.throwLhsError();
+      }
+
+      asReference(o) {
+        return this;
+      }
+
+      eachName(iterator) {}
+
+      throwLhsError() {
+        return this.error('Expansion must be used inside a destructuring assignment or parameter list');
+      }
+
+      astNode(o) {
+        if (!this.lhs) {
+          this.throwLhsError();
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        return 'RestElement';
+      }
+
+      astProperties() {
+        return {
+          argument: null
+        };
+      }
+
+    };
+
+    Expansion.prototype.shouldCache = NO;
+
+    return Expansion;
+
+  }).call(this);
+
+  //### Elision
+
+  // Array elision element (for example, [,a, , , b, , c, ,]).
+  exports.Elision = Elision = (function() {
+    class Elision extends Base {
+      compileToFragments(o, level) {
+        var fragment;
+        fragment = super.compileToFragments(o, level);
+        fragment.isElision = true;
+        return fragment;
+      }
+
+      compileNode(o) {
+        return [this.makeCode(', ')];
+      }
+
+      asReference(o) {
+        return this;
+      }
+
+      eachName(iterator) {}
+
+      astNode() {
+        return null;
+      }
+
+    };
+
+    Elision.prototype.isAssignable = YES;
+
+    Elision.prototype.shouldCache = NO;
+
+    return Elision;
+
+  }).call(this);
+
+  //### 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 = While = (function() {
+    class While extends Base {
+      constructor(condition1, {
+          invert: inverted,
+          guard,
+          isLoop
+        } = {}) {
+        super();
+        this.condition = condition1;
+        this.inverted = inverted;
+        this.guard = guard;
+        this.isLoop = isLoop;
+      }
+
+      makeReturn(results, mark) {
+        if (results) {
+          return super.makeReturn(results, mark);
+        }
+        this.returns = !this.jumps();
+        if (mark) {
+          if (this.returns) {
+            this.body.makeReturn(results, mark);
+          }
+          return;
+        }
+        return this;
+      }
+
+      addBody(body1) {
+        this.body = body1;
+        return this;
+      }
+
+      jumps() {
+        var expressions, j, jumpNode, len1, node;
+        ({expressions} = this.body);
+        if (!expressions.length) {
+          return false;
+        }
+        for (j = 0, len1 = expressions.length; j < len1; j++) {
+          node = expressions[j];
+          if (jumpNode = node.jumps({
+            loop: true
+          })) {
+            return jumpNode;
+          }
+        }
+        return false;
+      }
+
+      // 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) {
+        var answer, body, rvar, set;
+        o.indent += TAB;
+        set = '';
+        ({body} = this);
+        if (body.isEmpty()) {
+          body = this.makeCode('');
+        } else {
+          if (this.returns) {
+            body.makeReturn(rvar = o.scope.freeVariable('results'));
+            set = `${this.tab}${rvar} = [];\n`;
+          }
+          if (this.guard) {
+            if (body.expressions.length > 1) {
+              body.expressions.unshift(new If((new Parens(this.guard)).invert(), new StatementLiteral("continue")));
+            } else {
+              if (this.guard) {
+                body = Block.wrap([new If(this.guard, body)]);
+              }
+            }
+          }
+          body = [].concat(this.makeCode("\n"), body.compileToFragments(o, LEVEL_TOP), this.makeCode(`\n${this.tab}`));
+        }
+        answer = [].concat(this.makeCode(set + this.tab + "while ("), this.processedCondition().compileToFragments(o, LEVEL_PAREN), this.makeCode(") {"), body, this.makeCode("}"));
+        if (this.returns) {
+          answer.push(this.makeCode(`\n${this.tab}return ${rvar};`));
+        }
+        return answer;
+      }
+
+      processedCondition() {
+        return this.processedConditionCache != null ? this.processedConditionCache : this.processedConditionCache = this.inverted ? this.condition.invert() : this.condition;
+      }
+
+      astType() {
+        return 'WhileStatement';
+      }
+
+      astProperties(o) {
+        var ref1, ref2;
+        return {
+          test: this.condition.ast(o, LEVEL_PAREN),
+          body: this.body.ast(o, LEVEL_TOP),
+          guard: (ref1 = (ref2 = this.guard) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+          inverted: !!this.inverted,
+          postfix: !!this.postfix,
+          loop: !!this.isLoop
+        };
+      }
+
+    };
+
+    While.prototype.children = ['condition', 'guard', 'body'];
+
+    While.prototype.isStatement = YES;
+
+    return While;
+
+  }).call(this);
+
+  //### Op
+
+  // Simple Arithmetic and logical operations. Performs some conversion from
+  // CoffeeScript operations into their JavaScript equivalents.
+  exports.Op = Op = (function() {
+    var CONVERSIONS, INVERSIONS;
+
+    class Op extends Base {
+      constructor(op, first, second, flip, {invertOperator, originalOperator: originalOperator = op} = {}) {
+        var call, firstCall, message, ref1, unwrapped;
+        super();
+        this.invertOperator = invertOperator;
+        this.originalOperator = originalOperator;
+        if (op === 'new') {
+          if (((firstCall = unwrapped = first.unwrap()) instanceof Call || (firstCall = unwrapped.base) instanceof Call) && !firstCall.do && !firstCall.isNew) {
+            return new Value(firstCall.newInstance(), firstCall === unwrapped ? [] : unwrapped.properties);
+          }
+          if (!(first instanceof Parens || first.unwrap() instanceof IdentifierLiteral || (typeof first.hasProperties === "function" ? first.hasProperties() : void 0))) {
+            first = new Parens(first);
+          }
+          call = new Call(first, []);
+          call.locationData = this.locationData;
+          call.isNew = true;
+          return call;
+        }
+        this.operator = CONVERSIONS[op] || op;
+        this.first = first;
+        this.second = second;
+        this.flip = !!flip;
+        if ((ref1 = this.operator) === '--' || ref1 === '++') {
+          message = isUnassignable(this.first.unwrapAll().value);
+          if (message) {
+            this.first.error(message);
+          }
+        }
+        return this;
+      }
+
+      isNumber() {
+        var ref1;
+        return this.isUnary() && ((ref1 = this.operator) === '+' || ref1 === '-') && this.first instanceof Value && this.first.isNumber();
+      }
+
+      isAwait() {
+        return this.operator === 'await';
+      }
+
+      isYield() {
+        var ref1;
+        return (ref1 = this.operator) === 'yield' || ref1 === 'yield*';
+      }
+
+      isUnary() {
+        return !this.second;
+      }
+
+      shouldCache() {
+        return !this.isNumber();
+      }
+
+      // Am I capable of
+      // [Python-style comparison chaining](https://docs.python.org/3/reference/expressions.html#not-in)?
+      isChainable() {
+        var ref1;
+        return (ref1 = this.operator) === '<' || ref1 === '>' || ref1 === '>=' || ref1 === '<=' || ref1 === '===' || ref1 === '!==';
+      }
+
+      isChain() {
+        return this.isChainable() && this.first.isChainable();
+      }
+
+      invert() {
+        var allInvertable, curr, fst, op, ref1;
+        if (this.isInOperator()) {
+          this.invertOperator = '!';
+          return this;
+        }
+        if (this.isChain()) {
+          allInvertable = true;
+          curr = this;
+          while (curr && curr.operator) {
+            allInvertable && (allInvertable = curr.operator in INVERSIONS);
+            curr = curr.first;
+          }
+          if (!allInvertable) {
+            return new Parens(this).invert();
+          }
+          curr = this;
+          while (curr && curr.operator) {
+            curr.invert = !curr.invert;
+            curr.operator = INVERSIONS[curr.operator];
+            curr = curr.first;
+          }
+          return this;
+        } else if (op = INVERSIONS[this.operator]) {
+          this.operator = op;
+          if (this.first.unwrap() instanceof Op) {
+            this.first.invert();
+          }
+          return this;
+        } else if (this.second) {
+          return new Parens(this).invert();
+        } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((ref1 = fst.operator) === '!' || ref1 === 'in' || ref1 === 'instanceof')) {
+          return fst;
+        } else {
+          return new Op('!', this);
+        }
+      }
+
+      unfoldSoak(o) {
+        var ref1;
+        return ((ref1 = this.operator) === '++' || ref1 === '--' || ref1 === 'delete') && unfoldSoak(o, this, 'first');
+      }
+
+      generateDo(exp) {
+        var call, func, j, len1, param, passedParams, ref, ref1;
+        passedParams = [];
+        func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;
+        ref1 = func.params || [];
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          param = ref1[j];
+          if (param.value) {
+            passedParams.push(param.value);
+            delete param.value;
+          } else {
+            passedParams.push(param);
+          }
+        }
+        call = new Call(exp, passedParams);
+        call.do = true;
+        return call;
+      }
+
+      isInOperator() {
+        return this.originalOperator === 'in';
+      }
+
+      compileNode(o) {
+        var answer, inNode, isChain, lhs, rhs;
+        if (this.isInOperator()) {
+          inNode = new In(this.first, this.second);
+          return (this.invertOperator ? inNode.invert() : inNode).compileNode(o);
+        }
+        if (this.invertOperator) {
+          this.invertOperator = null;
+          return this.invert().compileNode(o);
+        }
+        if (this.operator === 'do') {
+          return Op.prototype.generateDo(this.first).compileNode(o);
+        }
+        isChain = this.isChain();
+        if (!isChain) {
+          // In chains, there's no need to wrap bare obj literals in parens,
+          // as the chained expression is wrapped.
+          this.first.front = this.front;
+        }
+        this.checkDeleteOperand(o);
+        if (this.isYield() || this.isAwait()) {
+          return this.compileContinuation(o);
+        }
+        if (this.isUnary()) {
+          return this.compileUnary(o);
+        }
+        if (isChain) {
+          return this.compileChain(o);
+        }
+        switch (this.operator) {
+          case '?':
+            return this.compileExistence(o, this.second.isDefaultValue);
+          case '//':
+            return this.compileFloorDivision(o);
+          case '%%':
+            return this.compileModulo(o);
+          default:
+            lhs = this.first.compileToFragments(o, LEVEL_OP);
+            rhs = this.second.compileToFragments(o, LEVEL_OP);
+            answer = [].concat(lhs, this.makeCode(` ${this.operator} `), rhs);
+            if (o.level <= LEVEL_OP) {
+              return answer;
+            } else {
+              return this.wrapInParentheses(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) {
+        var fragments, fst, shared;
+        [this.first.second, shared] = this.first.second.cache(o);
+        fst = this.first.compileToFragments(o, LEVEL_OP);
+        fragments = fst.concat(this.makeCode(` ${this.invert ? '&&' : '||'} `), shared.compileToFragments(o), this.makeCode(` ${this.operator} `), this.second.compileToFragments(o, LEVEL_OP));
+        return this.wrapInParentheses(fragments);
+      }
+
+      // Keep reference to the left expression, unless this an existential assignment
+      compileExistence(o, checkOnlyUndefined) {
+        var fst, ref;
+        if (this.first.shouldCache()) {
+          ref = new IdentifierLiteral(o.scope.freeVariable('ref'));
+          fst = new Parens(new Assign(ref, this.first));
+        } else {
+          fst = this.first;
+          ref = fst;
+        }
+        return new If(new Existence(fst, checkOnlyUndefined), ref, {
+          type: 'if'
+        }).addElse(this.second).compileToFragments(o);
+      }
+
+      // Compile a unary **Op**.
+      compileUnary(o) {
+        var op, parts, plusMinus;
+        parts = [];
+        op = this.operator;
+        parts.push([this.makeCode(op)]);
+        if (op === '!' && this.first instanceof Existence) {
+          this.first.negated = !this.first.negated;
+          return this.first.compileToFragments(o);
+        }
+        if (o.level >= LEVEL_ACCESS) {
+          return (new Parens(this)).compileToFragments(o);
+        }
+        plusMinus = op === '+' || op === '-';
+        if ((op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {
+          parts.push([this.makeCode(' ')]);
+        }
+        if (plusMinus && this.first instanceof Op) {
+          this.first = new Parens(this.first);
+        }
+        parts.push(this.first.compileToFragments(o, LEVEL_OP));
+        if (this.flip) {
+          parts.reverse();
+        }
+        return this.joinFragmentArrays(parts, '');
+      }
+
+      compileContinuation(o) {
+        var op, parts, ref1;
+        parts = [];
+        op = this.operator;
+        if (!this.isAwait()) {
+          this.checkContinuation(o);
+        }
+        if (indexOf.call(Object.keys(this.first), 'expression') >= 0 && !(this.first instanceof Throw)) {
+          if (this.first.expression != null) {
+            parts.push(this.first.expression.compileToFragments(o, LEVEL_OP));
+          }
+        } else {
+          if (o.level >= LEVEL_PAREN) {
+            parts.push([this.makeCode("(")]);
+          }
+          parts.push([this.makeCode(op)]);
+          if (((ref1 = this.first.base) != null ? ref1.value : void 0) !== '') {
+            parts.push([this.makeCode(" ")]);
+          }
+          parts.push(this.first.compileToFragments(o, LEVEL_OP));
+          if (o.level >= LEVEL_PAREN) {
+            parts.push([this.makeCode(")")]);
+          }
+        }
+        return this.joinFragmentArrays(parts, '');
+      }
+
+      checkContinuation(o) {
+        var ref1;
+        if (o.scope.parent == null) {
+          this.error(`${this.operator} can only occur inside functions`);
+        }
+        if (((ref1 = o.scope.method) != null ? ref1.bound : void 0) && o.scope.method.isGenerator) {
+          return this.error('yield cannot occur inside bound (fat arrow) functions');
+        }
+      }
+
+      compileFloorDivision(o) {
+        var div, floor, second;
+        floor = new Value(new IdentifierLiteral('Math'), [new Access(new PropertyName('floor'))]);
+        second = this.second.shouldCache() ? new Parens(this.second) : this.second;
+        div = new Op('/', this.first, second);
+        return new Call(floor, [div]).compileToFragments(o);
+      }
+
+      compileModulo(o) {
+        var mod;
+        mod = new Value(new Literal(utility('modulo', o)));
+        return new Call(mod, [this.first, this.second]).compileToFragments(o);
+      }
+
+      toString(idt) {
+        return super.toString(idt, this.constructor.name + ' ' + this.operator);
+      }
+
+      checkDeleteOperand(o) {
+        if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {
+          return this.error('delete operand may not be argument or var');
+        }
+      }
+
+      astNode(o) {
+        if (this.isYield()) {
+          this.checkContinuation(o);
+        }
+        this.checkDeleteOperand(o);
+        return super.astNode(o);
+      }
+
+      astType() {
+        if (this.isAwait()) {
+          return 'AwaitExpression';
+        }
+        if (this.isYield()) {
+          return 'YieldExpression';
+        }
+        if (this.isChain()) {
+          return 'ChainedComparison';
+        }
+        switch (this.operator) {
+          case '||':
+          case '&&':
+          case '?':
+            return 'LogicalExpression';
+          case '++':
+          case '--':
+            return 'UpdateExpression';
+          default:
+            if (this.isUnary()) {
+              return 'UnaryExpression';
+            } else {
+              return 'BinaryExpression';
+            }
+        }
+      }
+
+      operatorAst() {
+        return `${this.invertOperator ? `${this.invertOperator} ` : ''}${this.originalOperator}`;
+      }
+
+      chainAstProperties(o) {
+        var currentOp, operand, operands, operators;
+        operators = [this.operatorAst()];
+        operands = [this.second];
+        currentOp = this.first;
+        while (true) {
+          operators.unshift(currentOp.operatorAst());
+          operands.unshift(currentOp.second);
+          currentOp = currentOp.first;
+          if (!currentOp.isChainable()) {
+            operands.unshift(currentOp);
+            break;
+          }
+        }
+        return {
+          operators,
+          operands: (function() {
+            var j, len1, results1;
+            results1 = [];
+            for (j = 0, len1 = operands.length; j < len1; j++) {
+              operand = operands[j];
+              results1.push(operand.ast(o, LEVEL_OP));
+            }
+            return results1;
+          })()
+        };
+      }
+
+      astProperties(o) {
+        var argument, firstAst, operatorAst, ref1, secondAst;
+        if (this.isChain()) {
+          return this.chainAstProperties(o);
+        }
+        firstAst = this.first.ast(o, LEVEL_OP);
+        secondAst = (ref1 = this.second) != null ? ref1.ast(o, LEVEL_OP) : void 0;
+        operatorAst = this.operatorAst();
+        switch (false) {
+          case !this.isUnary():
+            argument = this.isYield() && this.first.unwrap().value === '' ? null : firstAst;
+            if (this.isAwait()) {
+              return {argument};
+            }
+            if (this.isYield()) {
+              return {
+                argument,
+                delegate: this.operator === 'yield*'
+              };
+            }
+            return {
+              argument,
+              operator: operatorAst,
+              prefix: !this.flip
+            };
+          default:
+            return {
+              left: firstAst,
+              right: secondAst,
+              operator: operatorAst
+            };
+        }
+      }
+
+    };
+
+    // The map of conversions from CoffeeScript to JavaScript symbols.
+    CONVERSIONS = {
+      '==': '===',
+      '!=': '!==',
+      'of': 'in',
+      'yieldfrom': 'yield*'
+    };
+
+    // The map of invertible operators.
+    INVERSIONS = {
+      '!==': '===',
+      '===': '!=='
+    };
+
+    Op.prototype.children = ['first', 'second'];
+
+    return Op;
+
+  }).call(this);
+
+  //### In
+  exports.In = In = (function() {
+    class In extends Base {
+      constructor(object1, array) {
+        super();
+        this.object = object1;
+        this.array = array;
+      }
+
+      compileNode(o) {
+        var hasSplat, j, len1, obj, ref1;
+        if (this.array instanceof Value && this.array.isArray() && this.array.base.objects.length) {
+          ref1 = this.array.base.objects;
+          for (j = 0, len1 = ref1.length; j < len1; j++) {
+            obj = ref1[j];
+            if (!(obj instanceof Splat)) {
+              continue;
+            }
+            hasSplat = true;
+            break;
+          }
+          if (!hasSplat) {
+            // `compileOrTest` only if we have an array literal with no splats
+            return this.compileOrTest(o);
+          }
+        }
+        return this.compileLoopTest(o);
+      }
+
+      compileOrTest(o) {
+        var cmp, cnj, i, item, j, len1, ref, ref1, sub, tests;
+        [sub, ref] = this.object.cache(o, LEVEL_OP);
+        [cmp, cnj] = this.negated ? [' !== ', ' && '] : [' === ', ' || '];
+        tests = [];
+        ref1 = this.array.base.objects;
+        for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+          item = ref1[i];
+          if (i) {
+            tests.push(this.makeCode(cnj));
+          }
+          tests = tests.concat((i ? ref : sub), this.makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS));
+        }
+        if (o.level < LEVEL_OP) {
+          return tests;
+        } else {
+          return this.wrapInParentheses(tests);
+        }
+      }
+
+      compileLoopTest(o) {
+        var fragments, ref, sub;
+        [sub, ref] = this.object.cache(o, LEVEL_LIST);
+        fragments = [].concat(this.makeCode(utility('indexOf', o) + ".call("), this.array.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), ref, this.makeCode(") " + (this.negated ? '< 0' : '>= 0')));
+        if (fragmentsToText(sub) === fragmentsToText(ref)) {
+          return fragments;
+        }
+        fragments = sub.concat(this.makeCode(', '), fragments);
+        if (o.level < LEVEL_LIST) {
+          return fragments;
+        } else {
+          return this.wrapInParentheses(fragments);
+        }
+      }
+
+      toString(idt) {
+        return super.toString(idt, this.constructor.name + (this.negated ? '!' : ''));
+      }
+
+    };
+
+    In.prototype.children = ['object', 'array'];
+
+    In.prototype.invert = NEGATE;
+
+    return In;
+
+  }).call(this);
+
+  //### Try
+
+  // A classic *try/catch/finally* block.
+  exports.Try = Try = (function() {
+    class Try extends Base {
+      constructor(attempt, _catch, ensure, finallyTag) {
+        super();
+        this.attempt = attempt;
+        this.catch = _catch;
+        this.ensure = ensure;
+        this.finallyTag = finallyTag;
+      }
+
+      jumps(o) {
+        var ref1;
+        return this.attempt.jumps(o) || ((ref1 = this.catch) != null ? ref1.jumps(o) : void 0);
+      }
+
+      makeReturn(results, mark) {
+        var ref1, ref2;
+        if (mark) {
+          if ((ref1 = this.attempt) != null) {
+            ref1.makeReturn(results, mark);
+          }
+          if ((ref2 = this.catch) != null) {
+            ref2.makeReturn(results, mark);
+          }
+          return;
+        }
+        if (this.attempt) {
+          this.attempt = this.attempt.makeReturn(results);
+        }
+        if (this.catch) {
+          this.catch = this.catch.makeReturn(results);
+        }
+        return this;
+      }
+
+      // Compilation is more or less as you would expect -- the *finally* clause
+      // is optional, the *catch* is not.
+      compileNode(o) {
+        var catchPart, ensurePart, generatedErrorVariableName, originalIndent, tryPart;
+        originalIndent = o.indent;
+        o.indent += TAB;
+        tryPart = this.attempt.compileToFragments(o, LEVEL_TOP);
+        catchPart = this.catch ? this.catch.compileToFragments(merge(o, {
+          indent: originalIndent
+        }), LEVEL_TOP) : !(this.ensure || this.catch) ? (generatedErrorVariableName = o.scope.freeVariable('error', {
+          reserve: false
+        }), [this.makeCode(` catch (${generatedErrorVariableName}) {}`)]) : [];
+        ensurePart = this.ensure ? [].concat(this.makeCode(" finally {\n"), this.ensure.compileToFragments(o, LEVEL_TOP), this.makeCode(`\n${this.tab}}`)) : [];
+        return [].concat(this.makeCode(`${this.tab}try {\n`), tryPart, this.makeCode(`\n${this.tab}}`), catchPart, ensurePart);
+      }
+
+      astType() {
+        return 'TryStatement';
+      }
+
+      astProperties(o) {
+        var ref1, ref2;
+        return {
+          block: this.attempt.ast(o, LEVEL_TOP),
+          handler: (ref1 = (ref2 = this.catch) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+          // Include `finally` keyword in location data.
+          finalizer: this.ensure != null ? Object.assign(this.ensure.ast(o, LEVEL_TOP), mergeAstLocationData(jisonLocationDataToAstLocationData(this.finallyTag.locationData), this.ensure.astLocationData())) : null
+        };
+      }
+
+    };
+
+    Try.prototype.children = ['attempt', 'catch', 'ensure'];
+
+    Try.prototype.isStatement = YES;
+
+    return Try;
+
+  }).call(this);
+
+  exports.Catch = Catch = (function() {
+    class Catch extends Base {
+      constructor(recovery, errorVariable) {
+        var base1, ref1;
+        super();
+        this.recovery = recovery;
+        this.errorVariable = errorVariable;
+        if ((ref1 = this.errorVariable) != null) {
+          if (typeof (base1 = ref1.unwrap()).propagateLhs === "function") {
+            base1.propagateLhs(true);
+          }
+        }
+      }
+
+      jumps(o) {
+        return this.recovery.jumps(o);
+      }
+
+      makeReturn(results, mark) {
+        var ret;
+        ret = this.recovery.makeReturn(results, mark);
+        if (mark) {
+          return;
+        }
+        this.recovery = ret;
+        return this;
+      }
+
+      compileNode(o) {
+        var generatedErrorVariableName, placeholder;
+        o.indent += TAB;
+        generatedErrorVariableName = o.scope.freeVariable('error', {
+          reserve: false
+        });
+        placeholder = new IdentifierLiteral(generatedErrorVariableName);
+        this.checkUnassignable();
+        if (this.errorVariable) {
+          this.recovery.unshift(new Assign(this.errorVariable, placeholder));
+        }
+        return [].concat(this.makeCode(" catch ("), placeholder.compileToFragments(o), this.makeCode(") {\n"), this.recovery.compileToFragments(o, LEVEL_TOP), this.makeCode(`\n${this.tab}}`));
+      }
+
+      checkUnassignable() {
+        var message;
+        if (this.errorVariable) {
+          message = isUnassignable(this.errorVariable.unwrapAll().value);
+          if (message) {
+            return this.errorVariable.error(message);
+          }
+        }
+      }
+
+      astNode(o) {
+        var ref1;
+        this.checkUnassignable();
+        if ((ref1 = this.errorVariable) != null) {
+          ref1.eachName(function(name) {
+            var alreadyDeclared;
+            alreadyDeclared = o.scope.find(name.value);
+            return name.isDeclaration = !alreadyDeclared;
+          });
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        return 'CatchClause';
+      }
+
+      astProperties(o) {
+        var ref1, ref2;
+        return {
+          param: (ref1 = (ref2 = this.errorVariable) != null ? ref2.ast(o) : void 0) != null ? ref1 : null,
+          body: this.recovery.ast(o, LEVEL_TOP)
+        };
+      }
+
+    };
+
+    Catch.prototype.children = ['recovery', 'errorVariable'];
+
+    Catch.prototype.isStatement = YES;
+
+    return Catch;
+
+  }).call(this);
+
+  //### Throw
+
+  // Simple node to throw an exception.
+  exports.Throw = Throw = (function() {
+    class Throw extends Base {
+      constructor(expression1) {
+        super();
+        this.expression = expression1;
+      }
+
+      compileNode(o) {
+        var fragments;
+        fragments = this.expression.compileToFragments(o, LEVEL_LIST);
+        unshiftAfterComments(fragments, this.makeCode('throw '));
+        fragments.unshift(this.makeCode(this.tab));
+        fragments.push(this.makeCode(';'));
+        return fragments;
+      }
+
+      astType() {
+        return 'ThrowStatement';
+      }
+
+      astProperties(o) {
+        return {
+          argument: this.expression.ast(o, LEVEL_LIST)
+        };
+      }
+
+    };
+
+    Throw.prototype.children = ['expression'];
+
+    Throw.prototype.isStatement = YES;
+
+    Throw.prototype.jumps = NO;
+
+    // A **Throw** is already a return, of sorts...
+    Throw.prototype.makeReturn = THIS;
+
+    return Throw;
+
+  }).call(this);
+
+  //### 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. Optionally only check if a variable is not `undefined`.
+  exports.Existence = Existence = (function() {
+    class Existence extends Base {
+      constructor(expression1, onlyNotUndefined = false) {
+        var salvagedComments;
+        super();
+        this.expression = expression1;
+        this.comparisonTarget = onlyNotUndefined ? 'undefined' : 'null';
+        salvagedComments = [];
+        this.expression.traverseChildren(true, function(child) {
+          var comment, j, len1, ref1;
+          if (child.comments) {
+            ref1 = child.comments;
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              comment = ref1[j];
+              if (indexOf.call(salvagedComments, comment) < 0) {
+                salvagedComments.push(comment);
+              }
+            }
+            return delete child.comments;
+          }
+        });
+        attachCommentsToNode(salvagedComments, this);
+        moveComments(this.expression, this);
+      }
+
+      compileNode(o) {
+        var cmp, cnj, code;
+        this.expression.front = this.front;
+        code = this.expression.compile(o, LEVEL_OP);
+        if (this.expression.unwrap() instanceof IdentifierLiteral && !o.scope.check(code)) {
+          [cmp, cnj] = this.negated ? ['===', '||'] : ['!==', '&&'];
+          code = `typeof ${code} ${cmp} \"undefined\"` + (this.comparisonTarget !== 'undefined' ? ` ${cnj} ${code} ${cmp} ${this.comparisonTarget}` : '');
+        } else {
+          // We explicity want to use loose equality (`==`) when comparing against `null`,
+          // so that an existence check roughly corresponds to a check for truthiness.
+          // Do *not* change this to `===` for `null`, as this will break mountains of
+          // existing code. When comparing only against `undefined`, however, we want to
+          // use `===` because this use case is for parity with ES2015+ default values,
+          // which only get assigned when the variable is `undefined` (but not `null`).
+          cmp = this.comparisonTarget === 'null' ? this.negated ? '==' : '!=' : this.negated ? '===' : '!=='; // `undefined`
+          code = `${code} ${cmp} ${this.comparisonTarget}`;
+        }
+        return [this.makeCode(o.level <= LEVEL_COND ? code : `(${code})`)];
+      }
+
+      astType() {
+        return 'UnaryExpression';
+      }
+
+      astProperties(o) {
+        return {
+          argument: this.expression.ast(o),
+          operator: '?',
+          prefix: false
+        };
+      }
+
+    };
+
+    Existence.prototype.children = ['expression'];
+
+    Existence.prototype.invert = NEGATE;
+
+    return Existence;
+
+  }).call(this);
+
+  //### 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.
+
+  // Parentheses are a good way to force any statement to become an expression.
+  exports.Parens = Parens = (function() {
+    class Parens extends Base {
+      constructor(body1) {
+        super();
+        this.body = body1;
+      }
+
+      unwrap() {
+        return this.body;
+      }
+
+      shouldCache() {
+        return this.body.shouldCache();
+      }
+
+      compileNode(o) {
+        var bare, expr, fragments, ref1, shouldWrapComment;
+        expr = this.body.unwrap();
+        // If these parentheses are wrapping an `IdentifierLiteral` followed by a
+        // block comment, output the parentheses (or put another way, don’t optimize
+        // away these redundant parentheses). This is because Flow requires
+        // parentheses in certain circumstances to distinguish identifiers followed
+        // by comment-based type annotations from JavaScript labels.
+        shouldWrapComment = (ref1 = expr.comments) != null ? ref1.some(function(comment) {
+          return comment.here && !comment.unshift && !comment.newLine;
+        }) : void 0;
+        if (expr instanceof Value && expr.isAtomic() && !this.jsxAttribute && !shouldWrapComment) {
+          expr.front = this.front;
+          return expr.compileToFragments(o);
+        }
+        fragments = expr.compileToFragments(o, LEVEL_PAREN);
+        bare = o.level < LEVEL_OP && !shouldWrapComment && (expr instanceof Op && !expr.isInOperator() || expr.unwrap() instanceof Call || (expr instanceof For && expr.returns)) && (o.level < LEVEL_COND || fragments.length <= 3);
+        if (this.jsxAttribute) {
+          return this.wrapInBraces(fragments);
+        }
+        if (bare) {
+          return fragments;
+        } else {
+          return this.wrapInParentheses(fragments);
+        }
+      }
+
+      astNode(o) {
+        return this.body.unwrap().ast(o, LEVEL_PAREN);
+      }
+
+    };
+
+    Parens.prototype.children = ['body'];
+
+    return Parens;
+
+  }).call(this);
+
+  //### StringWithInterpolations
+  exports.StringWithInterpolations = StringWithInterpolations = (function() {
+    class StringWithInterpolations extends Base {
+      constructor(body1, {quote, startQuote, jsxAttribute} = {}) {
+        super();
+        this.body = body1;
+        this.quote = quote;
+        this.startQuote = startQuote;
+        this.jsxAttribute = jsxAttribute;
+      }
+
+      static fromStringLiteral(stringLiteral) {
+        var updatedString, updatedStringValue;
+        updatedString = stringLiteral.withoutQuotesInLocationData();
+        updatedStringValue = new Value(updatedString).withLocationDataFrom(updatedString);
+        return new StringWithInterpolations(Block.wrap([updatedStringValue]), {
+          quote: stringLiteral.quote,
+          jsxAttribute: stringLiteral.jsxAttribute
+        }).withLocationDataFrom(stringLiteral);
+      }
+
+      // `unwrap` returns `this` to stop ancestor nodes reaching in to grab @body,
+      // and using @body.compileNode. `StringWithInterpolations.compileNode` is
+      // _the_ custom logic to output interpolated strings as code.
+      unwrap() {
+        return this;
+      }
+
+      shouldCache() {
+        return this.body.shouldCache();
+      }
+
+      extractElements(o, {includeInterpolationWrappers, isJsx} = {}) {
+        var elements, expr, salvagedComments;
+        // Assumes that `expr` is `Block`
+        expr = this.body.unwrap();
+        elements = [];
+        salvagedComments = [];
+        expr.traverseChildren(false, (node) => {
+          var comment, commentPlaceholder, empty, j, k, len1, len2, ref1, ref2, ref3, unwrapped;
+          if (node instanceof StringLiteral) {
+            if (node.comments) {
+              salvagedComments.push(...node.comments);
+              delete node.comments;
+            }
+            elements.push(node);
+            return true;
+          } else if (node instanceof Interpolation) {
+            if (salvagedComments.length !== 0) {
+              for (j = 0, len1 = salvagedComments.length; j < len1; j++) {
+                comment = salvagedComments[j];
+                comment.unshift = true;
+                comment.newLine = true;
+              }
+              attachCommentsToNode(salvagedComments, node);
+            }
+            if ((unwrapped = (ref1 = node.expression) != null ? ref1.unwrapAll() : void 0) instanceof PassthroughLiteral && unwrapped.generated && !(isJsx && o.compiling)) {
+              if (o.compiling) {
+                commentPlaceholder = new StringLiteral('').withLocationDataFrom(node);
+                commentPlaceholder.comments = unwrapped.comments;
+                if (node.comments) {
+                  (commentPlaceholder.comments != null ? commentPlaceholder.comments : commentPlaceholder.comments = []).push(...node.comments);
+                }
+                elements.push(new Value(commentPlaceholder));
+              } else {
+                empty = new Interpolation().withLocationDataFrom(node);
+                empty.comments = node.comments;
+                elements.push(empty);
+              }
+            } else if (node.expression || includeInterpolationWrappers) {
+              if (node.comments) {
+                ((ref2 = node.expression) != null ? ref2.comments != null ? ref2.comments : ref2.comments = [] : void 0).push(...node.comments);
+              }
+              elements.push(includeInterpolationWrappers ? node : node.expression);
+            }
+            return false;
+          } else if (node.comments) {
+            // This node is getting discarded, but salvage its comments.
+            if (elements.length !== 0 && !(elements[elements.length - 1] instanceof StringLiteral)) {
+              ref3 = node.comments;
+              for (k = 0, len2 = ref3.length; k < len2; k++) {
+                comment = ref3[k];
+                comment.unshift = false;
+                comment.newLine = true;
+              }
+              attachCommentsToNode(node.comments, elements[elements.length - 1]);
+            } else {
+              salvagedComments.push(...node.comments);
+            }
+            delete node.comments;
+          }
+          return true;
+        });
+        return elements;
+      }
+
+      compileNode(o) {
+        var code, element, elements, fragments, j, len1, ref1, unquotedElementValue, wrapped;
+        if (this.comments == null) {
+          this.comments = (ref1 = this.startQuote) != null ? ref1.comments : void 0;
+        }
+        if (this.jsxAttribute) {
+          wrapped = new Parens(new StringWithInterpolations(this.body));
+          wrapped.jsxAttribute = true;
+          return wrapped.compileNode(o);
+        }
+        elements = this.extractElements(o, {
+          isJsx: this.jsx
+        });
+        fragments = [];
+        if (!this.jsx) {
+          fragments.push(this.makeCode('`'));
+        }
+        for (j = 0, len1 = elements.length; j < len1; j++) {
+          element = elements[j];
+          if (element instanceof StringLiteral) {
+            unquotedElementValue = this.jsx ? element.unquotedValueForJSX : element.unquotedValueForTemplateLiteral;
+            fragments.push(this.makeCode(unquotedElementValue));
+          } else {
+            if (!this.jsx) {
+              fragments.push(this.makeCode('$'));
+            }
+            code = element.compileToFragments(o, LEVEL_PAREN);
+            if (!this.isNestedTag(element) || code.some(function(fragment) {
+              var ref2;
+              return (ref2 = fragment.comments) != null ? ref2.some(function(comment) {
+                return comment.here === false;
+              }) : void 0;
+            })) {
+              code = this.wrapInBraces(code);
+              // Flag the `{` and `}` fragments as having been generated by this
+              // `StringWithInterpolations` node, so that `compileComments` knows
+              // to treat them as bounds. But the braces are unnecessary if all of
+              // the enclosed comments are `/* */` comments. Don’t trust
+              // `fragment.type`, which can report minified variable names when
+              // this compiler is minified.
+              code[0].isStringWithInterpolations = true;
+              code[code.length - 1].isStringWithInterpolations = true;
+            }
+            fragments.push(...code);
+          }
+        }
+        if (!this.jsx) {
+          fragments.push(this.makeCode('`'));
+        }
+        return fragments;
+      }
+
+      isNestedTag(element) {
+        var call;
+        call = typeof element.unwrapAll === "function" ? element.unwrapAll() : void 0;
+        return this.jsx && call instanceof JSXElement;
+      }
+
+      astType() {
+        return 'TemplateLiteral';
+      }
+
+      astProperties(o) {
+        var element, elements, emptyInterpolation, expression, expressions, index, j, last, len1, node, quasis;
+        elements = this.extractElements(o, {
+          includeInterpolationWrappers: true
+        });
+        [last] = slice1.call(elements, -1);
+        quasis = [];
+        expressions = [];
+        for (index = j = 0, len1 = elements.length; j < len1; index = ++j) {
+          element = elements[index];
+          if (element instanceof StringLiteral) {
+            quasis.push(new TemplateElement(element.originalValue, {
+              tail: element === last
+            }).withLocationDataFrom(element).ast(o)); // Interpolation
+          } else {
+            ({expression} = element);
+            node = expression == null ? (emptyInterpolation = new EmptyInterpolation(), emptyInterpolation.locationData = emptyExpressionLocationData({
+              interpolationNode: element,
+              openingBrace: '#{',
+              closingBrace: '}'
+            }), emptyInterpolation) : expression.unwrapAll();
+            expressions.push(astAsBlockIfNeeded(node, o));
+          }
+        }
+        return {expressions, quasis, quote: this.quote};
+      }
+
+    };
+
+    StringWithInterpolations.prototype.children = ['body'];
+
+    return StringWithInterpolations;
+
+  }).call(this);
+
+  exports.TemplateElement = TemplateElement = class TemplateElement extends Base {
+    constructor(value1, {
+        tail: tail1
+      } = {}) {
+      super();
+      this.value = value1;
+      this.tail = tail1;
+    }
+
+    astProperties() {
+      return {
+        value: {
+          raw: this.value
+        },
+        tail: !!this.tail
+      };
+    }
+
+  };
+
+  exports.Interpolation = Interpolation = (function() {
+    class Interpolation extends Base {
+      constructor(expression1) {
+        super();
+        this.expression = expression1;
+      }
+
+    };
+
+    Interpolation.prototype.children = ['expression'];
+
+    return Interpolation;
+
+  }).call(this);
+
+  // Represents the contents of an empty interpolation (e.g. `#{}`).
+  // Only used during AST generation.
+  exports.EmptyInterpolation = EmptyInterpolation = class EmptyInterpolation extends Base {
+    constructor() {
+      super();
+    }
+
+  };
+
+  //### 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.
+
+  // Unlike Python array comprehensions, they can be multi-line, and you can pass
+  // the current index of the loop as a second parameter. Unlike Ruby blocks,
+  // you can map and filter in a single pass.
+  exports.For = For = (function() {
+    class For extends While {
+      constructor(body, source) {
+        super();
+        this.addBody(body);
+        this.addSource(source);
+      }
+
+      isAwait() {
+        var ref1;
+        return (ref1 = this.await) != null ? ref1 : false;
+      }
+
+      addBody(body) {
+        var base1, expressions;
+        this.body = Block.wrap([body]);
+        ({expressions} = this.body);
+        if (expressions.length) {
+          if ((base1 = this.body).locationData == null) {
+            base1.locationData = mergeLocationData(expressions[0].locationData, expressions[expressions.length - 1].locationData);
+          }
+        }
+        return this;
+      }
+
+      addSource(source) {
+        var attr, attribs, attribute, base1, j, k, len1, len2, ref1, ref2, ref3, ref4;
+        ({source: this.source = false} = source);
+        attribs = ["name", "index", "guard", "step", "own", "ownTag", "await", "awaitTag", "object", "from"];
+        for (j = 0, len1 = attribs.length; j < len1; j++) {
+          attr = attribs[j];
+          this[attr] = (ref1 = source[attr]) != null ? ref1 : this[attr];
+        }
+        if (!this.source) {
+          return this;
+        }
+        if (this.from && this.index) {
+          this.index.error('cannot use index with for-from');
+        }
+        if (this.own && !this.object) {
+          this.ownTag.error(`cannot use own with for-${this.from ? 'from' : 'in'}`);
+        }
+        if (this.object) {
+          [this.name, this.index] = [this.index, this.name];
+        }
+        if (((ref2 = this.index) != null ? typeof ref2.isArray === "function" ? ref2.isArray() : void 0 : void 0) || ((ref3 = this.index) != null ? typeof ref3.isObject === "function" ? ref3.isObject() : void 0 : void 0)) {
+          this.index.error('index cannot be a pattern matching expression');
+        }
+        if (this.await && !this.from) {
+          this.awaitTag.error('await must be used with for-from');
+        }
+        this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length && !this.from;
+        this.pattern = this.name instanceof Value;
+        if (this.pattern) {
+          if (typeof (base1 = this.name.unwrap()).propagateLhs === "function") {
+            base1.propagateLhs(true);
+          }
+        }
+        if (this.range && this.index) {
+          this.index.error('indexes do not apply to range loops');
+        }
+        if (this.range && this.pattern) {
+          this.name.error('cannot pattern match over range loops');
+        }
+        this.returns = false;
+        ref4 = ['source', 'guard', 'step', 'name', 'index'];
+        // Move up any comments in the “`for` line”, i.e. the line of code with `for`,
+        // from any child nodes of that line up to the `for` node itself so that these
+        // comments get output, and get output above the `for` loop.
+        for (k = 0, len2 = ref4.length; k < len2; k++) {
+          attribute = ref4[k];
+          if (!this[attribute]) {
+            continue;
+          }
+          this[attribute].traverseChildren(true, (node) => {
+            var comment, l, len3, ref5;
+            if (node.comments) {
+              ref5 = node.comments;
+              for (l = 0, len3 = ref5.length; l < len3; l++) {
+                comment = ref5[l];
+                // These comments are buried pretty deeply, so if they happen to be
+                // trailing comments the line they trail will be unrecognizable when
+                // we’re done compiling this `for` loop; so just shift them up to
+                // output above the `for` line.
+                comment.newLine = comment.unshift = true;
+              }
+              return moveComments(node, this[attribute]);
+            }
+          });
+          moveComments(this[attribute], this);
+        }
+        return this;
+      }
+
+      // 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) {
+        var body, bodyFragments, compare, compareDown, declare, declareDown, defPart, down, forClose, forCode, forPartFragments, fragments, guardPart, idt1, increment, index, ivar, kvar, kvarAssign, last, lvar, name, namePart, ref, ref1, resultPart, returnResult, rvar, scope, source, step, stepNum, stepVar, svar, varPart;
+        body = Block.wrap([this.body]);
+        ref1 = body.expressions, [last] = slice1.call(ref1, -1);
+        if ((last != null ? last.jumps() : void 0) instanceof Return) {
+          this.returns = false;
+        }
+        source = this.range ? this.source.base : this.source;
+        scope = o.scope;
+        if (!this.pattern) {
+          name = this.name && (this.name.compile(o, LEVEL_LIST));
+        }
+        index = this.index && (this.index.compile(o, LEVEL_LIST));
+        if (name && !this.pattern) {
+          scope.find(name);
+        }
+        if (index && !(this.index instanceof Value)) {
+          scope.find(index);
+        }
+        if (this.returns) {
+          rvar = scope.freeVariable('results');
+        }
+        if (this.from) {
+          if (this.pattern) {
+            ivar = scope.freeVariable('x', {
+              single: true
+            });
+          }
+        } else {
+          ivar = (this.object && index) || scope.freeVariable('i', {
+            single: true
+          });
+        }
+        kvar = ((this.range || this.from) && name) || index || ivar;
+        kvarAssign = kvar !== ivar ? `${kvar} = ` : "";
+        if (this.step && !this.range) {
+          [step, stepVar] = this.cacheToCodeFragments(this.step.cache(o, LEVEL_LIST, shouldCacheOrIsAssignable));
+          if (this.step.isNumber()) {
+            stepNum = parseNumber(stepVar);
+          }
+        }
+        if (this.pattern) {
+          name = ivar;
+        }
+        varPart = '';
+        guardPart = '';
+        defPart = '';
+        idt1 = this.tab + TAB;
+        if (this.range) {
+          forPartFragments = source.compileToFragments(merge(o, {
+            index: ivar,
+            name,
+            step: this.step,
+            shouldCache: shouldCacheOrIsAssignable
+          }));
+        } else {
+          svar = this.source.compile(o, LEVEL_LIST);
+          if ((name || this.own) && !this.from && !(this.source.unwrap() instanceof IdentifierLiteral)) {
+            defPart += `${this.tab}${ref = scope.freeVariable('ref')} = ${svar};\n`;
+            svar = ref;
+          }
+          if (name && !this.pattern && !this.from) {
+            namePart = `${name} = ${svar}[${kvar}]`;
+          }
+          if (!this.object && !this.from) {
+            if (step !== stepVar) {
+              defPart += `${this.tab}${step};\n`;
+            }
+            down = stepNum < 0;
+            if (!(this.step && (stepNum != null) && down)) {
+              lvar = scope.freeVariable('len');
+            }
+            declare = `${kvarAssign}${ivar} = 0, ${lvar} = ${svar}.length`;
+            declareDown = `${kvarAssign}${ivar} = ${svar}.length - 1`;
+            compare = `${ivar} < ${lvar}`;
+            compareDown = `${ivar} >= 0`;
+            if (this.step) {
+              if (stepNum != null) {
+                if (down) {
+                  compare = compareDown;
+                  declare = declareDown;
+                }
+              } else {
+                compare = `${stepVar} > 0 ? ${compare} : ${compareDown}`;
+                declare = `(${stepVar} > 0 ? (${declare}) : ${declareDown})`;
+              }
+              increment = `${ivar} += ${stepVar}`;
+            } else {
+              increment = `${kvar !== ivar ? `++${ivar}` : `${ivar}++`}`;
+            }
+            forPartFragments = [this.makeCode(`${declare}; ${compare}; ${kvarAssign}${increment}`)];
+          }
+        }
+        if (this.returns) {
+          resultPart = `${this.tab}${rvar} = [];\n`;
+          returnResult = `\n${this.tab}return ${rvar};`;
+          body.makeReturn(rvar);
+        }
+        if (this.guard) {
+          if (body.expressions.length > 1) {
+            body.expressions.unshift(new If((new Parens(this.guard)).invert(), new StatementLiteral("continue")));
+          } else {
+            if (this.guard) {
+              body = Block.wrap([new If(this.guard, body)]);
+            }
+          }
+        }
+        if (this.pattern) {
+          body.expressions.unshift(new Assign(this.name, this.from ? new IdentifierLiteral(kvar) : new Literal(`${svar}[${kvar}]`)));
+        }
+        if (namePart) {
+          varPart = `\n${idt1}${namePart};`;
+        }
+        if (this.object) {
+          forPartFragments = [this.makeCode(`${kvar} in ${svar}`)];
+          if (this.own) {
+            guardPart = `\n${idt1}if (!${utility('hasProp', o)}.call(${svar}, ${kvar})) continue;`;
+          }
+        } else if (this.from) {
+          if (this.await) {
+            forPartFragments = new Op('await', new Parens(new Literal(`${kvar} of ${svar}`)));
+            forPartFragments = forPartFragments.compileToFragments(o, LEVEL_TOP);
+          } else {
+            forPartFragments = [this.makeCode(`${kvar} of ${svar}`)];
+          }
+        }
+        bodyFragments = body.compileToFragments(merge(o, {
+          indent: idt1
+        }), LEVEL_TOP);
+        if (bodyFragments && bodyFragments.length > 0) {
+          bodyFragments = [].concat(this.makeCode('\n'), bodyFragments, this.makeCode('\n'));
+        }
+        fragments = [this.makeCode(defPart)];
+        if (resultPart) {
+          fragments.push(this.makeCode(resultPart));
+        }
+        forCode = this.await ? 'for ' : 'for (';
+        forClose = this.await ? '' : ')';
+        fragments = fragments.concat(this.makeCode(this.tab), this.makeCode(forCode), forPartFragments, this.makeCode(`${forClose} {${guardPart}${varPart}`), bodyFragments, this.makeCode(this.tab), this.makeCode('}'));
+        if (returnResult) {
+          fragments.push(this.makeCode(returnResult));
+        }
+        return fragments;
+      }
+
+      astNode(o) {
+        var addToScope, ref1, ref2;
+        addToScope = function(name) {
+          var alreadyDeclared;
+          alreadyDeclared = o.scope.find(name.value);
+          return name.isDeclaration = !alreadyDeclared;
+        };
+        if ((ref1 = this.name) != null) {
+          ref1.eachName(addToScope, {
+            checkAssignability: false
+          });
+        }
+        if ((ref2 = this.index) != null) {
+          ref2.eachName(addToScope, {
+            checkAssignability: false
+          });
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        return 'For';
+      }
+
+      astProperties(o) {
+        var ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;
+        return {
+          source: (ref1 = this.source) != null ? ref1.ast(o) : void 0,
+          body: this.body.ast(o, LEVEL_TOP),
+          guard: (ref2 = (ref3 = this.guard) != null ? ref3.ast(o) : void 0) != null ? ref2 : null,
+          name: (ref4 = (ref5 = this.name) != null ? ref5.ast(o) : void 0) != null ? ref4 : null,
+          index: (ref6 = (ref7 = this.index) != null ? ref7.ast(o) : void 0) != null ? ref6 : null,
+          step: (ref8 = (ref9 = this.step) != null ? ref9.ast(o) : void 0) != null ? ref8 : null,
+          postfix: !!this.postfix,
+          own: !!this.own,
+          await: !!this.await,
+          style: (function() {
+            switch (false) {
+              case !this.from:
+                return 'from';
+              case !this.object:
+                return 'of';
+              case !this.name:
+                return 'in';
+              default:
+                return 'range';
+            }
+          }).call(this)
+        };
+      }
+
+    };
+
+    For.prototype.children = ['body', 'source', 'guard', 'step'];
+
+    return For;
+
+  }).call(this);
+
+  //### Switch
+
+  // A JavaScript *switch* statement. Converts into a returnable expression on-demand.
+  exports.Switch = Switch = (function() {
+    class Switch extends Base {
+      constructor(subject, cases1, otherwise) {
+        super();
+        this.subject = subject;
+        this.cases = cases1;
+        this.otherwise = otherwise;
+      }
+
+      jumps(o = {
+          block: true
+        }) {
+        var block, j, jumpNode, len1, ref1, ref2;
+        ref1 = this.cases;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          ({block} = ref1[j]);
+          if (jumpNode = block.jumps(o)) {
+            return jumpNode;
+          }
+        }
+        return (ref2 = this.otherwise) != null ? ref2.jumps(o) : void 0;
+      }
+
+      makeReturn(results, mark) {
+        var block, j, len1, ref1, ref2;
+        ref1 = this.cases;
+        for (j = 0, len1 = ref1.length; j < len1; j++) {
+          ({block} = ref1[j]);
+          block.makeReturn(results, mark);
+        }
+        if (results) {
+          this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));
+        }
+        if ((ref2 = this.otherwise) != null) {
+          ref2.makeReturn(results, mark);
+        }
+        return this;
+      }
+
+      compileNode(o) {
+        var block, body, cond, conditions, expr, fragments, i, idt1, idt2, j, k, len1, len2, ref1, ref2;
+        idt1 = o.indent + TAB;
+        idt2 = o.indent = idt1 + TAB;
+        fragments = [].concat(this.makeCode(this.tab + "switch ("), (this.subject ? this.subject.compileToFragments(o, LEVEL_PAREN) : this.makeCode("false")), this.makeCode(") {\n"));
+        ref1 = this.cases;
+        for (i = j = 0, len1 = ref1.length; j < len1; i = ++j) {
+          ({conditions, block} = ref1[i]);
+          ref2 = flatten([conditions]);
+          for (k = 0, len2 = ref2.length; k < len2; k++) {
+            cond = ref2[k];
+            if (!this.subject) {
+              cond = cond.invert();
+            }
+            fragments = fragments.concat(this.makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), this.makeCode(":\n"));
+          }
+          if ((body = block.compileToFragments(o, LEVEL_TOP)).length > 0) {
+            fragments = fragments.concat(body, this.makeCode('\n'));
+          }
+          if (i === this.cases.length - 1 && !this.otherwise) {
+            break;
+          }
+          expr = this.lastNode(block.expressions);
+          if (expr instanceof Return || expr instanceof Throw || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {
+            continue;
+          }
+          fragments.push(cond.makeCode(idt2 + 'break;\n'));
+        }
+        if (this.otherwise && this.otherwise.expressions.length) {
+          fragments.push(this.makeCode(idt1 + "default:\n"), ...(this.otherwise.compileToFragments(o, LEVEL_TOP)), this.makeCode("\n"));
+        }
+        fragments.push(this.makeCode(this.tab + '}'));
+        return fragments;
+      }
+
+      astType() {
+        return 'SwitchStatement';
+      }
+
+      casesAst(o) {
+        var caseIndex, caseLocationData, cases, consequent, j, k, kase, l, lastTestIndex, len1, len2, len3, ref1, ref2, results1, test, testConsequent, testIndex, tests;
+        cases = [];
+        ref1 = this.cases;
+        for (caseIndex = j = 0, len1 = ref1.length; j < len1; caseIndex = ++j) {
+          kase = ref1[caseIndex];
+          ({
+            conditions: tests,
+            block: consequent
+          } = kase);
+          tests = flatten([tests]);
+          lastTestIndex = tests.length - 1;
+          for (testIndex = k = 0, len2 = tests.length; k < len2; testIndex = ++k) {
+            test = tests[testIndex];
+            testConsequent = testIndex === lastTestIndex ? consequent : null;
+            caseLocationData = test.locationData;
+            if (testConsequent != null ? testConsequent.expressions.length : void 0) {
+              caseLocationData = mergeLocationData(caseLocationData, testConsequent.expressions[testConsequent.expressions.length - 1].locationData);
+            }
+            if (testIndex === 0) {
+              caseLocationData = mergeLocationData(caseLocationData, kase.locationData, {
+                justLeading: true
+              });
+            }
+            if (testIndex === lastTestIndex) {
+              caseLocationData = mergeLocationData(caseLocationData, kase.locationData, {
+                justEnding: true
+              });
+            }
+            cases.push(new SwitchCase(test, testConsequent, {
+              trailing: testIndex === lastTestIndex
+            }).withLocationDataFrom({
+              locationData: caseLocationData
+            }));
+          }
+        }
+        if ((ref2 = this.otherwise) != null ? ref2.expressions.length : void 0) {
+          cases.push(new SwitchCase(null, this.otherwise).withLocationDataFrom(this.otherwise));
+        }
+        results1 = [];
+        for (l = 0, len3 = cases.length; l < len3; l++) {
+          kase = cases[l];
+          results1.push(kase.ast(o));
+        }
+        return results1;
+      }
+
+      astProperties(o) {
+        var ref1, ref2;
+        return {
+          discriminant: (ref1 = (ref2 = this.subject) != null ? ref2.ast(o, LEVEL_PAREN) : void 0) != null ? ref1 : null,
+          cases: this.casesAst(o)
+        };
+      }
+
+    };
+
+    Switch.prototype.children = ['subject', 'cases', 'otherwise'];
+
+    Switch.prototype.isStatement = YES;
+
+    return Switch;
+
+  }).call(this);
+
+  SwitchCase = (function() {
+    class SwitchCase extends Base {
+      constructor(test1, block1, {trailing} = {}) {
+        super();
+        this.test = test1;
+        this.block = block1;
+        this.trailing = trailing;
+      }
+
+      astProperties(o) {
+        var ref1, ref2, ref3, ref4;
+        return {
+          test: (ref1 = (ref2 = this.test) != null ? ref2.ast(o, LEVEL_PAREN) : void 0) != null ? ref1 : null,
+          consequent: (ref3 = (ref4 = this.block) != null ? ref4.ast(o, LEVEL_TOP).body : void 0) != null ? ref3 : [],
+          trailing: !!this.trailing
+        };
+      }
+
+    };
+
+    SwitchCase.prototype.children = ['test', 'block'];
+
+    return SwitchCase;
+
+  }).call(this);
+
+  exports.SwitchWhen = SwitchWhen = (function() {
+    class SwitchWhen extends Base {
+      constructor(conditions1, block1) {
+        super();
+        this.conditions = conditions1;
+        this.block = block1;
+      }
+
+    };
+
+    SwitchWhen.prototype.children = ['conditions', 'block'];
+
+    return SwitchWhen;
+
+  }).call(this);
+
+  //### 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,
+  // because ternaries are already proper expressions, and don’t need conversion.
+  exports.If = If = (function() {
+    class If extends Base {
+      constructor(condition1, body1, options = {}) {
+        super();
+        this.condition = condition1;
+        this.body = body1;
+        this.elseBody = null;
+        this.isChain = false;
+        ({soak: this.soak, postfix: this.postfix, type: this.type} = options);
+        if (this.condition.comments) {
+          moveComments(this.condition, this);
+        }
+      }
+
+      bodyNode() {
+        var ref1;
+        return (ref1 = this.body) != null ? ref1.unwrap() : void 0;
+      }
+
+      elseBodyNode() {
+        var ref1;
+        return (ref1 = this.elseBody) != null ? ref1.unwrap() : void 0;
+      }
+
+      // Rewrite a chain of **Ifs** to add a default case as the final *else*.
+      addElse(elseBody) {
+        if (this.isChain) {
+          this.elseBodyNode().addElse(elseBody);
+          this.locationData = mergeLocationData(this.locationData, this.elseBodyNode().locationData);
+        } else {
+          this.isChain = elseBody instanceof If;
+          this.elseBody = this.ensureBlock(elseBody);
+          this.elseBody.updateLocationDataIfMissing(elseBody.locationData);
+          if ((this.locationData != null) && (this.elseBody.locationData != null)) {
+            this.locationData = mergeLocationData(this.locationData, this.elseBody.locationData);
+          }
+        }
+        return 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) {
+        var ref1;
+        return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((ref1 = this.elseBodyNode()) != null ? ref1.isStatement(o) : void 0);
+      }
+
+      jumps(o) {
+        var ref1;
+        return this.body.jumps(o) || ((ref1 = this.elseBody) != null ? ref1.jumps(o) : void 0);
+      }
+
+      compileNode(o) {
+        if (this.isStatement(o)) {
+          return this.compileStatement(o);
+        } else {
+          return this.compileExpression(o);
+        }
+      }
+
+      makeReturn(results, mark) {
+        var ref1, ref2;
+        if (mark) {
+          if ((ref1 = this.body) != null) {
+            ref1.makeReturn(results, mark);
+          }
+          if ((ref2 = this.elseBody) != null) {
+            ref2.makeReturn(results, mark);
+          }
+          return;
+        }
+        if (results) {
+          this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));
+        }
+        this.body && (this.body = new Block([this.body.makeReturn(results)]));
+        this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(results)]));
+        return this;
+      }
+
+      ensureBlock(node) {
+        if (node instanceof Block) {
+          return node;
+        } else {
+          return new Block([node]);
+        }
+      }
+
+      // Compile the `If` as a regular *if-else* statement. Flattened chains
+      // force inner *else* bodies into statement form.
+      compileStatement(o) {
+        var answer, body, child, cond, exeq, ifPart, indent;
+        child = del(o, 'chainChild');
+        exeq = del(o, 'isExistentialEquals');
+        if (exeq) {
+          return new If(this.processedCondition().invert(), this.elseBodyNode(), {
+            type: 'if'
+          }).compileToFragments(o);
+        }
+        indent = o.indent + TAB;
+        cond = this.processedCondition().compileToFragments(o, LEVEL_PAREN);
+        body = this.ensureBlock(this.body).compileToFragments(merge(o, {indent}));
+        ifPart = [].concat(this.makeCode("if ("), cond, this.makeCode(") {\n"), body, this.makeCode(`\n${this.tab}}`));
+        if (!child) {
+          ifPart.unshift(this.makeCode(this.tab));
+        }
+        if (!this.elseBody) {
+          return ifPart;
+        }
+        answer = ifPart.concat(this.makeCode(' else '));
+        if (this.isChain) {
+          o.chainChild = true;
+          answer = answer.concat(this.elseBody.unwrap().compileToFragments(o, LEVEL_TOP));
+        } else {
+          answer = answer.concat(this.makeCode("{\n"), this.elseBody.compileToFragments(merge(o, {indent}), LEVEL_TOP), this.makeCode(`\n${this.tab}}`));
+        }
+        return answer;
+      }
+
+      // Compile the `If` as a conditional operator.
+      compileExpression(o) {
+        var alt, body, cond, fragments;
+        cond = this.processedCondition().compileToFragments(o, LEVEL_COND);
+        body = this.bodyNode().compileToFragments(o, LEVEL_LIST);
+        alt = this.elseBodyNode() ? this.elseBodyNode().compileToFragments(o, LEVEL_LIST) : [this.makeCode('void 0')];
+        fragments = cond.concat(this.makeCode(" ? "), body, this.makeCode(" : "), alt);
+        if (o.level >= LEVEL_COND) {
+          return this.wrapInParentheses(fragments);
+        } else {
+          return fragments;
+        }
+      }
+
+      unfoldSoak() {
+        return this.soak && this;
+      }
+
+      processedCondition() {
+        return this.processedConditionCache != null ? this.processedConditionCache : this.processedConditionCache = this.type === 'unless' ? this.condition.invert() : this.condition;
+      }
+
+      isStatementAst(o) {
+        return o.level === LEVEL_TOP;
+      }
+
+      astType(o) {
+        if (this.isStatementAst(o)) {
+          return 'IfStatement';
+        } else {
+          return 'ConditionalExpression';
+        }
+      }
+
+      astProperties(o) {
+        var isStatement, ref1, ref2, ref3, ref4;
+        isStatement = this.isStatementAst(o);
+        return {
+          test: this.condition.ast(o, isStatement ? LEVEL_PAREN : LEVEL_COND),
+          consequent: isStatement ? this.body.ast(o, LEVEL_TOP) : this.bodyNode().ast(o, LEVEL_TOP),
+          alternate: this.isChain ? this.elseBody.unwrap().ast(o, isStatement ? LEVEL_TOP : LEVEL_COND) : !isStatement && ((ref1 = this.elseBody) != null ? (ref2 = ref1.expressions) != null ? ref2.length : void 0 : void 0) === 1 ? this.elseBody.expressions[0].ast(o, LEVEL_TOP) : (ref3 = (ref4 = this.elseBody) != null ? ref4.ast(o, LEVEL_TOP) : void 0) != null ? ref3 : null,
+          postfix: !!this.postfix,
+          inverted: this.type === 'unless'
+        };
+      }
+
+    };
+
+    If.prototype.children = ['condition', 'body', 'elseBody'];
+
+    return If;
+
+  }).call(this);
+
+  // A sequence expression e.g. `(a; b)`.
+  // Currently only used during AST generation.
+  exports.Sequence = Sequence = (function() {
+    class Sequence extends Base {
+      constructor(expressions1) {
+        super();
+        this.expressions = expressions1;
+      }
+
+      astNode(o) {
+        if (this.expressions.length === 1) {
+          return this.expressions[0].ast(o);
+        }
+        return super.astNode(o);
+      }
+
+      astType() {
+        return 'SequenceExpression';
+      }
+
+      astProperties(o) {
+        var expression;
+        return {
+          expressions: (function() {
+            var j, len1, ref1, results1;
+            ref1 = this.expressions;
+            results1 = [];
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              expression = ref1[j];
+              results1.push(expression.ast(o));
+            }
+            return results1;
+          }).call(this)
+        };
+      }
+
+    };
+
+    Sequence.prototype.children = ['expressions'];
+
+    return Sequence;
+
+  }).call(this);
+
+  // Constants
+  // ---------
+  UTILITIES = {
+    modulo: function() {
+      return 'function(a, b) { return (+a % (b = +b) + b) % b; }';
+    },
+    boundMethodCheck: function() {
+      return "function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }";
+    },
+    // Shortcuts to speed up the lookup time for native functions.
+    hasProp: function() {
+      return '{}.hasOwnProperty';
+    },
+    indexOf: function() {
+      return '[].indexOf';
+    },
+    slice: function() {
+      return '[].slice';
+    },
+    splice: function() {
+      return '[].splice';
+    }
+  };
+
+  // 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 = '  ';
+
+  SIMPLENUM = /^[+-]?\d+(?:_\d+)*$/;
+
+  SIMPLE_STRING_OMIT = /\s*\n\s*/g;
+
+  LEADING_BLANK_LINE = /^[^\n\S]*\n/;
+
+  TRAILING_BLANK_LINE = /\n[^\n\S]*$/;
+
+  STRING_OMIT = /((?:\\\\)+)|\\[^\S\n]*\n\s*/g; // Consume (and preserve) an even number of backslashes.
+  // Remove escaped newlines.
+
+  HEREGEX_OMIT = /((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g; // Consume (and preserve) an even number of backslashes.
+  // Preserve escaped whitespace.
+  // Remove whitespace and comments.
+
+  // Helper Functions
+  // ----------------
+
+  // Helper for ensuring that utility functions are assigned at the top level.
+  utility = function(name, o) {
+    var ref, root;
+    ({root} = o.scope);
+    if (name in root.utilities) {
+      return root.utilities[name];
+    } else {
+      ref = root.freeVariable(name);
+      root.assign(ref, UTILITIES[name](o));
+      return root.utilities[name] = ref;
+    }
+  };
+
+  multident = function(code, tab, includingFirstLine = true) {
+    var endsWithNewLine;
+    endsWithNewLine = code[code.length - 1] === '\n';
+    code = (includingFirstLine ? tab : '') + code.replace(/\n/g, `$&${tab}`);
+    code = code.replace(/\s+$/, '');
+    if (endsWithNewLine) {
+      code = code + '\n';
+    }
+    return code;
+  };
+
+  // Wherever in CoffeeScript 1 we might’ve inserted a `makeCode "#{@tab}"` to
+  // indent a line of code, now we must account for the possibility of comments
+  // preceding that line of code. If there are such comments, indent each line of
+  // such comments, and _then_ indent the first following line of code.
+  indentInitial = function(fragments, node) {
+    var fragment, fragmentIndex, j, len1;
+    for (fragmentIndex = j = 0, len1 = fragments.length; j < len1; fragmentIndex = ++j) {
+      fragment = fragments[fragmentIndex];
+      if (fragment.isHereComment) {
+        fragment.code = multident(fragment.code, node.tab);
+      } else {
+        fragments.splice(fragmentIndex, 0, node.makeCode(`${node.tab}`));
+        break;
+      }
+    }
+    return fragments;
+  };
+
+  hasLineComments = function(node) {
+    var comment, j, len1, ref1;
+    if (!node.comments) {
+      return false;
+    }
+    ref1 = node.comments;
+    for (j = 0, len1 = ref1.length; j < len1; j++) {
+      comment = ref1[j];
+      if (comment.here === false) {
+        return true;
+      }
+    }
+    return false;
+  };
+
+  // Move the `comments` property from one object to another, deleting it from
+  // the first object.
+  moveComments = function(from, to) {
+    if (!(from != null ? from.comments : void 0)) {
+      return;
+    }
+    attachCommentsToNode(from.comments, to);
+    return delete from.comments;
+  };
+
+  // Sometimes when compiling a node, we want to insert a fragment at the start
+  // of an array of fragments; but if the start has one or more comment fragments,
+  // we want to insert this fragment after those but before any non-comments.
+  unshiftAfterComments = function(fragments, fragmentToInsert) {
+    var fragment, fragmentIndex, inserted, j, len1;
+    inserted = false;
+    for (fragmentIndex = j = 0, len1 = fragments.length; j < len1; fragmentIndex = ++j) {
+      fragment = fragments[fragmentIndex];
+      if (!(!fragment.isComment)) {
+        continue;
+      }
+      fragments.splice(fragmentIndex, 0, fragmentToInsert);
+      inserted = true;
+      break;
+    }
+    if (!inserted) {
+      fragments.push(fragmentToInsert);
+    }
+    return fragments;
+  };
+
+  isLiteralArguments = function(node) {
+    return node instanceof IdentifierLiteral && node.value === 'arguments';
+  };
+
+  isLiteralThis = function(node) {
+    return node instanceof ThisLiteral || (node instanceof Code && node.bound);
+  };
+
+  shouldCacheOrIsAssignable = function(node) {
+    return node.shouldCache() || (typeof node.isAssignable === "function" ? node.isAssignable() : void 0);
+  };
+
+  // Unfold a node's child if soak, then tuck the node under created `If`
+  unfoldSoak = function(o, parent, name) {
+    var ifn;
+    if (!(ifn = parent[name].unfoldSoak(o))) {
+      return;
+    }
+    parent[name] = ifn.body;
+    ifn.body = new Value(parent);
+    return ifn;
+  };
+
+  // Constructs a string or regex by escaping certain characters.
+  makeDelimitedLiteral = function(body, {
+      delimiter: delimiterOption,
+      escapeNewlines,
+      double,
+      includeDelimiters = true,
+      escapeDelimiter = true,
+      convertTrailingNullEscapes
+    } = {}) {
+    var escapeTemplateLiteralCurlies, printedDelimiter, regex;
+    if (body === '' && delimiterOption === '/') {
+      body = '(?:)';
+    }
+    escapeTemplateLiteralCurlies = delimiterOption === '`';
+    regex = RegExp(`(\\\\\\\\)|(\\\\0(?=\\d))${convertTrailingNullEscapes ? /|(\\0)$/.source : '' // Escaped backslash. // Trailing null character that could be mistaken as octal escape.
+    // Null character mistaken as octal escape.
+    // Trailing null character that could be mistaken as octal escape.
+    // (Possibly escaped) delimiter.
+    // `${` inside template literals must be escaped.
+    // (Possibly escaped) newlines.
+    // Other escapes.
+}${escapeDelimiter ? RegExp(`|\\\\?(${delimiterOption})`).source : '' // (Possibly escaped) delimiter.
+}${escapeTemplateLiteralCurlies ? /|\\?(\$\{)/.source : '' // `${` inside template literals must be escaped.
+}|\\\\?(?:${escapeNewlines ? '(\n)|' : ''}(\\r)|(\\u2028)|(\\u2029))|(\\\\.)`, "g");
+    body = body.replace(regex, function(match, backslash, nul, ...args) {
+      var cr, delimiter, lf, ls, other, ps, templateLiteralCurly, trailingNullEscape;
+      trailingNullEscape = convertTrailingNullEscapes ? args.shift() : void 0;
+      delimiter = escapeDelimiter ? args.shift() : void 0;
+      templateLiteralCurly = escapeTemplateLiteralCurlies ? args.shift() : void 0;
+      lf = escapeNewlines ? args.shift() : void 0;
+      [cr, ls, ps, other] = args;
+      switch (false) {
+        // Ignore escaped backslashes.
+        case !backslash:
+          if (double) {
+            return backslash + backslash;
+          } else {
+            return backslash;
+          }
+        case !nul:
+          return '\\x00';
+        case !trailingNullEscape:
+          return "\\x00";
+        case !delimiter:
+          return `\\${delimiter}`;
+        case !templateLiteralCurly:
+          return "\\${";
+        case !lf:
+          return '\\n';
+        case !cr:
+          return '\\r';
+        case !ls:
+          return '\\u2028';
+        case !ps:
+          return '\\u2029';
+        case !other:
+          if (double) {
+            return `\\${other}`;
+          } else {
+            return other;
+          }
+      }
+    });
+    printedDelimiter = includeDelimiters ? delimiterOption : '';
+    return `${printedDelimiter}${body}${printedDelimiter}`;
+  };
+
+  sniffDirectives = function(expressions, {notFinalExpression} = {}) {
+    var expression, index, lastIndex, results1, unwrapped;
+    index = 0;
+    lastIndex = expressions.length - 1;
+    results1 = [];
+    while (index <= lastIndex) {
+      if (index === lastIndex && notFinalExpression) {
+        break;
+      }
+      expression = expressions[index];
+      if ((unwrapped = expression != null ? typeof expression.unwrap === "function" ? expression.unwrap() : void 0 : void 0) instanceof PassthroughLiteral && unwrapped.generated) {
+        index++;
+        continue;
+      }
+      if (!(expression instanceof Value && expression.isString() && !expression.unwrap().shouldGenerateTemplateLiteral())) {
+        break;
+      }
+      expressions[index] = new Directive(expression).withLocationDataFrom(expression);
+      results1.push(index++);
+    }
+    return results1;
+  };
+
+  astAsBlockIfNeeded = function(node, o) {
+    var unwrapped;
+    unwrapped = node.unwrap();
+    if (unwrapped instanceof Block && unwrapped.expressions.length > 1) {
+      unwrapped.makeReturn(null, true);
+      return unwrapped.ast(o, LEVEL_TOP);
+    } else {
+      return node.ast(o, LEVEL_PAREN);
+    }
+  };
+
+  // Helpers for `mergeLocationData` and `mergeAstLocationData` below.
+  lesser = function(a, b) {
+    if (a < b) {
+      return a;
+    } else {
+      return b;
+    }
+  };
+
+  greater = function(a, b) {
+    if (a > b) {
+      return a;
+    } else {
+      return b;
+    }
+  };
+
+  isAstLocGreater = function(a, b) {
+    if (a.line > b.line) {
+      return true;
+    }
+    if (a.line !== b.line) {
+      return false;
+    }
+    return a.column > b.column;
+  };
+
+  isLocationDataStartGreater = function(a, b) {
+    if (a.first_line > b.first_line) {
+      return true;
+    }
+    if (a.first_line !== b.first_line) {
+      return false;
+    }
+    return a.first_column > b.first_column;
+  };
+
+  isLocationDataEndGreater = function(a, b) {
+    if (a.last_line > b.last_line) {
+      return true;
+    }
+    if (a.last_line !== b.last_line) {
+      return false;
+    }
+    return a.last_column > b.last_column;
+  };
+
+  // Take two nodes’ location data and return a new `locationData` object that
+  // encompasses the location data of both nodes. So the new `first_line` value
+  // will be the earlier of the two nodes’ `first_line` values, the new
+  // `last_column` the later of the two nodes’ `last_column` values, etc.
+
+  // If you only want to extend the first node’s location data with the start or
+  // end location data of the second node, pass the `justLeading` or `justEnding`
+  // options. So e.g. if `first`’s range is [4, 5] and `second`’s range is [1, 10],
+  // you’d get:
+  // ```
+  // mergeLocationData(first, second).range                   # [1, 10]
+  // mergeLocationData(first, second, justLeading: yes).range # [1, 5]
+  // mergeLocationData(first, second, justEnding:  yes).range # [4, 10]
+  // ```
+  exports.mergeLocationData = mergeLocationData = function(locationDataA, locationDataB, {justLeading, justEnding} = {}) {
+    return Object.assign(justEnding ? {
+      first_line: locationDataA.first_line,
+      first_column: locationDataA.first_column
+    } : isLocationDataStartGreater(locationDataA, locationDataB) ? {
+      first_line: locationDataB.first_line,
+      first_column: locationDataB.first_column
+    } : {
+      first_line: locationDataA.first_line,
+      first_column: locationDataA.first_column
+    }, justLeading ? {
+      last_line: locationDataA.last_line,
+      last_column: locationDataA.last_column,
+      last_line_exclusive: locationDataA.last_line_exclusive,
+      last_column_exclusive: locationDataA.last_column_exclusive
+    } : isLocationDataEndGreater(locationDataA, locationDataB) ? {
+      last_line: locationDataA.last_line,
+      last_column: locationDataA.last_column,
+      last_line_exclusive: locationDataA.last_line_exclusive,
+      last_column_exclusive: locationDataA.last_column_exclusive
+    } : {
+      last_line: locationDataB.last_line,
+      last_column: locationDataB.last_column,
+      last_line_exclusive: locationDataB.last_line_exclusive,
+      last_column_exclusive: locationDataB.last_column_exclusive
+    }, {
+      range: [justEnding ? locationDataA.range[0] : lesser(locationDataA.range[0], locationDataB.range[0]), justLeading ? locationDataA.range[1] : greater(locationDataA.range[1], locationDataB.range[1])]
+    });
+  };
+
+  // Take two AST nodes, or two AST nodes’ location data objects, and return a new
+  // location data object that encompasses the location data of both nodes. So the
+  // new `start` value will be the earlier of the two nodes’ `start` values, the
+  // new `end` value will be the later of the two nodes’ `end` values, etc.
+
+  // If you only want to extend the first node’s location data with the start or
+  // end location data of the second node, pass the `justLeading` or `justEnding`
+  // options. So e.g. if `first`’s range is [4, 5] and `second`’s range is [1, 10],
+  // you’d get:
+  // ```
+  // mergeAstLocationData(first, second).range                   # [1, 10]
+  // mergeAstLocationData(first, second, justLeading: yes).range # [1, 5]
+  // mergeAstLocationData(first, second, justEnding:  yes).range # [4, 10]
+  // ```
+  exports.mergeAstLocationData = mergeAstLocationData = function(nodeA, nodeB, {justLeading, justEnding} = {}) {
+    return {
+      loc: {
+        start: justEnding ? nodeA.loc.start : isAstLocGreater(nodeA.loc.start, nodeB.loc.start) ? nodeB.loc.start : nodeA.loc.start,
+        end: justLeading ? nodeA.loc.end : isAstLocGreater(nodeA.loc.end, nodeB.loc.end) ? nodeA.loc.end : nodeB.loc.end
+      },
+      range: [justEnding ? nodeA.range[0] : lesser(nodeA.range[0], nodeB.range[0]), justLeading ? nodeA.range[1] : greater(nodeA.range[1], nodeB.range[1])],
+      start: justEnding ? nodeA.start : lesser(nodeA.start, nodeB.start),
+      end: justLeading ? nodeA.end : greater(nodeA.end, nodeB.end)
+    };
+  };
+
+  // Convert Jison-style node class location data to Babel-style location data
+  exports.jisonLocationDataToAstLocationData = jisonLocationDataToAstLocationData = function({first_line, first_column, last_line_exclusive, last_column_exclusive, range}) {
+    return {
+      loc: {
+        start: {
+          line: first_line + 1,
+          column: first_column
+        },
+        end: {
+          line: last_line_exclusive + 1,
+          column: last_column_exclusive
+        }
+      },
+      range: [range[0], range[1]],
+      start: range[0],
+      end: range[1]
+    };
+  };
+
+  // Generate a zero-width location data that corresponds to the end of another node’s location.
+  zeroWidthLocationDataFromEndLocation = function({
+      range: [, endRange],
+      last_line_exclusive,
+      last_column_exclusive
+    }) {
+    return {
+      first_line: last_line_exclusive,
+      first_column: last_column_exclusive,
+      last_line: last_line_exclusive,
+      last_column: last_column_exclusive,
+      last_line_exclusive,
+      last_column_exclusive,
+      range: [endRange, endRange]
+    };
+  };
+
+  extractSameLineLocationDataFirst = function(numChars) {
+    return function({
+        range: [startRange],
+        first_line,
+        first_column
+      }) {
+      return {
+        first_line,
+        first_column,
+        last_line: first_line,
+        last_column: first_column + numChars - 1,
+        last_line_exclusive: first_line,
+        last_column_exclusive: first_column + numChars,
+        range: [startRange, startRange + numChars]
+      };
+    };
+  };
+
+  extractSameLineLocationDataLast = function(numChars) {
+    return function({
+        range: [, endRange],
+        last_line,
+        last_column,
+        last_line_exclusive,
+        last_column_exclusive
+      }) {
+      return {
+        first_line: last_line,
+        first_column: last_column - (numChars - 1),
+        last_line: last_line,
+        last_column: last_column,
+        last_line_exclusive,
+        last_column_exclusive,
+        range: [endRange - numChars, endRange]
+      };
+    };
+  };
+
+  // We don’t currently have a token corresponding to the empty space
+  // between interpolation/JSX expression braces, so piece together the location
+  // data by trimming the braces from the Interpolation’s location data.
+  // Technically the last_line/last_column calculation here could be
+  // incorrect if the ending brace is preceded by a newline, but
+  // last_line/last_column aren’t used for AST generation anyway.
+  emptyExpressionLocationData = function({
+      interpolationNode: element,
+      openingBrace,
+      closingBrace
+    }) {
+    return {
+      first_line: element.locationData.first_line,
+      first_column: element.locationData.first_column + openingBrace.length,
+      last_line: element.locationData.last_line,
+      last_column: element.locationData.last_column - closingBrace.length,
+      last_line_exclusive: element.locationData.last_line,
+      last_column_exclusive: element.locationData.last_column,
+      range: [element.locationData.range[0] + openingBrace.length, element.locationData.range[1] - closingBrace.length]
+    };
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/optparse.js b/lib/coffeescript/optparse.js
new file mode 100644
index 00000000..a73bfc3e
--- /dev/null
+++ b/lib/coffeescript/optparse.js
@@ -0,0 +1,230 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments, repeat,
+    splice = [].splice;
+
+  ({repeat} = require('./helpers'));
+
+  // A simple **OptionParser** class to parse option flags from the command-line.
+  // Use it like so:
+
+  //     parser  = new OptionParser switches, helpBanner
+  //     options = parser.parse process.argv
+
+  // The first non-option is considered to be the start of the file (and file
+  // option) list, and all subsequent arguments are left unparsed.
+
+  // The `coffee` command uses an instance of **OptionParser** to parse its
+  // command-line arguments in `src/command.coffee`.
+  exports.OptionParser = OptionParser = class OptionParser {
+    // Initialize with a list of valid options, in the form:
+
+    //     [short-flag, long-flag, description]
+
+    // Along with an optional banner for the usage help.
+    constructor(ruleDeclarations, banner) {
+      this.banner = banner;
+      this.rules = buildRules(ruleDeclarations);
+    }
+
+    // Parse the list of arguments, populating an `options` object with all of the
+    // specified options, and return it. Options after the first non-option
+    // argument are treated as arguments. `options.arguments` will be an array
+    // containing the remaining arguments. This is a simpler API than many option
+    // parsers that allow you to attach callback actions for every flag. Instead,
+    // you're responsible for interpreting the options object.
+    parse(args) {
+      var argument, hasArgument, i, isList, len, name, options, positional, rules;
+      // The CoffeeScript option parser is a little odd; options after the first
+      // non-option argument are treated as non-option arguments themselves.
+      // Optional arguments are normalized by expanding merged flags into multiple
+      // flags. This allows you to have `-wl` be the same as `--watch --lint`.
+      // Note that executable scripts with a shebang (`#!`) line should use the
+      // line `#!/usr/bin/env coffee`, or `#!/absolute/path/to/coffee`, without a
+      // `--` argument after, because that will fail on Linux (see #3946).
+      ({rules, positional} = normalizeArguments(args, this.rules.flagDict));
+      options = {};
+// The `argument` field is added to the rule instance non-destructively by
+// `normalizeArguments`.
+      for (i = 0, len = rules.length; i < len; i++) {
+        ({hasArgument, argument, isList, name} = rules[i]);
+        if (hasArgument) {
+          if (isList) {
+            if (options[name] == null) {
+              options[name] = [];
+            }
+            options[name].push(argument);
+          } else {
+            options[name] = argument;
+          }
+        } else {
+          options[name] = true;
+        }
+      }
+      if (positional[0] === '--') {
+        options.doubleDashed = true;
+        positional = positional.slice(1);
+      }
+      options.arguments = positional;
+      return options;
+    }
+
+    // Return the help text for this **OptionParser**, listing and describing all
+    // of the valid options, for `--help` and such.
+    help() {
+      var i, len, letPart, lines, ref, rule, spaces;
+      lines = [];
+      if (this.banner) {
+        lines.unshift(`${this.banner}\n`);
+      }
+      ref = this.rules.ruleList;
+      for (i = 0, len = ref.length; i < len; i++) {
+        rule = ref[i];
+        spaces = 15 - rule.longFlag.length;
+        spaces = spaces > 0 ? repeat(' ', spaces) : '';
+        letPart = rule.shortFlag ? rule.shortFlag + ', ' : '    ';
+        lines.push('  ' + letPart + rule.longFlag + spaces + rule.description);
+      }
+      return `\n${lines.join('\n')}\n`;
+    }
+
+  };
+
+  // Helpers
+  // -------
+
+  // Regex matchers for option flags on the command line and their rules.
+  LONG_FLAG = /^(--\w[\w\-]*)/;
+
+  SHORT_FLAG = /^(-\w)$/;
+
+  MULTI_FLAG = /^-(\w{2,})/;
+
+  // Matches the long flag part of a rule for an option with an argument. Not
+  // applied to anything in process.argv.
+  OPTIONAL = /\[(\w+(\*?))\]/;
+
+  // Build and return the list of option rules. If the optional *short-flag* is
+  // unspecified, leave it out by padding with `null`.
+  buildRules = function(ruleDeclarations) {
+    var flag, flagDict, i, j, len, len1, ref, rule, ruleList, tuple;
+    ruleList = (function() {
+      var i, len, results;
+      results = [];
+      for (i = 0, len = ruleDeclarations.length; i < len; i++) {
+        tuple = ruleDeclarations[i];
+        if (tuple.length < 3) {
+          tuple.unshift(null);
+        }
+        results.push(buildRule(...tuple));
+      }
+      return results;
+    })();
+    flagDict = {};
+    for (i = 0, len = ruleList.length; i < len; i++) {
+      rule = ruleList[i];
+      ref = [rule.shortFlag, rule.longFlag];
+      // `shortFlag` is null if not provided in the rule.
+      for (j = 0, len1 = ref.length; j < len1; j++) {
+        flag = ref[j];
+        if (!(flag != null)) {
+          continue;
+        }
+        if (flagDict[flag] != null) {
+          throw new Error(`flag ${flag} for switch ${rule.name} was already declared for switch ${flagDict[flag].name}`);
+        }
+        flagDict[flag] = rule;
+      }
+    }
+    return {ruleList, flagDict};
+  };
+
+  // Build a rule from a `-o` short flag, a `--output [DIR]` long flag, and the
+  // description of what the option does.
+  buildRule = function(shortFlag, longFlag, description) {
+    var match;
+    match = longFlag.match(OPTIONAL);
+    shortFlag = shortFlag != null ? shortFlag.match(SHORT_FLAG)[1] : void 0;
+    longFlag = longFlag.match(LONG_FLAG)[1];
+    return {
+      name: longFlag.replace(/^--/, ''),
+      shortFlag: shortFlag,
+      longFlag: longFlag,
+      description: description,
+      hasArgument: !!(match && match[1]),
+      isList: !!(match && match[2])
+    };
+  };
+
+  normalizeArguments = function(args, flagDict) {
+    var arg, argIndex, flag, i, innerOpts, j, lastOpt, len, len1, multiFlags, multiOpts, needsArgOpt, positional, ref, rule, rules, singleRule, withArg;
+    rules = [];
+    positional = [];
+    needsArgOpt = null;
+    for (argIndex = i = 0, len = args.length; i < len; argIndex = ++i) {
+      arg = args[argIndex];
+      // If the previous argument given to the script was an option that uses the
+      // next command-line argument as its argument, create copy of the option’s
+      // rule with an `argument` field.
+      if (needsArgOpt != null) {
+        withArg = Object.assign({}, needsArgOpt.rule, {
+          argument: arg
+        });
+        rules.push(withArg);
+        needsArgOpt = null;
+        continue;
+      }
+      multiFlags = (ref = arg.match(MULTI_FLAG)) != null ? ref[1].split('').map(function(flagName) {
+        return `-${flagName}`;
+      }) : void 0;
+      if (multiFlags != null) {
+        multiOpts = multiFlags.map(function(flag) {
+          var rule;
+          rule = flagDict[flag];
+          if (rule == null) {
+            throw new Error(`unrecognized option ${flag} in multi-flag ${arg}`);
+          }
+          return {rule, flag};
+        });
+        // Only the last flag in a multi-flag may have an argument.
+        [...innerOpts] = multiOpts, [lastOpt] = splice.call(innerOpts, -1);
+        for (j = 0, len1 = innerOpts.length; j < len1; j++) {
+          ({rule, flag} = innerOpts[j]);
+          if (rule.hasArgument) {
+            throw new Error(`cannot use option ${flag} in multi-flag ${arg} except as the last option, because it needs an argument`);
+          }
+          rules.push(rule);
+        }
+        if (lastOpt.rule.hasArgument) {
+          needsArgOpt = lastOpt;
+        } else {
+          rules.push(lastOpt.rule);
+        }
+      } else if ([LONG_FLAG, SHORT_FLAG].some(function(pat) {
+        return arg.match(pat) != null;
+      })) {
+        singleRule = flagDict[arg];
+        if (singleRule == null) {
+          throw new Error(`unrecognized option ${arg}`);
+        }
+        if (singleRule.hasArgument) {
+          needsArgOpt = {
+            rule: singleRule,
+            flag: arg
+          };
+        } else {
+          rules.push(singleRule);
+        }
+      } else {
+        // This is a positional argument.
+        positional = args.slice(argIndex);
+        break;
+      }
+    }
+    if (needsArgOpt != null) {
+      throw new Error(`value required for ${needsArgOpt.flag}, but it was the last argument provided`);
+    }
+    return {rules, positional};
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/parser.js b/lib/coffeescript/parser.js
new file mode 100644
index 00000000..c13a7781
--- /dev/null
+++ b/lib/coffeescript/parser.js
@@ -0,0 +1,1344 @@
+/* parser generated by jison 0.4.18 */
+/*
+  Returns a Parser object of the following structure:
+
+  Parser: {
+    yy: {}
+  }
+
+  Parser.prototype: {
+    yy: {},
+    trace: function(),
+    symbols_: {associative list: name ==> number},
+    terminals_: {associative list: number ==> name},
+    productions_: [...],
+    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+    table: [...],
+    defaultActions: {...},
+    parseError: function(str, hash),
+    parse: function(input),
+
+    lexer: {
+        EOF: 1,
+        parseError: function(str, hash),
+        setInput: function(input),
+        input: function(),
+        unput: function(str),
+        more: function(),
+        less: function(n),
+        pastInput: function(),
+        upcomingInput: function(),
+        showPosition: function(),
+        test_match: function(regex_match_array, rule_index),
+        next: function(),
+        lex: function(),
+        begin: function(condition),
+        popState: function(),
+        _currentRules: function(),
+        topState: function(),
+        pushState: function(condition),
+
+        options: {
+            ranges: boolean           (optional: true ==> token location info will include a .range[] member)
+            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+        },
+
+        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+        rules: [...],
+        conditions: {associative list: name ==> set},
+    }
+  }
+
+
+  token location info (@$, _$, etc.): {
+    first_line: n,
+    last_line: n,
+    first_column: n,
+    last_column: n,
+    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
+  }
+
+
+  the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+    text:        (matched text)
+    token:       (the produced terminal token, if any)
+    line:        (yylineno)
+  }
+  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+    loc:         (yylloc)
+    expected:    (string describing the set of expected tokens)
+    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+  }
+*/
+var parser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,24],$V1=[1,59],$V2=[1,98],$V3=[1,99],$V4=[1,94],$V5=[1,100],$V6=[1,101],$V7=[1,96],$V8=[1,97],$V9=[1,68],$Va=[1,70],$Vb=[1,71],$Vc=[1,72],$Vd=[1,73],$Ve=[1,74],$Vf=[1,76],$Vg=[1,80],$Vh=[1,77],$Vi=[1,78],$Vj=[1,62],$Vk=[1,45],$Vl=[1,38],$Vm=[1,83],$Vn=[1,84],$Vo=[1,81],$Vp=[1,82],$Vq=[1,93],$Vr=[1,57],$Vs=[1,63],$Vt=[1,64],$Vu=[1,79],$Vv=[1,50],$Vw=[1,58],$Vx=[1,75],$Vy=[1,88],$Vz=[1,89],$VA=[1,90],$VB=[1,91],$VC=[1,56],$VD=[1,87],$VE=[1,40],$VF=[1,41],$VG=[1,61],$VH=[1,42],$VI=[1,43],$VJ=[1,44],$VK=[1,46],$VL=[1,47],$VM=[1,102],$VN=[1,6,35,52,155],$VO=[1,6,33,35,52,74,76,96,137,144,155,158,166],$VP=[1,120],$VQ=[1,121],$VR=[1,122],$VS=[1,117],$VT=[1,105],$VU=[1,104],$VV=[1,103],$VW=[1,106],$VX=[1,107],$VY=[1,108],$VZ=[1,109],$V_=[1,110],$V$=[1,111],$V01=[1,112],$V11=[1,113],$V21=[1,114],$V31=[1,115],$V41=[1,116],$V51=[1,124],$V61=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V71=[2,222],$V81=[1,130],$V91=[1,135],$Va1=[1,131],$Vb1=[1,132],$Vc1=[1,133],$Vd1=[1,136],$Ve1=[1,129],$Vf1=[1,6,33,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$Vg1=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vh1=[2,129],$Vi1=[2,133],$Vj1=[6,33,91,96],$Vk1=[2,106],$Vl1=[1,148],$Vm1=[1,147],$Vn1=[1,142],$Vo1=[1,151],$Vp1=[1,156],$Vq1=[1,154],$Vr1=[1,160],$Vs1=[1,166],$Vt1=[1,162],$Vu1=[1,163],$Vv1=[1,165],$Vw1=[1,170],$Vx1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vy1=[2,126],$Vz1=[1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA1=[2,31],$VB1=[1,195],$VC1=[1,196],$VD1=[2,93],$VE1=[1,202],$VF1=[1,208],$VG1=[1,223],$VH1=[1,218],$VI1=[1,227],$VJ1=[1,224],$VK1=[1,229],$VL1=[1,230],$VM1=[1,232],$VN1=[2,227],$VO1=[1,234],$VP1=[14,32,33,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VQ1=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$VR1=[1,247],$VS1=[1,248],$VT1=[2,156],$VU1=[1,264],$VV1=[1,265],$VW1=[1,267],$VX1=[1,277],$VY1=[1,278],$VZ1=[1,6,33,35,46,47,52,70,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V_1=[1,6,33,35,36,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,128,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$V$1=[1,6,33,35,46,47,49,51,52,57,70,74,76,91,96,105,106,107,110,111,112,115,119,123,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V02=[1,283],$V12=[46,47,136],$V22=[1,322],$V32=[1,321],$V42=[6,33],$V52=[2,104],$V62=[1,328],$V72=[6,33,35,91,96],$V82=[6,33,35,66,76,91,96],$V92=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,195,196,197,198,199,200,201,202,203,204],$Va2=[2,377],$Vb2=[2,378],$Vc2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,194,196,197,198,199,200,201,202,203,204],$Vd2=[46,47,105,106,110,111,112,115,135,136],$Ve2=[1,357],$Vf2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183],$Vg2=[2,91],$Vh2=[1,375],$Vi2=[1,377],$Vj2=[1,382],$Vk2=[1,384],$Vl2=[6,33,74,96],$Vm2=[2,247],$Vn2=[2,248],$Vo2=[1,6,33,35,46,47,52,66,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vp2=[1,398],$Vq2=[14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vr2=[1,400],$Vs2=[6,33,35,74,96],$Vt2=[6,14,32,33,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,74,75,76,82,85,87,88,89,93,94,96,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$Vu2=[6,33,35,74,96,137],$Vv2=[1,6,33,35,46,47,52,57,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vw2=[1,411],$Vx2=[1,6,33,35,46,47,52,66,70,74,76,91,96,105,106,107,110,111,112,115,119,121,135,136,137,144,155,157,158,159,165,166,173,174,175,183,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],$Vy2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,166,183],$Vz2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VA2=[2,300],$VB2=[173,174,175],$VC2=[96,173,174,175],$VD2=[6,33,119],$VE2=[1,431],$VF2=[6,33,35,96,119],$VG2=[6,33,35,70,96,119],$VH2=[6,33,35,66,70,76,96,105,106,110,111,112,115,119,135,136],$VI2=[6,33,35,76,96,105,106,110,111,112,115,119,135,136],$VJ2=[46,47,49,51],$VK2=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,189,190,196,197,198,199,200,201,202,203,204],$VL2=[2,367],$VM2=[2,366],$VN2=[35,107],$VO2=[14,32,35,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,107,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2=[2,233],$VQ2=[6,33,35],$VR2=[2,105],$VS2=[1,470],$VT2=[1,471],$VU2=[1,6,33,35,46,47,52,74,76,91,96,105,106,107,110,111,112,115,119,135,136,137,144,151,152,155,157,158,159,165,166,178,180,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VV2=[1,337],$VW2=[35,178,180],$VX2=[1,6,35,52,74,76,91,96,107,119,137,144,155,158,166,183],$VY2=[1,509],$VZ2=[1,516],$V_2=[1,6,33,35,52,74,76,96,137,144,155,158,166,183],$V$2=[2,120],$V03=[1,529],$V13=[33,35,74],$V23=[1,537],$V33=[6,33,35,96,137],$V43=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,178,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$V53=[1,6,33,35,52,74,76,96,137,144,155,158,166,178],$V63=[2,314],$V73=[2,315],$V83=[2,330],$V93=[1,557],$Va3=[1,558],$Vb3=[6,33,35,119],$Vc3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,166,183],$Vd3=[6,33,35,96],$Ve3=[1,6,33,35,52,74,76,91,96,107,119,137,144,151,155,157,158,159,165,166,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$Vf3=[33,96],$Vg3=[1,611],$Vh3=[1,612],$Vi3=[1,619],$Vj3=[1,620],$Vk3=[1,638],$Vl3=[1,639],$Vm3=[2,285],$Vn3=[2,288],$Vo3=[2,301],$Vp3=[2,316],$Vq3=[2,320],$Vr3=[2,317],$Vs3=[2,321],$Vt3=[2,318],$Vu3=[2,319],$Vv3=[2,331],$Vw3=[2,332],$Vx3=[1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183],$Vy3=[2,322],$Vz3=[2,324],$VA3=[2,326],$VB3=[2,328],$VC3=[2,323],$VD3=[2,325],$VE3=[2,327],$VF3=[2,329];
+var parser = {trace: function trace () { },
+yy: {},
+symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"ExpressionLine":8,"Statement":9,"FuncDirective":10,"YieldReturn":11,"AwaitReturn":12,"Return":13,"STATEMENT":14,"Import":15,"Export":16,"Value":17,"Code":18,"Operation":19,"Assign":20,"If":21,"Try":22,"While":23,"For":24,"Switch":25,"Class":26,"Throw":27,"Yield":28,"CodeLine":29,"IfLine":30,"OperationLine":31,"YIELD":32,"INDENT":33,"Object":34,"OUTDENT":35,"FROM":36,"Block":37,"Identifier":38,"IDENTIFIER":39,"JSX_TAG":40,"Property":41,"PROPERTY":42,"AlphaNumeric":43,"NUMBER":44,"String":45,"STRING":46,"STRING_START":47,"Interpolations":48,"STRING_END":49,"InterpolationChunk":50,"INTERPOLATION_START":51,"INTERPOLATION_END":52,"Regex":53,"REGEX":54,"REGEX_START":55,"Invocation":56,"REGEX_END":57,"Literal":58,"JS":59,"UNDEFINED":60,"NULL":61,"BOOL":62,"INFINITY":63,"NAN":64,"Assignable":65,"=":66,"AssignObj":67,"ObjAssignable":68,"ObjRestValue":69,":":70,"SimpleObjAssignable":71,"ThisProperty":72,"[":73,"]":74,"@":75,"...":76,"ObjSpreadExpr":77,"ObjSpreadIdentifier":78,"Parenthetical":79,"Super":80,"This":81,"SUPER":82,"OptFuncExist":83,"Arguments":84,"DYNAMIC_IMPORT":85,"Accessor":86,"RETURN":87,"AWAIT":88,"PARAM_START":89,"ParamList":90,"PARAM_END":91,"FuncGlyph":92,"->":93,"=>":94,"OptComma":95,",":96,"Param":97,"ParamVar":98,"Array":99,"Splat":100,"SimpleAssignable":101,"Range":102,"DoIife":103,"MetaProperty":104,".":105,"INDEX_START":106,"INDEX_END":107,"NEW_TARGET":108,"IMPORT_META":109,"?.":110,"::":111,"?::":112,"Index":113,"IndexValue":114,"INDEX_SOAK":115,"Slice":116,"{":117,"AssignList":118,"}":119,"CLASS":120,"EXTENDS":121,"IMPORT":122,"ASSERT":123,"ImportDefaultSpecifier":124,"ImportNamespaceSpecifier":125,"ImportSpecifierList":126,"ImportSpecifier":127,"AS":128,"DEFAULT":129,"IMPORT_ALL":130,"EXPORT":131,"ExportSpecifierList":132,"EXPORT_ALL":133,"ExportSpecifier":134,"FUNC_EXIST":135,"CALL_START":136,"CALL_END":137,"ArgList":138,"THIS":139,"Elisions":140,"ArgElisionList":141,"OptElisions":142,"RangeDots":143,"..":144,"Arg":145,"ArgElision":146,"Elision":147,"SimpleArgs":148,"TRY":149,"Catch":150,"FINALLY":151,"CATCH":152,"THROW":153,"(":154,")":155,"WhileLineSource":156,"WHILE":157,"WHEN":158,"UNTIL":159,"WhileSource":160,"Loop":161,"LOOP":162,"ForBody":163,"ForLineBody":164,"FOR":165,"BY":166,"ForStart":167,"ForSource":168,"ForLineSource":169,"ForVariables":170,"OWN":171,"ForValue":172,"FORIN":173,"FOROF":174,"FORFROM":175,"SWITCH":176,"Whens":177,"ELSE":178,"When":179,"LEADING_WHEN":180,"IfBlock":181,"IF":182,"POST_IF":183,"IfBlockLine":184,"UNARY":185,"DO":186,"DO_IIFE":187,"UNARY_MATH":188,"-":189,"+":190,"--":191,"++":192,"?":193,"MATH":194,"**":195,"SHIFT":196,"COMPARE":197,"&":198,"^":199,"|":200,"&&":201,"||":202,"BIN?":203,"RELATION":204,"COMPOUND_ASSIGN":205,"$accept":0,"$end":1},
+terminals_: {2:"error",6:"TERMINATOR",14:"STATEMENT",32:"YIELD",33:"INDENT",35:"OUTDENT",36:"FROM",39:"IDENTIFIER",40:"JSX_TAG",42:"PROPERTY",44:"NUMBER",46:"STRING",47:"STRING_START",49:"STRING_END",51:"INTERPOLATION_START",52:"INTERPOLATION_END",54:"REGEX",55:"REGEX_START",57:"REGEX_END",59:"JS",60:"UNDEFINED",61:"NULL",62:"BOOL",63:"INFINITY",64:"NAN",66:"=",70:":",73:"[",74:"]",75:"@",76:"...",82:"SUPER",85:"DYNAMIC_IMPORT",87:"RETURN",88:"AWAIT",89:"PARAM_START",91:"PARAM_END",93:"->",94:"=>",96:",",105:".",106:"INDEX_START",107:"INDEX_END",108:"NEW_TARGET",109:"IMPORT_META",110:"?.",111:"::",112:"?::",115:"INDEX_SOAK",117:"{",119:"}",120:"CLASS",121:"EXTENDS",122:"IMPORT",123:"ASSERT",128:"AS",129:"DEFAULT",130:"IMPORT_ALL",131:"EXPORT",133:"EXPORT_ALL",135:"FUNC_EXIST",136:"CALL_START",137:"CALL_END",139:"THIS",144:"..",149:"TRY",151:"FINALLY",152:"CATCH",153:"THROW",154:"(",155:")",157:"WHILE",158:"WHEN",159:"UNTIL",162:"LOOP",165:"FOR",166:"BY",171:"OWN",173:"FORIN",174:"FOROF",175:"FORFROM",176:"SWITCH",178:"ELSE",180:"LEADING_WHEN",182:"IF",183:"POST_IF",185:"UNARY",186:"DO",187:"DO_IIFE",188:"UNARY_MATH",189:"-",190:"+",191:"--",192:"++",193:"?",194:"MATH",195:"**",196:"SHIFT",197:"COMPARE",198:"&",199:"^",200:"|",201:"&&",202:"||",203:"BIN?",204:"RELATION",205:"COMPOUND_ASSIGN"},
+productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[5,1],[10,1],[10,1],[9,1],[9,1],[9,1],[9,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[8,1],[8,1],[8,1],[28,1],[28,2],[28,4],[28,3],[37,2],[37,3],[38,1],[38,1],[41,1],[43,1],[43,1],[45,1],[45,3],[48,1],[48,2],[50,3],[50,5],[50,2],[50,1],[53,1],[53,3],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[20,3],[20,4],[20,5],[67,1],[67,1],[67,3],[67,5],[67,3],[67,5],[71,1],[71,1],[71,1],[68,1],[68,3],[68,4],[68,1],[69,2],[69,2],[69,2],[69,2],[77,1],[77,1],[77,1],[77,1],[77,1],[77,3],[77,2],[77,3],[77,3],[78,2],[78,2],[13,2],[13,4],[13,1],[11,3],[11,2],[12,3],[12,2],[18,5],[18,2],[29,5],[29,2],[92,1],[92,1],[95,0],[95,1],[90,0],[90,1],[90,3],[90,4],[90,6],[97,1],[97,2],[97,2],[97,3],[97,1],[98,1],[98,1],[98,1],[98,1],[100,2],[100,2],[101,1],[101,2],[101,2],[101,1],[65,1],[65,1],[65,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[80,3],[80,4],[80,6],[104,3],[104,3],[86,2],[86,2],[86,2],[86,2],[86,1],[86,1],[86,1],[113,3],[113,5],[113,2],[114,1],[114,1],[34,4],[118,0],[118,1],[118,3],[118,4],[118,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[15,2],[15,4],[15,4],[15,6],[15,4],[15,6],[15,5],[15,7],[15,7],[15,9],[15,6],[15,8],[15,9],[15,11],[126,1],[126,3],[126,4],[126,4],[126,6],[127,1],[127,3],[127,1],[127,3],[124,1],[125,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,5],[16,4],[16,6],[16,5],[16,7],[16,7],[16,9],[132,1],[132,3],[132,4],[132,4],[132,6],[134,1],[134,3],[134,3],[134,1],[134,3],[56,3],[56,3],[56,3],[56,2],[83,0],[83,1],[84,2],[84,4],[81,1],[81,1],[72,2],[99,2],[99,3],[99,4],[143,1],[143,1],[102,5],[102,5],[116,3],[116,2],[116,3],[116,2],[116,2],[116,1],[138,1],[138,3],[138,4],[138,4],[138,6],[145,1],[145,1],[145,1],[145,1],[141,1],[141,3],[141,4],[141,4],[141,6],[146,1],[146,2],[142,1],[142,2],[140,1],[140,2],[147,1],[147,2],[148,1],[148,1],[148,3],[148,3],[22,2],[22,3],[22,4],[22,5],[150,3],[150,3],[150,2],[27,2],[27,4],[79,3],[79,5],[156,2],[156,4],[156,2],[156,4],[160,2],[160,4],[160,4],[160,2],[160,4],[160,4],[23,2],[23,2],[23,2],[23,2],[23,1],[161,2],[161,2],[24,2],[24,2],[24,2],[24,2],[163,2],[163,4],[163,2],[164,4],[164,2],[167,2],[167,3],[167,3],[172,1],[172,1],[172,1],[172,1],[170,1],[170,3],[168,2],[168,2],[168,4],[168,4],[168,4],[168,4],[168,4],[168,4],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,6],[168,2],[168,4],[168,4],[169,2],[169,2],[169,4],[169,4],[169,4],[169,4],[169,4],[169,4],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,6],[169,2],[169,4],[169,4],[25,5],[25,5],[25,7],[25,7],[25,4],[25,6],[177,1],[177,2],[179,3],[179,4],[181,3],[181,5],[21,1],[21,3],[21,3],[21,3],[184,3],[184,5],[30,1],[30,3],[30,3],[30,3],[31,2],[31,2],[31,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,4],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4],[103,2]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+return this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Root(new yy.Block()));
+break;
+case 2:
+return this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Root($$[$0]));
+break;
+case 3:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(yy.Block.wrap([$$[$0]]));
+break;
+case 4:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)($$[$0-2].push($$[$0]));
+break;
+case 5:
+this.$ = $$[$0-1];
+break;
+case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 41: case 52: case 54: case 64: case 69: case 70: case 71: case 72: case 75: case 80: case 81: case 82: case 83: case 84: case 104: case 105: case 116: case 117: case 118: case 119: case 125: case 126: case 129: case 135: case 149: case 247: case 248: case 249: case 251: case 264: case 265: case 308: case 309: case 364: case 370:
+this.$ = $$[$0];
+break;
+case 13:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.StatementLiteral($$[$0]));
+break;
+case 31:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Op($$[$0],
+      new yy.Value(new yy.Literal(''))));
+break;
+case 32: case 374: case 375: case 376: case 378: case 379: case 382: case 405:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op($$[$0-1],
+      $$[$0]));
+break;
+case 33: case 383:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Op($$[$0-3],
+      $$[$0-1]));
+break;
+case 34:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Op($$[$0-2].concat($$[$0-1]),
+      $$[$0]));
+break;
+case 35:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Block());
+break;
+case 36: case 150:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)($$[$0-1]);
+break;
+case 37:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.IdentifierLiteral($$[$0]));
+break;
+case 38:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)((function() {
+        var ref,
+      ref1,
+      ref2,
+      ref3;
+        return new yy.JSXTag($$[$0].toString(),
+      {
+          tagNameLocationData: $$[$0].tagNameToken[2],
+          closingTagOpeningBracketLocationData: (ref = $$[$0].closingTagOpeningBracketToken) != null ? ref[2] : void 0,
+          closingTagSlashLocationData: (ref1 = $$[$0].closingTagSlashToken) != null ? ref1[2] : void 0,
+          closingTagNameLocationData: (ref2 = $$[$0].closingTagNameToken) != null ? ref2[2] : void 0,
+          closingTagClosingBracketLocationData: (ref3 = $$[$0].closingTagClosingBracketToken) != null ? ref3[2] : void 0
+        });
+      }()));
+break;
+case 39:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.PropertyName($$[$0].toString()));
+break;
+case 40:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.NumberLiteral($$[$0].toString(),
+      {
+          parsedValue: $$[$0].parsedValue
+        }));
+break;
+case 42:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.StringLiteral($$[$0].slice(1,
+      -1), // strip artificial quotes and unwrap to primitive string
+      {
+          quote: $$[$0].quote,
+          initialChunk: $$[$0].initialChunk,
+          finalChunk: $$[$0].finalChunk,
+          indent: $$[$0].indent,
+          double: $$[$0].double,
+          heregex: $$[$0].heregex
+        }));
+break;
+case 43:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.StringWithInterpolations(yy.Block.wrap($$[$0-1]),
+      {
+          quote: $$[$0-2].quote,
+          startQuote: yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Literal($$[$0-2].toString()))
+        }));
+break;
+case 44: case 107: case 157: case 183: case 208: case 242: case 256: case 260: case 312: case 358:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)([$$[$0]]);
+break;
+case 45: case 257: case 261: case 359:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)($$[$0-1].concat($$[$0]));
+break;
+case 46:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Interpolation($$[$0-1]));
+break;
+case 47:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Interpolation($$[$0-2]));
+break;
+case 48:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Interpolation());
+break;
+case 49: case 293:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)($$[$0]);
+break;
+case 50:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.RegexLiteral($$[$0].toString(),
+      {
+          delimiter: $$[$0].delimiter,
+          heregexCommentTokens: $$[$0].heregexCommentTokens
+        }));
+break;
+case 51:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.RegexWithInterpolations($$[$0-1],
+      {
+          heregexCommentTokens: $$[$0].heregexCommentTokens
+        }));
+break;
+case 53:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.PassthroughLiteral($$[$0].toString(),
+      {
+          here: $$[$0].here,
+          generated: $$[$0].generated
+        }));
+break;
+case 55:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.UndefinedLiteral($$[$0]));
+break;
+case 56:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.NullLiteral($$[$0]));
+break;
+case 57:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.BooleanLiteral($$[$0].toString(),
+      {
+          originalValue: $$[$0].original
+        }));
+break;
+case 58:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.InfinityLiteral($$[$0].toString(),
+      {
+          originalValue: $$[$0].original
+        }));
+break;
+case 59:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.NaNLiteral($$[$0]));
+break;
+case 60:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Assign($$[$0-2],
+      $$[$0]));
+break;
+case 61:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Assign($$[$0-3],
+      $$[$0]));
+break;
+case 62:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Assign($$[$0-4],
+      $$[$0-1]));
+break;
+case 63: case 122: case 127: case 128: case 130: case 131: case 132: case 133: case 134: case 136: case 137: case 310: case 311:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Value($$[$0]));
+break;
+case 65:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Assign(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Value($$[$0-2])),
+      $$[$0],
+      'object',
+      {
+          operatorToken: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        }));
+break;
+case 66:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Assign(yy.addDataToNode(yy, _$[$0-4], $$[$0-4], null, null, true)(new yy.Value($$[$0-4])),
+      $$[$0-1],
+      'object',
+      {
+          operatorToken: yy.addDataToNode(yy, _$[$0-3], $$[$0-3], null, null, true)(new yy.Literal($$[$0-3]))
+        }));
+break;
+case 67:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Assign(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Value($$[$0-2])),
+      $$[$0],
+      null,
+      {
+          operatorToken: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        }));
+break;
+case 68:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Assign(yy.addDataToNode(yy, _$[$0-4], $$[$0-4], null, null, true)(new yy.Value($$[$0-4])),
+      $$[$0-1],
+      null,
+      {
+          operatorToken: yy.addDataToNode(yy, _$[$0-3], $$[$0-3], null, null, true)(new yy.Literal($$[$0-3]))
+        }));
+break;
+case 73:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Value(new yy.ComputedPropertyName($$[$0-1])));
+break;
+case 74:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Value(yy.addDataToNode(yy, _$[$0-3], $$[$0-3], null, null, true)(new yy.ThisLiteral($$[$0-3])),
+      [yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.ComputedPropertyName($$[$0-1]))],
+      'this'));
+break;
+case 76:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Splat(new yy.Value($$[$0-1])));
+break;
+case 77:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Splat(new yy.Value($$[$0]),
+      {
+          postfix: false
+        }));
+break;
+case 78: case 120:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Splat($$[$0-1]));
+break;
+case 79: case 121:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Splat($$[$0],
+      {
+          postfix: false
+        }));
+break;
+case 85: case 220:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Super()),
+      $$[$0],
+      $$[$0-1].soak,
+      $$[$0-2]));
+break;
+case 86: case 221:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.DynamicImportCall(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.DynamicImport()),
+      $$[$0]));
+break;
+case 87:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Call(new yy.Value($$[$0-2]),
+      $$[$0],
+      $$[$0-1].soak));
+break;
+case 88: case 219:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Call($$[$0-2],
+      $$[$0],
+      $$[$0-1].soak));
+break;
+case 89: case 90:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)((new yy.Value($$[$0-1])).add($$[$0]));
+break;
+case 91:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Return($$[$0]));
+break;
+case 92:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Return(new yy.Value($$[$0-1])));
+break;
+case 93:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Return());
+break;
+case 94:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.YieldReturn($$[$0],
+      {
+          returnKeyword: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        }));
+break;
+case 95:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.YieldReturn(null,
+      {
+          returnKeyword: yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Literal($$[$0]))
+        }));
+break;
+case 96:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.AwaitReturn($$[$0],
+      {
+          returnKeyword: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        }));
+break;
+case 97:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.AwaitReturn(null,
+      {
+          returnKeyword: yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Literal($$[$0]))
+        }));
+break;
+case 98:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Code($$[$0-3],
+      $$[$0],
+      $$[$0-1],
+      yy.addDataToNode(yy, _$[$0-4], $$[$0-4], null, null, true)(new yy.Literal($$[$0-4]))));
+break;
+case 99:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Code([],
+      $$[$0],
+      $$[$0-1]));
+break;
+case 100:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Code($$[$0-3],
+      yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(yy.Block.wrap([$$[$0]])),
+      $$[$0-1],
+      yy.addDataToNode(yy, _$[$0-4], $$[$0-4], null, null, true)(new yy.Literal($$[$0-4]))));
+break;
+case 101:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Code([],
+      yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(yy.Block.wrap([$$[$0]])),
+      $$[$0-1]));
+break;
+case 102: case 103:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.FuncGlyph($$[$0]));
+break;
+case 106: case 156: case 258:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)([]);
+break;
+case 108: case 158: case 184: case 209: case 243: case 252:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)($$[$0-2].concat($$[$0]));
+break;
+case 109: case 159: case 185: case 210: case 244: case 253:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)($$[$0-3].concat($$[$0]));
+break;
+case 110: case 160: case 187: case 212: case 246:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)($$[$0-5].concat($$[$0-2]));
+break;
+case 111:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Param($$[$0]));
+break;
+case 112:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Param($$[$0-1],
+      null,
+      true));
+break;
+case 113:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Param($$[$0],
+      null,
+      {
+          postfix: false
+        }));
+break;
+case 114:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Param($$[$0-2],
+      $$[$0]));
+break;
+case 115: case 250:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Expansion());
+break;
+case 123:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)($$[$0-1].add($$[$0]));
+break;
+case 124:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Value($$[$0-1]).add($$[$0]));
+break;
+case 138:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Super(yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Access($$[$0])),
+      yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Literal($$[$0-2]))));
+break;
+case 139:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Super(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Index($$[$0-1])),
+      yy.addDataToNode(yy, _$[$0-3], $$[$0-3], null, null, true)(new yy.Literal($$[$0-3]))));
+break;
+case 140:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.Super(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Index($$[$0-2])),
+      yy.addDataToNode(yy, _$[$0-5], $$[$0-5], null, null, true)(new yy.Literal($$[$0-5]))));
+break;
+case 141: case 142:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.MetaProperty(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.IdentifierLiteral($$[$0-2])),
+      yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Access($$[$0]))));
+break;
+case 143:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Access($$[$0]));
+break;
+case 144:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Access($$[$0],
+      {
+          soak: true
+        }));
+break;
+case 145:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)([
+          yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Access(new yy.PropertyName('prototype'),
+          {
+            shorthand: true
+          })),
+          yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Access($$[$0]))
+        ]);
+break;
+case 146:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)([
+          yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Access(new yy.PropertyName('prototype'),
+          {
+            shorthand: true,
+            soak: true
+          })),
+          yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Access($$[$0]))
+        ]);
+break;
+case 147:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Access(new yy.PropertyName('prototype'),
+      {
+          shorthand: true
+        }));
+break;
+case 148:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Access(new yy.PropertyName('prototype'),
+      {
+          shorthand: true,
+          soak: true
+        }));
+break;
+case 151:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)($$[$0-2]);
+break;
+case 152:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(yy.extend($$[$0],
+      {
+          soak: true
+        }));
+break;
+case 153:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Index($$[$0]));
+break;
+case 154:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Slice($$[$0]));
+break;
+case 155:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Obj($$[$0-2],
+      $$[$0-3].generated));
+break;
+case 161:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Class());
+break;
+case 162:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Class(null,
+      null,
+      $$[$0]));
+break;
+case 163:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Class(null,
+      $$[$0]));
+break;
+case 164:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Class(null,
+      $$[$0-1],
+      $$[$0]));
+break;
+case 165:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Class($$[$0]));
+break;
+case 166:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Class($$[$0-1],
+      null,
+      $$[$0]));
+break;
+case 167:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Class($$[$0-2],
+      $$[$0]));
+break;
+case 168:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Class($$[$0-3],
+      $$[$0-1],
+      $$[$0]));
+break;
+case 169:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.ImportDeclaration(null,
+      $$[$0]));
+break;
+case 170:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.ImportDeclaration(null,
+      $$[$0-2],
+      $$[$0]));
+break;
+case 171:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2],
+      null),
+      $$[$0]));
+break;
+case 172:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],
+      null),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 173:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      $$[$0-2]),
+      $$[$0]));
+break;
+case 174:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      $$[$0-4]),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 175:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      new yy.ImportSpecifierList([])),
+      $$[$0]));
+break;
+case 176:
+this.$ = yy.addDataToNode(yy, _$[$0-6], $$[$0-6], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      new yy.ImportSpecifierList([])),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 177:
+this.$ = yy.addDataToNode(yy, _$[$0-6], $$[$0-6], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      new yy.ImportSpecifierList($$[$0-4])),
+      $$[$0]));
+break;
+case 178:
+this.$ = yy.addDataToNode(yy, _$[$0-8], $$[$0-8], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause(null,
+      new yy.ImportSpecifierList($$[$0-6])),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 179:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4],
+      $$[$0-2]),
+      $$[$0]));
+break;
+case 180:
+this.$ = yy.addDataToNode(yy, _$[$0-7], $$[$0-7], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-6],
+      $$[$0-4]),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 181:
+this.$ = yy.addDataToNode(yy, _$[$0-8], $$[$0-8], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7],
+      new yy.ImportSpecifierList($$[$0-4])),
+      $$[$0]));
+break;
+case 182:
+this.$ = yy.addDataToNode(yy, _$[$0-10], $$[$0-10], _$[$0], $$[$0], true)(new yy.ImportDeclaration(new yy.ImportClause($$[$0-9],
+      new yy.ImportSpecifierList($$[$0-6])),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 186: case 211: case 245:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)($$[$0-2]);
+break;
+case 188:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.ImportSpecifier($$[$0]));
+break;
+case 189:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ImportSpecifier($$[$0-2],
+      $$[$0]));
+break;
+case 190:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.ImportSpecifier(yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.DefaultLiteral($$[$0]))));
+break;
+case 191:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ImportSpecifier(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.DefaultLiteral($$[$0-2])),
+      $$[$0]));
+break;
+case 192:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.ImportDefaultSpecifier($$[$0]));
+break;
+case 193:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]),
+      $$[$0]));
+break;
+case 194:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([])));
+break;
+case 195:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2])));
+break;
+case 196:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration($$[$0]));
+break;
+case 197:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Assign($$[$0-2],
+      $$[$0],
+      null,
+      {
+          moduleDeclaration: 'export'
+        }))));
+break;
+case 198:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Assign($$[$0-3],
+      $$[$0],
+      null,
+      {
+          moduleDeclaration: 'export'
+        }))));
+break;
+case 199:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Assign($$[$0-4],
+      $$[$0-1],
+      null,
+      {
+          moduleDeclaration: 'export'
+        }))));
+break;
+case 200:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ExportDefaultDeclaration($$[$0]));
+break;
+case 201:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.ExportDefaultDeclaration(new yy.Value($$[$0-1])));
+break;
+case 202:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]),
+      $$[$0]));
+break;
+case 203:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.ExportAllDeclaration(new yy.Literal($$[$0-4]),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 204:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),
+      $$[$0]));
+break;
+case 205:
+this.$ = yy.addDataToNode(yy, _$[$0-6], $$[$0-6], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 206:
+this.$ = yy.addDataToNode(yy, _$[$0-6], $$[$0-6], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]),
+      $$[$0]));
+break;
+case 207:
+this.$ = yy.addDataToNode(yy, _$[$0-8], $$[$0-8], _$[$0], $$[$0], true)(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-6]),
+      $$[$0-2],
+      $$[$0]));
+break;
+case 213:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.ExportSpecifier($$[$0]));
+break;
+case 214:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ExportSpecifier($$[$0-2],
+      $$[$0]));
+break;
+case 215:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ExportSpecifier($$[$0-2],
+      yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.DefaultLiteral($$[$0]))));
+break;
+case 216:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.ExportSpecifier(yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.DefaultLiteral($$[$0]))));
+break;
+case 217:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.ExportSpecifier(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.DefaultLiteral($$[$0-2])),
+      $$[$0]));
+break;
+case 218:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.TaggedTemplateCall($$[$0-2],
+      $$[$0],
+      $$[$0-1].soak));
+break;
+case 222:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)({
+          soak: false
+        });
+break;
+case 223:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)({
+          soak: true
+        });
+break;
+case 224:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)([]);
+break;
+case 225:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)((function() {
+        $$[$0-2].implicit = $$[$0-3].generated;
+        return $$[$0-2];
+      }()));
+break;
+case 226: case 227:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Value(new yy.ThisLiteral($$[$0])));
+break;
+case 228:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Value(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.ThisLiteral($$[$0-1])),
+      [yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Access($$[$0]))],
+      'this'));
+break;
+case 229:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Arr([]));
+break;
+case 230:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Arr($$[$0-1]));
+break;
+case 231:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Arr([].concat($$[$0-2],
+      $$[$0-1])));
+break;
+case 232:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)({
+          exclusive: false
+        });
+break;
+case 233:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)({
+          exclusive: true
+        });
+break;
+case 234: case 235:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Range($$[$0-3],
+      $$[$0-1],
+      $$[$0-2].exclusive ? 'exclusive' : 'inclusive'));
+break;
+case 236: case 238:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Range($$[$0-2],
+      $$[$0],
+      $$[$0-1].exclusive ? 'exclusive' : 'inclusive'));
+break;
+case 237: case 239:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Range($$[$0-1],
+      null,
+      $$[$0].exclusive ? 'exclusive' : 'inclusive'));
+break;
+case 240:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Range(null,
+      $$[$0],
+      $$[$0-1].exclusive ? 'exclusive' : 'inclusive'));
+break;
+case 241:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Range(null,
+      null,
+      $$[$0].exclusive ? 'exclusive' : 'inclusive'));
+break;
+case 254:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)($$[$0-2].concat($$[$0-1]));
+break;
+case 255:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)($$[$0-5].concat($$[$0-4],
+      $$[$0-2],
+      $$[$0-1]));
+break;
+case 259:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)([].concat($$[$0]));
+break;
+case 262:
+this.$ = yy.addDataToNode(yy, _$[$0], $$[$0], _$[$0], $$[$0], true)(new yy.Elision());
+break;
+case 263:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)($$[$0-1]);
+break;
+case 266: case 267:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)([].concat($$[$0-2],
+      $$[$0]));
+break;
+case 268:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Try($$[$0]));
+break;
+case 269:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Try($$[$0-1],
+      $$[$0]));
+break;
+case 270:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Try($$[$0-2],
+      null,
+      $$[$0],
+      yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))));
+break;
+case 271:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Try($$[$0-3],
+      $$[$0-2],
+      $$[$0],
+      yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))));
+break;
+case 272:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Catch($$[$0],
+      $$[$0-1]));
+break;
+case 273:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Catch($$[$0],
+      yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Value($$[$0-1]))));
+break;
+case 274:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Catch($$[$0]));
+break;
+case 275:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Throw($$[$0]));
+break;
+case 276:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Throw(new yy.Value($$[$0-1])));
+break;
+case 277:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Parens($$[$0-1]));
+break;
+case 278:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Parens($$[$0-2]));
+break;
+case 279: case 283:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.While($$[$0]));
+break;
+case 280: case 284: case 285:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.While($$[$0-2],
+      {
+          guard: $$[$0]
+        }));
+break;
+case 281: case 286:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.While($$[$0],
+      {
+          invert: true
+        }));
+break;
+case 282: case 287: case 288:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.While($$[$0-2],
+      {
+          invert: true,
+          guard: $$[$0]
+        }));
+break;
+case 289: case 290: case 298: case 299:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)($$[$0-1].addBody($$[$0]));
+break;
+case 291: case 292:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)((Object.assign($$[$0],
+      {
+          postfix: true
+        })).addBody(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(yy.Block.wrap([$$[$0-1]]))));
+break;
+case 294:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.While(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.BooleanLiteral('true')),
+      {
+          isLoop: true
+        }).addBody($$[$0]));
+break;
+case 295:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.While(yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.BooleanLiteral('true')),
+      {
+          isLoop: true
+        }).addBody(yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(yy.Block.wrap([$$[$0]]))));
+break;
+case 296: case 297:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)((function() {
+        $$[$0].postfix = true;
+        return $$[$0].addBody($$[$0-1]);
+      }()));
+break;
+case 300:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.For([],
+      {
+          source: yy.addDataToNode(yy, _$[$0], $$[$0], null, null, true)(new yy.Value($$[$0]))
+        }));
+break;
+case 301: case 303:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.For([],
+      {
+          source: yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(new yy.Value($$[$0-2])),
+          step: $$[$0]
+        }));
+break;
+case 302: case 304:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)($$[$0-1].addSource($$[$0]));
+break;
+case 305:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.For([],
+      {
+          name: $$[$0][0],
+          index: $$[$0][1]
+        }));
+break;
+case 306:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)((function() {
+        var index,
+      name;
+        [name,
+      index] = $$[$0];
+        return new yy.For([],
+      {
+          name,
+          index,
+          await: true,
+          awaitTag: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        });
+      }()));
+break;
+case 307:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)((function() {
+        var index,
+      name;
+        [name,
+      index] = $$[$0];
+        return new yy.For([],
+      {
+          name,
+          index,
+          own: true,
+          ownTag: yy.addDataToNode(yy, _$[$0-1], $$[$0-1], null, null, true)(new yy.Literal($$[$0-1]))
+        });
+      }()));
+break;
+case 313:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)([$$[$0-2],
+      $$[$0]]);
+break;
+case 314: case 333:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)({
+          source: $$[$0]
+        });
+break;
+case 315: case 334:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)({
+          source: $$[$0],
+          object: true
+        });
+break;
+case 316: case 317: case 335: case 336:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)({
+          source: $$[$0-2],
+          guard: $$[$0]
+        });
+break;
+case 318: case 319: case 337: case 338:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)({
+          source: $$[$0-2],
+          guard: $$[$0],
+          object: true
+        });
+break;
+case 320: case 321: case 339: case 340:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)({
+          source: $$[$0-2],
+          step: $$[$0]
+        });
+break;
+case 322: case 323: case 324: case 325: case 341: case 342: case 343: case 344:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)({
+          source: $$[$0-4],
+          guard: $$[$0-2],
+          step: $$[$0]
+        });
+break;
+case 326: case 327: case 328: case 329: case 345: case 346: case 347: case 348:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)({
+          source: $$[$0-4],
+          step: $$[$0-2],
+          guard: $$[$0]
+        });
+break;
+case 330: case 349:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)({
+          source: $$[$0],
+          from: true
+        });
+break;
+case 331: case 332: case 350: case 351:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)({
+          source: $$[$0-2],
+          guard: $$[$0],
+          from: true
+        });
+break;
+case 352: case 353:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Switch($$[$0-3],
+      $$[$0-1]));
+break;
+case 354: case 355:
+this.$ = yy.addDataToNode(yy, _$[$0-6], $$[$0-6], _$[$0], $$[$0], true)(new yy.Switch($$[$0-5],
+      $$[$0-3],
+      yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0-1], $$[$0-1], true)($$[$0-1])));
+break;
+case 356:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Switch(null,
+      $$[$0-1]));
+break;
+case 357:
+this.$ = yy.addDataToNode(yy, _$[$0-5], $$[$0-5], _$[$0], $$[$0], true)(new yy.Switch(null,
+      $$[$0-3],
+      yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0-1], $$[$0-1], true)($$[$0-1])));
+break;
+case 360:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.SwitchWhen($$[$0-1],
+      $$[$0]));
+break;
+case 361:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], false)(yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0-1], $$[$0-1], true)(new yy.SwitchWhen($$[$0-2],
+      $$[$0-1])));
+break;
+case 362: case 368:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.If($$[$0-1],
+      $$[$0],
+      {
+          type: $$[$0-2]
+        }));
+break;
+case 363: case 369:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)($$[$0-4].addElse(yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.If($$[$0-1],
+      $$[$0],
+      {
+          type: $$[$0-2]
+        }))));
+break;
+case 365: case 371:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)($$[$0-2].addElse($$[$0]));
+break;
+case 366: case 367: case 372: case 373:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.If($$[$0],
+      yy.addDataToNode(yy, _$[$0-2], $$[$0-2], null, null, true)(yy.Block.wrap([$$[$0-2]])),
+      {
+          type: $$[$0-1],
+          postfix: true
+        }));
+break;
+case 377:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op($$[$0-1].toString(),
+      $$[$0],
+      void 0,
+      void 0,
+      {
+          originalOperator: $$[$0-1].original
+        }));
+break;
+case 380:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('-',
+      $$[$0]));
+break;
+case 381:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('+',
+      $$[$0]));
+break;
+case 384:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('--',
+      $$[$0]));
+break;
+case 385:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('++',
+      $$[$0]));
+break;
+case 386:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('--',
+      $$[$0-1],
+      null,
+      true));
+break;
+case 387:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Op('++',
+      $$[$0-1],
+      null,
+      true));
+break;
+case 388:
+this.$ = yy.addDataToNode(yy, _$[$0-1], $$[$0-1], _$[$0], $$[$0], true)(new yy.Existence($$[$0-1]));
+break;
+case 389:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Op('+',
+      $$[$0-2],
+      $$[$0]));
+break;
+case 390:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Op('-',
+      $$[$0-2],
+      $$[$0]));
+break;
+case 391: case 392: case 393: case 395: case 396: case 397: case 400:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Op($$[$0-1],
+      $$[$0-2],
+      $$[$0]));
+break;
+case 394: case 398: case 399:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Op($$[$0-1].toString(),
+      $$[$0-2],
+      $$[$0],
+      void 0,
+      {
+          originalOperator: $$[$0-1].original
+        }));
+break;
+case 401:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)((function() {
+        var ref,
+      ref1;
+        return new yy.Op($$[$0-1].toString(),
+      $$[$0-2],
+      $$[$0],
+      void 0,
+      {
+          invertOperator: (ref = (ref1 = $$[$0-1].invert) != null ? ref1.original : void 0) != null ? ref : $$[$0-1].invert
+        });
+      }()));
+break;
+case 402:
+this.$ = yy.addDataToNode(yy, _$[$0-2], $$[$0-2], _$[$0], $$[$0], true)(new yy.Assign($$[$0-2],
+      $$[$0],
+      $$[$0-1].toString(),
+      {
+          originalContext: $$[$0-1].original
+        }));
+break;
+case 403:
+this.$ = yy.addDataToNode(yy, _$[$0-4], $$[$0-4], _$[$0], $$[$0], true)(new yy.Assign($$[$0-4],
+      $$[$0-1],
+      $$[$0-3].toString(),
+      {
+          originalContext: $$[$0-3].original
+        }));
+break;
+case 404:
+this.$ = yy.addDataToNode(yy, _$[$0-3], $$[$0-3], _$[$0], $$[$0], true)(new yy.Assign($$[$0-3],
+      $$[$0],
+      $$[$0-2].toString(),
+      {
+          originalContext: $$[$0-2].original
+        }));
+break;
+}
+},
+table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{1:[3]},{1:[2,2],6:$VM},o($VN,[2,3]),o($VO,[2,6],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,7]),o($VO,[2,8],{167:123,160:125,163:126,157:$VP,159:$VQ,165:$VR,183:$V51}),o($VO,[2,9]),o($V61,[2,16],{83:127,86:128,113:134,46:$V71,47:$V71,136:$V71,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),o($V61,[2,17],{113:134,86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1}),o($V61,[2,18]),o($V61,[2,19]),o($V61,[2,20]),o($V61,[2,21]),o($V61,[2,22]),o($V61,[2,23]),o($V61,[2,24]),o($V61,[2,25]),o($V61,[2,26]),o($V61,[2,27]),o($VO,[2,28]),o($VO,[2,29]),o($VO,[2,30]),o($Vf1,[2,12]),o($Vf1,[2,13]),o($Vf1,[2,14]),o($Vf1,[2,15]),o($VO,[2,10]),o($VO,[2,11]),o($Vg1,$Vh1,{66:[1,138]}),o($Vg1,[2,130]),o($Vg1,[2,131]),o($Vg1,[2,132]),o($Vg1,$Vi1),o($Vg1,[2,134]),o($Vg1,[2,135]),o($Vg1,[2,136]),o($Vg1,[2,137]),o($Vj1,$Vk1,{90:139,97:140,98:141,38:143,72:144,99:145,34:146,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{5:150,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:149,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:152,8:153,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:157,8:158,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:159,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:167,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:168,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:[1,171],88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:172,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:176,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($Vx1,$Vy1,{191:[1,177],192:[1,178],205:[1,179]}),o($V61,[2,364],{178:[1,180]}),{33:$Vo1,37:181},{33:$Vo1,37:182},{33:$Vo1,37:183},o($V61,[2,293]),{33:$Vo1,37:184},{33:$Vo1,37:185},{7:186,8:187,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,188],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,161],{58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,99:65,34:66,43:67,53:69,38:85,72:86,45:95,92:161,17:173,18:174,65:175,37:189,101:191,33:$Vo1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,121:[1,190],139:$Vu,154:$Vx,187:$Vv1}),{7:192,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,193],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:[1,197],88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO,[2,370],{178:[1,198]}),{18:200,29:199,89:$Vl,92:39,93:$Vm,94:$Vn},o([1,6,35,52,74,76,96,137,144,155,157,158,159,165,166,183],$VD1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:201,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{38:207,39:$V2,40:$V3,45:203,46:$V5,47:$V6,117:[1,206],124:204,125:205,130:$VF1},{26:210,38:211,39:$V2,40:$V3,117:[1,209],120:$Vr,129:[1,212],133:[1,213]},o($Vx1,[2,127]),o($Vx1,[2,128]),o($Vg1,[2,52]),o($Vg1,[2,53]),o($Vg1,[2,54]),o($Vg1,[2,55]),o($Vg1,[2,56]),o($Vg1,[2,57]),o($Vg1,[2,58]),o($Vg1,[2,59]),{4:214,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,215],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:216,8:217,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{83:228,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:231,136:$VM1},o($Vg1,[2,226]),o($Vg1,$VN1,{41:233,42:$VO1}),{105:[1,235]},{105:[1,236]},o($VP1,[2,102]),o($VP1,[2,103]),o($VQ1,[2,122]),o($VQ1,[2,125]),{7:237,8:238,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:239,8:240,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:242,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:244,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vo1,34:66,37:243,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:245,117:$Vq,170:246,171:$VS1,172:249},{168:254,169:255,173:[1,256],174:[1,257],175:[1,258]},o([6,33,96,119],$VT1,{45:95,118:259,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VZ1,[2,40]),o($VZ1,[2,41]),o($Vg1,[2,50]),{17:173,18:174,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:279,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:175,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:280,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,139:$Vu,154:$Vx,187:$Vv1},o($V_1,[2,37]),o($V_1,[2,38]),o($V$1,[2,42]),{45:284,46:$V5,47:$V6,48:281,50:282,51:$V02},o($VN,[2,5],{7:4,8:5,9:6,10:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,11:27,12:28,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,5:285,14:$V0,32:$V1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,388]),{7:286,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:287,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:288,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:289,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:290,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:291,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:292,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:293,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:294,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:295,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:296,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:297,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:298,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:299,8:300,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,292]),o($V61,[2,297]),{7:239,8:301,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:241,8:302,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vf,75:$Vm1,88:$VR1,99:252,102:303,117:$Vq,170:246,171:$VS1,172:249},{168:254,173:[1,304],174:[1,305],175:[1,306]},{7:307,8:308,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,291]),o($V61,[2,296]),{45:309,46:$V5,47:$V6,84:310,136:$VM1},o($VQ1,[2,123]),o($V12,[2,223]),{41:311,42:$VO1},{41:312,42:$VO1},o($VQ1,[2,147],{41:313,42:$VO1}),o($VQ1,[2,148],{41:314,42:$VO1}),o($VQ1,[2,149]),{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:[1,316],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:315,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{106:$V91,113:323,115:$Vd1},o($VQ1,[2,124]),{6:[1,325],7:324,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,326],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,327],96:$V62}),o($V72,[2,107]),o($V72,[2,111],{66:[1,331],76:[1,330]}),o($V72,[2,115],{38:143,72:144,99:145,34:146,98:332,39:$V2,40:$V3,73:$Vl1,75:$Vm1,117:$Vq}),o($V82,[2,116]),o($V82,[2,117]),o($V82,[2,118]),o($V82,[2,119]),{41:233,42:$VO1},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:$VH1,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:219,141:220,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,99]),o($VO,[2,101]),{4:336,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,35:[1,335],38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,374]),{7:169,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:$Vw1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:$V51},o([1,6,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,193,194,195,196,197,198,199,200,201,202,203,204],$VA1,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:194,14:$V0,32:$Vp1,33:$VB1,36:$VC1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),o($VO,[2,375]),o($Vc2,[2,379],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vj1,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:338,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{33:$Vo1,37:149},{7:339,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:340,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{157:$VP,159:$VQ,160:125,163:126,165:$VR,167:123,183:[1,341]},{18:200,89:$Vr1,92:161,93:$Vm,94:$Vn},{7:342,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vc2,[2,380],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,381],{160:118,163:119,167:123,193:$VV,195:$VX}),o($V92,[2,382],{160:118,163:119,167:123,193:$VV}),{34:343,117:$Vq},o($VO,[2,97],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:344,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V61,[2,384],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V12,$V71,{83:127,86:128,113:134,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1}),{86:137,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1},o($Vd2,$Vh1),o($V61,[2,385],{46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1}),o($V61,[2,386]),o($V61,[2,387]),{6:[1,347],7:345,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,346],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:348,182:[1,349]},o($V61,[2,268],{150:350,151:[1,351],152:[1,352]}),o($V61,[2,289]),o($V61,[2,290]),o($V61,[2,298]),o($V61,[2,299]),{33:[1,353],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[1,354]},{177:355,179:356,180:$Ve2},o($V61,[2,162]),{7:358,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz1,[2,165],{37:359,33:$Vo1,46:$Vy1,47:$Vy1,105:$Vy1,106:$Vy1,110:$Vy1,111:$Vy1,112:$Vy1,115:$Vy1,135:$Vy1,136:$Vy1,121:[1,360]}),o($Vf2,[2,275],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:361,117:$Vq},o($Vf2,[2,32],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:362,117:$Vq},{7:363,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,35,52,74,76,96,137,144,155,158,166],[2,95],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:364,14:$V0,32:$Vp1,33:$VE1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$VD1,159:$VD1,165:$VD1,183:$VD1,162:$VA,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{33:$Vo1,37:365,182:[1,366]},o($VO,[2,376]),o($Vg1,[2,405]),o($Vf1,$Vg2,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:367,117:$Vq},o($Vf1,[2,169],{123:[1,368]}),{36:[1,369],96:[1,370]},{36:[1,371]},{33:$Vh2,38:376,39:$V2,40:$V3,119:[1,372],126:373,127:374,129:$Vi2},o([36,96],[2,192]),{128:[1,378]},{33:$Vj2,38:383,39:$V2,40:$V3,119:[1,379],129:$Vk2,132:380,134:381},o($Vf1,[2,196]),{66:[1,385]},{7:386,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,387],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{36:[1,388]},{6:$VM,155:[1,389]},{4:390,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vl2,$Vm2,{160:118,163:119,167:123,143:391,76:[1,392],144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vl2,$Vn2,{143:393,76:$V22,144:$V32}),o($Vo2,[2,229]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,74:[1,394],75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([6,33,74],$V52,{142:397,95:399,96:$Vp2}),o($Vq2,[2,260],{6:$Vr2}),o($Vs2,[2,251]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:401,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vt2,[2,262]),o($Vs2,[2,256]),o($Vu2,[2,249]),o($Vu2,[2,250],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:403,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{84:404,136:$VM1},{41:405,42:$VO1},{7:406,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,407],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,221]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,137:[1,408],138:409,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vx2,[2,228]),o($Vx2,[2,39]),{41:412,42:$VO1},{41:413,42:$VO1},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:415},o($Vy2,[2,283],{160:118,163:119,167:123,157:$VP,158:[1,416],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,279],158:[1,417]},o($Vy2,[2,286],{160:118,163:119,167:123,157:$VP,158:[1,418],159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:[2,281],158:[1,419]},o($V61,[2,294]),o($Vz2,[2,295],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$VA2,166:[1,420]},o($VB2,[2,305]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:421,172:249},{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,170:422,172:249},o($VB2,[2,312],{96:[1,423]}),o($VC2,[2,308]),o($VC2,[2,309]),o($VC2,[2,310]),o($VC2,[2,311]),o($V61,[2,302]),{33:[2,304]},{7:424,8:425,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:426,8:427,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:428,8:429,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VD2,$V52,{95:430,96:$VE2}),o($VF2,[2,157]),o($VF2,[2,63],{70:[1,432]}),o($VF2,[2,64]),o($VG2,[2,72],{113:134,83:435,86:436,66:[1,433],76:[1,434],105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),{7:437,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([76,105,106,110,111,112,115,135,136],$VN1,{41:233,42:$VO1,73:[1,438]}),o($VG2,[2,75]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,71:439,72:271,75:$Vg,77:440,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},{76:[1,441],83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,113:134,115:$Vd1,135:$Ve1,136:$V71},o($VH2,[2,69]),o($VH2,[2,70]),o($VH2,[2,71]),o($VI2,[2,80]),o($VI2,[2,81]),o($VI2,[2,82]),o($VI2,[2,83]),o($VI2,[2,84]),{83:444,105:$VK1,106:$VL1,135:$Ve1,136:$V71},{84:445,136:$VM1},o($Vd2,$Vi1,{57:[1,446]}),o($Vd2,$Vy1),{45:284,46:$V5,47:$V6,49:[1,447],50:448,51:$V02},o($VJ2,[2,44]),{4:449,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:[1,450],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,52:[1,451],53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,49]),o($VN,[2,4]),o($VK2,[2,389],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($VK2,[2,390],{160:118,163:119,167:123,193:$VV,194:$VW,195:$VX}),o($Vc2,[2,391],{160:118,163:119,167:123,193:$VV,195:$VX}),o($Vc2,[2,392],{160:118,163:119,167:123,193:$VV,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,196,197,198,199,200,201,202,203,204],[2,393],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203],[2,394],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,198,199,200,201,202,203],[2,395],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,199,200,201,202,203],[2,396],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,200,201,202,203],[2,397],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,201,202,203],[2,398],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,202,203],[2,399],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,203],[2,400],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,204:$V41}),o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,166,183,197,198,199,200,201,202,203,204],[2,401],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY}),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,373]),{158:[1,452]},{158:[1,453]},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,158,159,165,183,189,190,193,194,195,196,197,198,199,200,201,202,203,204],$VA2,{166:[1,454]}),{7:455,8:456,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:457,8:458,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:459,8:460,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,372]),o($Vv2,[2,218]),o($Vv2,[2,219]),o($VQ1,[2,143]),o($VQ1,[2,144]),o($VQ1,[2,145]),o($VQ1,[2,146]),{107:[1,461]},{7:317,8:319,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$V22,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,114:462,116:318,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,143:320,144:$V32,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VN2,[2,153],{160:118,163:119,167:123,143:463,76:$V22,144:$V32,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,154]),{76:$V22,143:464,144:$V32},o($VN2,[2,241],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:465,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VO2,[2,232]),o($VO2,$VP2),o($VQ1,[2,152]),o($Vf2,[2,60],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:466,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:467,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{92:468,93:$Vm,94:$Vn},o($VQ2,$VR2,{98:141,38:143,72:144,99:145,34:146,97:469,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),{6:$VS2,33:$VT2},o($V72,[2,112]),{7:472,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,113]),o($Vu2,$Vm2,{160:118,163:119,167:123,76:[1,473],157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$Vn2),o($VU2,[2,35]),{6:$VM,35:[1,474]},{7:475,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V42,$V52,{95:329,91:[1,476],96:$V62}),o($V92,$Va2,{160:118,163:119,167:123,193:$VV}),o($V92,$Vb2,{160:118,163:119,167:123,193:$VV}),{7:477,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$Vo1,37:414,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,478]},o($VO,[2,96],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,402],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:479,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:480,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,365]),{7:481,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,269],{151:[1,482]}),{33:$Vo1,37:483},{33:$Vo1,34:485,37:486,38:484,39:$V2,40:$V3,117:$Vq},{177:487,179:356,180:$Ve2},{177:488,179:356,180:$Ve2},{35:[1,489],178:[1,490],179:491,180:$Ve2},o($VW2,[2,358]),{7:493,8:494,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,148:492,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VX2,[2,163],{160:118,163:119,167:123,37:495,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,166]),{7:496,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,497]},{35:[1,498]},o($Vf2,[2,34],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,94],{160:118,163:119,167:123,157:$Vg2,159:$Vg2,165:$Vg2,183:$Vg2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VO,[2,371]),{7:500,8:499,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,501]},{34:502,117:$Vq},{45:503,46:$V5,47:$V6},{117:[1,505],125:504,130:$VF1},{45:506,46:$V5,47:$V6},{36:[1,507]},o($VD2,$V52,{95:508,96:$VY2}),o($VF2,[2,183]),{33:$Vh2,38:376,39:$V2,40:$V3,126:510,127:374,129:$Vi2},o($VF2,[2,188],{128:[1,511]}),o($VF2,[2,190],{128:[1,512]}),{38:513,39:$V2,40:$V3},o($Vf1,[2,194],{36:[1,514]}),o($VD2,$V52,{95:515,96:$VZ2}),o($VF2,[2,208]),{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:517,134:381},o($VF2,[2,213],{128:[1,518]}),o($VF2,[2,216],{128:[1,519]}),{6:[1,521],7:520,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,522],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V_2,[2,200],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{34:523,117:$Vq},{45:524,46:$V5,47:$V6},o($Vg1,[2,277]),{6:$VM,35:[1,525]},{7:526,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([14,32,39,40,44,46,47,54,55,59,60,61,62,63,64,73,75,82,85,87,88,89,93,94,108,109,117,120,122,131,139,149,153,154,157,159,162,165,176,182,185,186,187,188,189,190,191,192],$VP2,{6:$V$2,33:$V$2,74:$V$2,96:$V$2}),{7:527,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,230]),o($Vq2,[2,261],{6:$Vr2}),o($Vs2,[2,257]),{33:$V03,74:[1,528]},o([6,33,35,74],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,147:221,145:225,100:226,7:333,8:334,146:530,140:531,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($V13,[2,258],{6:[1,532]}),o($Vt2,[2,263]),o($VQ2,$V52,{95:399,142:533,96:$Vp2}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:396,147:395,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vu2,[2,121],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vv2,[2,220]),o($Vg1,[2,138]),{107:[1,534],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:535,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vv2,[2,224]),o([6,33,137],$V52,{95:536,96:$V23}),o($V33,[2,242]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:538,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vg1,[2,141]),o($Vg1,[2,142]),o($V43,[2,362]),o($V53,[2,368]),{7:539,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:540,8:541,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:542,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:543,8:544,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:545,8:546,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VB2,[2,306]),o($VB2,[2,307]),{34:253,38:250,39:$V2,40:$V3,72:251,73:$Vl1,75:$Vm1,99:252,117:$Vq,172:547},{33:$V63,157:$VP,158:[1,548],159:$VQ,160:118,163:119,165:$VR,166:[1,549],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,333],158:[1,550],166:[1,551]},{33:$V73,157:$VP,158:[1,552],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,334],158:[1,553]},{33:$V83,157:$VP,158:[1,554],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,349],158:[1,555]},{6:$V93,33:$Va3,119:[1,556]},o($Vb3,$VR2,{45:95,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,67:559,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),{7:560,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,561],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:562,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,33:[1,563],34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,76]),{84:564,136:$VM1},o($VI2,[2,89]),{74:[1,565],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{7:566,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,77],{113:134,83:435,86:436,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,79],{113:134,83:442,86:443,105:$V81,106:$V91,110:$Va1,111:$Vb1,112:$Vc1,115:$Vd1,135:$Ve1,136:$V71}),o($VF2,[2,78]),{84:567,136:$VM1},o($VI2,[2,90]),{84:568,136:$VM1},o($VI2,[2,86]),o($Vg1,[2,51]),o($V$1,[2,43]),o($VJ2,[2,45]),{6:$VM,52:[1,569]},{4:570,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VJ2,[2,48]),{7:571,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:572,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:573,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o([1,6,33,35,52,74,76,91,96,107,119,137,144,155,157,159,165,183],$V63,{160:118,163:119,167:123,158:[1,574],166:[1,575],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,576],166:[1,577]},o($Vc3,$V73,{160:118,163:119,167:123,158:[1,578],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,579]},o($Vc3,$V83,{160:118,163:119,167:123,158:[1,580],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,581]},o($VQ1,[2,150]),{35:[1,582]},o($VN2,[2,237],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:583,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,239],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,101:48,181:49,160:51,156:52,161:53,163:54,164:55,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,92:161,9:164,7:584,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VN2,[2,240],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,[2,61],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,585],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{5:587,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$V1,33:$Vo1,34:66,37:586,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vk,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,108]),{34:146,38:143,39:$V2,40:$V3,72:144,73:$Vl1,75:$Vm1,76:$Vn1,97:588,98:141,99:145,117:$Vq},o($Vd3,$Vk1,{97:140,98:141,38:143,72:144,99:145,34:146,90:589,39:$V2,40:$V3,73:$Vl1,75:$Vm1,76:$Vn1,117:$Vq}),o($V72,[2,114],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vu2,$V$2),o($VU2,[2,36]),o($Vz2,$VL2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{92:590,93:$Vm,94:$Vn},o($Vz2,$VM2,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,383]),{35:[1,591],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf2,[2,404],{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vo1,37:592,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:$Vo1,37:593},o($V61,[2,270]),{33:$Vo1,37:594},{33:$Vo1,37:595},o($Ve3,[2,274]),{35:[1,596],178:[1,597],179:491,180:$Ve2},{35:[1,598],178:[1,599],179:491,180:$Ve2},o($V61,[2,356]),{33:$Vo1,37:600},o($VW2,[2,359]),{33:$Vo1,37:601,96:[1,602]},o($Vf3,[2,264],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,265]),o($V61,[2,164]),o($VX2,[2,167],{160:118,163:119,167:123,37:603,33:$Vo1,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,276]),o($V61,[2,33]),{33:$Vo1,37:604},{157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,92]),o($Vf1,[2,170]),o($Vf1,[2,171],{123:[1,605]}),{36:[1,606]},{33:$Vh2,38:376,39:$V2,40:$V3,126:607,127:374,129:$Vi2},o($Vf1,[2,173],{123:[1,608]}),{45:609,46:$V5,47:$V6},{6:$Vg3,33:$Vh3,119:[1,610]},o($Vb3,$VR2,{38:376,127:613,39:$V2,40:$V3,129:$Vi2}),o($VQ2,$V52,{95:614,96:$VY2}),{38:615,39:$V2,40:$V3},{38:616,39:$V2,40:$V3},{36:[2,193]},{45:617,46:$V5,47:$V6},{6:$Vi3,33:$Vj3,119:[1,618]},o($Vb3,$VR2,{38:383,134:621,39:$V2,40:$V3,129:$Vk2}),o($VQ2,$V52,{95:622,96:$VZ2}),{38:623,39:$V2,40:$V3,129:[1,624]},{38:625,39:$V2,40:$V3},o($V_2,[2,197],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:626,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:627,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{35:[1,628]},o($Vf1,[2,202],{123:[1,629]}),{155:[1,630]},{74:[1,631],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{74:[1,632],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vo2,[2,231]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$VG1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,141:633,145:225,146:222,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vs2,[2,252]),o($V13,[2,259],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,147:395,145:396,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,96:$VJ1,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,96:$VJ1,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,140:402,145:225,146:634,147:221,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{33:$V03,35:[1,635]},o($Vg1,[2,139]),{35:[1,636],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{6:$Vk3,33:$Vl3,137:[1,637]},o([6,33,35,137],$VR2,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,65:29,58:30,79:31,102:32,56:33,103:34,81:35,80:36,104:37,92:39,101:48,181:49,160:51,156:52,161:53,163:54,164:55,184:60,99:65,34:66,43:67,53:69,38:85,72:86,167:92,45:95,9:155,100:226,7:333,8:334,145:640,14:$V0,32:$Vp1,39:$V2,40:$V3,44:$V4,46:$V5,47:$V6,54:$V7,55:$V8,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,73:$Vf,75:$Vg,76:$VI1,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,93:$Vm,94:$Vn,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,157:$Vy,159:$Vz,162:$VA,165:$VB,176:$VC,182:$VD,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL}),o($VQ2,$V52,{95:641,96:$V23}),o($Vz2,[2,284],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vm3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,280]},o($Vz2,[2,287],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{33:$Vn3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,282]},{33:$Vo3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,303]},o($VB2,[2,313]),{7:642,8:643,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:644,8:645,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:646,8:647,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:648,8:649,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:650,8:651,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:652,8:653,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:654,8:655,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:656,8:657,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($Vo2,[2,155]),{34:273,38:269,39:$V2,40:$V3,41:270,42:$VO1,43:266,44:$V4,45:95,46:$V5,47:$V6,67:658,68:261,69:262,71:263,72:271,73:$VU1,75:$VV1,76:$VW1,77:268,78:272,79:274,80:275,81:276,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx},o($Vd3,$VT1,{45:95,67:260,68:261,69:262,71:263,43:266,77:268,38:269,41:270,72:271,78:272,34:273,79:274,80:275,81:276,118:659,39:$V2,40:$V3,42:$VO1,44:$V4,46:$V5,47:$V6,73:$VU1,75:$VV1,76:$VW1,82:$VX1,85:$VY1,117:$Vq,139:$Vu,154:$Vx}),o($VF2,[2,158]),o($VF2,[2,65],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:660,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VF2,[2,67],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:661,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($VI2,[2,87]),o($VG2,[2,73]),{74:[1,662],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VI2,[2,88]),o($VI2,[2,85]),o($VJ2,[2,46]),{6:$VM,35:[1,663]},o($Vz2,$Vm3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vn3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vz2,$Vo3,{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{7:664,8:665,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:666,8:667,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:668,8:669,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:670,8:671,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:672,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:673,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:674,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:675,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{107:[1,676]},o($VN2,[2,236],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VN2,[2,238],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($V61,[2,62]),o($Vg1,[2,98]),o($VO,[2,100]),o($V72,[2,109]),o($VQ2,$V52,{95:677,96:$V62}),{33:$Vo1,37:586},o($V61,[2,403]),o($V43,[2,363]),o($V61,[2,271]),o($Ve3,[2,272]),o($Ve3,[2,273]),o($V61,[2,352]),{33:$Vo1,37:678},o($V61,[2,353]),{33:$Vo1,37:679},{35:[1,680]},o($VW2,[2,360],{6:[1,681]}),{7:682,8:683,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V61,[2,168]),o($V53,[2,369]),{34:684,117:$Vq},{45:685,46:$V5,47:$V6},o($VD2,$V52,{95:686,96:$VY2}),{34:687,117:$Vq},o($Vf1,[2,175],{123:[1,688]}),{36:[1,689]},{38:376,39:$V2,40:$V3,127:690,129:$Vi2},{33:$Vh2,38:376,39:$V2,40:$V3,126:691,127:374,129:$Vi2},o($VF2,[2,184]),{6:$Vg3,33:$Vh3,35:[1,692]},o($VF2,[2,189]),o($VF2,[2,191]),o($Vf1,[2,204],{123:[1,693]}),o($Vf1,[2,195],{36:[1,694]}),{38:383,39:$V2,40:$V3,129:$Vk2,134:695},{33:$Vj2,38:383,39:$V2,40:$V3,129:$Vk2,132:696,134:381},o($VF2,[2,209]),{6:$Vi3,33:$Vj3,35:[1,697]},o($VF2,[2,214]),o($VF2,[2,215]),o($VF2,[2,217]),o($V_2,[2,198],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{35:[1,698],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($Vf1,[2,201]),{34:699,117:$Vq},o($Vg1,[2,278]),o($Vg1,[2,234]),o($Vg1,[2,235]),o($VQ2,$V52,{95:399,142:700,96:$Vp2}),o($Vs2,[2,253]),o($Vs2,[2,254]),{107:[1,701]},o($Vv2,[2,225]),{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,145:702,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:333,8:334,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,33:$Vw2,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,76:$VI1,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,100:226,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,138:703,139:$Vu,145:410,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V33,[2,243]),{6:$Vk3,33:$Vl3,35:[1,704]},{33:$Vp3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,705],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,335],166:[1,706]},{33:$Vq3,157:$VP,158:[1,707],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,339],158:[1,708]},{33:$Vr3,157:$VP,159:$VQ,160:118,163:119,165:$VR,166:[1,709],167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,336],166:[1,710]},{33:$Vs3,157:$VP,158:[1,711],159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,340],158:[1,712]},{33:$Vt3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,337]},{33:$Vu3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,338]},{33:$Vv3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,350]},{33:$Vw3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,351]},o($VF2,[2,159]),o($VQ2,$V52,{95:713,96:$VE2}),{35:[1,714],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{35:[1,715],157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VV2,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},o($VG2,[2,74]),{52:[1,716]},o($Vx3,$Vp3,{160:118,163:119,167:123,166:[1,717],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,718]},o($Vc3,$Vq3,{160:118,163:119,167:123,158:[1,719],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,720]},o($Vx3,$Vr3,{160:118,163:119,167:123,166:[1,721],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{166:[1,722]},o($Vc3,$Vs3,{160:118,163:119,167:123,158:[1,723],189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),{158:[1,724]},o($Vf2,$Vt3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vu3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vv3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vw3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($VQ1,[2,151]),{6:$VS2,33:$VT2,35:[1,725]},{35:[1,726]},{35:[1,727]},o($V61,[2,357]),o($VW2,[2,361]),o($Vf3,[2,266],{160:118,163:119,167:123,157:$VP,159:$VQ,165:$VR,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf3,[2,267]),o($Vf1,[2,172]),o($Vf1,[2,179],{123:[1,728]}),{6:$Vg3,33:$Vh3,119:[1,729]},o($Vf1,[2,174]),{34:730,117:$Vq},{45:731,46:$V5,47:$V6},o($VF2,[2,185]),o($VQ2,$V52,{95:732,96:$VY2}),o($VF2,[2,186]),{34:733,117:$Vq},{45:734,46:$V5,47:$V6},o($VF2,[2,210]),o($VQ2,$V52,{95:735,96:$VZ2}),o($VF2,[2,211]),o($Vf1,[2,199]),o($Vf1,[2,203]),{33:$V03,35:[1,736]},o($Vg1,[2,140]),o($V33,[2,244]),o($VQ2,$V52,{95:737,96:$V23}),o($V33,[2,245]),{7:738,8:739,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:740,8:741,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:742,8:743,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:744,8:745,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:746,8:747,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:748,8:749,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:750,8:751,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:752,8:753,9:155,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vl,92:39,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$VD,184:60,185:$VE,186:$VF,187:$VG,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{6:$V93,33:$Va3,35:[1,754]},o($VF2,[2,66]),o($VF2,[2,68]),o($VJ2,[2,47]),{7:755,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:756,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:757,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:758,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:759,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:760,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:761,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},{7:762,9:164,13:23,14:$V0,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:$Vp1,34:66,38:85,39:$V2,40:$V3,43:67,44:$V4,45:95,46:$V5,47:$V6,53:69,54:$V7,55:$V8,56:33,58:30,59:$V9,60:$Va,61:$Vb,62:$Vc,63:$Vd,64:$Ve,65:29,72:86,73:$Vf,75:$Vg,79:31,80:36,81:35,82:$Vh,85:$Vi,87:$Vj,88:$Vq1,89:$Vr1,92:161,93:$Vm,94:$Vn,99:65,101:48,102:32,103:34,104:37,108:$Vo,109:$Vp,117:$Vq,120:$Vr,122:$Vs,131:$Vt,139:$Vu,149:$Vv,153:$Vw,154:$Vx,156:52,157:$Vy,159:$Vz,160:51,161:53,162:$VA,163:54,164:55,165:$VB,167:92,176:$VC,181:49,182:$Vs1,185:$Vt1,186:$Vu1,187:$Vv1,188:$VH,189:$VI,190:$VJ,191:$VK,192:$VL},o($V72,[2,110]),o($V61,[2,354]),o($V61,[2,355]),{34:763,117:$Vq},{36:[1,764]},o($Vf1,[2,176]),o($Vf1,[2,177],{123:[1,765]}),{6:$Vg3,33:$Vh3,35:[1,766]},o($Vf1,[2,205]),o($Vf1,[2,206],{123:[1,767]}),{6:$Vi3,33:$Vj3,35:[1,768]},o($Vs2,[2,255]),{6:$Vk3,33:$Vl3,35:[1,769]},{33:$Vy3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,341]},{33:$Vz3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,343]},{33:$VA3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,345]},{33:$VB3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,347]},{33:$VC3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,342]},{33:$VD3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,344]},{33:$VE3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,346]},{33:$VF3,157:$VP,159:$VQ,160:118,163:119,165:$VR,167:123,183:$VS,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41},{33:[2,348]},o($VF2,[2,160]),o($Vf2,$Vy3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$Vz3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VA3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VB3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VC3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VD3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VE3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf2,$VF3,{160:118,163:119,167:123,189:$VT,190:$VU,193:$VV,194:$VW,195:$VX,196:$VY,197:$VZ,198:$V_,199:$V$,200:$V01,201:$V11,202:$V21,203:$V31,204:$V41}),o($Vf1,[2,180]),{45:770,46:$V5,47:$V6},{34:771,117:$Vq},o($VF2,[2,187]),{34:772,117:$Vq},o($VF2,[2,212]),o($V33,[2,246]),o($Vf1,[2,181],{123:[1,773]}),o($Vf1,[2,178]),o($Vf1,[2,207]),{34:774,117:$Vq},o($Vf1,[2,182])],
+defaultActions: {255:[2,304],513:[2,193],541:[2,280],544:[2,282],546:[2,303],651:[2,337],653:[2,338],655:[2,350],657:[2,351],739:[2,341],741:[2,343],743:[2,345],745:[2,347],747:[2,342],749:[2,344],751:[2,346],753:[2,348]},
+parseError: function parseError (str, hash) {
+    if (hash.recoverable) {
+        this.trace(str);
+    } else {
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
+    }
+},
+parse: function parse(input) {
+    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+    var args = lstack.slice.call(arguments, 1);
+    var lexer = Object.create(this.lexer);
+    var sharedState = { yy: {} };
+    for (var k in this.yy) {
+        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+            sharedState.yy[k] = this.yy[k];
+        }
+    }
+    lexer.setInput(input, sharedState.yy);
+    sharedState.yy.lexer = lexer;
+    sharedState.yy.parser = this;
+    if (typeof lexer.yylloc == 'undefined') {
+        lexer.yylloc = {};
+    }
+    var yyloc = lexer.yylloc;
+    lstack.push(yyloc);
+    var ranges = lexer.options && lexer.options.ranges;
+    if (typeof sharedState.yy.parseError === 'function') {
+        this.parseError = sharedState.yy.parseError;
+    } else {
+        this.parseError = Object.getPrototypeOf(this).parseError;
+    }
+    function popStack(n) {
+        stack.length = stack.length - 2 * n;
+        vstack.length = vstack.length - n;
+        lstack.length = lstack.length - n;
+    }
+    _token_stack:
+        var lex = function () {
+            var token;
+            token = lexer.lex() || EOF;
+            if (typeof token !== 'number') {
+                token = self.symbols_[token] || token;
+            }
+            return token;
+        };
+    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+    while (true) {
+        state = stack[stack.length - 1];
+        if (this.defaultActions[state]) {
+            action = this.defaultActions[state];
+        } else {
+            if (symbol === null || typeof symbol == 'undefined') {
+                symbol = lex();
+            }
+            action = table[state] && table[state][symbol];
+        }
+                    if (typeof action === 'undefined' || !action.length || !action[0]) {
+                var errStr = '';
+                expected = [];
+                for (p in table[state]) {
+                    if (this.terminals_[p] && p > TERROR) {
+                        expected.push('\'' + this.terminals_[p] + '\'');
+                    }
+                }
+                if (lexer.showPosition) {
+                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+                } else {
+                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+                }
+                this.parseError(errStr, {
+                    text: lexer.match,
+                    token: this.terminals_[symbol] || symbol,
+                    line: lexer.yylineno,
+                    loc: yyloc,
+                    expected: expected
+                });
+            }
+        if (action[0] instanceof Array && action.length > 1) {
+            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+        }
+        switch (action[0]) {
+        case 1:
+            stack.push(symbol);
+            vstack.push(lexer.yytext);
+            lstack.push(lexer.yylloc);
+            stack.push(action[1]);
+            symbol = null;
+            if (!preErrorSymbol) {
+                yyleng = lexer.yyleng;
+                yytext = lexer.yytext;
+                yylineno = lexer.yylineno;
+                yyloc = lexer.yylloc;
+                if (recovering > 0) {
+                    recovering--;
+                }
+            } else {
+                symbol = preErrorSymbol;
+                preErrorSymbol = null;
+            }
+            break;
+        case 2:
+            len = this.productions_[action[1]][1];
+            yyval.$ = vstack[vstack.length - len];
+            yyval._$ = {
+                first_line: lstack[lstack.length - (len || 1)].first_line,
+                last_line: lstack[lstack.length - 1].last_line,
+                first_column: lstack[lstack.length - (len || 1)].first_column,
+                last_column: lstack[lstack.length - 1].last_column
+            };
+            if (ranges) {
+                yyval._$.range = [
+                    lstack[lstack.length - (len || 1)].range[0],
+                    lstack[lstack.length - 1].range[1]
+                ];
+            }
+            r = this.performAction.apply(yyval, [
+                yytext,
+                yyleng,
+                yylineno,
+                sharedState.yy,
+                action[1],
+                vstack,
+                lstack
+            ].concat(args));
+            if (typeof r !== 'undefined') {
+                return r;
+            }
+            if (len) {
+                stack = stack.slice(0, -1 * len * 2);
+                vstack = vstack.slice(0, -1 * len);
+                lstack = lstack.slice(0, -1 * len);
+            }
+            stack.push(this.productions_[action[1]][0]);
+            vstack.push(yyval.$);
+            lstack.push(yyval._$);
+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+            stack.push(newState);
+            break;
+        case 3:
+            return true;
+        }
+    }
+    return true;
+}};
+
+function Parser () {
+  this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
+exports.parser = parser;
+exports.Parser = parser.Parser;
+exports.parse = function () { return parser.parse.apply(parser, arguments); };
+exports.main = function() {};
+if (typeof module !== 'undefined' && require.main === module) {
+  exports.main(process.argv.slice(1));
+}
+}
\ No newline at end of file
diff --git a/lib/coffeescript/register.js b/lib/coffeescript/register.js
new file mode 100644
index 00000000..19124bb1
--- /dev/null
+++ b/lib/coffeescript/register.js
@@ -0,0 +1,100 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  var CoffeeScript, Module, binary, cacheSourceMaps, child_process, ext, findExtension, fork, getRootModule, helpers, i, len, loadFile, nodeSourceMapsSupportEnabled, patchStackTrace, path, ref, ref1;
+
+  CoffeeScript = require('./');
+
+  child_process = require('child_process');
+
+  helpers = require('./helpers');
+
+  path = require('path');
+
+  ({patchStackTrace} = CoffeeScript);
+
+  // Check if Node's built-in source map stack trace transformations are enabled.
+  nodeSourceMapsSupportEnabled = (typeof process !== "undefined" && process !== null) && (process.execArgv.includes('--enable-source-maps') || ((ref = process.env.NODE_OPTIONS) != null ? ref.includes('--enable-source-maps') : void 0));
+
+  if (!(Error.prepareStackTrace || nodeSourceMapsSupportEnabled)) {
+    cacheSourceMaps = true;
+    patchStackTrace();
+  }
+
+  // Load and run a CoffeeScript file for Node, stripping any `BOM`s.
+  loadFile = function(module, filename) {
+    var js, options;
+    options = module.options || getRootModule(module).options || {};
+    // Currently `CoffeeScript.compile` caches all source maps if present. They
+    // are available in `getSourceMap` retrieved by `filename`.
+    if (cacheSourceMaps || nodeSourceMapsSupportEnabled) {
+      options.inlineMap = true;
+    }
+    js = CoffeeScript._compileFile(filename, options);
+    return module._compile(js, filename);
+  };
+
+  // If the installed version of Node supports `require.extensions`, register
+  // CoffeeScript as an extension.
+  if (require.extensions) {
+    ref1 = CoffeeScript.FILE_EXTENSIONS;
+    for (i = 0, len = ref1.length; i < len; i++) {
+      ext = ref1[i];
+      require.extensions[ext] = loadFile;
+    }
+    // Patch Node's module loader to be able to handle multi-dot extensions.
+    // This is a horrible thing that should not be required.
+    Module = require('module');
+    findExtension = function(filename) {
+      var curExtension, extensions;
+      extensions = path.basename(filename).split('.');
+      if (extensions[0] === '') {
+        // Remove the initial dot from dotfiles.
+        extensions.shift();
+      }
+      // Start with the longest possible extension and work our way shortwards.
+      while (extensions.shift()) {
+        curExtension = '.' + extensions.join('.');
+        if (Module._extensions[curExtension]) {
+          return curExtension;
+        }
+      }
+      return '.js';
+    };
+    Module.prototype.load = function(filename) {
+      var extension;
+      this.filename = filename;
+      this.paths = Module._nodeModulePaths(path.dirname(filename));
+      extension = findExtension(filename);
+      Module._extensions[extension](this, filename);
+      return this.loaded = true;
+    };
+  }
+
+  // If we're on Node, patch `child_process.fork` so that Coffee scripts are able
+  // to fork both CoffeeScript files, and JavaScript files, directly.
+  if (child_process) {
+    ({fork} = child_process);
+    binary = require.resolve('../../bin/coffee');
+    child_process.fork = function(path, args, options) {
+      if (helpers.isCoffee(path)) {
+        if (!Array.isArray(args)) {
+          options = args || {};
+          args = [];
+        }
+        args = [path].concat(args);
+        path = binary;
+      }
+      return fork(path, args, options);
+    };
+  }
+
+  // Utility function to find the `options` object attached to the topmost module.
+  getRootModule = function(module) {
+    if (module.parent) {
+      return getRootModule(module.parent);
+    } else {
+      return module;
+    }
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/repl.js b/lib/coffeescript/repl.js
new file mode 100644
index 00000000..edb83ecd
--- /dev/null
+++ b/lib/coffeescript/repl.js
@@ -0,0 +1,305 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, replDefaults, runInContext, sawSIGINT, transpile, updateSyntaxError, vm;
+
+  fs = require('fs');
+
+  path = require('path');
+
+  vm = require('vm');
+
+  nodeREPL = require('repl');
+
+  CoffeeScript = require('./');
+
+  ({merge, updateSyntaxError} = require('./helpers'));
+
+  sawSIGINT = false;
+
+  transpile = false;
+
+  replDefaults = {
+    prompt: 'coffee> ',
+    historyFile: (function() {
+      var historyPath;
+      historyPath = process.env.XDG_CACHE_HOME || process.env.HOME;
+      if (historyPath) {
+        return path.join(historyPath, '.coffee_history');
+      }
+    })(),
+    historyMaxInputSize: 10240,
+    eval: function(input, context, filename, cb) {
+      var Assign, Block, Call, Code, Literal, Root, Value, ast, err, isAsync, js, ref, ref1, referencedVars, result, token, tokens;
+      // XXX: multiline hack.
+      input = input.replace(/\uFF00/g, '\n');
+      // Node's REPL sends the input ending with a newline and then wrapped in
+      // parens. Unwrap all that.
+      input = input.replace(/^\(([\s\S]*)\n\)$/m, '$1');
+      // Node's REPL v6.9.1+ sends the input wrapped in a try/catch statement.
+      // Unwrap that too.
+      input = input.replace(/^\s*try\s*{([\s\S]*)}\s*catch.*$/m, '$1');
+      // Require AST nodes to do some AST manipulation.
+      ({Block, Assign, Value, Literal, Call, Code, Root} = require('./nodes'));
+      try {
+        // Tokenize the clean input.
+        tokens = CoffeeScript.tokens(input);
+        // Filter out tokens generated just to hold comments.
+        if (tokens.length >= 2 && tokens[0].generated && ((ref = tokens[0].comments) != null ? ref.length : void 0) !== 0 && `${tokens[0][1]}` === '' && tokens[1][0] === 'TERMINATOR') {
+          tokens = tokens.slice(2);
+        }
+        if (tokens.length >= 1 && tokens[tokens.length - 1].generated && ((ref1 = tokens[tokens.length - 1].comments) != null ? ref1.length : void 0) !== 0 && `${tokens[tokens.length - 1][1]}` === '') {
+          tokens.pop();
+        }
+        // Collect referenced variable names just like in `CoffeeScript.compile`.
+        referencedVars = (function() {
+          var i, len, results;
+          results = [];
+          for (i = 0, len = tokens.length; i < len; i++) {
+            token = tokens[i];
+            if (token[0] === 'IDENTIFIER') {
+              results.push(token[1]);
+            }
+          }
+          return results;
+        })();
+        // Generate the AST of the tokens.
+        ast = CoffeeScript.nodes(tokens).body;
+        // Add assignment to `__` variable to force the input to be an expression.
+        ast = new Block([new Assign(new Value(new Literal('__')), ast, '=')]);
+        // Wrap the expression in a closure to support top-level `await`.
+        ast = new Code([], ast);
+        isAsync = ast.isAsync;
+        // Invoke the wrapping closure.
+        ast = new Root(new Block([new Call(ast)]));
+        js = ast.compile({
+          bare: true,
+          locals: Object.keys(context),
+          referencedVars,
+          sharedScope: true
+        });
+        if (transpile) {
+          js = transpile.transpile(js, transpile.options).code;
+          // Strip `"use strict"`, to avoid an exception on assigning to
+          // undeclared variable `__`.
+          js = js.replace(/^"use strict"|^'use strict'/, '');
+        }
+        result = runInContext(js, context, filename);
+        // Await an async result, if necessary.
+        if (isAsync) {
+          result.then(function(resolvedResult) {
+            if (!sawSIGINT) {
+              return cb(null, resolvedResult);
+            }
+          });
+          return sawSIGINT = false;
+        } else {
+          return cb(null, result);
+        }
+      } catch (error) {
+        err = error;
+        // AST's `compile` does not add source code information to syntax errors.
+        updateSyntaxError(err, input);
+        return cb(err);
+      }
+    }
+  };
+
+  runInContext = function(js, context, filename) {
+    if (context === global) {
+      return vm.runInThisContext(js, filename);
+    } else {
+      return vm.runInContext(js, context, filename);
+    }
+  };
+
+  addMultilineHandler = function(repl) {
+    var inputStream, multiline, nodeLineListener, origPrompt, outputStream, ref;
+    ({inputStream, outputStream} = repl);
+    // Node 0.11.12 changed API, prompt is now _prompt.
+    origPrompt = (ref = repl._prompt) != null ? ref : repl.prompt;
+    multiline = {
+      enabled: false,
+      initialPrompt: origPrompt.replace(/^[^> ]*/, function(x) {
+        return x.replace(/./g, '-');
+      }),
+      prompt: origPrompt.replace(/^[^> ]*>?/, function(x) {
+        return x.replace(/./g, '.');
+      }),
+      buffer: ''
+    };
+    // Proxy node's line listener
+    nodeLineListener = repl.listeners('line')[0];
+    repl.removeListener('line', nodeLineListener);
+    repl.on('line', function(cmd) {
+      if (multiline.enabled) {
+        multiline.buffer += `${cmd}\n`;
+        repl.setPrompt(multiline.prompt);
+        repl.prompt(true);
+      } else {
+        repl.setPrompt(origPrompt);
+        nodeLineListener(cmd);
+      }
+    });
+    // Handle Ctrl-v
+    return inputStream.on('keypress', function(char, key) {
+      if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) {
+        return;
+      }
+      if (multiline.enabled) {
+        // allow arbitrarily switching between modes any time before multiple lines are entered
+        if (!multiline.buffer.match(/\n/)) {
+          multiline.enabled = !multiline.enabled;
+          repl.setPrompt(origPrompt);
+          repl.prompt(true);
+          return;
+        }
+        // no-op unless the current line is empty
+        if ((repl.line != null) && !repl.line.match(/^\s*$/)) {
+          return;
+        }
+        // eval, print, loop
+        multiline.enabled = !multiline.enabled;
+        repl.line = '';
+        repl.cursor = 0;
+        repl.output.cursorTo(0);
+        repl.output.clearLine(1);
+        // XXX: multiline hack
+        multiline.buffer = multiline.buffer.replace(/\n/g, '\uFF00');
+        repl.emit('line', multiline.buffer);
+        multiline.buffer = '';
+      } else {
+        multiline.enabled = !multiline.enabled;
+        repl.setPrompt(multiline.initialPrompt);
+        repl.prompt(true);
+      }
+    });
+  };
+
+  // Store and load command history from a file
+  addHistory = function(repl, filename, maxSize) {
+    var buffer, fd, lastLine, readFd, size, stat;
+    lastLine = null;
+    try {
+      // Get file info and at most maxSize of command history
+      stat = fs.statSync(filename);
+      size = Math.min(maxSize, stat.size);
+      // Read last `size` bytes from the file
+      readFd = fs.openSync(filename, 'r');
+      buffer = Buffer.alloc(size);
+      fs.readSync(readFd, buffer, 0, size, stat.size - size);
+      fs.closeSync(readFd);
+      // Set the history on the interpreter
+      repl.history = buffer.toString().split('\n').reverse();
+      if (stat.size > maxSize) {
+        // If the history file was truncated we should pop off a potential partial line
+        repl.history.pop();
+      }
+      if (repl.history[0] === '') {
+        // Shift off the final blank newline
+        repl.history.shift();
+      }
+      repl.historyIndex = -1;
+      lastLine = repl.history[0];
+    } catch (error) {}
+    fd = fs.openSync(filename, 'a');
+    repl.addListener('line', function(code) {
+      if (code && code.length && code !== '.history' && code !== '.exit' && lastLine !== code) {
+        // Save the latest command in the file
+        fs.writeSync(fd, `${code}\n`);
+        return lastLine = code;
+      }
+    });
+    // XXX: The SIGINT event from REPLServer is undocumented, so this is a bit fragile
+    repl.on('SIGINT', function() {
+      return sawSIGINT = true;
+    });
+    repl.on('exit', function() {
+      return fs.closeSync(fd);
+    });
+    // Add a command to show the history stack
+    return repl.commands[getCommandId(repl, 'history')] = {
+      help: 'Show command history',
+      action: function() {
+        repl.outputStream.write(`${repl.history.slice(0).reverse().join('\n')}\n`);
+        return repl.displayPrompt();
+      }
+    };
+  };
+
+  getCommandId = function(repl, commandName) {
+    var commandsHaveLeadingDot;
+    // Node 0.11 changed API, a command such as '.help' is now stored as 'help'
+    commandsHaveLeadingDot = repl.commands['.help'] != null;
+    if (commandsHaveLeadingDot) {
+      return `.${commandName}`;
+    } else {
+      return commandName;
+    }
+  };
+
+  module.exports = {
+    start: function(opts = {}) {
+      var Module, build, major, minor, originalModuleLoad, repl;
+      [major, minor, build] = process.versions.node.split('.').map(function(n) {
+        return parseInt(n, 10);
+      });
+      if (major < 6) {
+        console.warn("Node 6+ required for CoffeeScript REPL");
+        process.exit(1);
+      }
+      CoffeeScript.register();
+      process.argv = ['coffee'].concat(process.argv.slice(2));
+      if (opts.transpile) {
+        transpile = {};
+        try {
+          transpile.transpile = require('@babel/core').transform;
+        } catch (error) {
+          try {
+            transpile.transpile = require('babel-core').transform;
+          } catch (error) {
+            console.error(`To use --transpile with an interactive REPL, @babel/core must be installed either in the current folder or globally:
+  npm install --save-dev @babel/core
+or
+  npm install --global @babel/core
+And you must save options to configure Babel in one of the places it looks to find its options.
+See https://coffeescript.org/#transpilation`);
+            process.exit(1);
+          }
+        }
+        transpile.options = {
+          filename: path.resolve(process.cwd(), '<repl>')
+        };
+        // Since the REPL compilation path is unique (in `eval` above), we need
+        // another way to get the `options` object attached to a module so that
+        // it knows later on whether it needs to be transpiled. In the case of
+        // the REPL, the only applicable option is `transpile`.
+        Module = require('module');
+        originalModuleLoad = Module.prototype.load;
+        Module.prototype.load = function(filename) {
+          this.options = {
+            transpile: transpile.options
+          };
+          return originalModuleLoad.call(this, filename);
+        };
+      }
+      opts = merge(replDefaults, opts);
+      repl = nodeREPL.start(opts);
+      if (opts.prelude) {
+        runInContext(opts.prelude, repl.context, 'prelude');
+      }
+      repl.on('exit', function() {
+        if (!repl.closed) {
+          return repl.outputStream.write('\n');
+        }
+      });
+      addMultilineHandler(repl);
+      if (opts.historyFile) {
+        addHistory(repl, opts.historyFile, opts.historyMaxInputSize);
+      }
+      // Adapt help inherited from the node REPL
+      repl.commands[getCommandId(repl, 'load')].help = 'Load code from a file into this REPL session';
+      return repl;
+    }
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js
new file mode 100644
index 00000000..c38cfd08
--- /dev/null
+++ b/lib/coffeescript/rewriter.js
@@ -0,0 +1,1138 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // 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.
+  var BALANCED_PAIRS, CALL_CLOSERS, CONTROL_IN_IMPLICIT, DISCARDED, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, UNFINISHED, extractAllCommentTokens, generate, k, left, len, moveComments, right, throwSyntaxError,
+    indexOf = [].indexOf,
+    hasProp = {}.hasOwnProperty;
+
+  ({throwSyntaxError, extractAllCommentTokens} = require('./helpers'));
+
+  // Move attached comments from one token to another.
+  moveComments = function(fromToken, toToken) {
+    var comment, k, len, ref, unshiftedComments;
+    if (!fromToken.comments) {
+      return;
+    }
+    if (toToken.comments && toToken.comments.length !== 0) {
+      unshiftedComments = [];
+      ref = fromToken.comments;
+      for (k = 0, len = ref.length; k < len; k++) {
+        comment = ref[k];
+        if (comment.unshift) {
+          unshiftedComments.push(comment);
+        } else {
+          toToken.comments.push(comment);
+        }
+      }
+      toToken.comments = unshiftedComments.concat(toToken.comments);
+    } else {
+      toToken.comments = fromToken.comments;
+    }
+    return delete fromToken.comments;
+  };
+
+  // Create a generated token: one that exists due to a use of implicit syntax.
+  // Optionally have this new token take the attached comments from another token.
+  generate = function(tag, value, origin, commentsToken) {
+    var token;
+    token = [tag, value];
+    token.generated = true;
+    if (origin) {
+      token.origin = origin;
+    }
+    if (commentsToken) {
+      moveComments(commentsToken, token);
+    }
+    return token;
+  };
+
+  // The **Rewriter** class is used by the [Lexer](lexer.html), directly against
+  // its internal array of tokens.
+  exports.Rewriter = Rewriter = (function() {
+    class Rewriter {
+      // 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
+      // corrected before implicit parentheses can be wrapped around blocks of code.
+      rewrite(tokens1) {
+        var ref, ref1, t;
+        this.tokens = tokens1;
+        // Set environment variable `DEBUG_TOKEN_STREAM` to `true` to output token
+        // debugging info. Also set `DEBUG_REWRITTEN_TOKEN_STREAM` to `true` to
+        // output the token stream after it has been rewritten by this file.
+        if (typeof process !== "undefined" && process !== null ? (ref = process.env) != null ? ref.DEBUG_TOKEN_STREAM : void 0 : void 0) {
+          if (process.env.DEBUG_REWRITTEN_TOKEN_STREAM) {
+            console.log('Initial token stream:');
+          }
+          console.log(((function() {
+            var k, len, ref1, results;
+            ref1 = this.tokens;
+            results = [];
+            for (k = 0, len = ref1.length; k < len; k++) {
+              t = ref1[k];
+              results.push(t[0] + '/' + t[1] + (t.comments ? '*' : ''));
+            }
+            return results;
+          }).call(this)).join(' '));
+        }
+        this.removeLeadingNewlines();
+        this.closeOpenCalls();
+        this.closeOpenIndexes();
+        this.normalizeLines();
+        this.tagPostfixConditionals();
+        this.addImplicitBracesAndParens();
+        this.rescueStowawayComments();
+        this.addLocationDataToGeneratedTokens();
+        this.enforceValidJSXAttributes();
+        this.fixIndentationLocationData();
+        this.exposeTokenDataToGrammar();
+        if (typeof process !== "undefined" && process !== null ? (ref1 = process.env) != null ? ref1.DEBUG_REWRITTEN_TOKEN_STREAM : void 0 : void 0) {
+          if (process.env.DEBUG_TOKEN_STREAM) {
+            console.log('Rewritten token stream:');
+          }
+          console.log(((function() {
+            var k, len, ref2, results;
+            ref2 = this.tokens;
+            results = [];
+            for (k = 0, len = ref2.length; k < len; k++) {
+              t = ref2[k];
+              results.push(t[0] + '/' + t[1] + (t.comments ? '*' : ''));
+            }
+            return results;
+          }).call(this)).join(' '));
+        }
+        return this.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
+      // our feet.
+      scanTokens(block) {
+        var i, token, tokens;
+        ({tokens} = this);
+        i = 0;
+        while (token = tokens[i]) {
+          i += block.call(this, token, i, tokens);
+        }
+        return true;
+      }
+
+      detectEnd(i, condition, action, opts = {}) {
+        var levels, ref, ref1, token, tokens;
+        ({tokens} = this);
+        levels = 0;
+        while (token = tokens[i]) {
+          if (levels === 0 && condition.call(this, token, i)) {
+            return action.call(this, token, i);
+          }
+          if (ref = token[0], indexOf.call(EXPRESSION_START, ref) >= 0) {
+            levels += 1;
+          } else if (ref1 = token[0], indexOf.call(EXPRESSION_END, ref1) >= 0) {
+            levels -= 1;
+          }
+          if (levels < 0) {
+            if (opts.returnOnNegativeLevel) {
+              return;
+            }
+            return action.call(this, token, i);
+          }
+          i += 1;
+        }
+        return i - 1;
+      }
+
+      // Leading newlines would introduce an ambiguity in the grammar, so we
+      // dispatch them here.
+      removeLeadingNewlines() {
+        var i, k, l, leadingNewlineToken, len, len1, ref, ref1, tag;
+        ref = this.tokens;
+        for (i = k = 0, len = ref.length; k < len; i = ++k) {
+          [tag] = ref[i];
+          if (tag !== 'TERMINATOR') {
+            // Find the index of the first non-`TERMINATOR` token.
+            break;
+          }
+        }
+        if (i === 0) {
+          return;
+        }
+        ref1 = this.tokens.slice(0, i);
+        // If there are any comments attached to the tokens we’re about to discard,
+        // shift them forward to what will become the new first token.
+        for (l = 0, len1 = ref1.length; l < len1; l++) {
+          leadingNewlineToken = ref1[l];
+          moveComments(leadingNewlineToken, this.tokens[i]);
+        }
+        // Discard all the leading newline tokens.
+        return this.tokens.splice(0, i);
+      }
+
+      // The lexer has tagged the opening parenthesis of a method call. Match it with
+      // its paired close.
+      closeOpenCalls() {
+        var action, condition;
+        condition = function(token, i) {
+          var ref;
+          return (ref = token[0]) === ')' || ref === 'CALL_END';
+        };
+        action = function(token, i) {
+          return token[0] = 'CALL_END';
+        };
+        return this.scanTokens(function(token, i) {
+          if (token[0] === 'CALL_START') {
+            this.detectEnd(i + 1, condition, action);
+          }
+          return 1;
+        });
+      }
+
+      // The lexer has tagged the opening bracket of an indexing operation call.
+      // Match it with its paired close.
+      closeOpenIndexes() {
+        var action, condition, startToken;
+        startToken = null;
+        condition = function(token, i) {
+          var ref;
+          return (ref = token[0]) === ']' || ref === 'INDEX_END';
+        };
+        action = function(token, i) {
+          if (this.tokens.length >= i && this.tokens[i + 1][0] === ':') {
+            startToken[0] = '[';
+            return token[0] = ']';
+          } else {
+            return token[0] = 'INDEX_END';
+          }
+        };
+        return this.scanTokens(function(token, i) {
+          if (token[0] === 'INDEX_START') {
+            startToken = token;
+            this.detectEnd(i + 1, condition, action);
+          }
+          return 1;
+        });
+      }
+
+      // Match tags in token stream starting at `i` with `pattern`.
+      // `pattern` may consist of strings (equality), an array of strings (one of)
+      // or null (wildcard). Returns the index of the match or -1 if no match.
+      indexOfTag(i, ...pattern) {
+        var fuzz, j, k, ref, ref1;
+        fuzz = 0;
+        for (j = k = 0, ref = pattern.length; (0 <= ref ? k < ref : k > ref); j = 0 <= ref ? ++k : --k) {
+          if (pattern[j] == null) {
+            continue;
+          }
+          if (typeof pattern[j] === 'string') {
+            pattern[j] = [pattern[j]];
+          }
+          if (ref1 = this.tag(i + j + fuzz), indexOf.call(pattern[j], ref1) < 0) {
+            return -1;
+          }
+        }
+        return i + j + fuzz - 1;
+      }
+
+      // Returns `yes` if standing in front of something looking like
+      // `@<x>:`, `<x>:` or `<EXPRESSION_START><x>...<EXPRESSION_END>:`.
+      looksObjectish(j) {
+        var end, index;
+        if (this.indexOfTag(j, '@', null, ':') !== -1 || this.indexOfTag(j, null, ':') !== -1) {
+          return true;
+        }
+        index = this.indexOfTag(j, EXPRESSION_START);
+        if (index !== -1) {
+          end = null;
+          this.detectEnd(index + 1, (function(token) {
+            var ref;
+            return ref = token[0], indexOf.call(EXPRESSION_END, ref) >= 0;
+          }), (function(token, i) {
+            return end = i;
+          }));
+          if (this.tag(end + 1) === ':') {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      // Returns `yes` if 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) {
+        var backStack, ref, ref1, ref2, ref3, ref4, ref5;
+        backStack = [];
+        while (i >= 0 && (backStack.length || (ref2 = this.tag(i), indexOf.call(tags, ref2) < 0) && ((ref3 = this.tag(i), indexOf.call(EXPRESSION_START, ref3) < 0) || this.tokens[i].generated) && (ref4 = this.tag(i), indexOf.call(LINEBREAKS, ref4) < 0))) {
+          if (ref = this.tag(i), indexOf.call(EXPRESSION_END, ref) >= 0) {
+            backStack.push(this.tag(i));
+          }
+          if ((ref1 = this.tag(i), indexOf.call(EXPRESSION_START, ref1) >= 0) && backStack.length) {
+            backStack.pop();
+          }
+          i -= 1;
+        }
+        return ref5 = this.tag(i), indexOf.call(tags, ref5) >= 0;
+      }
+
+      // Look for signs of implicit calls and objects in the token stream and
+      // add them.
+      addImplicitBracesAndParens() {
+        var stack, start;
+        // Track current balancing depth (both implicit and explicit) on stack.
+        stack = [];
+        start = null;
+        return this.scanTokens(function(token, i, tokens) {
+          var endImplicitCall, endImplicitObject, forward, implicitObjectContinues, implicitObjectIndent, inControlFlow, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, isImplicit, isImplicitCall, isImplicitObject, k, newLine, nextTag, nextToken, offset, preContinuationLineIndent, preObjectToken, prevTag, prevToken, ref, ref1, ref2, ref3, ref4, ref5, s, sameLine, stackIdx, stackItem, stackNext, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startIndex, startTag, startsLine, tag;
+          [tag] = token;
+          [prevTag] = prevToken = i > 0 ? tokens[i - 1] : [];
+          [nextTag] = nextToken = i < tokens.length - 1 ? tokens[i + 1] : [];
+          stackTop = function() {
+            return 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 = function(n) {
+            return i - startIdx + n;
+          };
+          // Helper functions
+          isImplicit = function(stackItem) {
+            var ref;
+            return stackItem != null ? (ref = stackItem[2]) != null ? ref.ours : void 0 : void 0;
+          };
+          isImplicitObject = function(stackItem) {
+            return isImplicit(stackItem) && (stackItem != null ? stackItem[0] : void 0) === '{';
+          };
+          isImplicitCall = function(stackItem) {
+            return isImplicit(stackItem) && (stackItem != null ? stackItem[0] : void 0) === '(';
+          };
+          inImplicit = function() {
+            return isImplicit(stackTop());
+          };
+          inImplicitCall = function() {
+            return isImplicitCall(stackTop());
+          };
+          inImplicitObject = function() {
+            return isImplicitObject(stackTop());
+          };
+          // Unclosed control statement inside implicit parens (like
+          // class declaration or if-conditionals).
+          inImplicitControl = function() {
+            var ref;
+            return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === 'CONTROL';
+          };
+          startImplicitCall = function(idx) {
+            stack.push([
+              '(',
+              idx,
+              {
+                ours: true
+              }
+            ]);
+            return tokens.splice(idx, 0, generate('CALL_START', '(', ['', 'implicit function call', token[2]], prevToken));
+          };
+          endImplicitCall = function() {
+            stack.pop();
+            tokens.splice(i, 0, generate('CALL_END', ')', ['', 'end of input', token[2]], prevToken));
+            return i += 1;
+          };
+          startImplicitObject = function(idx, {startsLine = true, continuationLineIndent} = {}) {
+            var val;
+            stack.push([
+              '{',
+              idx,
+              {
+                sameLine: true,
+                startsLine: startsLine,
+                ours: true,
+                continuationLineIndent: continuationLineIndent
+              }
+            ]);
+            val = new String('{');
+            val.generated = true;
+            return tokens.splice(idx, 0, generate('{', val, token, prevToken));
+          };
+          endImplicitObject = function(j) {
+            j = j != null ? j : i;
+            stack.pop();
+            tokens.splice(j, 0, generate('}', '}', token, prevToken));
+            return i += 1;
+          };
+          implicitObjectContinues = (j) => {
+            var nextTerminatorIdx;
+            nextTerminatorIdx = null;
+            this.detectEnd(j, function(token) {
+              return token[0] === 'TERMINATOR';
+            }, function(token, i) {
+              return nextTerminatorIdx = i;
+            }, {
+              returnOnNegativeLevel: true
+            });
+            if (nextTerminatorIdx == null) {
+              return false;
+            }
+            return this.looksObjectish(nextTerminatorIdx + 1);
+          };
+          // Don’t end an implicit call/object on next indent if any of these are in an argument/value.
+          if ((inImplicitCall() || inImplicitObject()) && indexOf.call(CONTROL_IN_IMPLICIT, tag) >= 0 || inImplicitObject() && prevTag === ':' && tag === 'FOR') {
+            stack.push([
+              'CONTROL',
+              i,
+              {
+                ours: true
+              }
+            ]);
+            return forward(1);
+          }
+          if (tag === 'INDENT' && 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 !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'ELSE' && prevTag !== '=') {
+              while (inImplicitCall() || inImplicitObject() && prevTag !== ':') {
+                if (inImplicitCall()) {
+                  endImplicitCall();
+                } else {
+                  endImplicitObject();
+                }
+              }
+            }
+            if (inImplicitControl()) {
+              stack.pop();
+            }
+            stack.push([tag, i]);
+            return forward(1);
+          }
+          // Straightforward start of explicit expression.
+          if (indexOf.call(EXPRESSION_START, tag) >= 0) {
+            stack.push([tag, i]);
+            return forward(1);
+          }
+          // Close all implicit expressions inside of explicitly closed expressions.
+          if (indexOf.call(EXPRESSION_END, tag) >= 0) {
+            while (inImplicit()) {
+              if (inImplicitCall()) {
+                endImplicitCall();
+              } else if (inImplicitObject()) {
+                endImplicitObject();
+              } else {
+                stack.pop();
+              }
+            }
+            start = stack.pop();
+          }
+          inControlFlow = () => {
+            var controlFlow, isFunc, seenFor, tagCurrentLine;
+            seenFor = this.findTagsBackwards(i, ['FOR']) && this.findTagsBackwards(i, ['FORIN', 'FOROF', 'FORFROM']);
+            controlFlow = seenFor || this.findTagsBackwards(i, ['WHILE', 'UNTIL', 'LOOP', 'LEADING_WHEN']);
+            if (!controlFlow) {
+              return false;
+            }
+            isFunc = false;
+            tagCurrentLine = token[2].first_line;
+            this.detectEnd(i, function(token, i) {
+              var ref;
+              return ref = token[0], indexOf.call(LINEBREAKS, ref) >= 0;
+            }, function(token, i) {
+              var first_line;
+              [prevTag, , {first_line}] = tokens[i - 1] || [];
+              return isFunc = tagCurrentLine === first_line && (prevTag === '->' || prevTag === '=>');
+            }, {
+              returnOnNegativeLevel: true
+            });
+            return isFunc;
+          };
+          // Recognize standard implicit calls like
+          // f a, f() b, f? c, h[0] d etc.
+          // Added support for spread dots on the left side: f ...a
+          if ((indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || (nextTag === '...' && (ref = this.tag(i + 2), indexOf.call(IMPLICIT_CALL, ref) >= 0) && !this.findTagsBackwards(i, ['INDEX_START', '['])) || indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !nextToken.spaced && !nextToken.newLine) && !inControlFlow()) {
+            if (tag === '?') {
+              tag = token[0] = 'FUNC_EXIST';
+            }
+            startImplicitCall(i + 1);
+            return forward(2);
+          }
+          // Implicit call taking an implicit indented object as first argument.
+
+          //     f
+          //       a: b
+          //       c: d
+
+          // Don’t accept implicit calls of this type, when on the same line
+          // as the control structures 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 the first line of a literal array
+          // or explicit object, as that creates grammatical ambiguities (#5368).
+          if (indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.indexOfTag(i + 1, 'INDENT') > -1 && this.looksObjectish(i + 2) && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL']) && !(((ref1 = (s = (ref2 = stackTop()) != null ? ref2[0] : void 0)) === '{' || ref1 === '[') && !isImplicit(stackTop()) && this.findTagsBackwards(i, s))) {
+            startImplicitCall(i + 1);
+            stack.push(['INDENT', i + 2]);
+            return forward(3);
+          }
+          // Implicit objects start here.
+          if (tag === ':') {
+            // Go back to the (implicit) start of the object.
+            s = (function() {
+              var ref3;
+              switch (false) {
+                case ref3 = this.tag(i - 1), indexOf.call(EXPRESSION_END, ref3) < 0:
+                  [startTag, startIndex] = start;
+                  if (startTag === '[' && startIndex > 0 && this.tag(startIndex - 1) === '@' && !tokens[startIndex - 1].spaced) {
+                    return startIndex - 1;
+                  } else {
+                    return startIndex;
+                  }
+                  break;
+                case this.tag(i - 2) !== '@':
+                  return i - 2;
+                default:
+                  return i - 1;
+              }
+            }).call(this);
+            startsLine = s <= 0 || (ref3 = this.tag(s - 1), indexOf.call(LINEBREAKS, ref3) >= 0) || tokens[s - 1].newLine;
+            // Are we just continuing an already declared object?
+            // Including the case where we indent on the line after an explicit '{'.
+            if (stackTop()) {
+              [stackTag, stackIdx] = stackTop();
+              stackNext = stack[stack.length - 2];
+              if ((stackTag === '{' || stackTag === 'INDENT' && (stackNext != null ? stackNext[0] : void 0) === '{' && !isImplicit(stackNext) && this.findTagsBackwards(stackIdx - 1, ['{'])) && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{') && (ref4 = this.tag(s - 1), indexOf.call(UNFINISHED, ref4) < 0)) {
+                return forward(1);
+              }
+            }
+            preObjectToken = i > 1 ? tokens[i - 2] : [];
+            startImplicitObject(s, {
+              startsLine: !!startsLine,
+              continuationLineIndent: preObjectToken.continuationLineIndent
+            });
+            return forward(2);
+          }
+          // End implicit calls when chaining method calls
+          // like e.g.:
+
+          //     f ->
+          //       a
+          //     .g b, ->
+          //       c
+          //     .h a
+
+          // and also
+
+          //     f a
+          //     .g b
+          //     .h a
+
+          // Mark all enclosing objects as not sameLine
+          if (indexOf.call(LINEBREAKS, tag) >= 0) {
+            for (k = stack.length - 1; k >= 0; k += -1) {
+              stackItem = stack[k];
+              if (!isImplicit(stackItem)) {
+                break;
+              }
+              if (isImplicitObject(stackItem)) {
+                stackItem[2].sameLine = false;
+              }
+            }
+          }
+          // End indented-continuation-line implicit objects once that indentation is over.
+          if (tag === 'TERMINATOR' && token.endsContinuationLineIndentation) {
+            ({preContinuationLineIndent} = token.endsContinuationLineIndentation);
+            while (inImplicitObject() && ((implicitObjectIndent = stackTop()[2].continuationLineIndent) != null) && implicitObjectIndent > preContinuationLineIndent) {
+              endImplicitObject();
+            }
+          }
+          newLine = prevTag === 'OUTDENT' || prevToken.newLine;
+          if (indexOf.call(IMPLICIT_END, tag) >= 0 || (indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) || ((tag === '..' || tag === '...') && this.findTagsBackwards(i, ["INDEX_START"]))) {
+            while (inImplicit()) {
+              [stackTag, stackIdx, {sameLine, startsLine}] = stackTop();
+              // Close implicit calls when reached end of argument list
+              if (inImplicitCall() && prevTag !== ',' || (prevTag === ',' && tag === 'TERMINATOR' && (nextTag == null))) {
+                endImplicitCall();
+              // Close implicit objects such as:
+              // return a: 1, b: 2 unless true
+              } else if (inImplicitObject() && sameLine && tag !== 'TERMINATOR' && prevTag !== ':' && !((tag === 'POST_IF' || tag === 'FOR' || tag === 'WHILE' || tag === 'UNTIL') && startsLine && implicitObjectContinues(i + 1))) {
+                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() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) {
+                endImplicitObject();
+              } else if (inImplicitControl() && tokens[stackTop()[1]][0] === 'CLASS' && tag === 'TERMINATOR') {
+                stack.pop();
+              } 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 === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && !((ref5 = this.tag(i + 2)) === 'FOROF' || ref5 === 'FORIN') && (nextTag !== 'TERMINATOR' || !this.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 = nextTag === 'OUTDENT' ? 1 : 0;
+            while (inImplicitObject()) {
+              endImplicitObject(i + offset);
+            }
+          }
+          return forward(1);
+        });
+      }
+
+      // Make sure only strings and wrapped expressions are used in JSX attributes.
+      enforceValidJSXAttributes() {
+        return this.scanTokens(function(token, i, tokens) {
+          var next, ref;
+          if (token.jsxColon) {
+            next = tokens[i + 1];
+            if ((ref = next[0]) !== 'STRING_START' && ref !== 'STRING' && ref !== '(') {
+              throwSyntaxError('expected wrapped or quoted JSX attribute', next[2]);
+            }
+          }
+          return 1;
+        });
+      }
+
+      // Not all tokens survive processing by the parser. To avoid comments getting
+      // lost into the ether, find comments attached to doomed tokens and move them
+      // to a token that will make it to the other side.
+      rescueStowawayComments() {
+        var dontShiftForward, insertPlaceholder, shiftCommentsBackward, shiftCommentsForward;
+        insertPlaceholder = function(token, j, tokens, method) {
+          if (tokens[j][0] !== 'TERMINATOR') {
+            tokens[method](generate('TERMINATOR', '\n', tokens[j]));
+          }
+          return tokens[method](generate('JS', '', tokens[j], token));
+        };
+        dontShiftForward = function(i, tokens) {
+          var j, ref;
+          j = i + 1;
+          while (j !== tokens.length && (ref = tokens[j][0], indexOf.call(DISCARDED, ref) >= 0)) {
+            if (tokens[j][0] === 'INTERPOLATION_END') {
+              return true;
+            }
+            j++;
+          }
+          return false;
+        };
+        shiftCommentsForward = function(token, i, tokens) {
+          var comment, j, k, len, ref, ref1, ref2;
+          // Find the next surviving token and attach this token’s comments to it,
+          // with a flag that we know to output such comments *before* that
+          // token’s own compilation. (Otherwise comments are output following
+          // the token they’re attached to.)
+          j = i;
+          while (j !== tokens.length && (ref = tokens[j][0], indexOf.call(DISCARDED, ref) >= 0)) {
+            j++;
+          }
+          if (!(j === tokens.length || (ref1 = tokens[j][0], indexOf.call(DISCARDED, ref1) >= 0))) {
+            ref2 = token.comments;
+            for (k = 0, len = ref2.length; k < len; k++) {
+              comment = ref2[k];
+              comment.unshift = true;
+            }
+            moveComments(token, tokens[j]);
+            return 1; // All following tokens are doomed!
+          } else {
+            j = tokens.length - 1;
+            insertPlaceholder(token, j, tokens, 'push');
+            // The generated tokens were added to the end, not inline, so we don’t skip.
+            return 1;
+          }
+        };
+        shiftCommentsBackward = function(token, i, tokens) {
+          var j, ref, ref1;
+          // Find the last surviving token and attach this token’s comments to it.
+          j = i;
+          while (j !== -1 && (ref = tokens[j][0], indexOf.call(DISCARDED, ref) >= 0)) {
+            j--;
+          }
+          if (!(j === -1 || (ref1 = tokens[j][0], indexOf.call(DISCARDED, ref1) >= 0))) {
+            moveComments(token, tokens[j]);
+            return 1; // All previous tokens are doomed!
+          } else {
+            insertPlaceholder(token, 0, tokens, 'unshift');
+            // We added two tokens, so shift forward to account for the insertion.
+            return 3;
+          }
+        };
+        return this.scanTokens(function(token, i, tokens) {
+          var dummyToken, j, ref, ref1, ret;
+          if (!token.comments) {
+            return 1;
+          }
+          ret = 1;
+          if (ref = token[0], indexOf.call(DISCARDED, ref) >= 0) {
+            // This token won’t survive passage through the parser, so we need to
+            // rescue its attached tokens and redistribute them to nearby tokens.
+            // Comments that don’t start a new line can shift backwards to the last
+            // safe token, while other tokens should shift forward.
+            dummyToken = {
+              comments: []
+            };
+            j = token.comments.length - 1;
+            while (j !== -1) {
+              if (token.comments[j].newLine === false && token.comments[j].here === false) {
+                dummyToken.comments.unshift(token.comments[j]);
+                token.comments.splice(j, 1);
+              }
+              j--;
+            }
+            if (dummyToken.comments.length !== 0) {
+              ret = shiftCommentsBackward(dummyToken, i - 1, tokens);
+            }
+            if (token.comments.length !== 0) {
+              shiftCommentsForward(token, i, tokens);
+            }
+          } else if (!dontShiftForward(i, tokens)) {
+            // If any of this token’s comments start a line—there’s only
+            // whitespace between the preceding newline and the start of the
+            // comment—and this isn’t one of the special `JS` tokens, then
+            // shift this comment forward to precede the next valid token.
+            // `Block.compileComments` also has logic to make sure that
+            // “starting new line” comments follow or precede the nearest
+            // newline relative to the token that the comment is attached to,
+            // but that newline might be inside a `}` or `)` or other generated
+            // token that we really want this comment to output after. Therefore
+            // we need to shift the comments here, avoiding such generated and
+            // discarded tokens.
+            dummyToken = {
+              comments: []
+            };
+            j = token.comments.length - 1;
+            while (j !== -1) {
+              if (token.comments[j].newLine && !token.comments[j].unshift && !(token[0] === 'JS' && token.generated)) {
+                dummyToken.comments.unshift(token.comments[j]);
+                token.comments.splice(j, 1);
+              }
+              j--;
+            }
+            if (dummyToken.comments.length !== 0) {
+              ret = shiftCommentsForward(dummyToken, i + 1, tokens);
+            }
+          }
+          if (((ref1 = token.comments) != null ? ref1.length : void 0) === 0) {
+            delete token.comments;
+          }
+          return ret;
+        });
+      }
+
+      // Add location data to all tokens generated by the rewriter.
+      addLocationDataToGeneratedTokens() {
+        return this.scanTokens(function(token, i, tokens) {
+          var column, line, nextLocation, prevLocation, rangeIndex, ref, ref1;
+          if (token[2]) {
+            return 1;
+          }
+          if (!(token.generated || token.explicit)) {
+            return 1;
+          }
+          if (token.fromThen && token[0] === 'INDENT') {
+            token[2] = token.origin[2];
+            return 1;
+          }
+          if (token[0] === '{' && (nextLocation = (ref = tokens[i + 1]) != null ? ref[2] : void 0)) {
+            ({
+              first_line: line,
+              first_column: column,
+              range: [rangeIndex]
+            } = nextLocation);
+          } else if (prevLocation = (ref1 = tokens[i - 1]) != null ? ref1[2] : void 0) {
+            ({
+              last_line: line,
+              last_column: column,
+              range: [, rangeIndex]
+            } = prevLocation);
+            column += 1;
+          } else {
+            line = column = 0;
+            rangeIndex = 0;
+          }
+          token[2] = {
+            first_line: line,
+            first_column: column,
+            last_line: line,
+            last_column: column,
+            last_line_exclusive: line,
+            last_column_exclusive: column,
+            range: [rangeIndex, rangeIndex]
+          };
+          return 1;
+        });
+      }
+
+      // `OUTDENT` tokens should always be positioned at the last character of the
+      // previous token, so that AST nodes ending in an `OUTDENT` token end up with a
+      // location corresponding to the last “real” token under the node.
+      fixIndentationLocationData() {
+        var findPrecedingComment;
+        if (this.allComments == null) {
+          this.allComments = extractAllCommentTokens(this.tokens);
+        }
+        findPrecedingComment = (token, {afterPosition, indentSize, first, indented}) => {
+          var comment, k, l, lastMatching, matches, ref, ref1, tokenStart;
+          tokenStart = token[2].range[0];
+          matches = function(comment) {
+            if (comment.outdented) {
+              if (!((indentSize != null) && comment.indentSize > indentSize)) {
+                return false;
+              }
+            }
+            if (indented && !comment.indented) {
+              return false;
+            }
+            if (!(comment.locationData.range[0] < tokenStart)) {
+              return false;
+            }
+            if (!(comment.locationData.range[0] > afterPosition)) {
+              return false;
+            }
+            return true;
+          };
+          if (first) {
+            lastMatching = null;
+            ref = this.allComments;
+            for (k = ref.length - 1; k >= 0; k += -1) {
+              comment = ref[k];
+              if (matches(comment)) {
+                lastMatching = comment;
+              } else if (lastMatching) {
+                return lastMatching;
+              }
+            }
+            return lastMatching;
+          }
+          ref1 = this.allComments;
+          for (l = ref1.length - 1; l >= 0; l += -1) {
+            comment = ref1[l];
+            if (matches(comment)) {
+              return comment;
+            }
+          }
+          return null;
+        };
+        return this.scanTokens(function(token, i, tokens) {
+          var isIndent, nextToken, nextTokenIndex, precedingComment, prevLocationData, prevToken, ref, ref1, ref2, useNextToken;
+          if (!(((ref = token[0]) === 'INDENT' || ref === 'OUTDENT') || (token.generated && token[0] === 'CALL_END' && !((ref1 = token.data) != null ? ref1.closingTagNameToken : void 0)) || (token.generated && token[0] === '}'))) {
+            return 1;
+          }
+          isIndent = token[0] === 'INDENT';
+          prevToken = (ref2 = token.prevToken) != null ? ref2 : tokens[i - 1];
+          prevLocationData = prevToken[2];
+          // addLocationDataToGeneratedTokens() set the outdent’s location data
+          // to the preceding token’s, but in order to detect comments inside an
+          // empty "block" we want to look for comments preceding the next token.
+          useNextToken = token.explicit || token.generated;
+          if (useNextToken) {
+            nextToken = token;
+            nextTokenIndex = i;
+            while ((nextToken.explicit || nextToken.generated) && nextTokenIndex !== tokens.length - 1) {
+              nextToken = tokens[nextTokenIndex++];
+            }
+          }
+          precedingComment = findPrecedingComment(useNextToken ? nextToken : token, {
+            afterPosition: prevLocationData.range[0],
+            indentSize: token.indentSize,
+            first: isIndent,
+            indented: useNextToken
+          });
+          if (isIndent) {
+            if (!(precedingComment != null ? precedingComment.newLine : void 0)) {
+              return 1;
+            }
+          }
+          if (token.generated && token[0] === 'CALL_END' && (precedingComment != null ? precedingComment.indented : void 0)) {
+            // We don’t want e.g. an implicit call at the end of an `if` condition to
+            // include a following indented comment.
+            return 1;
+          }
+          if (precedingComment != null) {
+            prevLocationData = precedingComment.locationData;
+          }
+          token[2] = {
+            first_line: precedingComment != null ? prevLocationData.first_line : prevLocationData.last_line,
+            first_column: precedingComment != null ? isIndent ? 0 : prevLocationData.first_column : prevLocationData.last_column,
+            last_line: prevLocationData.last_line,
+            last_column: prevLocationData.last_column,
+            last_line_exclusive: prevLocationData.last_line_exclusive,
+            last_column_exclusive: prevLocationData.last_column_exclusive,
+            range: isIndent && (precedingComment != null) ? [prevLocationData.range[0] - precedingComment.indentSize, prevLocationData.range[1]] : prevLocationData.range
+          };
+          return 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. To keep the grammar clean and tidy, trailing
+      // newlines within expressions are removed and the indentation tokens of empty
+      // blocks are added.
+      normalizeLines() {
+        var action, closeElseTag, condition, ifThens, indent, leading_if_then, leading_switch_when, outdent, starter;
+        starter = indent = outdent = null;
+        leading_switch_when = null;
+        leading_if_then = null;
+        // Count `THEN` tags
+        ifThens = [];
+        condition = function(token, i) {
+          var ref, ref1, ref2, ref3;
+          return token[1] !== ';' && (ref = token[0], indexOf.call(SINGLE_CLOSERS, ref) >= 0) && !(token[0] === 'TERMINATOR' && (ref1 = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref1) >= 0)) && !(token[0] === 'ELSE' && (starter !== 'THEN' || (leading_if_then || leading_switch_when))) && !(((ref2 = token[0]) === 'CATCH' || ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (ref3 = token[0], indexOf.call(CALL_CLOSERS, ref3) >= 0) && (this.tokens[i - 1].newLine || this.tokens[i - 1][0] === 'OUTDENT');
+        };
+        action = function(token, i) {
+          if (token[0] === 'ELSE' && starter === 'THEN') {
+            ifThens.pop();
+          }
+          return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);
+        };
+        closeElseTag = (tokens, i) => {
+          var lastThen, outdentElse, tlen;
+          tlen = ifThens.length;
+          if (!(tlen > 0)) {
+            return i;
+          }
+          lastThen = ifThens.pop();
+          [, outdentElse] = this.indentation(tokens[lastThen]);
+          // Insert `OUTDENT` to close inner `IF`.
+          outdentElse[1] = tlen * 2;
+          tokens.splice(i, 0, outdentElse);
+          // Insert `OUTDENT` to close outer `IF`.
+          outdentElse[1] = 2;
+          tokens.splice(i + 1, 0, outdentElse);
+          // Remove outdents from the end.
+          this.detectEnd(i + 2, function(token, i) {
+            var ref;
+            return (ref = token[0]) === 'OUTDENT' || ref === 'TERMINATOR';
+          }, function(token, i) {
+            if (this.tag(i) === 'OUTDENT' && this.tag(i + 1) === 'OUTDENT') {
+              return tokens.splice(i, 2);
+            }
+          });
+          return i + 2;
+        };
+        return this.scanTokens(function(token, i, tokens) {
+          var conditionTag, j, k, ref, ref1, ref2, tag;
+          [tag] = token;
+          conditionTag = (tag === '->' || tag === '=>') && this.findTagsBackwards(i, ['IF', 'WHILE', 'FOR', 'UNTIL', 'SWITCH', 'WHEN', 'LEADING_WHEN', '[', 'INDEX_START']) && !(this.findTagsBackwards(i, ['THEN', '..', '...']));
+          if (tag === 'TERMINATOR') {
+            if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
+              tokens.splice(i, 1, ...this.indentation());
+              return 1;
+            }
+            if (ref = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref) >= 0) {
+              if (token[1] === ';' && this.tag(i + 1) === 'OUTDENT') {
+                tokens[i + 1].prevToken = token;
+                moveComments(token, tokens[i + 1]);
+              }
+              tokens.splice(i, 1);
+              return 0;
+            }
+          }
+          if (tag === 'CATCH') {
+            for (j = k = 1; k <= 2; j = ++k) {
+              if (!((ref1 = this.tag(i + j)) === 'OUTDENT' || ref1 === 'TERMINATOR' || ref1 === 'FINALLY')) {
+                continue;
+              }
+              tokens.splice(i + j, 0, ...this.indentation());
+              return 2 + j;
+            }
+          }
+          if ((tag === '->' || tag === '=>') && (((ref2 = this.tag(i + 1)) === ',' || ref2 === ']') || this.tag(i + 1) === '.' && token.newLine)) {
+            [indent, outdent] = this.indentation(tokens[i]);
+            tokens.splice(i + 1, 0, indent, outdent);
+            return 1;
+          }
+          if (indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF') && !conditionTag) {
+            starter = tag;
+            [indent, outdent] = this.indentation(tokens[i]);
+            if (starter === 'THEN') {
+              indent.fromThen = true;
+            }
+            if (tag === 'THEN') {
+              leading_switch_when = this.findTagsBackwards(i, ['LEADING_WHEN']) && this.tag(i + 1) === 'IF';
+              leading_if_then = this.findTagsBackwards(i, ['IF']) && this.tag(i + 1) === 'IF';
+            }
+            if (tag === 'THEN' && this.findTagsBackwards(i, ['IF'])) {
+              ifThens.push(i);
+            }
+            // `ELSE` tag is not closed.
+            if (tag === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {
+              i = closeElseTag(tokens, i);
+            }
+            tokens.splice(i + 1, 0, indent);
+            this.detectEnd(i + 2, condition, action);
+            if (tag === 'THEN') {
+              tokens.splice(i, 1);
+            }
+            return 1;
+          }
+          return 1;
+        });
+      }
+
+      // Tag postfix conditionals as such, so that we can parse them with a
+      // different precedence.
+      tagPostfixConditionals() {
+        var action, condition, original;
+        original = null;
+        condition = function(token, i) {
+          var prevTag, tag;
+          [tag] = token;
+          [prevTag] = this.tokens[i - 1];
+          return tag === 'TERMINATOR' || (tag === 'INDENT' && indexOf.call(SINGLE_LINERS, prevTag) < 0);
+        };
+        action = function(token, i) {
+          if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {
+            return original[0] = 'POST_' + original[0];
+          }
+        };
+        return this.scanTokens(function(token, i) {
+          if (token[0] !== 'IF') {
+            return 1;
+          }
+          original = token;
+          this.detectEnd(i + 1, condition, action);
+          return 1;
+        });
+      }
+
+      // For tokens with extra data, we want to make that data visible to the grammar
+      // by wrapping the token value as a String() object and setting the data as
+      // properties of that object. The grammar should then be responsible for
+      // cleaning this up for the node constructor: unwrapping the token value to a
+      // primitive string and separately passing any expected token data properties
+      exposeTokenDataToGrammar() {
+        return this.scanTokens(function(token, i) {
+          var key, ref, ref1, val;
+          if (token.generated || (token.data && Object.keys(token.data).length !== 0)) {
+            token[1] = new String(token[1]);
+            ref1 = (ref = token.data) != null ? ref : {};
+            for (key in ref1) {
+              if (!hasProp.call(ref1, key)) continue;
+              val = ref1[key];
+              token[1][key] = val;
+            }
+            if (token.generated) {
+              token[1].generated = true;
+            }
+          }
+          return 1;
+        });
+      }
+
+      // Generate the indentation tokens, based on another token on the same line.
+      indentation(origin) {
+        var indent, outdent;
+        indent = ['INDENT', 2];
+        outdent = ['OUTDENT', 2];
+        if (origin) {
+          indent.generated = outdent.generated = true;
+          indent.origin = outdent.origin = origin;
+        } else {
+          indent.explicit = outdent.explicit = true;
+        }
+        return [indent, outdent];
+      }
+
+      // Look up a tag by token index.
+      tag(i) {
+        var ref;
+        return (ref = this.tokens[i]) != null ? ref[0] : void 0;
+      }
+
+    };
+
+    Rewriter.prototype.generate = generate;
+
+    return Rewriter;
+
+  }).call(this);
+
+  // Constants
+  // ---------
+
+  // List of the token pairs that must be balanced.
+  BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END'], ['STRING_START', 'STRING_END'], ['INTERPOLATION_START', 'INTERPOLATION_END'], ['REGEX_START', 'REGEX_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 = [];
+
+  EXPRESSION_END = [];
+
+  for (k = 0, len = BALANCED_PAIRS.length; k < len; k++) {
+    [left, right] = BALANCED_PAIRS[k];
+    EXPRESSION_START.push(INVERSES[right] = left);
+    EXPRESSION_END.push(INVERSES[left] = right);
+  }
+
+  // Tokens that indicate the close of a clause of an expression.
+  EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);
+
+  // Tokens that, if followed by an `IMPLICIT_CALL`, indicate a function invocation.
+  IMPLICIT_FUNC = ['IDENTIFIER', 'PROPERTY', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];
+
+  // If preceded by an `IMPLICIT_FUNC`, indicates a function invocation.
+  IMPLICIT_CALL = ['IDENTIFIER', 'JSX_TAG', 'PROPERTY', 'NUMBER', 'INFINITY', 'NAN', 'STRING', 'STRING_START', 'REGEX', 'REGEX_START', 'JS', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'DYNAMIC_IMPORT', 'IMPORT_META', 'NEW_TARGET', 'UNDEFINED', 'NULL', 'BOOL', 'UNARY', 'DO', 'DO_IIFE', 'YIELD', 'AWAIT', 'UNARY_MATH', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++'];
+
+  IMPLICIT_UNSPACED_CALL = ['+', '-'];
+
+  // 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'];
+
+  // Tokens that close open calls when they follow a newline.
+  CALL_CLOSERS = ['.', '?.', '::', '?::'];
+
+  // Tokens that prevent a subsequent indent from ending implicit calls/objects
+  CONTROL_IN_IMPLICIT = ['IF', 'TRY', 'FINALLY', 'CATCH', 'CLASS', 'SWITCH'];
+
+  // Tokens that are swallowed up by the parser, never leading to code generation.
+  // You can spot these in `grammar.coffee` because the `o` function second
+  // argument doesn’t contain a `new` call for these tokens.
+  // `STRING_START` isn’t on this list because its `locationData` matches that of
+  // the node that becomes `StringWithInterpolations`, and therefore
+  // `addDataToNode` attaches `STRING_START`’s tokens to that node.
+  DISCARDED = ['(', ')', '[', ']', '{', '}', ':', '.', '..', '...', ',', '=', '++', '--', '?', 'AS', 'AWAIT', 'CALL_START', 'CALL_END', 'DEFAULT', 'DO', 'DO_IIFE', 'ELSE', 'EXTENDS', 'EXPORT', 'FORIN', 'FOROF', 'FORFROM', 'IMPORT', 'INDENT', 'INDEX_SOAK', 'INTERPOLATION_START', 'INTERPOLATION_END', 'LEADING_WHEN', 'OUTDENT', 'PARAM_END', 'REGEX_START', 'REGEX_END', 'RETURN', 'STRING_END', 'THROW', 'UNARY', 'YIELD'].concat(IMPLICIT_UNSPACED_CALL.concat(IMPLICIT_END.concat(CALL_CLOSERS.concat(CONTROL_IN_IMPLICIT))));
+
+  // Tokens that, when appearing at the end of a line, suppress a following TERMINATOR/INDENT token
+  exports.UNFINISHED = UNFINISHED = ['\\', '.', '?.', '?::', 'UNARY', 'DO', 'DO_IIFE', 'MATH', 'UNARY_MATH', '+', '-', '**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||', 'BIN?', 'EXTENDS'];
+
+}).call(this);
diff --git a/lib/coffeescript/scope.js b/lib/coffeescript/scope.js
new file mode 100644
index 00000000..22d916df
--- /dev/null
+++ b/lib/coffeescript/scope.js
@@ -0,0 +1,187 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // The **Scope** class regulates lexical scoping within CoffeeScript. As you
+  // generate code, you create a tree of scopes in the same shape as the nested
+  // function bodies. Each scope knows about the variables declared within it,
+  // and has a reference to its parent enclosing scope. In this way, we know which
+  // variables are new and need to be declared with `var`, and which are shared
+  // with external scopes.
+  var Scope,
+    indexOf = [].indexOf;
+
+  exports.Scope = Scope = class Scope {
+    // Initialize a scope with its parent, for lookups up the chain,
+    // as well as a reference to the **Block** node it belongs to, which is
+    // where it should declare its variables, a reference to the function that
+    // it belongs to, and a list of variables referenced in the source code
+    // and therefore should be avoided when generating variables. Also track comments
+    // that should be output as part of variable declarations.
+    constructor(parent, expressions, method, referencedVars) {
+      var ref, ref1;
+      this.parent = parent;
+      this.expressions = expressions;
+      this.method = method;
+      this.referencedVars = referencedVars;
+      this.variables = [
+        {
+          name: 'arguments',
+          type: 'arguments'
+        }
+      ];
+      this.comments = {};
+      this.positions = {};
+      if (!this.parent) {
+        this.utilities = {};
+      }
+      // The `@root` is the top-level **Scope** object for a given file.
+      this.root = (ref = (ref1 = this.parent) != null ? ref1.root : void 0) != null ? ref : this;
+    }
+
+    // Adds a new variable or overrides an existing one.
+    add(name, type, immediate) {
+      if (this.shared && !immediate) {
+        return this.parent.add(name, type, immediate);
+      }
+      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {
+        return this.variables[this.positions[name]].type = type;
+      } else {
+        return this.positions[name] = this.variables.push({name, type}) - 1;
+      }
+    }
+
+    // When `super` is called, we need to find the name of the current method we're
+    // in, so that we know how to invoke the same method of the parent class. This
+    // can get complicated if super is being called from an inner function.
+    // `namedMethod` will walk up the scope tree until it either finds the first
+    // function object that has a name filled in, or bottoms out.
+    namedMethod() {
+      var ref;
+      if (((ref = this.method) != null ? ref.name : void 0) || !this.parent) {
+        return this.method;
+      }
+      return this.parent.namedMethod();
+    }
+
+    // Look up a variable name in lexical scope, and declare it if it does not
+    // already exist.
+    find(name, type = 'var') {
+      if (this.check(name)) {
+        return true;
+      }
+      this.add(name, type);
+      return false;
+    }
+
+    // Reserve a variable name as originating from a function parameter for this
+    // scope. No `var` required for internal references.
+    parameter(name) {
+      if (this.shared && this.parent.check(name, true)) {
+        return;
+      }
+      return this.add(name, 'param');
+    }
+
+    // Just check to see if a variable has already been declared, without reserving,
+    // walks up to the root scope.
+    check(name) {
+      var ref;
+      return !!(this.type(name) || ((ref = this.parent) != null ? ref.check(name) : void 0));
+    }
+
+    // Generate a temporary variable name at the given index.
+    temporary(name, index, single = false) {
+      var diff, endCode, letter, newCode, num, startCode;
+      if (single) {
+        startCode = name.charCodeAt(0);
+        endCode = 'z'.charCodeAt(0);
+        diff = endCode - startCode;
+        newCode = startCode + index % (diff + 1);
+        letter = String.fromCharCode(newCode);
+        num = Math.floor(index / (diff + 1));
+        return `${letter}${num || ''}`;
+      } else {
+        return `${name}${index || ''}`;
+      }
+    }
+
+    // Gets the type of a variable.
+    type(name) {
+      var i, len, ref, v;
+      ref = this.variables;
+      for (i = 0, len = ref.length; i < len; i++) {
+        v = ref[i];
+        if (v.name === name) {
+          return v.type;
+        }
+      }
+      return null;
+    }
+
+    // If we need to store an intermediate result, find an available name for a
+    // compiler-generated variable. `_var`, `_var2`, and so on...
+    freeVariable(name, options = {}) {
+      var index, ref, temp;
+      index = 0;
+      while (true) {
+        temp = this.temporary(name, index, options.single);
+        if (!(this.check(temp) || indexOf.call(this.root.referencedVars, temp) >= 0)) {
+          break;
+        }
+        index++;
+      }
+      if ((ref = options.reserve) != null ? ref : true) {
+        this.add(temp, 'var', true);
+      }
+      return temp;
+    }
+
+    // Ensure that an assignment is made at the top of this scope
+    // (or at the top-level scope, if requested).
+    assign(name, value) {
+      this.add(name, {
+        value,
+        assigned: true
+      }, true);
+      return this.hasAssignments = true;
+    }
+
+    // Does this scope have any declared variables?
+    hasDeclarations() {
+      return !!this.declaredVariables().length;
+    }
+
+    // Return the list of variables first declared in this scope.
+    declaredVariables() {
+      var v;
+      return ((function() {
+        var i, len, ref, results;
+        ref = this.variables;
+        results = [];
+        for (i = 0, len = ref.length; i < len; i++) {
+          v = ref[i];
+          if (v.type === 'var') {
+            results.push(v.name);
+          }
+        }
+        return results;
+      }).call(this)).sort();
+    }
+
+    // Return the list of assignments that are supposed to be made at the top
+    // of this scope.
+    assignedVariables() {
+      var i, len, ref, results, v;
+      ref = this.variables;
+      results = [];
+      for (i = 0, len = ref.length; i < len; i++) {
+        v = ref[i];
+        if (v.type.assigned) {
+          results.push(`${v.name} = ${v.type.value}`);
+        }
+      }
+      return results;
+    }
+
+  };
+
+}).call(this);
diff --git a/lib/coffeescript/sourcemap.js b/lib/coffeescript/sourcemap.js
new file mode 100644
index 00000000..2d0315ee
--- /dev/null
+++ b/lib/coffeescript/sourcemap.js
@@ -0,0 +1,229 @@
+// Generated by CoffeeScript 2.7.0
+(function() {
+  // Source maps allow JavaScript runtimes to match running JavaScript back to
+  // the original source code that corresponds to it. This can be minified
+  // JavaScript, but in our case, we're concerned with mapping pretty-printed
+  // JavaScript back to CoffeeScript.
+
+  // In order to produce maps, we must keep track of positions (line number, column number)
+  // that originated every node in the syntax tree, and be able to generate a
+  // [map file](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit)
+  // — which is a compact, VLQ-encoded representation of the JSON serialization
+  // of this information — to write out alongside the generated JavaScript.
+
+  // LineMap
+  // -------
+
+  // A **LineMap** object keeps track of information about original line and column
+  // positions for a single line of output JavaScript code.
+  // **SourceMaps** are implemented in terms of **LineMaps**.
+  var LineMap, SourceMap;
+
+  LineMap = class LineMap {
+    constructor(line1) {
+      this.line = line1;
+      this.columns = [];
+    }
+
+    add(column, [sourceLine, sourceColumn], options = {}) {
+      if (this.columns[column] && options.noReplace) {
+        return;
+      }
+      return this.columns[column] = {
+        line: this.line,
+        column,
+        sourceLine,
+        sourceColumn
+      };
+    }
+
+    sourceLocation(column) {
+      var mapping;
+      while (!((mapping = this.columns[column]) || (column <= 0))) {
+        column--;
+      }
+      return mapping && [mapping.sourceLine, mapping.sourceColumn];
+    }
+
+  };
+
+  SourceMap = (function() {
+    var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;
+
+    // SourceMap
+    // ---------
+
+      // Maps locations in a single generated JavaScript file back to locations in
+    // the original CoffeeScript source file.
+
+      // This is intentionally agnostic towards how a source map might be represented on
+    // disk. Once the compiler is ready to produce a "v3"-style source map, we can walk
+    // through the arrays of line and column buffer to produce it.
+    class SourceMap {
+      constructor() {
+        this.lines = [];
+      }
+
+      // 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 `line` and `column`, this will have no
+      // effect.
+      add(sourceLocation, generatedLocation, options = {}) {
+        var base, column, line, lineMap;
+        [line, column] = generatedLocation;
+        lineMap = ((base = this.lines)[line] || (base[line] = new LineMap(line)));
+        return lineMap.add(column, sourceLocation, options);
+      }
+
+      // Look up the original position of a given `line` and `column` in the generated
+      // code.
+      sourceLocation([line, column]) {
+        var lineMap;
+        while (!((lineMap = this.lines[line]) || (line <= 0))) {
+          line--;
+        }
+        return lineMap && lineMap.sourceLocation(column);
+      }
+
+      static registerCompiled(filename, source, sourcemap) {
+        if (sourcemap != null) {
+          return SourceMap.sourceMaps[filename] = sourcemap;
+        }
+      }
+
+      static getSourceMap(filename) {
+        return SourceMap.sourceMaps[filename];
+      }
+
+      // V3 SourceMap Generation
+      // -----------------------
+
+        // Builds up a V3 source map, returning the generated JSON as a string.
+      // `options.sourceRoot` may be used to specify the sourceRoot written to the source
+      // map.  Also, `options.sourceFiles` and `options.generatedFile` may be passed to
+      // set "sources" and "file", respectively.
+      generate(options = {}, code = null) {
+        var buffer, i, j, lastColumn, lastSourceColumn, lastSourceLine, len, len1, lineMap, lineNumber, mapping, needComma, ref, ref1, sources, v3, writingline;
+        writingline = 0;
+        lastColumn = 0;
+        lastSourceLine = 0;
+        lastSourceColumn = 0;
+        needComma = false;
+        buffer = "";
+        ref = this.lines;
+        for (lineNumber = i = 0, len = ref.length; i < len; lineNumber = ++i) {
+          lineMap = ref[lineNumber];
+          if (lineMap) {
+            ref1 = lineMap.columns;
+            for (j = 0, len1 = ref1.length; j < len1; j++) {
+              mapping = ref1[j];
+              if (!(mapping)) {
+                continue;
+              }
+              while (writingline < mapping.line) {
+                lastColumn = 0;
+                needComma = false;
+                buffer += ";";
+                writingline++;
+              }
+              // Write a comma if we've already written a segment on this line.
+              if (needComma) {
+                buffer += ",";
+                needComma = false;
+              }
+              // 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.
+
+              // The starting column in the generated source, relative to any previous recorded
+              // column for the current line:
+              buffer += this.encodeVlq(mapping.column - lastColumn);
+              lastColumn = mapping.column;
+              // The index into the list of sources:
+              buffer += this.encodeVlq(0);
+              // The starting line in the original source, relative to the previous source line.
+              buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);
+              lastSourceLine = mapping.sourceLine;
+              // The starting column in the original source, relative to the previous column.
+              buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);
+              lastSourceColumn = mapping.sourceColumn;
+              needComma = true;
+            }
+          }
+        }
+        // Produce the canonical JSON object format for a "v3" source map.
+        sources = options.sourceFiles ? options.sourceFiles : options.filename ? [options.filename] : ['<anonymous>'];
+        v3 = {
+          version: 3,
+          file: options.generatedFile || '',
+          sourceRoot: options.sourceRoot || '',
+          sources: sources,
+          names: [],
+          mappings: buffer
+        };
+        if (options.sourceMap || options.inlineMap) {
+          v3.sourcesContent = [code];
+        }
+        return v3;
+      }
+
+      encodeVlq(value) {
+        var answer, nextChunk, signBit, valueToEncode;
+        answer = '';
+        // Least significant bit represents the sign.
+        signBit = value < 0 ? 1 : 0;
+        // The next bits are the actual value.
+        valueToEncode = (Math.abs(value) << 1) + signBit;
+        // Make sure we encode at least one character, even if valueToEncode is 0.
+        while (valueToEncode || !answer) {
+          nextChunk = valueToEncode & VLQ_VALUE_MASK;
+          valueToEncode = valueToEncode >> VLQ_SHIFT;
+          if (valueToEncode) {
+            nextChunk |= VLQ_CONTINUATION_BIT;
+          }
+          answer += this.encodeBase64(nextChunk);
+        }
+        return answer;
+      }
+
+      encodeBase64(value) {
+        return BASE64_CHARS[value] || (function() {
+          throw new Error(`Cannot Base64 encode value: ${value}`);
+        })();
+      }
+
+    };
+
+    // Caching
+    // -------
+
+    // A static source maps cache `filename`: `map`. These are used for transforming
+    // stack traces and are currently set in `CoffeeScript.compile` for all files
+    // compiled with the source maps option.
+    SourceMap.sourceMaps = Object.create(null);
+
+    // Base64 VLQ Encoding
+    // -------------------
+
+    // 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 [Wikipedia](https://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
+
+    // Regular Base64 Encoding
+    // -----------------------
+    BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+    return SourceMap;
+
+  }).call(this);
+
+  // Our API for source maps is just the `SourceMap` class.
+  module.exports = SourceMap;
+
+}).call(this);
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..06348d75
--- /dev/null
+++ b/package.json
@@ -0,0 +1,55 @@
+{
+  "name": "coffeescript",
+  "description": "Unfancy JavaScript",
+  "keywords": [
+    "javascript",
+    "language",
+    "coffeescript",
+    "compiler"
+  ],
+  "author": "Jeremy Ashkenas",
+  "version": "2.7.0",
+  "license": "MIT",
+  "engines": {
+    "node": ">=6"
+  },
+  "directories": {
+    "lib": "./lib/coffeescript"
+  },
+  "main": "./lib/coffeescript/index",
+  "module": "./lib/coffeescript-browser-compiler-modern/coffeescript.js",
+  "browser": "./lib/coffeescript-browser-compiler-legacy/coffeescript.js",
+  "bin": {
+    "coffee": "./bin/coffee",
+    "cake": "./bin/cake"
+  },
+  "files": [
+    "bin",
+    "lib",
+    "register.js",
+    "repl.js"
+  ],
+  "scripts": {
+    "test": "node ./bin/cake test",
+    "test-harmony": "node --harmony ./bin/cake test"
+  },
+  "homepage": "https://coffeescript.org",
+  "bugs": "https://github.com/jashkenas/coffeescript/issues",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/coffeescript.git"
+  },
+  "devDependencies": {
+    "@babel/core": "~7.17.9",
+    "@babel/preset-env": "~7.16.11",
+    "babel-preset-minify": "~0.5.1",
+    "codemirror": "~5.65.3",
+    "docco": "~0.9.1",
+    "highlight.js": "~11.5.1",
+    "jison": "~0.4.18",
+    "markdown-it": "~13.0.0",
+    "puppeteer": "~13.6.0",
+    "underscore": "~1.13.3",
+    "webpack": "~5.72.0"
+  }
+}
diff --git a/register.js b/register.js
new file mode 100644
index 00000000..dd9a9e76
--- /dev/null
+++ b/register.js
@@ -0,0 +1 @@
+require('./lib/coffeescript/register');
diff --git a/repl.js b/repl.js
new file mode 100644
index 00000000..8571c57a
--- /dev/null
+++ b/repl.js
@@ -0,0 +1 @@
+module.exports = require('./lib/coffeescript/repl');

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript-browser-compiler-legacy/coffeescript.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript-browser-compiler-modern/coffeescript.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/browser.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/cake.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/coffeescript.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/command.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/grammar.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/helpers.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/index.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/lexer.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/nodes.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/optparse.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/parser.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/register.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/repl.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/rewriter.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/scope.js
-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffeescript/sourcemap.js
-rwxr-xr-x  root/root   /usr/bin/cake
-rwxr-xr-x  root/root   /usr/bin/coffee

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/ruby/vendor_ruby/coffee_script/source.rb
-rw-r--r--  root/root   /usr/share/rubygems-integration/all/specifications/coffee-script-source-1.12.2.gemspec

Control files: lines which differ (wdiff format)

  • Depends: libjs-coffeescript (>= 1.12.2~), 2.7.0+git20221025.1.98a2331~), ruby | ruby-interpreter
  • Ruby-Versions: all

More details

Full run details