UNPKG

338 kBSource Map (JSON)View Raw
1{"version":3,"file":"rollup.browser.js","sources":["../node_modules/magic-string/node_modules/vlq/dist/vlq.js","../node_modules/magic-string/dist/magic-string.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/process/browser.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/buffer/node_modules/is-array/index.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/buffer/node_modules/ieee754/index.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/buffer/node_modules/base64-js/lib/b64.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/buffer/index.js","../node_modules/acorn/dist/acorn.js","../.gobble-build/03-rollup/1/rollup.browser.js","../node_modules/gobble-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\tfactory((global.vlq = {}))\n}(this, function (exports) { 'use strict';\n\n\texports.decode = decode;\n\texports.encode = encode;\n\n\tvar charToInteger = {};\n\tvar integerToChar = {};\n\n\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split( '' ).forEach( function ( char, i ) {\n\t\tcharToInteger[ char ] = i;\n\t\tintegerToChar[ i ] = char;\n\t});\n\n\tfunction decode ( string ) {\n\t\tvar result = [],\n\t\t\tlen = string.length,\n\t\t\ti,\n\t\t\thasContinuationBit,\n\t\t\tshift = 0,\n\t\t\tvalue = 0,\n\t\t\tinteger,\n\t\t\tshouldNegate;\n\n\t\tfor ( i = 0; i < len; i += 1 ) {\n\t\t\tinteger = charToInteger[ string[i] ];\n\n\t\t\tif ( integer === undefined ) {\n\t\t\t\tthrow new Error( 'Invalid character (' + string[i] + ')' );\n\t\t\t}\n\n\t\t\thasContinuationBit = integer & 32;\n\n\t\t\tinteger &= 31;\n\t\t\tvalue += integer << shift;\n\n\t\t\tif ( hasContinuationBit ) {\n\t\t\t\tshift += 5;\n\t\t\t} else {\n\t\t\t\tshouldNegate = value & 1;\n\t\t\t\tvalue >>= 1;\n\n\t\t\t\tresult.push( shouldNegate ? -value : value );\n\n\t\t\t\t// reset\n\t\t\t\tvalue = shift = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction encode ( value ) {\n\t\tvar result, i;\n\n\t\tif ( typeof value === 'number' ) {\n\t\t\tresult = encodeInteger( value );\n\t\t} else {\n\t\t\tresult = '';\n\t\t\tfor ( i = 0; i < value.length; i += 1 ) {\n\t\t\t\tresult += encodeInteger( value[i] );\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction encodeInteger ( num ) {\n\t\tvar result = '', clamped;\n\n\t\tif ( num < 0 ) {\n\t\t\tnum = ( -num << 1 ) | 1;\n\t\t} else {\n\t\t\tnum <<= 1;\n\t\t}\n\n\t\tdo {\n\t\t\tclamped = num & 31;\n\t\t\tnum >>= 5;\n\n\t\t\tif ( num > 0 ) {\n\t\t\t\tclamped |= 32;\n\t\t\t}\n\n\t\t\tresult += integerToChar[ clamped ];\n\t\t} while ( num > 0 );\n\n\t\treturn result;\n\t}\n\n}));","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vlq')) :\n\ttypeof define === 'function' && define.amd ? define(['vlq'], factory) :\n\tglobal.MagicString = factory(vlq);\n}(this, function (vlq) { 'use strict';\n\n\tfunction getRelativePath(from, to) {\n\t\tvar fromParts = from.split(/[\\/\\\\]/);\n\t\tvar toParts = to.split(/[\\/\\\\]/);\n\n\t\tfromParts.pop(); // get dirname\n\n\t\twhile (fromParts[0] === toParts[0]) {\n\t\t\tfromParts.shift();\n\t\t\ttoParts.shift();\n\t\t}\n\n\t\tif (fromParts.length) {\n\t\t\tvar i = fromParts.length;\n\t\t\twhile (i--) fromParts[i] = '..';\n\t\t}\n\n\t\treturn fromParts.concat(toParts).join('/');\n\t}\n\tvar _btoa;\n\n\tif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n\t\t_btoa = window.btoa;\n\t} else if (typeof Buffer === 'function') {\n\t\t_btoa = function (str) {\n\t\t\treturn new Buffer(str).toString('base64');\n\t\t};\n\t} else {\n\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t}\n\n\tvar btoa = _btoa;\n\tfunction __classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\n\tvar SourceMap = (function () {\n\t\tfunction SourceMap(properties) {\n\t\t\t__classCallCheck(this, SourceMap);\n\n\t\t\tthis.version = 3;\n\n\t\t\tthis.file = properties.file;\n\t\t\tthis.sources = properties.sources;\n\t\t\tthis.sourcesContent = properties.sourcesContent;\n\t\t\tthis.names = properties.names;\n\t\t\tthis.mappings = properties.mappings;\n\t\t}\n\n\t\tSourceMap.prototype.toString = function toString() {\n\t\t\treturn JSON.stringify(this);\n\t\t};\n\n\t\tSourceMap.prototype.toUrl = function toUrl() {\n\t\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t\t};\n\n\t\treturn SourceMap;\n\t})();\n\n\tfunction getSemis(str) {\n\t\treturn new Array(str.split('\\n').length).join(';');\n\t}\n\n\tfunction adjust(mappings, start, end, d) {\n\t\tvar i = end;\n\n\t\tif (!d) return; // replacement is same length as replaced string\n\n\t\twhile (i-- > start) {\n\t\t\tif (~mappings[i]) {\n\t\t\t\tmappings[i] += d;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar warned = false;\n\n\tfunction blank(mappings, start, i) {\n\t\twhile (i-- > start) {\n\t\t\tmappings[i] = -1;\n\t\t}\n\t}\n\n\tfunction reverse(mappings, i) {\n\t\tvar result, location;\n\n\t\tresult = new Uint32Array(i);\n\n\t\twhile (i--) {\n\t\t\tresult[i] = -1;\n\t\t}\n\n\t\ti = mappings.length;\n\t\twhile (i--) {\n\t\t\tlocation = mappings[i];\n\n\t\t\tif (~location) {\n\t\t\t\tresult[location] = i;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction getLocation(locations, char) {\n\t\tvar i;\n\n\t\ti = locations.length;\n\t\twhile (i--) {\n\t\t\tif (locations[i] <= char) {\n\t\t\t\treturn {\n\t\t\t\t\tline: i,\n\t\t\t\t\tcolumn: char - locations[i]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error('Character out of bounds');\n\t}\n\n\tfunction invert(str, mappings) {\n\t\tvar inverted = new Uint32Array(str.length),\n\t\t i;\n\n\t\t// initialise everything to -1\n\t\ti = str.length;\n\t\twhile (i--) {\n\t\t\tinverted[i] = -1;\n\t\t}\n\n\t\t// then apply the actual mappings\n\t\ti = mappings.length;\n\t\twhile (i--) {\n\t\t\tif (~mappings[i]) {\n\t\t\t\tinverted[mappings[i]] = i;\n\t\t\t}\n\t\t}\n\n\t\treturn inverted;\n\t}\n\n\tfunction encodeMappings(original, str, mappings, hires, sourcemapLocations, sourceIndex, offsets) {\n\t\t// store locations, for fast lookup\n\t\tvar lineStart = 0;\n\t\tvar locations = original.split('\\n').map(function (line) {\n\t\t\tvar start = lineStart;\n\t\t\tlineStart += line.length + 1; // +1 for the newline\n\n\t\t\treturn start;\n\t\t});\n\n\t\tvar inverseMappings = invert(str, mappings);\n\n\t\tvar charOffset = 0;\n\t\tvar lines = str.split('\\n').map(function (line) {\n\t\t\tvar segments = [];\n\n\t\t\tvar char = undefined; // TODO put these inside loop, once we've determined it's safe to do so transpilation-wise\n\t\t\tvar origin = undefined;\n\t\t\tvar lastOrigin = undefined;\n\t\t\tvar location = undefined;\n\n\t\t\tvar i = undefined;\n\n\t\t\tvar len = line.length;\n\t\t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tchar = i + charOffset;\n\t\t\t\torigin = inverseMappings[char];\n\n\t\t\t\tif (! ~origin) {\n\t\t\t\t\tif (! ~lastOrigin) {} else {\n\t\t\t\t\t\tsegments.push({\n\t\t\t\t\t\t\tgeneratedCodeColumn: i,\n\t\t\t\t\t\t\tsourceIndex: sourceIndex,\n\t\t\t\t\t\t\tsourceCodeLine: 0,\n\t\t\t\t\t\t\tsourceCodeColumn: 0\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!hires && origin === lastOrigin + 1 && !sourcemapLocations[origin]) {} else {\n\t\t\t\t\t\tlocation = getLocation(locations, origin);\n\n\t\t\t\t\t\tsegments.push({\n\t\t\t\t\t\t\tgeneratedCodeColumn: i,\n\t\t\t\t\t\t\tsourceIndex: sourceIndex,\n\t\t\t\t\t\t\tsourceCodeLine: location.line,\n\t\t\t\t\t\t\tsourceCodeColumn: location.column\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlastOrigin = origin;\n\t\t\t}\n\n\t\t\tcharOffset += line.length + 1;\n\t\t\treturn segments;\n\t\t});\n\n\t\toffsets = offsets || {};\n\n\t\toffsets.sourceIndex = offsets.sourceIndex || 0;\n\t\toffsets.sourceCodeLine = offsets.sourceCodeLine || 0;\n\t\toffsets.sourceCodeColumn = offsets.sourceCodeColumn || 0;\n\n\t\tvar encoded = lines.map(function (segments) {\n\t\t\tvar generatedCodeColumn = 0;\n\n\t\t\treturn segments.map(function (segment) {\n\t\t\t\tvar arr = [segment.generatedCodeColumn - generatedCodeColumn, segment.sourceIndex - offsets.sourceIndex, segment.sourceCodeLine - offsets.sourceCodeLine, segment.sourceCodeColumn - offsets.sourceCodeColumn];\n\n\t\t\t\tgeneratedCodeColumn = segment.generatedCodeColumn;\n\t\t\t\toffsets.sourceIndex = segment.sourceIndex;\n\t\t\t\toffsets.sourceCodeLine = segment.sourceCodeLine;\n\t\t\t\toffsets.sourceCodeColumn = segment.sourceCodeColumn;\n\n\t\t\t\treturn vlq.encode(arr);\n\t\t\t}).join(',');\n\t\t}).join(';');\n\n\t\treturn encoded;\n\t}\n\n\tfunction guessIndent(code) {\n\t\tvar lines = code.split('\\n');\n\n\t\tvar tabbed = lines.filter(function (line) {\n\t\t\treturn /^\\t+/.test(line);\n\t\t});\n\t\tvar spaced = lines.filter(function (line) {\n\t\t\treturn /^ {2,}/.test(line);\n\t\t});\n\n\t\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// More lines tabbed than spaced? Assume tabs, and\n\t\t// default to tabs in the case of a tie (or nothing\n\t\t// to go on)\n\t\tif (tabbed.length >= spaced.length) {\n\t\t\treturn '\\t';\n\t\t}\n\n\t\t// Otherwise, we need to guess the multiple\n\t\tvar min = spaced.reduce(function (previous, current) {\n\t\t\tvar numSpaces = /^ +/.exec(current)[0].length;\n\t\t\treturn Math.min(numSpaces, previous);\n\t\t}, Infinity);\n\n\t\treturn new Array(min + 1).join(' ');\n\t}\n\n\tfunction initMappings(i) {\n\t\tvar mappings = new Uint32Array(i);\n\n\t\twhile (i--) {\n\t\t\tmappings[i] = i;\n\t\t}\n\n\t\treturn mappings;\n\t}\n\n\tfunction ___classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\n\tvar MagicString = (function () {\n\t\tfunction MagicString(string) {\n\t\t\tvar options = arguments[1] === undefined ? {} : arguments[1];\n\n\t\t\t___classCallCheck(this, MagicString);\n\n\t\t\tthis.original = this.str = string;\n\t\t\tthis.mappings = initMappings(string.length);\n\n\t\t\tthis.filename = options.filename;\n\t\t\tthis.indentExclusionRanges = options.indentExclusionRanges;\n\n\t\t\tthis.sourcemapLocations = {};\n\n\t\t\tthis.indentStr = guessIndent(string);\n\t\t}\n\n\t\tMagicString.prototype.addSourcemapLocation = function addSourcemapLocation(char) {\n\t\t\tthis.sourcemapLocations[char] = true;\n\t\t};\n\n\t\tMagicString.prototype.append = function append(content) {\n\t\t\tif (typeof content !== 'string') {\n\t\t\t\tthrow new TypeError('appended content must be a string');\n\t\t\t}\n\n\t\t\tthis.str += content;\n\t\t\treturn this;\n\t\t};\n\n\t\tMagicString.prototype.clone = function clone() {\n\t\t\tvar clone, i;\n\n\t\t\tclone = new MagicString(this.original, { filename: this.filename });\n\t\t\tclone.str = this.str;\n\n\t\t\ti = clone.mappings.length;\n\t\t\twhile (i--) {\n\t\t\t\tclone.mappings[i] = this.mappings[i];\n\t\t\t}\n\n\t\t\tif (this.indentExclusionRanges) {\n\t\t\t\tclone.indentExclusionRanges = typeof this.indentExclusionRanges[0] === 'number' ? [this.indentExclusionRanges[0], this.indentExclusionRanges[1]] : this.indentExclusionRanges.map(function (_ref) {\n\t\t\t\t\tvar start = _ref[0];\n\t\t\t\t\tvar end = _ref[1];\n\t\t\t\t\treturn [start, end];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tObject.keys(this.sourcemapLocations).forEach(function (loc) {\n\t\t\t\tclone.sourcemapLocations[loc] = true;\n\t\t\t});\n\n\t\t\treturn clone;\n\t\t};\n\n\t\tMagicString.prototype.generateMap = function generateMap(options) {\n\t\t\toptions = options || {};\n\n\t\t\treturn new SourceMap({\n\t\t\t\tfile: options.file ? options.file.split(/[\\/\\\\]/).pop() : null,\n\t\t\t\tsources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n\t\t\t\tsourcesContent: options.includeContent ? [this.original] : [null],\n\t\t\t\tnames: [],\n\t\t\t\tmappings: this.getMappings(options.hires, 0)\n\t\t\t});\n\t\t};\n\n\t\tMagicString.prototype.getIndentString = function getIndentString() {\n\t\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t\t};\n\n\t\tMagicString.prototype.getMappings = function getMappings(hires, sourceIndex, offsets) {\n\t\t\treturn encodeMappings(this.original, this.str, this.mappings, hires, this.sourcemapLocations, sourceIndex, offsets);\n\t\t};\n\n\t\tMagicString.prototype.indent = function indent(indentStr, options) {\n\t\t\tvar self = this,\n\t\t\t mappings = this.mappings,\n\t\t\t reverseMappings = reverse(mappings, this.str.length),\n\t\t\t pattern = /^[^\\r\\n]/gm,\n\t\t\t match,\n\t\t\t inserts = [],\n\t\t\t adjustments,\n\t\t\t exclusions,\n\t\t\t lastEnd,\n\t\t\t i;\n\n\t\t\tif (typeof indentStr === 'object') {\n\t\t\t\toptions = indentStr;\n\t\t\t\tindentStr = undefined;\n\t\t\t}\n\n\t\t\tindentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n\t\t\tif (indentStr === '') return this; // noop\n\n\t\t\toptions = options || {};\n\n\t\t\t// Process exclusion ranges\n\t\t\tif (options.exclude) {\n\t\t\t\texclusions = typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\n\t\t\t\texclusions = exclusions.map(function (range) {\n\t\t\t\t\tvar rangeStart, rangeEnd;\n\n\t\t\t\t\trangeStart = self.locate(range[0]);\n\t\t\t\t\trangeEnd = self.locate(range[1]);\n\n\t\t\t\t\tif (rangeStart === null || rangeEnd === null) {\n\t\t\t\t\t\tthrow new Error('Cannot use indices of replaced characters as exclusion ranges');\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [rangeStart, rangeEnd];\n\t\t\t\t});\n\n\t\t\t\texclusions.sort(function (a, b) {\n\t\t\t\t\treturn a[0] - b[0];\n\t\t\t\t});\n\n\t\t\t\t// check for overlaps\n\t\t\t\tlastEnd = -1;\n\t\t\t\texclusions.forEach(function (range) {\n\t\t\t\t\tif (range[0] < lastEnd) {\n\t\t\t\t\t\tthrow new Error('Exclusion ranges cannot overlap');\n\t\t\t\t\t}\n\n\t\t\t\t\tlastEnd = range[1];\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar indentStart = options.indentStart !== false;\n\n\t\t\tif (!exclusions) {\n\t\t\t\tthis.str = this.str.replace(pattern, function (match, index) {\n\t\t\t\t\tif (!indentStart && index === 0) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\n\t\t\t\t\tinserts.push(index);\n\t\t\t\t\treturn indentStr + match;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.str = this.str.replace(pattern, function (match, index) {\n\t\t\t\t\tif (!indentStart && index === 0 || isExcluded(index - 1)) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\n\t\t\t\t\tinserts.push(index);\n\t\t\t\t\treturn indentStr + match;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tadjustments = inserts.map(function (index) {\n\t\t\t\tvar origin;\n\n\t\t\t\tdo {\n\t\t\t\t\torigin = reverseMappings[index++];\n\t\t\t\t} while (! ~origin && index < self.str.length);\n\n\t\t\t\treturn origin;\n\t\t\t});\n\n\t\t\ti = adjustments.length;\n\t\t\tlastEnd = this.mappings.length;\n\t\t\twhile (i--) {\n\t\t\t\tadjust(self.mappings, adjustments[i], lastEnd, (i + 1) * indentStr.length);\n\t\t\t\tlastEnd = adjustments[i];\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t\tfunction isExcluded(index) {\n\t\t\t\tvar i = exclusions.length,\n\t\t\t\t range;\n\n\t\t\t\twhile (i--) {\n\t\t\t\t\trange = exclusions[i];\n\n\t\t\t\t\tif (range[1] < index) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (range[0] <= index) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tMagicString.prototype.insert = function insert(index, content) {\n\t\t\tif (typeof content !== 'string') {\n\t\t\t\tthrow new TypeError('inserted content must be a string');\n\t\t\t}\n\n\t\t\tif (index === this.original.length) {\n\t\t\t\tthis.append(content);\n\t\t\t} else {\n\t\t\t\tvar mapped = this.locate(index);\n\n\t\t\t\tif (mapped === null) {\n\t\t\t\t\tthrow new Error('Cannot insert at replaced character index: ' + index);\n\t\t\t\t}\n\n\t\t\t\tthis.str = this.str.substr(0, mapped) + content + this.str.substr(mapped);\n\t\t\t\tadjust(this.mappings, index, this.mappings.length, content.length);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t};\n\n\t\t// get current location of character in original string\n\n\t\tMagicString.prototype.locate = function locate(character) {\n\t\t\tvar loc;\n\n\t\t\tif (character < 0 || character > this.mappings.length) {\n\t\t\t\tthrow new Error('Character is out of bounds');\n\t\t\t}\n\n\t\t\tloc = this.mappings[character];\n\t\t\treturn ~loc ? loc : null;\n\t\t};\n\n\t\tMagicString.prototype.locateOrigin = function locateOrigin(character) {\n\t\t\tvar i;\n\n\t\t\tif (character < 0 || character >= this.str.length) {\n\t\t\t\tthrow new Error('Character is out of bounds');\n\t\t\t}\n\n\t\t\ti = this.mappings.length;\n\t\t\twhile (i--) {\n\t\t\t\tif (this.mappings[i] === character) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tMagicString.prototype.overwrite = function overwrite(start, end, content) {\n\t\t\tif (typeof content !== 'string') {\n\t\t\t\tthrow new TypeError('replacement content must be a string');\n\t\t\t}\n\n\t\t\tvar firstChar, lastChar, d;\n\n\t\t\tfirstChar = this.locate(start);\n\t\t\tlastChar = this.locate(end - 1);\n\n\t\t\tif (firstChar === null || lastChar === null) {\n\t\t\t\tthrow new Error('Cannot overwrite the same content twice: \\'' + this.original.slice(start, end).replace(/\\n/g, '\\\\n') + '\\'');\n\t\t\t}\n\n\t\t\tif (firstChar > lastChar + 1) {\n\t\t\t\tthrow new Error('BUG! First character mapped to a position after the last character: ' + '[' + start + ', ' + end + '] -> [' + firstChar + ', ' + (lastChar + 1) + ']');\n\t\t\t}\n\n\t\t\tthis.str = this.str.substr(0, firstChar) + content + this.str.substring(lastChar + 1);\n\n\t\t\td = content.length - (lastChar + 1 - firstChar);\n\n\t\t\tblank(this.mappings, start, end);\n\t\t\tadjust(this.mappings, end, this.mappings.length, d);\n\t\t\treturn this;\n\t\t};\n\n\t\tMagicString.prototype.prepend = function prepend(content) {\n\t\t\tthis.str = content + this.str;\n\t\t\tadjust(this.mappings, 0, this.mappings.length, content.length);\n\t\t\treturn this;\n\t\t};\n\n\t\tMagicString.prototype.remove = function remove(start, end) {\n\t\t\tvar loc, d, i, currentStart, currentEnd;\n\n\t\t\tif (start < 0 || end > this.mappings.length) {\n\t\t\t\tthrow new Error('Character is out of bounds');\n\t\t\t}\n\n\t\t\td = 0;\n\t\t\tcurrentStart = -1;\n\t\t\tcurrentEnd = -1;\n\t\t\tfor (i = start; i < end; i += 1) {\n\t\t\t\tloc = this.mappings[i];\n\n\t\t\t\tif (~loc) {\n\t\t\t\t\tif (! ~currentStart) {\n\t\t\t\t\t\tcurrentStart = loc;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentEnd = loc + 1;\n\n\t\t\t\t\tthis.mappings[i] = -1;\n\t\t\t\t\td += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.str = this.str.slice(0, currentStart) + this.str.slice(currentEnd);\n\n\t\t\tadjust(this.mappings, end, this.mappings.length, -d);\n\t\t\treturn this;\n\t\t};\n\n\t\tMagicString.prototype.replace = function replace(start, end, content) {\n\t\t\tif (!warned) {\n\t\t\t\tconsole.warn('magicString.replace(...) is deprecated. Use magicString.overwrite(...) instead');\n\t\t\t\twarned = true;\n\t\t\t}\n\n\t\t\treturn this.overwrite(start, end, content);\n\t\t};\n\n\t\tMagicString.prototype.slice = function slice(start) {\n\t\t\tvar end = arguments[1] === undefined ? this.original.length : arguments[1];\n\n\t\t\tvar firstChar, lastChar;\n\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\n\t\t\tfirstChar = this.locate(start);\n\t\t\tlastChar = this.locate(end - 1) + 1;\n\n\t\t\tif (firstChar === null || lastChar === null) {\n\t\t\t\tthrow new Error('Cannot use replaced characters as slice anchors');\n\t\t\t}\n\n\t\t\treturn this.str.slice(firstChar, lastChar);\n\t\t};\n\n\t\tMagicString.prototype.snip = function snip(start, end) {\n\t\t\tvar clone = this.clone();\n\t\t\tclone.remove(0, start);\n\t\t\tclone.remove(end, clone.original.length);\n\n\t\t\treturn clone;\n\t\t};\n\n\t\tMagicString.prototype.toString = function toString() {\n\t\t\treturn this.str;\n\t\t};\n\n\t\tMagicString.prototype.trimLines = function trimLines() {\n\t\t\treturn this.trim('[\\\\r\\\\n]');\n\t\t};\n\n\t\tMagicString.prototype.trim = function trim(charType) {\n\t\t\treturn this.trimStart(charType).trimEnd(charType);\n\t\t};\n\n\t\tMagicString.prototype.trimEnd = function trimEnd(charType) {\n\t\t\tvar self = this;\n\t\t\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\t\tthis.str = this.str.replace(rx, function (trailing, index, str) {\n\t\t\t\tvar strLength = str.length,\n\t\t\t\t length = trailing.length,\n\t\t\t\t i,\n\t\t\t\t chars = [];\n\n\t\t\t\ti = strLength;\n\t\t\t\twhile (i-- > strLength - length) {\n\t\t\t\t\tchars.push(self.locateOrigin(i));\n\t\t\t\t}\n\n\t\t\t\ti = chars.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tif (chars[i] !== null) {\n\t\t\t\t\t\tself.mappings[chars[i]] = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn '';\n\t\t\t});\n\n\t\t\treturn this;\n\t\t};\n\n\t\tMagicString.prototype.trimStart = function trimStart(charType) {\n\t\t\tvar self = this;\n\t\t\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\t\tthis.str = this.str.replace(rx, function (leading) {\n\t\t\t\tvar length = leading.length,\n\t\t\t\t i,\n\t\t\t\t chars = [],\n\t\t\t\t adjustmentStart = 0;\n\n\t\t\t\ti = length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tchars.push(self.locateOrigin(i));\n\t\t\t\t}\n\n\t\t\t\ti = chars.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tif (chars[i] !== null) {\n\t\t\t\t\t\tself.mappings[chars[i]] = -1;\n\t\t\t\t\t\tadjustmentStart += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tadjust(self.mappings, adjustmentStart, self.mappings.length, -length);\n\n\t\t\t\treturn '';\n\t\t\t});\n\n\t\t\treturn this;\n\t\t};\n\n\t\treturn MagicString;\n\t})();\n\n\tvar hasOwnProp = Object.prototype.hasOwnProperty;\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\n\tvar Bundle = (function () {\n\t\tfunction Bundle() {\n\t\t\tvar options = arguments[0] === undefined ? {} : arguments[0];\n\n\t\t\t_classCallCheck(this, Bundle);\n\n\t\t\tthis.intro = options.intro || '';\n\t\t\tthis.outro = options.outro || '';\n\t\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\n\t\t\tthis.sources = [];\n\n\t\t\tthis.uniqueSources = [];\n\t\t\tthis.uniqueSourceIndexByFilename = {};\n\t\t}\n\n\t\tBundle.prototype.addSource = function addSource(source) {\n\t\t\tif (source instanceof MagicString) {\n\t\t\t\treturn this.addSource({\n\t\t\t\t\tcontent: source,\n\t\t\t\t\tfilename: source.filename,\n\t\t\t\t\tseparator: this.separator\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof source !== 'object' || !source.content) {\n\t\t\t\tthrow new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n\t\t\t}\n\n\t\t\t['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n\t\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t\t});\n\n\t\t\tif (source.separator === undefined) {\n\t\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\t\tsource.separator = this.separator;\n\t\t\t}\n\n\t\t\tif (source.filename) {\n\t\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t\t} else {\n\t\t\t\t\tvar uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\t\tthrow new Error('Illegal source: same filename (' + source.filename + '), different contents');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.sources.push(source);\n\t\t\treturn this;\n\t\t};\n\n\t\tBundle.prototype.append = function append(str, options) {\n\t\t\tthis.addSource({\n\t\t\t\tcontent: new MagicString(str),\n\t\t\t\tseparator: options && options.separator || ''\n\t\t\t});\n\n\t\t\treturn this;\n\t\t};\n\n\t\tBundle.prototype.clone = function clone() {\n\t\t\tvar bundle = new Bundle({\n\t\t\t\tintro: this.intro,\n\t\t\t\toutro: this.outro,\n\t\t\t\tseparator: this.separator\n\t\t\t});\n\n\t\t\tthis.sources.forEach(function (source) {\n\t\t\t\tbundle.addSource({\n\t\t\t\t\tfilename: source.filename,\n\t\t\t\t\tcontent: source.content.clone(),\n\t\t\t\t\tseparator: source.separator\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn bundle;\n\t\t};\n\n\t\tBundle.prototype.generateMap = function generateMap(options) {\n\t\t\tvar _this = this;\n\n\t\t\tvar offsets = {};\n\n\t\t\tvar encoded = getSemis(this.intro) + this.sources.map(function (source, i) {\n\t\t\t\tvar prefix = i > 0 ? getSemis(source.separator) || ',' : '';\n\t\t\t\tvar mappings = undefined;\n\n\t\t\t\t// we don't bother encoding sources without a filename\n\t\t\t\tif (!source.filename) {\n\t\t\t\t\tmappings = getSemis(source.content.toString());\n\t\t\t\t} else {\n\t\t\t\t\tvar sourceIndex = _this.uniqueSourceIndexByFilename[source.filename];\n\t\t\t\t\tmappings = source.content.getMappings(options.hires, sourceIndex, offsets);\n\t\t\t\t}\n\n\t\t\t\treturn prefix + mappings;\n\t\t\t}).join('') + getSemis(this.outro);\n\n\t\t\treturn new SourceMap({\n\t\t\t\tfile: options.file ? options.file.split(/[\\/\\\\]/).pop() : null,\n\t\t\t\tsources: this.uniqueSources.map(function (source) {\n\t\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t\t}),\n\t\t\t\tsourcesContent: this.uniqueSources.map(function (source) {\n\t\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t\t}),\n\t\t\t\tnames: [],\n\t\t\t\tmappings: encoded\n\t\t\t});\n\t\t};\n\n\t\tBundle.prototype.getIndentString = function getIndentString() {\n\t\t\tvar indentStringCounts = {};\n\n\t\t\tthis.sources.forEach(function (source) {\n\t\t\t\tvar indentStr = source.content.indentStr;\n\n\t\t\t\tif (indentStr === null) return;\n\n\t\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\t\tindentStringCounts[indentStr] += 1;\n\t\t\t});\n\n\t\t\treturn Object.keys(indentStringCounts).sort(function (a, b) {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t';\n\t\t};\n\n\t\tBundle.prototype.indent = function indent(indentStr) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (!arguments.length) {\n\t\t\t\tindentStr = this.getIndentString();\n\t\t\t}\n\n\t\t\tif (indentStr === '') return this; // noop\n\n\t\t\tvar trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\t\tthis.sources.forEach(function (source, i) {\n\t\t\t\tvar separator = source.separator !== undefined ? source.separator : _this2.separator;\n\t\t\t\tvar indentStart = trailingNewline || i > 0 && /\\r?\\n$/.test(separator);\n\n\t\t\t\tsource.content.indent(indentStr, {\n\t\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\t\tindentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t\t});\n\n\t\t\t\ttrailingNewline = source.content.str.slice(0, -1) === '\\n';\n\t\t\t});\n\n\t\t\tif (this.intro) {\n\t\t\t\tthis.intro = indentStr + this.intro.replace(/^[^\\n]/gm, function (match, index) {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.outro = this.outro.replace(/^[^\\n]/gm, indentStr + '$&');\n\n\t\t\treturn this;\n\t\t};\n\n\t\tBundle.prototype.prepend = function prepend(str) {\n\t\t\tthis.intro = str + this.intro;\n\t\t\treturn this;\n\t\t};\n\n\t\tBundle.prototype.toString = function toString() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar body = this.sources.map(function (source, i) {\n\t\t\t\tvar separator = source.separator !== undefined ? source.separator : _this3.separator;\n\t\t\t\tvar str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t}).join('');\n\n\t\t\treturn this.intro + body + this.outro;\n\t\t};\n\n\t\tBundle.prototype.trimLines = function trimLines() {\n\t\t\treturn this.trim('[\\\\r\\\\n]');\n\t\t};\n\n\t\tBundle.prototype.trim = function trim(charType) {\n\t\t\treturn this.trimStart(charType).trimEnd(charType);\n\t\t};\n\n\t\tBundle.prototype.trimStart = function trimStart(charType) {\n\t\t\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\t\tif (!this.intro) {\n\t\t\t\tvar source = undefined; // TODO put inside loop if safe\n\t\t\t\tvar i = 0;\n\n\t\t\t\tdo {\n\t\t\t\t\tsource = this.sources[i];\n\n\t\t\t\t\tif (!source) {\n\t\t\t\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tsource.content.trimStart();\n\t\t\t\t\ti += 1;\n\t\t\t\t} while (source.content.str === '');\n\t\t\t}\n\n\t\t\treturn this;\n\t\t};\n\n\t\tBundle.prototype.trimEnd = function trimEnd(charType) {\n\t\t\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\n\t\t\tif (!this.outro) {\n\t\t\t\tvar source = undefined;\n\t\t\t\tvar i = this.sources.length - 1;\n\n\t\t\t\tdo {\n\t\t\t\t\tsource = this.sources[i];\n\n\t\t\t\t\tif (!source) {\n\t\t\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tsource.content.trimEnd(charType);\n\t\t\t\t\ti -= 1;\n\t\t\t\t} while (source.content.str === '');\n\t\t\t}\n\n\t\t\treturn this;\n\t\t};\n\n\t\treturn Bundle;\n\t})();\n\n\tMagicString.Bundle = Bundle;\n\n\tvar index = MagicString;\n\n\treturn index;\n\n}));","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\n// TODO(shtylman)\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\n/**\n * isArray\n */\n\nvar isArray = Array.isArray;\n\n/**\n * toString\n */\n\nvar str = Object.prototype.toString;\n\n/**\n * Whether or not the given `val`\n * is an array.\n *\n * example:\n *\n * isArray([]);\n * // > true\n * isArray(arguments);\n * // > false\n * isArray('');\n * // > false\n *\n * @param {mixed} val\n * @return {bool}\n */\n\nmodule.exports = isArray || function (val) {\n return !! val && '[object Array]' == str.call(val);\n};\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('is-array')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Note:\n *\n * - Implementation must support adding new properties to `Uint8Array` instances.\n * Firefox 4-29 lacked support, fixed in Firefox 30+.\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n *\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will\n * get the Object implementation, which is slower but will work correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = (function () {\n function Foo () {}\n try {\n var buf = new ArrayBuffer(0)\n var arr = new Uint8Array(buf)\n arr.foo = function () { return 42 }\n arr.constructor = Foo\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Foo && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n})()\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n this.length = 0\n this.parent = undefined\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n } else if (list.length === 1) {\n return list[0]\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\n// pre-set for values that may exist in the future\nBuffer.prototype.length = undefined\nBuffer.prototype.parent = undefined\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` will be removed in Node 0.13+\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` will be removed in Node 0.13+\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n var res = ''\n var tmp = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n if (buf[i] <= 0x7F) {\n res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])\n tmp = ''\n } else {\n tmp += '%' + buf[i].toString(16)\n }\n }\n\n return res + decodeUtf8Char(tmp)\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = value\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = value\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = value\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = value\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = value\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = value\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = value\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated, will be removed in node 0.13+\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-z\\-]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n var i = 0\n\n for (; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (leadSurrogate) {\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n } else {\n // valid surrogate pair\n codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000\n leadSurrogate = null\n }\n } else {\n // no lead yet\n\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else {\n // valid lead\n leadSurrogate = codePoint\n continue\n }\n }\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = null\n }\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x200000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction decodeUtf8Char (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n return String.fromCharCode(0xFFFD) // UTF 8 invalid char\n }\n}\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.acorn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\n\"use strict\";\n\nexports.parse = parse;\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nexports.parseExpressionAt = parseExpressionAt;\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenize` export provides an interface to the tokenizer.\n\nexports.tokenizer = tokenizer;\nexports.__esModule = true;\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/marijnh/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\nvar _state = _dereq_(\"./state\");\n\nvar Parser = _state.Parser;\n\nvar _options = _dereq_(\"./options\");\n\nvar getOptions = _options.getOptions;\n\n_dereq_(\"./parseutil\");\n\n_dereq_(\"./statement\");\n\n_dereq_(\"./lval\");\n\n_dereq_(\"./expression\");\n\nexports.Parser = _state.Parser;\nexports.plugins = _state.plugins;\nexports.defaultOptions = _options.defaultOptions;\n\nvar _location = _dereq_(\"./location\");\n\nexports.SourceLocation = _location.SourceLocation;\nexports.getLineInfo = _location.getLineInfo;\nexports.Node = _dereq_(\"./node\").Node;\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nexports.TokenType = _tokentype.TokenType;\nexports.tokTypes = _tokentype.types;\n\nvar _tokencontext = _dereq_(\"./tokencontext\");\n\nexports.TokContext = _tokencontext.TokContext;\nexports.tokContexts = _tokencontext.types;\n\nvar _identifier = _dereq_(\"./identifier\");\n\nexports.isIdentifierChar = _identifier.isIdentifierChar;\nexports.isIdentifierStart = _identifier.isIdentifierStart;\nexports.Token = _dereq_(\"./tokenize\").Token;\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nexports.isNewLine = _whitespace.isNewLine;\nexports.lineBreak = _whitespace.lineBreak;\nexports.lineBreakG = _whitespace.lineBreakG;\nvar version = \"1.2.2\";exports.version = version;\n\nfunction parse(input, options) {\n var p = parser(options, input);\n var startPos = p.pos,\n startLoc = p.options.locations && p.curPosition();\n p.nextToken();\n return p.parseTopLevel(p.options.program || p.startNodeAt(startPos, startLoc));\n}\n\nfunction parseExpressionAt(input, pos, options) {\n var p = parser(options, input, pos);\n p.nextToken();\n return p.parseExpression();\n}\n\nfunction tokenizer(input, options) {\n return parser(options, input);\n}\n\nfunction parser(options, input) {\n return new Parser(getOptions(options), String(input));\n}\n\n},{\"./expression\":6,\"./identifier\":7,\"./location\":8,\"./lval\":9,\"./node\":10,\"./options\":11,\"./parseutil\":12,\"./state\":13,\"./statement\":14,\"./tokencontext\":15,\"./tokenize\":16,\"./tokentype\":17,\"./whitespace\":19}],2:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],3:[function(_dereq_,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n draining = true;\n var currentQueue;\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n var i = -1;\n while (++i < len) {\n currentQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\nprocess.nextTick = function (fun) {\n queue.push(fun);\n if (!draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\n// TODO(shtylman)\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],4:[function(_dereq_,module,exports){\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n},{}],5:[function(_dereq_,module,exports){\n(function (process,global){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = _dereq_('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = _dereq_('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n}).call(this,_dereq_('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./support/isBuffer\":4,\"_process\":3,\"inherits\":2}],6:[function(_dereq_,module,exports){\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\"use strict\";\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar reservedWords = _dereq_(\"./identifier\").reservedWords;\n\nvar has = _dereq_(\"./util\").has;\n\nvar pp = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function (prop, propHash) {\n if (this.options.ecmaVersion >= 6) return;\n var key = prop.key,\n name = undefined;\n switch (key.type) {\n case \"Identifier\":\n name = key.name;break;\n case \"Literal\":\n name = String(key.value);break;\n default:\n return;\n }\n var kind = prop.kind || \"init\",\n other = undefined;\n if (has(propHash, name)) {\n other = propHash[name];\n var isGetSet = kind !== \"init\";\n if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) this.raise(key.start, \"Redefinition of property\");\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function (noIn, refShorthandDefaultPos) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos);\n if (this.type === tt.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refShorthandDefaultPos));\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function (noIn, refShorthandDefaultPos, afterLeftParse) {\n if (this.type == tt._yield && this.inGenerator) return this.parseYield();\n\n var failOnShorthandAssign = undefined;\n if (!refShorthandDefaultPos) {\n refShorthandDefaultPos = { start: 0 };\n failOnShorthandAssign = true;\n } else {\n failOnShorthandAssign = false;\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n if (this.type == tt.parenL || this.type == tt.name) this.potentialArrowAt = this.start;\n var left = this.parseMaybeConditional(noIn, refShorthandDefaultPos);\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc);\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === tt.eq ? this.toAssignable(left) : left;\n refShorthandDefaultPos.start = 0; // reset because shorthand default was used correctly\n this.checkLVal(left);\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\");\n } else if (failOnShorthandAssign && refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n return left;\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function (noIn, refShorthandDefaultPos) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprOps(noIn, refShorthandDefaultPos);\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n if (this.eat(tt.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(tt.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n};\n\n// Start the precedence parser.\n\npp.parseExprOps = function (noIn, refShorthandDefaultPos) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refShorthandDefaultPos);\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n return this.parseExprOp(expr, startPos, startLoc, -1, noIn);\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop;\n if (Array.isArray(leftStartPos)) {\n if (this.options.locations && noIn === undefined) {\n // shift arguments to left by one\n noIn = minPrec;\n minPrec = leftStartLoc;\n // flatten leftStartPos\n leftStartLoc = leftStartPos[1];\n leftStartPos = leftStartPos[0];\n }\n }\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n var node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.left = left;\n node.operator = this.value;\n var op = this.type;\n this.next();\n var startPos = this.start,\n startLoc = this.startLoc;\n node.right = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec, noIn);\n this.finishNode(node, op === tt.logicalOR || op === tt.logicalAND ? \"LogicalExpression\" : \"BinaryExpression\");\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);\n }\n }\n return left;\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function (refShorthandDefaultPos) {\n if (this.type.prefix) {\n var node = this.startNode(),\n update = this.type === tt.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary();\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) this.unexpected(refShorthandDefaultPos.start);\n if (update) this.checkLVal(node.argument);else if (this.strict && node.operator === \"delete\" && node.argument.type === \"Identifier\") this.raise(node.start, \"Deleting local variable in strict mode\");\n return this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprSubscripts(refShorthandDefaultPos);\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.prefix = false;\n node.argument = expr;\n this.checkLVal(expr);\n this.next();\n expr = this.finishNode(node, \"UpdateExpression\");\n }\n return expr;\n};\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function (refShorthandDefaultPos) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprAtom(refShorthandDefaultPos);\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n return this.parseSubscripts(expr, startPos, startLoc);\n};\n\npp.parseSubscripts = function (base, startPos, startLoc, noCalls) {\n if (Array.isArray(startPos)) {\n if (this.options.locations && noCalls === undefined) {\n // shift arguments to left by one\n noCalls = startLoc;\n // flatten startPos\n startLoc = startPos[1];\n startPos = startPos[0];\n }\n }\n for (;;) {\n if (this.eat(tt.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseIdent(true);\n node.computed = false;\n base = this.finishNode(node, \"MemberExpression\");\n } else if (this.eat(tt.bracketL)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseExpression();\n node.computed = true;\n this.expect(tt.bracketR);\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(tt.parenL)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseExprList(tt.parenR, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (this.type === tt.backQuote) {\n var node = this.startNodeAt(startPos, startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate();\n base = this.finishNode(node, \"TaggedTemplateExpression\");\n } else {\n return base;\n }\n }\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function (refShorthandDefaultPos) {\n var node = undefined,\n canBeArrow = this.potentialArrowAt == this.start;\n switch (this.type) {\n case tt._this:\n case tt._super:\n var type = this.type === tt._this ? \"ThisExpression\" : \"Super\";\n node = this.startNode();\n this.next();\n return this.finishNode(node, type);\n\n case tt._yield:\n if (this.inGenerator) this.unexpected();\n\n case tt.name:\n var startPos = this.start,\n startLoc = this.startLoc;\n var id = this.parseIdent(this.type !== tt.name);\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id]);\n return id;\n\n case tt.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = { pattern: value.pattern, flags: value.flags };\n return node;\n\n case tt.num:case tt.string:\n return this.parseLiteral(this.value);\n\n case tt._null:case tt._true:case tt._false:\n node = this.startNode();\n node.value = this.type === tt._null ? null : this.type === tt._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\");\n\n case tt.parenL:\n return this.parseParenAndDistinguishExpression(canBeArrow);\n\n case tt.bracketL:\n node = this.startNode();\n this.next();\n // check whether this is array comprehension or regular array\n if (this.options.ecmaVersion >= 7 && this.type === tt._for) {\n return this.parseComprehension(node, false);\n }\n node.elements = this.parseExprList(tt.bracketR, true, true, refShorthandDefaultPos);\n return this.finishNode(node, \"ArrayExpression\");\n\n case tt.braceL:\n return this.parseObj(false, refShorthandDefaultPos);\n\n case tt._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, false);\n\n case tt._class:\n return this.parseClass(this.startNode(), false);\n\n case tt._new:\n return this.parseNew();\n\n case tt.backQuote:\n return this.parseTemplate();\n\n default:\n this.unexpected();\n }\n};\n\npp.parseLiteral = function (value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n this.next();\n return this.finishNode(node, \"Literal\");\n};\n\npp.parseParenExpression = function () {\n this.expect(tt.parenL);\n var val = this.parseExpression();\n this.expect(tt.parenR);\n return val;\n};\n\npp.parseParenAndDistinguishExpression = function (canBeArrow) {\n var startPos = this.start,\n startLoc = this.startLoc,\n val = undefined;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n if (this.options.ecmaVersion >= 7 && this.type === tt._for) {\n return this.parseComprehension(this.startNodeAt(startPos, startLoc), true);\n }\n\n var innerStartPos = this.start,\n innerStartLoc = this.startLoc;\n var exprList = [],\n first = true;\n var refShorthandDefaultPos = { start: 0 },\n spreadStart = undefined,\n innerParenStart = undefined;\n while (this.type !== tt.parenR) {\n first ? first = false : this.expect(tt.comma);\n if (this.type === tt.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRest()));\n break;\n } else {\n if (this.type === tt.parenL && !innerParenStart) {\n innerParenStart = this.start;\n }\n exprList.push(this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem));\n }\n }\n var innerEndPos = this.start,\n innerEndLoc = this.startLoc;\n this.expect(tt.parenR);\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n if (innerParenStart) this.unexpected(innerParenStart);\n return this.parseParenArrowList(startPos, startLoc, exprList);\n }\n\n if (!exprList.length) this.unexpected(this.lastTokStart);\n if (spreadStart) this.unexpected(spreadStart);\n if (refShorthandDefaultPos.start) this.unexpected(refShorthandDefaultPos.start);\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\");\n } else {\n return val;\n }\n};\n\npp.parseParenItem = function (item) {\n return item;\n};\n\npp.parseParenArrowList = function (startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList);\n};\n\n// New's precedence is slightly tricky. It must allow its argument\n// to be a `[]` or dot subscript expression, but not a call — at\n// least, not without wrapping it in parentheses. Thus, it uses the\n\nvar empty = [];\n\npp.parseNew = function () {\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\") this.raise(node.property.start, \"The only valid meta property for new is new.target\");\n return this.finishNode(node, \"MetaProperty\");\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, false);else node.arguments = empty;\n return this.finishNode(node, \"NewExpression\");\n};\n\n// Parse template expression.\n\npp.parseTemplateElement = function () {\n var elem = this.startNode();\n elem.value = {\n raw: this.input.slice(this.start, this.end),\n cooked: this.value\n };\n this.next();\n elem.tail = this.type === tt.backQuote;\n return this.finishNode(elem, \"TemplateElement\");\n};\n\npp.parseTemplate = function () {\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement();\n node.quasis = [curElt];\n while (!curElt.tail) {\n this.expect(tt.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(tt.braceR);\n node.quasis.push(curElt = this.parseTemplateElement());\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\");\n};\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function (isPattern, refShorthandDefaultPos) {\n var node = this.startNode(),\n first = true,\n propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma);\n if (this.afterTrailingComma(tt.braceR)) break;\n } else first = false;\n\n var prop = this.startNode(),\n isGenerator = undefined,\n startPos = undefined,\n startLoc = undefined;\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refShorthandDefaultPos) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern) isGenerator = this.eat(tt.star);\n }\n this.parsePropertyName(prop);\n this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refShorthandDefaultPos);\n this.checkPropClash(prop, propHash);\n node.properties.push(this.finishNode(prop, \"Property\"));\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\");\n};\n\npp.parsePropertyValue = function (prop, isPattern, isGenerator, startPos, startLoc, refShorthandDefaultPos) {\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refShorthandDefaultPos);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected();\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator);\n } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" && (prop.key.name === \"get\" || prop.key.name === \"set\") && (this.type != tt.comma && this.type != tt.braceR)) {\n if (isGenerator || isPattern) this.unexpected();\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n prop.kind = \"init\";\n if (isPattern) {\n if (this.isKeyword(prop.key.name) || this.strict && (reservedWords.strictBind(prop.key.name) || reservedWords.strict(prop.key.name)) || !this.options.allowReserved && this.isReservedWord(prop.key.name)) this.raise(prop.key.start, \"Binding \" + prop.key.name);\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else if (this.type === tt.eq && refShorthandDefaultPos) {\n if (!refShorthandDefaultPos.start) refShorthandDefaultPos.start = this.start;\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else {\n prop.value = prop.key;\n }\n prop.shorthand = true;\n } else this.unexpected();\n};\n\npp.parsePropertyName = function (prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(tt.bracketR);\n return prop.key;\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true);\n};\n\n// Initialize empty function node.\n\npp.initFunction = function (node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) {\n node.generator = false;\n node.expression = false;\n }\n};\n\n// Parse object or class method.\n\npp.parseMethod = function (isGenerator) {\n var node = this.startNode();\n this.initFunction(node);\n this.expect(tt.parenL);\n node.params = this.parseBindingList(tt.parenR, false, false);\n var allowExpressionBody = undefined;\n if (this.options.ecmaVersion >= 6) {\n node.generator = isGenerator;\n allowExpressionBody = true;\n } else {\n allowExpressionBody = false;\n }\n this.parseFunctionBody(node, allowExpressionBody);\n return this.finishNode(node, \"FunctionExpression\");\n};\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function (node, params) {\n this.initFunction(node);\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true);\n return this.finishNode(node, \"ArrowFunctionExpression\");\n};\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function (node, allowExpression) {\n var isExpression = allowExpression && this.type !== tt.braceL;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n node.expression = true;\n } else {\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldInFunc = this.inFunction,\n oldInGen = this.inGenerator,\n oldLabels = this.labels;\n this.inFunction = true;this.inGenerator = node.generator;this.labels = [];\n node.body = this.parseBlock(true);\n node.expression = false;\n this.inFunction = oldInFunc;this.inGenerator = oldInGen;this.labels = oldLabels;\n }\n\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (this.strict || !isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) {\n var nameHash = {},\n oldStrict = this.strict;\n this.strict = true;\n if (node.id) this.checkLVal(node.id, true);\n for (var i = 0; i < node.params.length; i++) {\n this.checkLVal(node.params[i], true, nameHash);\n }this.strict = oldStrict;\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function (close, allowTrailingComma, allowEmpty, refShorthandDefaultPos) {\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(tt.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) break;\n } else first = false;\n\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null);\n } else {\n if (this.type === tt.ellipsis) elts.push(this.parseSpread(refShorthandDefaultPos));else elts.push(this.parseMaybeAssign(false, refShorthandDefaultPos));\n }\n }\n return elts;\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function (liberal) {\n var node = this.startNode();\n if (liberal && this.options.allowReserved == \"never\") liberal = false;\n if (this.type === tt.name) {\n if (!liberal && (!this.options.allowReserved && this.isReservedWord(this.value) || this.strict && reservedWords.strict(this.value) && (this.options.ecmaVersion >= 6 || this.input.slice(this.start, this.end).indexOf(\"\\\\\") == -1))) this.raise(this.start, \"The keyword '\" + this.value + \"' is reserved\");\n node.name = this.value;\n } else if (liberal && this.type.keyword) {\n node.name = this.type.keyword;\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"Identifier\");\n};\n\n// Parses yield expression inside generator.\n\npp.parseYield = function () {\n var node = this.startNode();\n this.next();\n if (this.type == tt.semi || this.canInsertSemicolon() || this.type != tt.star && !this.type.startsExpr) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(tt.star);\n node.argument = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"YieldExpression\");\n};\n\n// Parses array and generator comprehensions.\n\npp.parseComprehension = function (node, isGenerator) {\n node.blocks = [];\n while (this.type === tt._for) {\n var block = this.startNode();\n this.next();\n this.expect(tt.parenL);\n block.left = this.parseBindingAtom();\n this.checkLVal(block.left, true);\n this.expectContextual(\"of\");\n block.right = this.parseExpression();\n this.expect(tt.parenR);\n node.blocks.push(this.finishNode(block, \"ComprehensionBlock\"));\n }\n node.filter = this.eat(tt._if) ? this.parseParenExpression() : null;\n node.body = this.parseExpression();\n this.expect(isGenerator ? tt.parenR : tt.bracketR);\n node.generator = isGenerator;\n return this.finishNode(node, \"ComprehensionExpression\");\n};\n\n},{\"./identifier\":7,\"./state\":13,\"./tokentype\":17,\"./util\":18}],7:[function(_dereq_,module,exports){\n\n\n// Test whether a given character code starts an identifier.\n\n\"use strict\";\n\nexports.isIdentifierStart = isIdentifierStart;\n\n// Test whether a given character is part of an identifier.\n\nexports.isIdentifierChar = isIdentifierChar;\nexports.__esModule = true;\n// This is a trick taken from Esprima. It turns out that, on\n// non-Chrome browsers, to check whether a string is in a set, a\n// predicate containing a big ugly `switch` statement is faster than\n// a regular expression, and on Chrome the two are about on par.\n// This function uses `eval` (non-lexical) to produce such a\n// predicate from a space-separated string of words.\n//\n// It starts by sorting the words by length.\n\nfunction makePredicate(words) {\n words = words.split(\" \");\n var f = \"\",\n cats = [];\n out: for (var i = 0; i < words.length; ++i) {\n for (var j = 0; j < cats.length; ++j) {\n if (cats[j][0].length == words[i].length) {\n cats[j].push(words[i]);\n continue out;\n }\n }cats.push([words[i]]);\n }\n function compareTo(arr) {\n if (arr.length == 1) {\n return f += \"return str === \" + JSON.stringify(arr[0]) + \";\";\n }f += \"switch(str){\";\n for (var i = 0; i < arr.length; ++i) {\n f += \"case \" + JSON.stringify(arr[i]) + \":\";\n }f += \"return true}return false;\";\n }\n\n // When there are more than three length categories, an outer\n // switch first dispatches on the lengths, to save on comparisons.\n\n if (cats.length > 3) {\n cats.sort(function (a, b) {\n return b.length - a.length;\n });\n f += \"switch(str.length){\";\n for (var i = 0; i < cats.length; ++i) {\n var cat = cats[i];\n f += \"case \" + cat[0].length + \":\";\n compareTo(cat);\n }\n f += \"}\"\n\n // Otherwise, simply generate a flat `switch` statement.\n\n ;\n } else {\n compareTo(words);\n }\n return new Function(\"str\", f);\n}\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: makePredicate(\"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\"),\n 5: makePredicate(\"class enum extends super const export import\"),\n 6: makePredicate(\"enum await\"),\n strict: makePredicate(\"implements interface let package private protected public static yield\"),\n strictBind: makePredicate(\"eval arguments\")\n};\n\nexports.reservedWords = reservedWords;\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords = {\n 5: makePredicate(ecma5AndLessKeywords),\n 6: makePredicate(ecma5AndLessKeywords + \" let const class extends export import yield super\")\n};\n\nexports.keywords = keywords;\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `tools/generate-identifier-regex.js`.\n\nvar nonASCIIidentifierStartChars = \"ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ\";\nvar nonASCIIidentifierChars = \"‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏ᦰ-ᧀᧈᧉ᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷼-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︭︳︴﹍-﹏0-9_\";\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by tools/generate-identifier-regex.js\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 99, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 98, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 955, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 38, 17, 2, 24, 133, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 32, 4, 287, 47, 21, 1, 2, 0, 185, 46, 82, 47, 21, 0, 60, 42, 502, 63, 32, 0, 449, 56, 1288, 920, 104, 110, 2962, 1070, 13266, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 16481, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 1340, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 16355, 541];\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 16, 9, 83, 11, 168, 11, 6, 9, 8, 2, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 316, 19, 13, 9, 214, 6, 3, 8, 112, 16, 16, 9, 82, 12, 9, 9, 535, 9, 20855, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 4305, 6, 792618, 239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 65536;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) {\n return false;\n }pos += set[i + 1];\n if (pos >= code) {\n return true;\n }\n }\n}\nfunction isIdentifierStart(code, astral) {\n if (code < 65) {\n return code === 36;\n }if (code < 91) {\n return true;\n }if (code < 97) {\n return code === 95;\n }if (code < 123) {\n return true;\n }if (code <= 65535) {\n return code >= 170 && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }if (astral === false) {\n return false;\n }return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) {\n return code === 36;\n }if (code < 58) {\n return true;\n }if (code < 65) {\n return false;\n }if (code < 91) {\n return true;\n }if (code < 97) {\n return code === 95;\n }if (code < 123) {\n return true;\n }if (code <= 65535) {\n return code >= 170 && nonASCIIidentifier.test(String.fromCharCode(code));\n }if (astral === false) {\n return false;\n }return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\n},{}],8:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexports.getLineInfo = getLineInfo;\nexports.__esModule = true;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar lineBreakG = _dereq_(\"./whitespace\").lineBreakG;\n\nvar deprecate = _dereq_(\"util\").deprecate;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = exports.Position = (function () {\n function Position(line, col) {\n _classCallCheck(this, Position);\n\n this.line = line;\n this.column = col;\n }\n\n Position.prototype.offset = function offset(n) {\n return new Position(this.line, this.column + n);\n };\n\n return Position;\n})();\n\nvar SourceLocation = exports.SourceLocation = function SourceLocation(p, start, end) {\n _classCallCheck(this, SourceLocation);\n\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) this.source = p.sourceFile;\n};\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur;\n var match = lineBreakG.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n return new Position(line, offset - cur);\n }\n }\n}\n\nvar pp = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function (pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos;err.loc = loc;err.raisedAt = this.pos;\n throw err;\n};\n\npp.curPosition = function () {\n return new Position(this.curLine, this.pos - this.lineStart);\n};\n\npp.markPosition = function () {\n return this.options.locations ? [this.start, this.startLoc] : this.start;\n};\n\n},{\"./state\":13,\"./whitespace\":19,\"util\":5}],9:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar reservedWords = _dereq_(\"./identifier\").reservedWords;\n\nvar has = _dereq_(\"./util\").has;\n\nvar pp = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function (node, isBinding) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n for (var i = 0; i < node.properties.length; i++) {\n var prop = node.properties[i];\n if (prop.kind !== \"init\") this.raise(prop.key.start, \"Object pattern can't contain getter or setter\");\n this.toAssignable(prop.value, isBinding);\n }\n break;\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, isBinding);\n break;\n\n case \"AssignmentExpression\":\n if (node.operator === \"=\") {\n node.type = \"AssignmentPattern\";\n } else {\n this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\");\n }\n break;\n\n case \"ParenthesizedExpression\":\n node.expression = this.toAssignable(node.expression, isBinding);\n break;\n\n case \"MemberExpression\":\n if (!isBinding) break;\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n }\n return node;\n};\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function (exprList, isBinding) {\n var end = exprList.length;\n if (end) {\n var last = exprList[end - 1];\n if (last && last.type == \"RestElement\") {\n --end;\n } else if (last && last.type == \"SpreadElement\") {\n last.type = \"RestElement\";\n var arg = last.argument;\n this.toAssignable(arg, isBinding);\n if (arg.type !== \"Identifier\" && arg.type !== \"MemberExpression\" && arg.type !== \"ArrayPattern\") this.unexpected(arg.start);\n --end;\n }\n }\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) this.toAssignable(elt, isBinding);\n }\n return exprList;\n};\n\n// Parses spread element.\n\npp.parseSpread = function (refShorthandDefaultPos) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(refShorthandDefaultPos);\n return this.finishNode(node, \"SpreadElement\");\n};\n\npp.parseRest = function () {\n var node = this.startNode();\n this.next();\n node.argument = this.type === tt.name || this.type === tt.bracketL ? this.parseBindingAtom() : this.unexpected();\n return this.finishNode(node, \"RestElement\");\n};\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function () {\n if (this.options.ecmaVersion < 6) return this.parseIdent();\n switch (this.type) {\n case tt.name:\n return this.parseIdent();\n\n case tt.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(tt.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\");\n\n case tt.braceL:\n return this.parseObj(true);\n\n default:\n this.unexpected();\n }\n};\n\npp.parseBindingList = function (close, allowEmpty, allowTrailingComma) {\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (first) first = false;else this.expect(tt.comma);\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break;\n } else if (this.type === tt.ellipsis) {\n var rest = this.parseRest();\n this.parseBindingListItem(rest);\n elts.push(rest);\n this.expect(close);\n break;\n } else {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n elts.push(elem);\n }\n }\n return elts;\n};\n\npp.parseBindingListItem = function (param) {\n return param;\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function (startPos, startLoc, left) {\n if (Array.isArray(startPos)) {\n if (this.options.locations && noCalls === undefined) {\n // shift arguments to left by one\n left = startLoc;\n // flatten startPos\n startLoc = startPos[1];\n startPos = startPos[0];\n }\n }\n left = left || this.parseBindingAtom();\n if (!this.eat(tt.eq)) return left;\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = \"=\";\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\");\n};\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n\npp.checkLVal = function (expr, isBinding, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && (reservedWords.strictBind(expr.name) || reservedWords.strict(expr.name))) this.raise(expr.start, (isBinding ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\");\n if (checkClashes) {\n if (has(checkClashes, expr.name)) this.raise(expr.start, \"Argument name clash in strict mode\");\n checkClashes[expr.name] = true;\n }\n break;\n\n case \"MemberExpression\":\n if (isBinding) this.raise(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" member expression\");\n break;\n\n case \"ObjectPattern\":\n for (var i = 0; i < expr.properties.length; i++) {\n this.checkLVal(expr.properties[i].value, isBinding, checkClashes);\n }break;\n\n case \"ArrayPattern\":\n for (var i = 0; i < expr.elements.length; i++) {\n var elem = expr.elements[i];\n if (elem) this.checkLVal(elem, isBinding, checkClashes);\n }\n break;\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, isBinding, checkClashes);\n break;\n\n case \"RestElement\":\n this.checkLVal(expr.argument, isBinding, checkClashes);\n break;\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, isBinding, checkClashes);\n break;\n\n default:\n this.raise(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\n},{\"./identifier\":7,\"./state\":13,\"./tokentype\":17,\"./util\":18}],10:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nexports.__esModule = true;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar SourceLocation = _dereq_(\"./location\").SourceLocation;\n\n// Start an AST node, attaching a start offset.\n\nvar pp = Parser.prototype;\n\nvar Node = exports.Node = function Node() {\n _classCallCheck(this, Node);\n};\n\npp.startNode = function () {\n var node = new Node();\n node.start = this.start;\n if (this.options.locations) node.loc = new SourceLocation(this, this.startLoc);\n if (this.options.directSourceFile) node.sourceFile = this.options.directSourceFile;\n if (this.options.ranges) node.range = [this.start, 0];\n return node;\n};\n\npp.startNodeAt = function (pos, loc) {\n var node = new Node();\n if (Array.isArray(pos)) {\n if (this.options.locations && loc === undefined) {\n // flatten pos\n loc = pos[1];\n pos = pos[0];\n }\n }\n node.start = pos;\n if (this.options.locations) node.loc = new SourceLocation(this, loc);\n if (this.options.directSourceFile) node.sourceFile = this.options.directSourceFile;\n if (this.options.ranges) node.range = [pos, 0];\n return node;\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\npp.finishNode = function (node, type) {\n node.type = type;\n node.end = this.lastTokEnd;\n if (this.options.locations) node.loc.end = this.lastTokEndLoc;\n if (this.options.ranges) node.range[1] = this.lastTokEnd;\n return node;\n};\n\n// Finish node at given position\n\npp.finishNodeAt = function (node, type, pos, loc) {\n node.type = type;\n if (Array.isArray(pos)) {\n if (this.options.locations && loc === undefined) {\n // flatten pos\n loc = pos[1];\n pos = pos[0];\n }\n }\n node.end = pos;\n if (this.options.locations) node.loc.end = loc;\n if (this.options.ranges) node.range[1] = pos;\n return node;\n};\n\n},{\"./location\":8,\"./state\":13}],11:[function(_dereq_,module,exports){\n\n\n// Interpret and default an options object\n\n\"use strict\";\n\nexports.getOptions = getOptions;\nexports.__esModule = true;\n\nvar _util = _dereq_(\"./util\");\n\nvar has = _util.has;\nvar isArray = _util.isArray;\n\nvar SourceLocation = _dereq_(\"./location\").SourceLocation;\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must\n // be either 3, or 5, or 6. This influences support for strict\n // mode, the set of reserved words, support for getters and\n // setters and other features.\n ecmaVersion: 5,\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // th position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are not enforced. Disable\n // `allowReserved` to enforce them. When this option has the\n // value \"never\", reserved words and keywords can also not be\n // used as property names.\n allowReserved: true,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokenize() returns. Note that you are not\n // allowed to call the parser from the callback—that will\n // corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false,\n plugins: {}\n};exports.defaultOptions = defaultOptions;\n\nfunction getOptions(opts) {\n var options = {};\n for (var opt in defaultOptions) {\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt];\n }if (isArray(options.onToken)) {\n (function () {\n var tokens = options.onToken;\n options.onToken = function (token) {\n return tokens.push(token);\n };\n })();\n }\n if (isArray(options.onComment)) options.onComment = pushComment(options, options.onComment);\n\n return options;\n}\n\nfunction pushComment(options, array) {\n return function (block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations) comment.loc = new SourceLocation(this, startLoc, endLoc);\n if (options.ranges) comment.range = [start, end];\n array.push(comment);\n };\n}\n\n},{\"./location\":8,\"./util\":18}],12:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar lineBreak = _dereq_(\"./whitespace\").lineBreak;\n\nvar pp = Parser.prototype;\n\n// ## Parser utilities\n\n// Test whether a statement node is the string literal `\"use strict\"`.\n\npp.isUseStrict = function (stmt) {\n return this.options.ecmaVersion >= 5 && stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && stmt.expression.value === \"use strict\";\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function (type) {\n if (this.type === type) {\n this.next();\n return true;\n } else {\n return false;\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function (name) {\n return this.type === tt.name && this.value === name;\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function (name) {\n return this.value === name && this.eat(tt.name);\n};\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function (name) {\n if (!this.eatContextual(name)) this.unexpected();\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function () {\n return this.type === tt.eof || this.type === tt.braceR || lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n};\n\npp.insertSemicolon = function () {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon) this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc);\n return true;\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function () {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected();\n};\n\npp.afterTrailingComma = function (tokType) {\n if (this.type == tokType) {\n if (this.options.onTrailingComma) this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc);\n this.next();\n return true;\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function (type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp.unexpected = function (pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\n},{\"./state\":13,\"./tokentype\":17,\"./whitespace\":19}],13:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.Parser = Parser;\nexports.__esModule = true;\n\nvar _identifier = _dereq_(\"./identifier\");\n\nvar reservedWords = _identifier.reservedWords;\nvar keywords = _identifier.keywords;\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar lineBreak = _dereq_(\"./whitespace\").lineBreak;\n\nfunction Parser(options, input, startPos) {\n this.options = options;\n this.sourceFile = this.options.sourceFile || null;\n this.isKeyword = keywords[this.options.ecmaVersion >= 6 ? 6 : 5];\n this.isReservedWord = reservedWords[this.options.ecmaVersion];\n this.input = input;\n\n // Load plugins\n this.loadPlugins(this.options.plugins);\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = Math.max(0, this.input.lastIndexOf(\"\\n\", startPos));\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = null;\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.strict = this.inModule = this.options.sourceType === \"module\";\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n\n // Flags to track whether we are in a function, a generator.\n this.inFunction = this.inGenerator = false;\n // Labels in scope.\n this.labels = [];\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && this.options.allowHashBang && this.input.slice(0, 2) === \"#!\") this.skipLineComment(2);\n}\n\nParser.prototype.extend = function (name, f) {\n this[name] = f(this[name]);\n};\n\n// Registered plugins\n\nvar plugins = {};\n\nexports.plugins = plugins;\nParser.prototype.loadPlugins = function (plugins) {\n for (var _name in plugins) {\n var plugin = exports.plugins[_name];\n if (!plugin) throw new Error(\"Plugin '\" + _name + \"' not found\");\n plugin(this, plugins[_name]);\n }\n};\n\n},{\"./identifier\":7,\"./tokentype\":17,\"./whitespace\":19}],14:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar lineBreak = _dereq_(\"./whitespace\").lineBreak;\n\nvar pp = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function (node) {\n var first = true;\n if (!node.body) node.body = [];\n while (this.type !== tt.eof) {\n var stmt = this.parseStatement(true, true);\n node.body.push(stmt);\n if (first && this.isUseStrict(stmt)) this.setStrict(true);\n first = false;\n }\n this.next();\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType;\n }\n return this.finishNode(node, \"Program\");\n};\n\nvar loopLabel = { kind: \"loop\" },\n switchLabel = { kind: \"switch\" };\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function (declaration, topLevel) {\n var starttype = this.type,\n node = this.startNode();\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break:case tt._continue:\n return this.parseBreakContinueStatement(node, starttype.keyword);\n case tt._debugger:\n return this.parseDebuggerStatement(node);\n case tt._do:\n return this.parseDoStatement(node);\n case tt._for:\n return this.parseForStatement(node);\n case tt._function:\n if (!declaration && this.options.ecmaVersion >= 6) this.unexpected();\n return this.parseFunctionStatement(node);\n case tt._class:\n if (!declaration) this.unexpected();\n return this.parseClass(node, true);\n case tt._if:\n return this.parseIfStatement(node);\n case tt._return:\n return this.parseReturnStatement(node);\n case tt._switch:\n return this.parseSwitchStatement(node);\n case tt._throw:\n return this.parseThrowStatement(node);\n case tt._try:\n return this.parseTryStatement(node);\n case tt._let:case tt._const:\n if (!declaration) this.unexpected(); // NOTE: falls through to _var\n case tt._var:\n return this.parseVarStatement(node, starttype);\n case tt._while:\n return this.parseWhileStatement(node);\n case tt._with:\n return this.parseWithStatement(node);\n case tt.braceL:\n return this.parseBlock();\n case tt.semi:\n return this.parseEmptyStatement(node);\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel) this.raise(this.start, \"'import' and 'export' may only appear at the top level\");\n if (!this.inModule) this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\");\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node);\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n var maybeName = this.value,\n expr = this.parseExpression();\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon)) return this.parseLabeledStatement(node, maybeName, expr);else return this.parseExpressionStatement(node, expr);\n }\n};\n\npp.parseBreakContinueStatement = function (node, keyword) {\n var isBreak = keyword == \"break\";\n this.next();\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null;else if (this.type !== tt.name) this.unexpected();else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n for (var i = 0; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n};\n\npp.parseDebuggerStatement = function (node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n};\n\npp.parseDoStatement = function (node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n this.expect(tt._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6) this.eat(tt.semi);else this.semicolon();\n return this.finishNode(node, \"DoWhileStatement\");\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function (node) {\n this.next();\n this.labels.push(loopLabel);\n this.expect(tt.parenL);\n if (this.type === tt.semi) return this.parseFor(node, null);\n if (this.type === tt._var || this.type === tt._let || this.type === tt._const) {\n var _init = this.startNode(),\n varKind = this.type;\n this.next();\n this.parseVar(_init, true, varKind);\n this.finishNode(_init, \"VariableDeclaration\");\n if ((this.type === tt._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) && _init.declarations.length === 1 && !(varKind !== tt._var && _init.declarations[0].init)) return this.parseForIn(node, _init);\n return this.parseFor(node, _init);\n }\n var refShorthandDefaultPos = { start: 0 };\n var init = this.parseExpression(true, refShorthandDefaultPos);\n if (this.type === tt._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) {\n this.toAssignable(init);\n this.checkLVal(init);\n return this.parseForIn(node, init);\n } else if (refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n return this.parseFor(node, init);\n};\n\npp.parseFunctionStatement = function (node) {\n this.next();\n return this.parseFunction(node, true);\n};\n\npp.parseIfStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n node.consequent = this.parseStatement(false);\n node.alternate = this.eat(tt._else) ? this.parseStatement(false) : null;\n return this.finishNode(node, \"IfStatement\");\n};\n\npp.parseReturnStatement = function (node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction) this.raise(this.start, \"'return' outside of function\");\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null;else {\n node.argument = this.parseExpression();this.semicolon();\n }\n return this.finishNode(node, \"ReturnStatement\");\n};\n\npp.parseSwitchStatement = function (node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(tt.braceL);\n this.labels.push(switchLabel);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n for (var cur, sawDefault; this.type != tt.braceR;) {\n if (this.type === tt._case || this.type === tt._default) {\n var isCase = this.type === tt._case;\n if (cur) this.finishNode(cur, \"SwitchCase\");\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) this.raise(this.lastTokStart, \"Multiple default clauses\");\n sawDefault = true;\n cur.test = null;\n }\n this.expect(tt.colon);\n } else {\n if (!cur) this.unexpected();\n cur.consequent.push(this.parseStatement(true));\n }\n }\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n};\n\npp.parseThrowStatement = function (node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) this.raise(this.lastTokEnd, \"Illegal newline after throw\");\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\npp.parseTryStatement = function (node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === tt._catch) {\n var clause = this.startNode();\n this.next();\n this.expect(tt.parenL);\n clause.param = this.parseBindingAtom();\n this.checkLVal(clause.param, true);\n this.expect(tt.parenR);\n clause.guard = null;\n clause.body = this.parseBlock();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.guardedHandlers = empty;\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer) this.raise(node.start, \"Missing catch or finally clause\");\n return this.finishNode(node, \"TryStatement\");\n};\n\npp.parseVarStatement = function (node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n};\n\npp.parseWhileStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n};\n\npp.parseWithStatement = function (node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\");\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(false);\n return this.finishNode(node, \"WithStatement\");\n};\n\npp.parseEmptyStatement = function (node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n};\n\npp.parseLabeledStatement = function (node, maybeName, expr) {\n for (var i = 0; i < this.labels.length; ++i) {\n if (this.labels[i].name === maybeName) this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n }var kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null;\n this.labels.push({ name: maybeName, kind: kind });\n node.body = this.parseStatement(true);\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n};\n\npp.parseExpressionStatement = function (node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function (allowStrict) {\n var node = this.startNode(),\n first = true,\n oldStrict = undefined;\n node.body = [];\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n var stmt = this.parseStatement(true);\n node.body.push(stmt);\n if (first && allowStrict && this.isUseStrict(stmt)) {\n oldStrict = this.strict;\n this.setStrict(this.strict = true);\n }\n first = false;\n }\n if (oldStrict === false) this.setStrict(false);\n return this.finishNode(node, \"BlockStatement\");\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function (node, init) {\n node.init = init;\n this.expect(tt.semi);\n node.test = this.type === tt.semi ? null : this.parseExpression();\n this.expect(tt.semi);\n node.update = this.type === tt.parenR ? null : this.parseExpression();\n this.expect(tt.parenR);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function (node, init) {\n var type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\";\n this.next();\n node.left = init;\n node.right = this.parseExpression();\n this.expect(tt.parenR);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, type);\n};\n\n// Parse a list of variable declarations.\n\npp.parseVar = function (node, isFor, kind) {\n node.declarations = [];\n node.kind = kind.keyword;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl);\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (kind === tt._const && !(this.type === tt._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n this.unexpected();\n } else if (decl.id.type != \"Identifier\" && !(isFor && (this.type === tt._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(tt.comma)) break;\n }\n return node;\n};\n\npp.parseVarId = function (decl) {\n decl.id = this.parseBindingAtom();\n this.checkLVal(decl.id, true);\n};\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseFunction = function (node, isStatement, allowExpressionBody) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6) node.generator = this.eat(tt.star);\n if (isStatement || this.type === tt.name) node.id = this.parseIdent();\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody);\n return this.finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n};\n\npp.parseFunctionParams = function (node) {\n this.expect(tt.parenL);\n node.params = this.parseBindingList(tt.parenR, false, false);\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function (node, isStatement) {\n this.next();\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (this.eat(tt.semi)) continue;\n var method = this.startNode();\n var isGenerator = this.eat(tt.star);\n var isMaybeStatic = this.type === tt.name && this.value === \"static\";\n this.parsePropertyName(method);\n method[\"static\"] = isMaybeStatic && this.type !== tt.parenL;\n if (method[\"static\"]) {\n if (isGenerator) this.unexpected();\n isGenerator = this.eat(tt.star);\n this.parsePropertyName(method);\n }\n method.kind = \"method\";\n if (!method.computed) {\n var key = method.key;\n\n var isGetSet = false;\n if (!isGenerator && key.type === \"Identifier\" && this.type !== tt.parenL && (key.name === \"get\" || key.name === \"set\")) {\n isGetSet = true;\n method.kind = key.name;\n key = this.parsePropertyName(method);\n }\n if (!method[\"static\"] && (key.type === \"Identifier\" && key.name === \"constructor\" || key.type === \"Literal\" && key.value === \"constructor\")) {\n if (hadConstructor) this.raise(key.start, \"Duplicate constructor in the same class\");\n if (isGetSet) this.raise(key.start, \"Constructor can't have get/set modifier\");\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\");\n method.kind = \"constructor\";\n hadConstructor = true;\n }\n }\n this.parseClassMethod(classBody, method, isGenerator);\n }\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n};\n\npp.parseClassMethod = function (classBody, method, isGenerator) {\n method.value = this.parseMethod(isGenerator);\n classBody.body.push(this.finishNode(method, \"MethodDefinition\"));\n};\n\npp.parseClassId = function (node, isStatement) {\n node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null;\n};\n\npp.parseClassSuper = function (node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n};\n\n// Parses module export declaration.\n\npp.parseExport = function (node) {\n this.next();\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\");\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n if (this.eat(tt._default)) {\n // export default ...\n var expr = this.parseMaybeAssign();\n var needsSemi = true;\n if (expr.type == \"FunctionExpression\" || expr.type == \"ClassExpression\") {\n needsSemi = false;\n if (expr.id) {\n expr.type = expr.type == \"FunctionExpression\" ? \"FunctionDeclaration\" : \"ClassDeclaration\";\n }\n }\n node.declaration = expr;\n if (needsSemi) this.semicolon();\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(true);\n node.specifiers = [];\n node.source = null;\n } else {\n // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers();\n if (this.eatContextual(\"from\")) {\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected();\n } else {\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\");\n};\n\npp.shouldParseExportStatement = function () {\n return this.type.keyword;\n};\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function () {\n var nodes = [],\n first = true;\n // export { x, y as z } [from '...']\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma);\n if (this.afterTrailingComma(tt.braceR)) break;\n } else first = false;\n\n var node = this.startNode();\n node.local = this.parseIdent(this.type === tt._default);\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local;\n nodes.push(this.finishNode(node, \"ExportSpecifier\"));\n }\n return nodes;\n};\n\n// Parses import declaration.\n\npp.parseImport = function (node) {\n this.next();\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty;\n node.source = this.parseExprAtom();\n node.kind = \"\";\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n};\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function () {\n var nodes = [],\n first = true;\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"));\n if (!this.eat(tt.comma)) return nodes;\n }\n if (this.type === tt.star) {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"));\n return nodes;\n }\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma);\n if (this.afterTrailingComma(tt.braceR)) break;\n } else first = false;\n\n var node = this.startNode();\n node.imported = this.parseIdent(true);\n node.local = this.eatContextual(\"as\") ? this.parseIdent() : node.imported;\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportSpecifier\"));\n }\n return nodes;\n};\n\n},{\"./state\":13,\"./tokentype\":17,\"./whitespace\":19}],15:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nexports.__esModule = true;\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar tt = _dereq_(\"./tokentype\").types;\n\nvar lineBreak = _dereq_(\"./whitespace\").lineBreak;\n\nvar TokContext = exports.TokContext = function TokContext(token, isExpr, preserveSpace, override) {\n _classCallCheck(this, TokContext);\n\n this.token = token;\n this.isExpr = isExpr;\n this.preserveSpace = preserveSpace;\n this.override = override;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", true),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) {\n return p.readTmplToken();\n }),\n f_expr: new TokContext(\"function\", true)\n};\n\nexports.types = types;\nvar pp = Parser.prototype;\n\npp.initialContext = function () {\n return [types.b_stat];\n};\n\npp.braceIsBlock = function (prevType) {\n var parent = undefined;\n if (prevType === tt.colon && (parent = this.curContext()).token == \"{\") return !parent.isExpr;\n if (prevType === tt._return) return lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof) return true;\n if (prevType == tt.braceL) return this.curContext() === types.b_stat;\n return !this.exprAllowed;\n};\n\npp.updateContext = function (prevType) {\n var update = undefined,\n type = this.type;\n if (type.keyword && prevType == tt.dot) this.exprAllowed = false;else if (update = type.updateContext) update.call(this, prevType);else this.exprAllowed = type.beforeExpr;\n};\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function () {\n if (this.context.length == 1) {\n this.exprAllowed = true;\n return;\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext() === types.f_expr) {\n this.context.pop();\n this.exprAllowed = false;\n } else if (out === types.b_tmpl) {\n this.exprAllowed = true;\n } else {\n this.exprAllowed = !out.isExpr;\n }\n};\n\ntt.braceL.updateContext = function (prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntt.dollarBraceL.updateContext = function () {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntt.parenL.updateContext = function (prevType) {\n var statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntt.incDec.updateContext = function () {};\n\ntt._function.updateContext = function () {\n if (this.curContext() !== types.b_stat) this.context.push(types.f_expr);\n this.exprAllowed = false;\n};\n\ntt.backQuote.updateContext = function () {\n if (this.curContext() === types.q_tmpl) this.context.pop();else this.context.push(types.q_tmpl);\n this.exprAllowed = false;\n};\n\n// tokExprAllowed stays unchanged\n\n},{\"./state\":13,\"./tokentype\":17,\"./whitespace\":19}],16:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nexports.__esModule = true;\n\nvar _identifier = _dereq_(\"./identifier\");\n\nvar isIdentifierStart = _identifier.isIdentifierStart;\nvar isIdentifierChar = _identifier.isIdentifierChar;\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar tt = _tokentype.types;\nvar keywordTypes = _tokentype.keywords;\n\nvar Parser = _dereq_(\"./state\").Parser;\n\nvar SourceLocation = _dereq_(\"./location\").SourceLocation;\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nvar lineBreak = _whitespace.lineBreak;\nvar lineBreakG = _whitespace.lineBreakG;\nvar isNewLine = _whitespace.isNewLine;\nvar nonASCIIwhitespace = _whitespace.nonASCIIwhitespace;\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = exports.Token = function Token(p) {\n _classCallCheck(this, Token);\n\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations) this.loc = new SourceLocation(p, p.startLoc, p.endLoc);\n if (p.options.ranges) this.range = [p.start, p.end];\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Are we running under Rhino?\nvar isRhino = typeof Packages !== \"undefined\";\n\n// Move to the next token\n\npp.next = function () {\n if (this.options.onToken) this.options.onToken(new Token(this));\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function () {\n this.next();\n return new Token(this);\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\") pp[Symbol.iterator] = function () {\n var self = this;\n return { next: function next() {\n var token = self.getToken();\n return {\n done: token.type === tt.eof,\n value: token\n };\n } };\n};\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.setStrict = function (strict) {\n this.strict = strict;\n if (this.type !== tt.num && this.type !== tt.string) return;\n this.pos = this.start;\n if (this.options.locations) {\n while (this.pos < this.lineStart) {\n this.lineStart = this.input.lastIndexOf(\"\\n\", this.lineStart - 2) + 1;\n --this.curLine;\n }\n }\n this.nextToken();\n};\n\npp.curContext = function () {\n return this.context[this.context.length - 1];\n};\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function () {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) this.skipSpace();\n\n this.start = this.pos;\n if (this.options.locations) this.startLoc = this.curPosition();\n if (this.pos >= this.input.length) return this.finishToken(tt.eof);\n\n if (curContext.override) return curContext.override(this);else this.readToken(this.fullCharCodeAtPos());\n};\n\npp.readToken = function (code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */) return this.readWord();\n\n return this.getTokenFromCode(code);\n};\n\npp.fullCharCodeAtPos = function () {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 55295 || code >= 57344) return code;\n var next = this.input.charCodeAt(this.pos + 1);\n return (code << 10) + next - 56613888;\n};\n\npp.skipBlockComment = function () {\n var startLoc = this.options.onComment && this.options.locations && this.curPosition();\n var start = this.pos,\n end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\");\n this.pos = end + 2;\n if (this.options.locations) {\n lineBreakG.lastIndex = start;\n var match = undefined;\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine;\n this.lineStart = match.index + match[0].length;\n }\n }\n if (this.options.onComment) this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, startLoc, this.options.locations && this.curPosition());\n};\n\npp.skipLineComment = function (startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.options.locations && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n ++this.pos;\n ch = this.input.charCodeAt(this.pos);\n }\n if (this.options.onComment) this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, startLoc, this.options.locations && this.curPosition());\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function () {\n while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 32) {\n // ' '\n ++this.pos;\n } else if (ch === 13) {\n ++this.pos;\n var next = this.input.charCodeAt(this.pos);\n if (next === 10) {\n ++this.pos;\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n } else if (ch === 10 || ch === 8232 || ch === 8233) {\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n } else if (ch > 8 && ch < 14) {\n ++this.pos;\n } else if (ch === 47) {\n // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 42) {\n // '*'\n this.skipBlockComment();\n } else if (next === 47) {\n // '/'\n this.skipLineComment(2);\n } else break;\n } else if (ch === 160) {\n // '\\xa0'\n ++this.pos;\n } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break;\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function (type, val) {\n this.end = this.pos;\n if (this.options.locations) this.endLoc = this.curPosition();\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function () {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) return this.readNumber(true);\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) {\n // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(tt.ellipsis);\n } else {\n ++this.pos;\n return this.finishToken(tt.dot);\n }\n};\n\npp.readToken_slash = function () {\n // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) {\n ++this.pos;return this.readRegexp();\n }\n if (next === 61) return this.finishOp(tt.assign, 2);\n return this.finishOp(tt.slash, 1);\n};\n\npp.readToken_mult_modulo = function (code) {\n // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) return this.finishOp(tt.assign, 2);\n return this.finishOp(code === 42 ? tt.star : tt.modulo, 1);\n};\n\npp.readToken_pipe_amp = function (code) {\n // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2);\n if (next === 61) return this.finishOp(tt.assign, 2);\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1);\n};\n\npp.readToken_caret = function () {\n // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) return this.finishOp(tt.assign, 2);\n return this.finishOp(tt.bitwiseXOR, 1);\n};\n\npp.readToken_plus_min = function (code) {\n // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken();\n }\n return this.finishOp(tt.incDec, 2);\n }\n if (next === 61) return this.finishOp(tt.assign, 2);\n return this.finishOp(tt.plusMin, 1);\n};\n\npp.readToken_lt_gt = function (code) {\n // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1);\n return this.finishOp(tt.bitShift, size);\n }\n if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && this.input.charCodeAt(this.pos + 3) == 45) {\n if (this.inModule) this.unexpected();\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken();\n }\n if (next === 61) size = this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2;\n return this.finishOp(tt.relational, size);\n};\n\npp.readToken_eq_excl = function (code) {\n // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2);\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) {\n // '=>'\n this.pos += 2;\n return this.finishToken(tt.arrow);\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1);\n};\n\npp.getTokenFromCode = function (code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46:\n // '.'\n return this.readToken_dot();\n\n // Punctuation tokens.\n case 40:\n ++this.pos;return this.finishToken(tt.parenL);\n case 41:\n ++this.pos;return this.finishToken(tt.parenR);\n case 59:\n ++this.pos;return this.finishToken(tt.semi);\n case 44:\n ++this.pos;return this.finishToken(tt.comma);\n case 91:\n ++this.pos;return this.finishToken(tt.bracketL);\n case 93:\n ++this.pos;return this.finishToken(tt.bracketR);\n case 123:\n ++this.pos;return this.finishToken(tt.braceL);\n case 125:\n ++this.pos;return this.finishToken(tt.braceR);\n case 58:\n ++this.pos;return this.finishToken(tt.colon);\n case 63:\n ++this.pos;return this.finishToken(tt.question);\n\n case 96:\n // '`'\n if (this.options.ecmaVersion < 6) break;\n ++this.pos;\n return this.finishToken(tt.backQuote);\n\n case 48:\n // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) return this.readRadixNumber(16); // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8); // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2); // '0b', '0B' - binary number\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:\n // 1-9\n return this.readNumber(false);\n\n // Quotes produce strings.\n case 34:case 39:\n // '\"', \"'\"\n return this.readString(code);\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47:\n // '/'\n return this.readToken_slash();\n\n case 37:case 42:\n // '%*'\n return this.readToken_mult_modulo(code);\n\n case 124:case 38:\n // '|&'\n return this.readToken_pipe_amp(code);\n\n case 94:\n // '^'\n return this.readToken_caret();\n\n case 43:case 45:\n // '+-'\n return this.readToken_plus_min(code);\n\n case 60:case 62:\n // '<>'\n return this.readToken_lt_gt(code);\n\n case 61:case 33:\n // '=!'\n return this.readToken_eq_excl(code);\n\n case 126:\n // '~'\n return this.finishOp(tt.prefix, 1);\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function (type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str);\n};\n\nvar regexpUnicodeSupport = false;\ntry {\n new RegExp(\"￿\", \"u\");regexpUnicodeSupport = true;\n} catch (e) {}\n\n// Parse a regular expression. Some context-awareness is necessary,\n// since a '/' inside a '[]' set does not end the expression.\n\npp.readRegexp = function () {\n var escaped = undefined,\n inClass = undefined,\n start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\");\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\");\n if (!escaped) {\n if (ch === \"[\") inClass = true;else if (ch === \"]\" && inClass) inClass = false;else if (ch === \"/\" && !inClass) break;\n escaped = ch === \"\\\\\";\n } else escaped = false;\n ++this.pos;\n }\n var content = this.input.slice(start, this.pos);\n ++this.pos;\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = this.readWord1();\n var tmp = content;\n if (mods) {\n var validFlags = /^[gmsiy]*$/;\n if (this.options.ecmaVersion >= 6) validFlags = /^[gmsiyu]*$/;\n if (!validFlags.test(mods)) this.raise(start, \"Invalid regular expression flag\");\n if (mods.indexOf(\"u\") >= 0 && !regexpUnicodeSupport) {\n // Replace each astral symbol and every Unicode escape sequence that\n // possibly represents an astral symbol or a paired surrogate with a\n // single ASCII symbol to avoid throwing on regular expressions that\n // are only valid in combination with the `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it would\n // be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u([a-fA-F0-9]{4})|\\\\u\\{([0-9a-fA-F]+)\\}|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, \"x\");\n }\n }\n // Detect invalid regular expressions.\n var value = null;\n // Rhino's regular expression parser is flaky and throws uncatchable exceptions,\n // so don't do detection if we are running under Rhino\n if (!isRhino) {\n try {\n new RegExp(tmp);\n } catch (e) {\n if (e instanceof SyntaxError) this.raise(start, \"Error parsing regular expression: \" + e.message);\n this.raise(e);\n }\n // Get a regular expression object for this pattern-flag pair, or `null` in\n // case the current environment doesn't support the flags it uses.\n try {\n value = new RegExp(content, mods);\n } catch (err) {}\n }\n return this.finishToken(tt.regexp, { pattern: content, flags: mods, value: value });\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function (radix, len) {\n var start = this.pos,\n total = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n var code = this.input.charCodeAt(this.pos),\n val = undefined;\n if (code >= 97) val = code - 97 + 10; // a\n else if (code >= 65) val = code - 65 + 10; // A\n else if (code >= 48 && code <= 57) val = code - 48; // 0-9\n else val = Infinity;\n if (val >= radix) break;\n ++this.pos;\n total = total * radix + val;\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null;\n\n return total;\n};\n\npp.readRadixNumber = function (radix) {\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix);\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\");\n return this.finishToken(tt.num, val);\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function (startsWithDot) {\n var start = this.pos,\n isFloat = false,\n octal = this.input.charCodeAt(this.pos) === 48;\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\");\n if (this.input.charCodeAt(this.pos) === 46) {\n ++this.pos;\n this.readInt(10);\n isFloat = true;\n }\n var next = this.input.charCodeAt(this.pos);\n if (next === 69 || next === 101) {\n // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) ++this.pos; // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\");\n isFloat = true;\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\");\n\n var str = this.input.slice(start, this.pos),\n val = undefined;\n if (isFloat) val = parseFloat(str);else if (!octal || str.length === 1) val = parseInt(str, 10);else if (/[89]/.test(str) || this.strict) this.raise(start, \"Invalid number\");else val = parseInt(str, 8);\n return this.finishToken(tt.num, val);\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function () {\n var ch = this.input.charCodeAt(this.pos),\n code = undefined;\n\n if (ch === 123) {\n if (this.options.ecmaVersion < 6) this.unexpected();\n ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 1114111) this.unexpected();\n } else {\n code = this.readHexChar(4);\n }\n return code;\n};\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 65535) {\n return String.fromCharCode(code);\n }return String.fromCharCode((code - 65536 >> 10) + 55296, (code - 65536 & 1023) + 56320);\n}\n\npp.readString = function (quote) {\n var out = \"\",\n chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\");\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) break;\n if (ch === 92) {\n // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar();\n chunkStart = this.pos;\n } else {\n if (isNewLine(ch)) this.raise(this.start, \"Unterminated string constant\");\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(tt.string, out);\n};\n\n// Reads template string tokens.\n\npp.readTmplToken = function () {\n var out = \"\",\n chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\");\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) {\n // '`', '${'\n if (this.pos === this.start && this.type === tt.template) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(tt.dollarBraceL);\n } else {\n ++this.pos;\n return this.finishToken(tt.backQuote);\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(tt.template, out);\n }\n if (ch === 92) {\n // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar();\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n ++this.pos;\n out += \"\\n\";\n } else {\n out += String.fromCharCode(ch);\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function () {\n var ch = this.input.charCodeAt(++this.pos);\n var octal = /^[0-7]+/.exec(this.input.slice(this.pos, this.pos + 3));\n if (octal) octal = octal[0];\n while (octal && parseInt(octal, 8) > 255) octal = octal.slice(0, -1);\n if (octal === \"0\") octal = null;\n ++this.pos;\n if (octal) {\n if (this.strict) this.raise(this.pos - 2, \"Octal literal in strict mode\");\n this.pos += octal.length - 1;\n return String.fromCharCode(parseInt(octal, 8));\n } else {\n switch (ch) {\n case 110:\n return \"\\n\"; // 'n' -> '\\n'\n case 114:\n return \"\\r\"; // 'r' -> '\\r'\n case 120:\n return String.fromCharCode(this.readHexChar(2)); // 'x'\n case 117:\n return codePointToString(this.readCodePoint()); // 'u'\n case 116:\n return \"\\t\"; // 't' -> '\\t'\n case 98:\n return \"\\b\"; // 'b' -> '\\b'\n case 118:\n return \"\\u000b\"; // 'v' -> '\\u000b'\n case 102:\n return \"\\f\"; // 'f' -> '\\f'\n case 48:\n return \"\\u0000\"; // 0 -> '\\0'\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos; // '\\r\\n'\n case 10:\n // ' \\n'\n if (this.options.locations) {\n this.lineStart = this.pos;++this.curLine;\n }\n return \"\";\n default:\n return String.fromCharCode(ch);\n }\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function (len) {\n var n = this.readInt(16, len);\n if (n === null) this.raise(this.start, \"Bad character escape sequence\");\n return n;\n};\n\n// Used to signal to callers of `readWord1` whether the word\n// contained any escape sequences. This is needed because words with\n// escape sequences must not be interpreted as keywords.\n\nvar containsEsc;\n\n// Read an identifier, and return it as a string. Sets `containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function () {\n containsEsc = false;\n var word = \"\",\n first = true,\n chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 65535 ? 1 : 2;\n } else if (ch === 92) {\n // \"\\\"\n containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) != 117) // \"u\"\n this.raise(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) this.raise(escStart, \"Invalid Unicode escape\");\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break;\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos);\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function () {\n var word = this.readWord1();\n var type = tt.name;\n if ((this.options.ecmaVersion >= 6 || !containsEsc) && this.isKeyword(word)) type = keywordTypes[word];\n return this.finishToken(type, word);\n};\n\n},{\"./identifier\":7,\"./location\":8,\"./state\":13,\"./tokentype\":17,\"./whitespace\":19}],17:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nexports.__esModule = true;\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = exports.TokenType = function TokenType(label) {\n var conf = arguments[1] === undefined ? {} : arguments[1];\n\n _classCallCheck(this, TokenType);\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, { beforeExpr: true, binop: prec });\n}\nvar beforeExpr = { beforeExpr: true },\n startsExpr = { startsExpr: true };\n\nvar types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", { beforeExpr: true, startsExpr: true }),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", { beforeExpr: true, startsExpr: true }),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", { beforeExpr: true, startsExpr: true }),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", { beforeExpr: true, startsExpr: true }),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", { beforeExpr: true, isAssign: true }),\n assign: new TokenType(\"_=\", { beforeExpr: true, isAssign: true }),\n incDec: new TokenType(\"++/--\", { prefix: true, postfix: true, startsExpr: true }),\n prefix: new TokenType(\"prefix\", { beforeExpr: true, prefix: true, startsExpr: true }),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=\", 6),\n relational: binop(\"</>\", 7),\n bitShift: binop(\"<</>>\", 8),\n plusMin: new TokenType(\"+/-\", { beforeExpr: true, binop: 9, prefix: true, startsExpr: true }),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10)\n};\n\nexports.types = types;\n// Map keyword names to token types.\n\nvar keywords = {};\n\nexports.keywords = keywords;\n// Succinct definitions of keyword token types\nfunction kw(name) {\n var options = arguments[1] === undefined ? {} : arguments[1];\n\n options.keyword = name;\n keywords[name] = types[\"_\" + name] = new TokenType(name, options);\n}\n\nkw(\"break\");\nkw(\"case\", beforeExpr);\nkw(\"catch\");\nkw(\"continue\");\nkw(\"debugger\");\nkw(\"default\");\nkw(\"do\", { isLoop: true });\nkw(\"else\", beforeExpr);\nkw(\"finally\");\nkw(\"for\", { isLoop: true });\nkw(\"function\", startsExpr);\nkw(\"if\");\nkw(\"return\", beforeExpr);\nkw(\"switch\");\nkw(\"throw\", beforeExpr);\nkw(\"try\");\nkw(\"var\");\nkw(\"let\");\nkw(\"const\");\nkw(\"while\", { isLoop: true });\nkw(\"with\");\nkw(\"new\", { beforeExpr: true, startsExpr: true });\nkw(\"this\", startsExpr);\nkw(\"super\", startsExpr);\nkw(\"class\");\nkw(\"extends\", beforeExpr);\nkw(\"export\");\nkw(\"import\");\nkw(\"yield\", { beforeExpr: true, startsExpr: true });\nkw(\"null\", startsExpr);\nkw(\"true\", startsExpr);\nkw(\"false\", startsExpr);\nkw(\"in\", { beforeExpr: true, binop: 7 });\nkw(\"instanceof\", { beforeExpr: true, binop: 7 });\nkw(\"typeof\", { beforeExpr: true, prefix: true, startsExpr: true });\nkw(\"void\", { beforeExpr: true, prefix: true, startsExpr: true });\nkw(\"delete\", { beforeExpr: true, prefix: true, startsExpr: true });\n\n},{}],18:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.isArray = isArray;\n\n// Checks if an object has a property.\n\nexports.has = has;\nexports.__esModule = true;\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n}\n\nfunction has(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\n\n},{}],19:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.isNewLine = isNewLine;\nexports.__esModule = true;\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nexports.lineBreak = lineBreak;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nexports.lineBreakG = lineBreakG;\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 8232 || code == 8233;\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\nexports.nonASCIIwhitespace = nonASCIIwhitespace;\n\n},{}]},{},[1])(1)\n});","'use strict';\n\nvar MagicString = require('magic-string');\nMagicString = 'default' in MagicString ? MagicString['default'] : MagicString;\nvar acorn = require('acorn');\n\nfunction readFileSync() {\n\tthrow new Error('Cannot use sander.readFileSync inside browser');\n}\n\nfunction writeFile() {\n\tthrow new Error('Cannot use sander.writeFile inside browser');\n}\n\nvar _Promise = window.Promise;\n\n\n// TODO does this all work on windows?\n\nvar absolutePath = /^(?:\\/|(?:[A-Za-z]:)?\\\\)/;\n\nfunction isAbsolute(path) {\n\treturn absolutePath.test(path);\n}\n\nfunction basename(path) {\n\treturn path.split(/(\\/|\\\\)/).pop();\n}\n\nfunction dirname(path) {\n\tvar match = /(\\/|\\\\)[^\\/\\\\]*$/.exec(path);\n\tif (!match) return '.';\n\n\tvar dir = path.slice(0, -match[0].length);\n\n\t// If `dir` is the empty string, we're at root.\n\treturn dir ? dir : '/';\n}\n\nfunction extname(path) {\n\tvar match = /\\.[^\\.]+$/.exec(path);\n\tif (!match) return '';\n\treturn match[0];\n}\n\nfunction resolve() {\n\tfor (var _len = arguments.length, paths = Array(_len), _key = 0; _key < _len; _key++) {\n\t\tpaths[_key] = arguments[_key];\n\t}\n\n\tvar resolvedParts = paths.shift().split(/[\\/\\\\]/);\n\n\tpaths.forEach(function (path) {\n\t\tif (isAbsolute(path)) {\n\t\t\tresolvedParts = path.split(/[\\/\\\\]/);\n\t\t} else {\n\t\t\tvar parts = path.split(/[\\/\\\\]/);\n\n\t\t\twhile (parts[0] && parts[0][0] === '.') {\n\t\t\t\tvar part = parts.shift();\n\t\t\t\tif (part === '..') {\n\t\t\t\t\tresolvedParts.pop();\n\t\t\t\t} else if (part !== '.') {\n\t\t\t\t\tthrow new Error('Unexpected path part (' + part + ')');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolvedParts.push.apply(resolvedParts, parts);\n\t\t}\n\t});\n\n\treturn resolvedParts.join('/'); // TODO windows...\n}\n\nvar keys = Object.keys;\n\nfunction blank() {\n\treturn Object.create(null);\n}\n\nfunction unixizePath(path) {\n return path.split(/[\\/\\\\]/).join(\"/\");\n}\n\nfunction getIndentString(magicString, options) {\n\tif (!('indent' in options) || options.indent === true) {\n\t\treturn magicString.getIndentString();\n\t}\n\n\treturn options.indent || '';\n}\n\nfunction badExports(option, keys) {\n\tthrow new Error('\\'' + option + '\\' was specified for options.exports, but entry module has following exports: ' + keys.join(', '));\n}\nfunction getExportMode(bundle, exportMode) {\n\tvar exportKeys = keys(bundle.entryModule.exports);\n\n\tif (exportMode === 'default') {\n\t\tif (exportKeys.length !== 1 || exportKeys[0] !== 'default') {\n\t\t\tbadExports('default', exportKeys);\n\t\t}\n\t} else if (exportMode === 'none' && exportKeys.length) {\n\t\tbadExports('none', exportKeys);\n\t}\n\n\tif (!exportMode || exportMode === 'auto') {\n\t\tif (exportKeys.length === 0) {\n\t\t\texportMode = 'none';\n\t\t} else if (exportKeys.length === 1 && exportKeys[0] === 'default') {\n\t\t\texportMode = 'default';\n\t\t} else {\n\t\t\texportMode = 'named';\n\t\t}\n\t}\n\n\tif (!/(?:default|named|none)/.test(exportMode)) {\n\t\tthrow new Error('options.exports must be \\'default\\', \\'named\\', \\'none\\', \\'auto\\', or left unspecified (defaults to \\'auto\\')');\n\t}\n\n\treturn exportMode;\n}\n\nfunction getInteropBlock(bundle) {\n\treturn bundle.externalModules.filter(function (module) {\n\t\treturn module.needsDefault && module.needsNamed;\n\t}).map(function (module) {\n\t\treturn \"var \" + module.name + \"__default = 'default' in \" + module.name + \" ? \" + module.name + \"['default'] : \" + module.name + \";\";\n\t}).join(\"\\n\");\n}\n\nfunction getName(x) {\n\treturn x.name;\n}\n\nfunction quoteId(x) {\n\treturn \"'\" + x.id + \"'\";\n}\n\nfunction req(x) {\n\treturn \"require('\" + x.id + \"')\";\n}\n\nfunction umd(bundle, magicString, _ref, options) {\n\tvar exportMode = _ref.exportMode;\n\tvar indentString = _ref.indentString;\n\n\tif (exportMode !== 'none' && !options.moduleName) {\n\t\tthrow new Error('You must supply options.moduleName for UMD bundles');\n\t}\n\n\tvar globalNames = options.globals || blank();\n\n\tvar amdDeps = bundle.externalModules.map(quoteId);\n\tvar cjsDeps = bundle.externalModules.map(req);\n\tvar globalDeps = bundle.externalModules.map(function (module) {\n\t\treturn 'global.' + (globalNames[module.id] || module.name);\n\t});\n\n\tvar args = bundle.externalModules.map(getName);\n\n\tif (exportMode === 'named') {\n\t\tamdDeps.unshift('\\'exports\\'');\n\t\tcjsDeps.unshift('exports');\n\t\tglobalDeps.unshift('(global.' + options.moduleName + ' = {})');\n\n\t\targs.unshift('exports');\n\t}\n\n\tvar amdParams = (options.moduleId ? '[\\'' + options.moduleId + '\\'], ' : '') + (amdDeps.length ? '[' + amdDeps.join(', ') + '], ' : '');\n\n\tvar cjsExport = exportMode === 'default' ? 'module.exports = ' : '';\n\tvar defaultExport = exportMode === 'default' ? 'global.' + options.moduleName + ' = ' : '';\n\n\tvar intro = ('(function (global, factory) {\\n\\t\\t\\ttypeof exports === \\'object\\' && typeof module !== \\'undefined\\' ? ' + cjsExport + 'factory(' + cjsDeps.join(', ') + ') :\\n\\t\\t\\ttypeof define === \\'function\\' && define.amd ? define(' + amdParams + 'factory) :\\n\\t\\t\\t' + defaultExport + 'factory(' + globalDeps + ');\\n\\t\\t}(this, function (' + args + ') { \\'use strict\\';\\n\\n\\t\\t').replace(/^\\t\\t/gm, '').replace(/^\\t/gm, magicString.getIndentString());\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tvar interopBlock = getInteropBlock(bundle);\n\tif (interopBlock) magicString.prepend(interopBlock + '\\n\\n');\n\n\tvar exports = bundle.entryModule.exports;\n\n\tvar exportBlock = undefined;\n\n\tif (exportMode === 'default') {\n\t\tvar canonicalName = bundle.entryModule.getCanonicalName('default');\n\t\texportBlock = 'return ' + canonicalName + ';';\n\t} else {\n\t\texportBlock = bundle.toExport.map(function (name) {\n\t\t\tvar canonicalName = bundle.entryModule.getCanonicalName(exports[name].localName);\n\t\t\treturn 'exports.' + name + ' = ' + canonicalName + ';';\n\t\t}).join('\\n');\n\t}\n\n\tif (exportBlock) {\n\t\tmagicString.append('\\n\\n' + exportBlock);\n\t}\n\n\treturn magicString.trim().indent(indentString).append('\\n\\n}));').prepend(intro);\n}\n\nfunction iife(bundle, magicString, _ref, options) {\n\tvar exportMode = _ref.exportMode;\n\tvar indentString = _ref.indentString;\n\n\tvar globalNames = options.globals || blank();\n\n\tvar dependencies = bundle.externalModules.map(function (module) {\n\t\treturn globalNames[module.id] || module.name;\n\t});\n\n\tvar args = bundle.externalModules.map(getName);\n\n\tif (exportMode !== 'none' && !options.moduleName) {\n\t\tthrow new Error('You must supply options.moduleName for IIFE bundles');\n\t}\n\n\tif (exportMode === 'named') {\n\t\tdependencies.unshift('(this.' + options.moduleName + ' = {})');\n\t\targs.unshift('exports');\n\t}\n\n\tvar intro = '(function (' + args + ') { \\'use strict\\';\\n\\n';\n\tvar outro = '\\n\\n})(' + dependencies + ');';\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tvar interopBlock = getInteropBlock(bundle);\n\tif (interopBlock) magicString.prepend(interopBlock + '\\n\\n');\n\n\tif (exportMode === 'default') {\n\t\tintro = 'var ' + options.moduleName + ' = ' + intro;\n\t\tmagicString.append('\\n\\nreturn ' + bundle.entryModule.getCanonicalName('default') + ';');\n\t}\n\n\t// TODO named exports\n\n\treturn magicString.indent(indentString).prepend(intro).append(outro);\n}\n\nfunction es6(bundle, magicString, _ref, options) {\n\tvar exportMode = _ref.exportMode;\n\n\tvar importBlock = bundle.externalModules.map(function (module) {\n\t\tvar specifiers = [];\n\n\t\tif (module.needsDefault) {\n\t\t\tspecifiers.push(module.importedByBundle.filter(function (declaration) {\n\t\t\t\treturn declaration.name === 'default';\n\t\t\t})[0].localName);\n\t\t}\n\n\t\tif (module.needsAll) {\n\t\t\tspecifiers.push('* as ' + module.importedByBundle.filter(function (declaration) {\n\t\t\t\treturn declaration.name === '*';\n\t\t\t})[0].localName);\n\t\t}\n\n\t\tif (module.needsNamed) {\n\t\t\tspecifiers.push('{ ' + module.importedByBundle.filter(function (declaration) {\n\t\t\t\treturn !/^(default|\\*)$/.test(declaration.name);\n\t\t\t}).map(function (_ref2) {\n\t\t\t\tvar name = _ref2.name;\n\t\t\t\tvar localName = _ref2.localName;\n\t\t\t\treturn name === localName ? name : name + ' as ' + localName;\n\t\t\t}).join(', ') + ' }');\n\t\t}\n\n\t\treturn specifiers.length ? 'import ' + specifiers.join(', ') + ' from \\'' + module.id + '\\';' : 'import \\'' + module.id + '\\';';\n\t}).join('\\n');\n\n\tif (importBlock) {\n\t\tmagicString.prepend(importBlock + '\\n\\n');\n\t}\n\n\tvar exports = bundle.entryModule.exports;\n\tvar exportBlock = keys(exports).map(function (exportedName) {\n\t\tvar specifier = exports[exportedName];\n\n\t\tvar canonicalName = bundle.entryModule.getCanonicalName(specifier.localName);\n\n\t\tif (exportedName === 'default') {\n\t\t\treturn 'export default ' + canonicalName + ';';\n\t\t}\n\n\t\treturn exportedName === canonicalName ? 'export { ' + exportedName + ' };' : 'export { ' + canonicalName + ' as ' + exportedName + ' };';\n\t}).join('\\n');\n\n\tif (exportBlock) {\n\t\tmagicString.append('\\n\\n' + exportBlock);\n\t}\n\n\treturn magicString.trim();\n}\n\nfunction cjs(bundle, magicString, _ref) {\n\tvar exportMode = _ref.exportMode;\n\n\tvar intro = '\\'use strict\\';\\n\\n';\n\n\t// TODO handle empty imports, once they're supported\n\tvar importBlock = bundle.externalModules.map(function (module) {\n\t\tvar requireStatement = 'var ' + module.name + ' = require(\\'' + module.id + '\\');';\n\n\t\tif (module.needsDefault) {\n\t\t\trequireStatement += '\\n' + (module.needsNamed ? 'var ' + module.name + '__default = ' : module.name + ' = ') + ('\\'default\\' in ' + module.name + ' ? ' + module.name + '[\\'default\\'] : ' + module.name + ';');\n\t\t}\n\n\t\treturn requireStatement;\n\t}).join('\\n');\n\n\tif (importBlock) {\n\t\tintro += importBlock + '\\n\\n';\n\t}\n\n\tmagicString.prepend(intro);\n\n\tvar exportBlock = undefined;\n\tif (exportMode === 'default' && bundle.entryModule.exports.default) {\n\t\texportBlock = 'module.exports = ' + bundle.entryModule.getCanonicalName('default') + ';';\n\t} else if (exportMode === 'named') {\n\t\texportBlock = bundle.toExport.map(function (key) {\n\t\t\tvar specifier = bundle.entryModule.exports[key];\n\t\t\tvar name = bundle.entryModule.getCanonicalName(specifier.localName);\n\n\t\t\treturn 'exports.' + key + ' = ' + name + ';';\n\t\t}).join('\\n');\n\t}\n\n\tif (exportBlock) {\n\t\tmagicString.append('\\n\\n' + exportBlock);\n\t}\n\n\treturn magicString;\n}\n\nfunction amd(bundle, magicString, _ref, options) {\n\tvar exportMode = _ref.exportMode;\n\tvar indentString = _ref.indentString;\n\n\tvar deps = bundle.externalModules.map(quoteId);\n\tvar args = bundle.externalModules.map(getName);\n\n\tif (exportMode === 'named') {\n\t\targs.unshift('exports');\n\t\tdeps.unshift('\\'exports\\'');\n\t}\n\n\tvar params = (options.moduleId ? '[\\'' + options.moduleId + '\\'], ' : '') + (deps.length ? '[' + deps.join(', ') + '], ' : '');\n\n\tvar intro = 'define(' + params + 'function (' + args.join(', ') + ') { \\'use strict\\';\\n\\n';\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tvar interopBlock = getInteropBlock(bundle);\n\tif (interopBlock) magicString.prepend(interopBlock + '\\n\\n');\n\n\tvar exports = bundle.entryModule.exports;\n\n\tvar exportBlock = undefined;\n\n\tif (exportMode === 'default') {\n\t\texportBlock = 'return ' + bundle.entryModule.getCanonicalName('default') + ';';\n\t} else {\n\t\texportBlock = bundle.toExport.map(function (name) {\n\t\t\treturn 'exports.' + name + ' = ' + exports[name].localName + ';';\n\t\t}).join('\\n');\n\t}\n\n\tif (exportBlock) magicString.append('\\n\\n' + exportBlock);\n\n\treturn magicString.indent(indentString).append('\\n\\n});').prepend(intro);\n}\n\nvar finalisers = { amd: amd, cjs: cjs, es6: es6, iife: iife, umd: umd };\n\nvar reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public'.split(' ');\nvar builtins = 'Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'.split(' ');\n\nvar blacklisted = blank();\nreservedWords.concat(builtins).forEach(function (word) {\n\treturn blacklisted[word] = true;\n});\nfunction makeLegalIdentifier(str) {\n\tstr = str.replace(/[^$_a-zA-Z0-9]/g, '_');\n\tif (/\\d/.test(str[0]) || blacklisted[str]) str = '_' + str;\n\n\treturn str;\n}\n\nvar shouldSkip = undefined;\nvar shouldAbort = undefined;\nfunction walk(ast, _ref) {\n\tvar enter = _ref.enter;\n\tvar leave = _ref.leave;\n\n\tshouldAbort = false;\n\tvisit(ast, null, enter, leave);\n}\n\nvar context = {\n\tskip: function () {\n\t\treturn shouldSkip = true;\n\t},\n\tabort: function () {\n\t\treturn shouldAbort = true;\n\t}\n};\n\nvar childKeys = blank();\n\nvar toString = Object.prototype.toString;\n\nfunction isArray(thing) {\n\treturn toString.call(thing) === '[object Array]';\n}\n\nfunction visit(node, parent, enter, leave) {\n\tif (!node || shouldAbort) return;\n\n\tif (enter) {\n\t\tshouldSkip = false;\n\t\tenter.call(context, node, parent);\n\t\tif (shouldSkip || shouldAbort) return;\n\t}\n\n\tvar keys = childKeys[node.type] || (childKeys[node.type] = Object.keys(node).filter(function (key) {\n\t\treturn typeof node[key] === 'object';\n\t}));\n\n\tvar key = undefined,\n\t value = undefined,\n\t i = undefined,\n\t j = undefined;\n\n\ti = keys.length;\n\twhile (i--) {\n\t\tkey = keys[i];\n\t\tvalue = node[key];\n\n\t\tif (isArray(value)) {\n\t\t\tj = value.length;\n\t\t\twhile (j--) {\n\t\t\t\tvisit(value[j], node, enter, leave);\n\t\t\t}\n\t\t} else if (value && value.type) {\n\t\t\tvisit(value, node, enter, leave);\n\t\t}\n\t}\n\n\tif (leave && !shouldAbort) {\n\t\tleave(node, parent);\n\t}\n}\n\nfunction sequence(arr, callback) {\n\tvar len = arr.length;\n\tvar results = new Array(len);\n\n\tvar promise = _Promise.resolve();\n\n\tfunction next(i) {\n\t\treturn promise.then(function () {\n\t\t\treturn callback(arr[i], i);\n\t\t}).then(function (result) {\n\t\t\treturn results[i] = result;\n\t\t});\n\t}\n\n\tvar i = undefined;\n\n\tfor (i = 0; i < len; i += 1) {\n\t\tpromise = next(i);\n\t}\n\n\treturn promise.then(function () {\n\t\treturn results;\n\t});\n}\n\nfunction first(arr, fail, callback) {\n\tvar len = arr.length;\n\n\tvar promise = _Promise.reject(fail);\n\n\tfunction next(i) {\n\t\treturn promise.catch(function () {\n\t\t\treturn callback(arr[i], i);\n\t\t});\n\t}\n\n\tvar i = undefined;\n\n\tfor (i = 0; i < len; i += 1) {\n\t\tpromise = next(i);\n\t}\n\n\treturn promise;\n}\n\nfunction getLocation(source, charIndex) {\n\tvar lines = source.split('\\n');\n\tvar len = lines.length;\n\n\tvar lineStart = 0;\n\tvar i = undefined;\n\n\tfor (i = 0; i < len; i += 1) {\n\t\tvar line = lines[i];\n\t\tvar lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif (lineEnd > charIndex) {\n\t\t\treturn { line: i + 1, column: charIndex - lineStart };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error('Could not determine location of character');\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar blockDeclarations = {\n\t'const': true,\n\t'let': true\n};\n\nvar Scope = (function () {\n\tfunction Scope(options) {\n\t\tvar _this = this;\n\n\t\tclassCallCheck(this, Scope);\n\n\t\toptions = options || {};\n\n\t\tthis.parent = options.parent;\n\t\tthis.depth = this.parent ? this.parent.depth + 1 : 0;\n\t\tthis.declarations = blank();\n\t\tthis.isBlockScope = !!options.block;\n\n\t\tif (options.params) {\n\t\t\toptions.params.forEach(function (param) {\n\t\t\t\t_this.declarations[param.name] = param;\n\t\t\t});\n\t\t}\n\t}\n\n\t// add ( name, isBlockDeclaration ) {\n\t// \tif ( !isBlockDeclaration && this.isBlockScope ) {\n\t// \t\t// it's a `var` or function declaration, and this\n\t// \t\t// is a block scope, so we need to go up\n\t// \t\tthis.parent.add( name, isBlockDeclaration );\n\t// \t} else {\n\t// \t\tthis.names.push( name );\n\t// \t}\n\t// }\n\n\tScope.prototype.addDeclaration = function addDeclaration(name, declaration) {\n\t\tvar isBlockDeclaration = declaration.type === 'VariableDeclaration' && blockDeclarations[declaration.kind];\n\n\t\tif (!isBlockDeclaration && this.isBlockScope) {\n\t\t\t// it's a `var` or function declaration, and this\n\t\t\t// is a block scope, so we need to go up\n\t\t\tthis.parent.addDeclaration(name, declaration);\n\t\t} else {\n\t\t\tthis.declarations[name] = declaration;\n\t\t}\n\t};\n\n\tScope.prototype.contains = function contains(name) {\n\t\treturn !!this.getDeclaration(name);\n\t};\n\n\tScope.prototype.findDefiningScope = function findDefiningScope(name) {\n\t\tif (!!this.declarations[name]) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\treturn this.parent.findDefiningScope(name);\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tScope.prototype.getDeclaration = function getDeclaration(name) {\n\t\treturn this.declarations[name] || this.parent && this.parent.getDeclaration(name);\n\t};\n\n\treturn Scope;\n})();\n\nfunction isIife(node, parent) {\n\treturn parent && parent.type === 'CallExpression' && node === parent.callee;\n}\n\nvar Statement = (function () {\n\tfunction Statement(node, module, start, end) {\n\t\tclassCallCheck(this, Statement);\n\n\t\tthis.node = node;\n\t\tthis.module = module;\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.next = null; // filled in later\n\n\t\tthis.scope = new Scope();\n\t\tthis.defines = blank();\n\t\tthis.modifies = blank();\n\t\tthis.dependsOn = blank();\n\t\tthis.stronglyDependsOn = blank();\n\n\t\tthis.isIncluded = false;\n\n\t\tthis.isImportDeclaration = node.type === 'ImportDeclaration';\n\t\tthis.isExportDeclaration = /^Export/.test(node.type);\n\t}\n\n\tStatement.prototype.analyse = function analyse() {\n\t\tvar _this = this;\n\n\t\tif (this.isImportDeclaration) return; // nothing to analyse\n\n\t\tvar scope = this.scope;\n\n\t\twalk(this.node, {\n\t\t\tenter: function (node, parent) {\n\t\t\t\tvar newScope = undefined;\n\n\t\t\t\tswitch (node.type) {\n\t\t\t\t\tcase 'FunctionExpression':\n\t\t\t\t\tcase 'FunctionDeclaration':\n\t\t\t\t\tcase 'ArrowFunctionExpression':\n\t\t\t\t\t\tif (node.type === 'FunctionDeclaration') {\n\t\t\t\t\t\t\tscope.addDeclaration(node.id.name, node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\tparams: node.params, // TODO rest params?\n\t\t\t\t\t\t\tblock: false\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// named function expressions - the name is considered\n\t\t\t\t\t\t// part of the function's scope\n\t\t\t\t\t\tif (node.type === 'FunctionExpression' && node.id) {\n\t\t\t\t\t\t\tnewScope.addDeclaration(node.id.name, node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BlockStatement':\n\t\t\t\t\t\tif (!/Function/.test(parent.type)) {\n\t\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\t\tblock: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CatchClause':\n\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\tparams: [node.param],\n\t\t\t\t\t\t\tblock: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'VariableDeclaration':\n\t\t\t\t\t\tnode.declarations.forEach(function (declarator) {\n\t\t\t\t\t\t\tscope.addDeclaration(declarator.id.name, node);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ClassDeclaration':\n\t\t\t\t\t\tscope.addDeclaration(node.id.name, node);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (newScope) {\n\t\t\t\t\tObject.defineProperty(node, '_scope', { value: newScope });\n\t\t\t\t\tscope = newScope;\n\t\t\t\t}\n\t\t\t},\n\t\t\tleave: function (node) {\n\t\t\t\tif (node._scope) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// This allows us to track whether we're looking at code that will\n\t\t// be executed immediately (either outside a function, or immediately\n\t\t// inside an IIFE), for the purposes of determining whether dependencies\n\t\t// are strong or weak. It's not bulletproof, since it wouldn't catch...\n\t\t//\n\t\t// var calledImmediately = function () {\n\t\t// doSomethingWith( strongDependency );\n\t\t// }\n\t\t// calledImmediately();\n\t\t//\n\t\t// ...but it's better than nothing\n\t\tvar depth = 0;\n\n\t\tif (!this.isImportDeclaration) {\n\t\t\twalk(this.node, {\n\t\t\t\tenter: function (node, parent) {\n\t\t\t\t\tif (node._scope) {\n\t\t\t\t\t\tif (!scope.isBlockScope && !isIife(node, parent)) depth += 1;\n\t\t\t\t\t\tscope = node._scope;\n\t\t\t\t\t}\n\n\t\t\t\t\t_this.checkForReads(scope, node, parent, !depth);\n\t\t\t\t\t_this.checkForWrites(scope, node);\n\t\t\t\t},\n\t\t\t\tleave: function (node, parent) {\n\t\t\t\t\tif (node._scope) {\n\t\t\t\t\t\tif (!scope.isBlockScope && !isIife(node, parent)) depth -= 1;\n\t\t\t\t\t\tscope = scope.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tkeys(scope.declarations).forEach(function (name) {\n\t\t\t_this.defines[name] = true;\n\t\t});\n\t};\n\n\tStatement.prototype.checkForReads = function checkForReads(scope, node, parent, strong) {\n\t\tif (node.type === 'Identifier') {\n\t\t\t// disregard the `bar` in `foo.bar` - these appear as Identifier nodes\n\t\t\tif (parent.type === 'MemberExpression' && !parent.computed && node !== parent.object) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// disregard the `bar` in { bar: foo }\n\t\t\tif (parent.type === 'Property' && node !== parent.value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\t\tif (parent.type === 'MethodDefinition') return;\n\n\t\t\tvar definingScope = scope.findDefiningScope(node.name);\n\n\t\t\tif ((!definingScope || definingScope.depth === 0) && !this.defines[node.name]) {\n\t\t\t\tthis.dependsOn[node.name] = true;\n\t\t\t\tif (strong) this.stronglyDependsOn[node.name] = true;\n\t\t\t}\n\t\t}\n\t};\n\n\tStatement.prototype.checkForWrites = function checkForWrites(scope, node) {\n\t\tvar _this2 = this;\n\n\t\tvar addNode = function (node, isAssignment) {\n\t\t\tvar depth = 0; // determine whether we're illegally modifying a binding or namespace\n\n\t\t\twhile (node.type === 'MemberExpression') {\n\t\t\t\tnode = node.object;\n\t\t\t\tdepth += 1;\n\t\t\t}\n\n\t\t\t// disallow assignments/updates to imported bindings and namespaces\n\t\t\tif (isAssignment) {\n\t\t\t\tvar importSpecifier = _this2.module.imports[node.name];\n\n\t\t\t\tif (importSpecifier && !scope.contains(node.name)) {\n\t\t\t\t\tvar minDepth = importSpecifier.name === '*' ? 2 : // cannot do e.g. `namespace.foo = bar`\n\t\t\t\t\t1; // cannot do e.g. `foo = bar`, but `foo.bar = bar` is fine\n\n\t\t\t\t\tif (depth < minDepth) {\n\t\t\t\t\t\tvar err = new Error('Illegal reassignment to import \\'' + node.name + '\\'');\n\t\t\t\t\t\terr.file = _this2.module.id;\n\t\t\t\t\t\terr.loc = getLocation(_this2.module.magicString.toString(), node.start);\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// special case = `export default foo; foo += 1;` - we'll\n\t\t\t\t// need to assign a new variable so that the exported\n\t\t\t\t// value is not updated by the second statement\n\t\t\t\tif (_this2.module.exports.default && depth === 0 && _this2.module.exports.default.identifier === node.name) {\n\t\t\t\t\t// but only if this is a) inside a function body or\n\t\t\t\t\t// b) after the export declaration\n\t\t\t\t\tif (!!scope.parent || node.start > _this2.module.exports.default.statement.node.start) {\n\t\t\t\t\t\t_this2.module.exports.default.isModified = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (node.type === 'Identifier') {\n\t\t\t\t_this2.modifies[node.name] = true;\n\t\t\t}\n\t\t};\n\n\t\tif (node.type === 'AssignmentExpression') {\n\t\t\taddNode(node.left, true);\n\t\t} else if (node.type === 'UpdateExpression') {\n\t\t\taddNode(node.argument, true);\n\t\t} else if (node.type === 'CallExpression') {\n\t\t\tnode.arguments.forEach(function (arg) {\n\t\t\t\treturn addNode(arg, false);\n\t\t\t});\n\n\t\t\t// `foo.bar()` is assumed to mutate foo\n\t\t\tif (node.callee.type === 'MemberExpression') {\n\t\t\t\taddNode(node.callee);\n\t\t\t}\n\t\t}\n\t};\n\n\tStatement.prototype.mark = function mark() {\n\t\tvar _this3 = this;\n\n\t\tif (this.isIncluded) return; // prevent infinite loops\n\t\tthis.isIncluded = true;\n\n\t\tvar dependencies = Object.keys(this.dependsOn);\n\n\t\treturn sequence(dependencies, function (name) {\n\t\t\tif (_this3.defines[name]) return; // TODO maybe exclude from `this.dependsOn` in the first place?\n\t\t\treturn _this3.module.mark(name);\n\t\t});\n\t};\n\n\tStatement.prototype.replaceIdentifiers = function replaceIdentifiers(magicString, names, bundleExports) {\n\t\tvar replacementStack = [names];\n\t\tvar nameList = keys(names);\n\n\t\tvar deshadowList = [];\n\t\tnameList.forEach(function (name) {\n\t\t\tvar replacement = names[name];\n\t\t\tdeshadowList.push(replacement.split('.')[0]);\n\t\t});\n\n\t\tvar topLevel = true;\n\t\tvar depth = 0;\n\n\t\twalk(this.node, {\n\t\t\tenter: function (node, parent) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tif (node._skip) return this.skip();\n\n\t\t\t\tif (/^Function/.test(node.type)) depth += 1;\n\n\t\t\t\t// `this` is undefined at the top level of ES6 modules\n\t\t\t\tif (node.type === 'ThisExpression' && depth === 0) {\n\t\t\t\t\tmagicString.overwrite(node.start, node.end, 'undefined');\n\t\t\t\t}\n\n\t\t\t\t// special case - variable declarations that need to be rewritten\n\t\t\t\t// as bundle exports\n\t\t\t\tif (topLevel) {\n\t\t\t\t\tif (node.type === 'VariableDeclaration') {\n\t\t\t\t\t\t// if this contains a single declarator, and it's one that\n\t\t\t\t\t\t// needs to be rewritten, we replace the whole lot\n\t\t\t\t\t\tvar _name = node.declarations[0].id.name;\n\t\t\t\t\t\tif (node.declarations.length === 1 && bundleExports[_name]) {\n\t\t\t\t\t\t\tmagicString.overwrite(node.start, node.declarations[0].id.end, bundleExports[_name]);\n\t\t\t\t\t\t\tnode.declarations[0].id._skip = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// otherwise, we insert the `exports.foo = foo` after the declaration\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar exportInitialisers = node.declarations.map(function (declarator) {\n\t\t\t\t\t\t\t\treturn declarator.id.name;\n\t\t\t\t\t\t\t}).filter(function (name) {\n\t\t\t\t\t\t\t\treturn !!bundleExports[name];\n\t\t\t\t\t\t\t}).map(function (name) {\n\t\t\t\t\t\t\t\treturn '\\n' + bundleExports[name] + ' = ' + name + ';';\n\t\t\t\t\t\t\t}).join('');\n\n\t\t\t\t\t\t\tif (exportInitialisers) {\n\t\t\t\t\t\t\t\t// TODO clean this up\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tmagicString.insert(node.end, exportInitialisers);\n\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\tmagicString.append(exportInitialisers);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar scope = node._scope;\n\n\t\t\t\tif (scope) {\n\t\t\t\t\tvar _ret = (function () {\n\t\t\t\t\t\ttopLevel = false;\n\n\t\t\t\t\t\tvar newNames = blank();\n\t\t\t\t\t\tvar hasReplacements = undefined;\n\n\t\t\t\t\t\t// special case = function foo ( foo ) {...}\n\t\t\t\t\t\tif (node.id && names[node.id.name] && scope.declarations[node.id.name]) {\n\t\t\t\t\t\t\tmagicString.overwrite(node.id.start, node.id.end, names[node.id.name]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tkeys(names).forEach(function (name) {\n\t\t\t\t\t\t\tif (!scope.declarations[name]) {\n\t\t\t\t\t\t\t\tnewNames[name] = names[name];\n\t\t\t\t\t\t\t\thasReplacements = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tdeshadowList.forEach(function (name) {\n\t\t\t\t\t\t\tif (~scope.declarations[name]) {\n\t\t\t\t\t\t\t\t// TODO is this right? no indexOf?\n\t\t\t\t\t\t\t\tnewNames[name] = name + '$$'; // TODO better mechanism\n\t\t\t\t\t\t\t\thasReplacements = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (!hasReplacements && depth > 0) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tv: _this4.skip()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnames = newNames;\n\t\t\t\t\t\treplacementStack.push(newNames);\n\t\t\t\t\t})();\n\n\t\t\t\t\tif (typeof _ret === 'object') return _ret.v;\n\t\t\t\t}\n\n\t\t\t\tif (node.type !== 'Identifier') return;\n\n\t\t\t\t// if there's no replacement, or it's the same, there's nothing more to do\n\t\t\t\tvar name = names[node.name];\n\t\t\t\tif (!name || name === node.name) return;\n\n\t\t\t\t// shorthand properties (`obj = { foo }`) need to be expanded\n\t\t\t\tif (parent.type === 'Property' && parent.shorthand) {\n\t\t\t\t\tmagicString.insert(node.end, ': ' + name);\n\t\t\t\t\tparent.key._skip = true;\n\t\t\t\t\tparent.value._skip = true; // redundant, but defensive\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// property names etc can be disregarded\n\t\t\t\tif (parent.type === 'MemberExpression' && !parent.computed && node !== parent.object) return;\n\t\t\t\tif (parent.type === 'Property' && node !== parent.value) return;\n\t\t\t\tif (parent.type === 'MethodDefinition' && node === parent.key) return;\n\t\t\t\t// TODO others...?\n\n\t\t\t\t// all other identifiers should be overwritten\n\t\t\t\tmagicString.overwrite(node.start, node.end, name);\n\t\t\t},\n\n\t\t\tleave: function (node) {\n\t\t\t\tif (/^Function/.test(node.type)) depth -= 1;\n\n\t\t\t\tif (node._scope) {\n\t\t\t\t\treplacementStack.pop();\n\t\t\t\t\tnames = replacementStack[replacementStack.length - 1];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn magicString;\n\t};\n\n\treturn Statement;\n})();\n\nvar emptyArrayPromise = _Promise.resolve([]);\n\nfunction deconflict(name, names) {\n\twhile (name in names) {\n\t\tname = '_' + name;\n\t}\n\n\treturn name;\n}\n\nfunction isEmptyExportedVarDeclaration(node, module, allBundleExports, es6) {\n\tif (node.type !== 'VariableDeclaration' || node.declarations[0].init) return false;\n\n\tvar name = node.declarations[0].id.name;\n\tvar canonicalName = module.getCanonicalName(name, es6);\n\n\treturn canonicalName in allBundleExports;\n}\n\nvar Module = (function () {\n\tfunction Module(_ref) {\n\t\tvar id = _ref.id;\n\t\tvar source = _ref.source;\n\t\tvar bundle = _ref.bundle;\n\t\tclassCallCheck(this, Module);\n\n\t\tthis.source = source;\n\n\t\tthis.bundle = bundle;\n\t\tthis.id = id;\n\n\t\t// By default, `id` is the filename. Custom resolvers and loaders\n\t\t// can change that, but it makes sense to use it for the source filename\n\t\tthis.magicString = new MagicString(source, {\n\t\t\tfilename: id\n\t\t});\n\n\t\tthis.suggestedNames = blank();\n\t\tthis.comments = [];\n\n\t\tthis.statements = this._parse();\n\n\t\t// imports and exports, indexed by ID\n\t\tthis.imports = blank();\n\t\tthis.exports = blank();\n\n\t\tthis.exportAlls = blank();\n\n\t\t// array of all-export sources\n\t\tthis.exportDelegates = [];\n\n\t\tthis.canonicalNames = blank();\n\n\t\tthis.definitions = blank();\n\t\tthis.definitionPromises = blank();\n\t\tthis.modifications = blank();\n\n\t\tthis.analyse();\n\t}\n\n\tModule.prototype.addExport = function addExport(statement) {\n\t\tvar _this = this;\n\n\t\tvar node = statement.node;\n\t\tvar source = node.source && node.source.value;\n\n\t\t// export default function foo () {}\n\t\t// export default foo;\n\t\t// export default 42;\n\t\tif (node.type === 'ExportDefaultDeclaration') {\n\t\t\tvar isDeclaration = /Declaration$/.test(node.declaration.type);\n\t\t\tvar isAnonymous = /(?:Class|Function)Expression$/.test(node.declaration.type);\n\n\t\t\tvar declaredName = isDeclaration && node.declaration.id.name;\n\t\t\tvar identifier = node.declaration.type === 'Identifier' && node.declaration.name;\n\n\t\t\tthis.exports.default = {\n\t\t\t\tstatement: statement,\n\t\t\t\tname: 'default',\n\t\t\t\tlocalName: declaredName || 'default',\n\t\t\t\tdeclaredName: declaredName,\n\t\t\t\tidentifier: identifier,\n\t\t\t\tisDeclaration: isDeclaration,\n\t\t\t\tisAnonymous: isAnonymous,\n\t\t\t\tisModified: false // in case of `export default foo; foo = somethingElse`\n\t\t\t};\n\t\t}\n\n\t\t// export { foo, bar, baz }\n\t\t// export var foo = 42;\n\t\t// export function foo () {}\n\t\telse if (node.type === 'ExportNamedDeclaration') {\n\t\t\tif (node.specifiers.length) {\n\t\t\t\t// export { foo, bar, baz }\n\t\t\t\tnode.specifiers.forEach(function (specifier) {\n\t\t\t\t\tvar localName = specifier.local.name;\n\t\t\t\t\tvar exportedName = specifier.exported.name;\n\n\t\t\t\t\t_this.exports[exportedName] = {\n\t\t\t\t\t\tlocalName: localName,\n\t\t\t\t\t\texportedName: exportedName\n\t\t\t\t\t};\n\n\t\t\t\t\t// export { foo } from './foo';\n\t\t\t\t\tif (source) {\n\t\t\t\t\t\t_this.imports[localName] = {\n\t\t\t\t\t\t\tsource: source,\n\t\t\t\t\t\t\tlocalName: localName,\n\t\t\t\t\t\t\tname: localName\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvar declaration = node.declaration;\n\n\t\t\t\tvar _name = undefined;\n\n\t\t\t\tif (declaration.type === 'VariableDeclaration') {\n\t\t\t\t\t// export var foo = 42\n\t\t\t\t\t_name = declaration.declarations[0].id.name;\n\t\t\t\t} else {\n\t\t\t\t\t// export function foo () {}\n\t\t\t\t\t_name = declaration.id.name;\n\t\t\t\t}\n\n\t\t\t\tthis.exports[_name] = {\n\t\t\t\t\tstatement: statement,\n\t\t\t\t\tlocalName: _name,\n\t\t\t\t\texpression: declaration\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Store `export * from '...'` statements in an array of delegates.\n\t\t// When an unknown import is encountered, we see if one of them can satisfy it.\n\t\telse {\n\t\t\tthis.exportDelegates.push({\n\t\t\t\tstatement: statement,\n\t\t\t\tsource: source\n\t\t\t});\n\t\t}\n\t};\n\n\tModule.prototype.addImport = function addImport(statement) {\n\t\tvar _this2 = this;\n\n\t\tvar node = statement.node;\n\t\tvar source = node.source.value;\n\n\t\tnode.specifiers.forEach(function (specifier) {\n\t\t\tvar isDefault = specifier.type === 'ImportDefaultSpecifier';\n\t\t\tvar isNamespace = specifier.type === 'ImportNamespaceSpecifier';\n\n\t\t\tvar localName = specifier.local.name;\n\t\t\tvar name = isDefault ? 'default' : isNamespace ? '*' : specifier.imported.name;\n\n\t\t\tif (_this2.imports[localName]) {\n\t\t\t\tvar err = new Error('Duplicated import \\'' + localName + '\\'');\n\t\t\t\terr.file = _this2.id;\n\t\t\t\terr.loc = getLocation(_this2.source, specifier.start);\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\t_this2.imports[localName] = {\n\t\t\t\tsource: source,\n\t\t\t\tname: name,\n\t\t\t\tlocalName: localName\n\t\t\t};\n\t\t});\n\t};\n\n\tModule.prototype.analyse = function analyse() {\n\t\tvar _this3 = this;\n\n\t\t// discover this module's imports and exports\n\t\tthis.statements.forEach(function (statement) {\n\t\t\tif (statement.isImportDeclaration) _this3.addImport(statement);else if (statement.isExportDeclaration) _this3.addExport(statement);\n\n\t\t\tstatement.analyse();\n\n\t\t\t// consolidate names that are defined/modified in this module\n\t\t\tkeys(statement.defines).forEach(function (name) {\n\t\t\t\t_this3.definitions[name] = statement;\n\t\t\t});\n\n\t\t\tkeys(statement.modifies).forEach(function (name) {\n\t\t\t\t(_this3.modifications[name] || (_this3.modifications[name] = [])).push(statement);\n\t\t\t});\n\t\t});\n\n\t\t// if names are referenced that are neither defined nor imported\n\t\t// in this module, we assume that they're globals\n\t\tthis.statements.forEach(function (statement) {\n\t\t\tkeys(statement.dependsOn).forEach(function (name) {\n\t\t\t\tif (!_this3.definitions[name] && !_this3.imports[name]) {\n\t\t\t\t\t_this3.bundle.assumedGlobals[name] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t};\n\n\tModule.prototype.consolidateDependencies = function consolidateDependencies() {\n\t\tvar _this4 = this;\n\n\t\tvar strongDependencies = blank();\n\n\t\tthis.statements.forEach(function (statement) {\n\t\t\tif (statement.isImportDeclaration && !statement.node.specifiers.length && !statement.module.isExternal) {\n\t\t\t\t// include module for its side-effects\n\t\t\t\tstrongDependencies[statement.module.id] = statement.module; // TODO is this right? `statement.module` should be `this`, surely?\n\t\t\t}\n\n\t\t\tkeys(statement.stronglyDependsOn).forEach(function (name) {\n\t\t\t\tif (statement.defines[name]) return;\n\n\t\t\t\tvar exportAllDeclaration = _this4.exportAlls[name];\n\n\t\t\t\tif (exportAllDeclaration && exportAllDeclaration.module && !exportAllDeclaration.module.isExternal) {\n\t\t\t\t\tstrongDependencies[exportAllDeclaration.module.id] = exportAllDeclaration.module;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar importDeclaration = _this4.imports[name];\n\n\t\t\t\tif (importDeclaration && importDeclaration.module && !importDeclaration.module.isExternal) {\n\t\t\t\t\tstrongDependencies[importDeclaration.module.id] = importDeclaration.module;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tvar weakDependencies = blank();\n\n\t\tthis.statements.forEach(function (statement) {\n\t\t\tkeys(statement.dependsOn).forEach(function (name) {\n\t\t\t\tif (statement.defines[name]) return;\n\n\t\t\t\tvar importDeclaration = _this4.imports[name];\n\n\t\t\t\tif (importDeclaration && importDeclaration.module && !importDeclaration.module.isExternal) {\n\t\t\t\t\tweakDependencies[importDeclaration.module.id] = importDeclaration.module;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn { strongDependencies: strongDependencies, weakDependencies: weakDependencies };\n\t};\n\n\tModule.prototype.findDefiningStatement = function findDefiningStatement(name) {\n\t\tif (this.definitions[name]) return this.definitions[name];\n\n\t\t// TODO what about `default`/`*`?\n\n\t\tvar importDeclaration = this.imports[name];\n\t\tif (!importDeclaration) return null;\n\n\t\treturn _Promise.resolve(importDeclaration.module || this.bundle.fetchModule(importDeclaration.source, this.id)).then(function (module) {\n\t\t\timportDeclaration.module = module;\n\t\t\treturn module.findDefiningStatement(name);\n\t\t});\n\t};\n\n\tModule.prototype.findDeclaration = function findDeclaration(localName) {\n\t\tvar importDeclaration = this.imports[localName];\n\n\t\t// name was defined by another module\n\t\tif (importDeclaration) {\n\t\t\tvar _module = importDeclaration.module;\n\n\t\t\tif (_module.isExternal) return null;\n\n\t\t\tvar exportDeclaration = _module.exports[importDeclaration.name];\n\t\t\treturn _module.findDeclaration(exportDeclaration.localName);\n\t\t}\n\n\t\t// name was defined by this module, if any\n\t\tvar i = this.statements.length;\n\t\twhile (i--) {\n\t\t\tvar declaration = this.statements[i].scope.declarations[localName];\n\t\t\tif (declaration) {\n\t\t\t\treturn declaration;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tModule.prototype.getCanonicalName = function getCanonicalName(localName, es6) {\n\t\t// Special case\n\t\tif (localName === 'default' && (this.exports.default.isModified || !this.suggestedNames.default)) {\n\t\t\tvar canonicalName = makeLegalIdentifier(this.id.replace(dirname(this.bundle.entryModule.id) + '/', '').replace(/\\.js$/, ''));\n\t\t\treturn deconflict(canonicalName, this.definitions);\n\t\t}\n\n\t\tif (this.suggestedNames[localName]) {\n\t\t\tlocalName = this.suggestedNames[localName];\n\t\t}\n\n\t\tvar id = localName + (es6 ? '-es6' : ''); // TODO ugh this seems like a terrible hack\n\n\t\tif (!this.canonicalNames[id]) {\n\t\t\tvar canonicalName = undefined;\n\n\t\t\tif (this.imports[localName]) {\n\t\t\t\tvar importDeclaration = this.imports[localName];\n\t\t\t\tvar _module2 = importDeclaration.module;\n\n\t\t\t\tif (importDeclaration.name === '*') {\n\t\t\t\t\tcanonicalName = _module2.suggestedNames['*'];\n\t\t\t\t} else {\n\t\t\t\t\tvar exporterLocalName = undefined;\n\n\t\t\t\t\tif (_module2.isExternal) {\n\t\t\t\t\t\texporterLocalName = importDeclaration.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar exportDeclaration = _module2.exports[importDeclaration.name];\n\n\t\t\t\t\t\t// The export declaration of the particular name is known.\n\t\t\t\t\t\tif (exportDeclaration) {\n\t\t\t\t\t\t\texporterLocalName = exportDeclaration.localName;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// export * from '...'\n\t\t\t\t\t\t\texporterLocalName = importDeclaration.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcanonicalName = _module2.getCanonicalName(exporterLocalName, es6);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcanonicalName = localName;\n\t\t\t}\n\n\t\t\tthis.canonicalNames[id] = canonicalName;\n\t\t}\n\n\t\treturn this.canonicalNames[id];\n\t};\n\n\tModule.prototype.mark = function mark(name) {\n\t\tvar _this5 = this;\n\n\t\t// shortcut cycles. TODO this won't work everywhere...\n\t\tif (this.definitionPromises[name]) {\n\t\t\treturn emptyArrayPromise;\n\t\t}\n\n\t\tvar promise = undefined;\n\n\t\t// The definition for this name is in a different module\n\t\tif (this.imports[name]) {\n\t\t\t(function () {\n\t\t\t\tvar importDeclaration = _this5.imports[name];\n\n\t\t\t\tpromise = _this5.bundle.fetchModule(importDeclaration.source, _this5.id).then(function (module) {\n\t\t\t\t\timportDeclaration.module = module;\n\n\t\t\t\t\t// suggest names. TODO should this apply to non default/* imports?\n\t\t\t\t\tif (importDeclaration.name === 'default') {\n\t\t\t\t\t\t// TODO this seems ropey\n\t\t\t\t\t\tvar localName = importDeclaration.localName;\n\t\t\t\t\t\tvar suggestion = _this5.suggestedNames[localName] || localName;\n\n\t\t\t\t\t\t// special case - the module has its own import by this name\n\t\t\t\t\t\twhile (!module.isExternal && module.imports[suggestion]) {\n\t\t\t\t\t\t\tsuggestion = '_' + suggestion;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmodule.suggestName('default', suggestion);\n\t\t\t\t\t} else if (importDeclaration.name === '*') {\n\t\t\t\t\t\tvar localName = importDeclaration.localName;\n\t\t\t\t\t\tvar suggestion = _this5.suggestedNames[localName] || localName;\n\t\t\t\t\t\tmodule.suggestName('*', suggestion);\n\t\t\t\t\t\tmodule.suggestName('default', suggestion + '__default');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (module.isExternal) {\n\t\t\t\t\t\tif (importDeclaration.name === 'default') {\n\t\t\t\t\t\t\tmodule.needsDefault = true;\n\t\t\t\t\t\t} else if (importDeclaration.name === '*') {\n\t\t\t\t\t\t\tmodule.needsAll = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmodule.needsNamed = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmodule.importedByBundle.push(importDeclaration);\n\t\t\t\t\t\treturn emptyArrayPromise;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (importDeclaration.name === '*') {\n\t\t\t\t\t\t// we need to create an internal namespace\n\t\t\t\t\t\tif (! ~_this5.bundle.internalNamespaceModules.indexOf(module)) {\n\t\t\t\t\t\t\t_this5.bundle.internalNamespaceModules.push(module);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn module.markAllStatements();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar exportDeclaration = module.exports[importDeclaration.name];\n\n\t\t\t\t\tif (!exportDeclaration) {\n\t\t\t\t\t\tvar _ret2 = (function () {\n\t\t\t\t\t\t\tvar noExport = new Error('Module ' + module.id + ' does not export ' + importDeclaration.name + ' (imported by ' + _this5.id + ')');\n\n\t\t\t\t\t\t\t// See if there exists an export delegate that defines `name`.\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tv: first(module.exportDelegates, noExport, function (declaration) {\n\t\t\t\t\t\t\t\t\treturn module.bundle.fetchModule(declaration.source, module.id).then(function (submodule) {\n\t\t\t\t\t\t\t\t\t\tdeclaration.module = submodule;\n\n\t\t\t\t\t\t\t\t\t\treturn submodule.mark(name).then(function (result) {\n\t\t\t\t\t\t\t\t\t\t\tif (!result.length) throw noExport;\n\n\t\t\t\t\t\t\t\t\t\t\t// It's found! This module exports `name` through declaration.\n\t\t\t\t\t\t\t\t\t\t\t// It is however not imported into this scope.\n\t\t\t\t\t\t\t\t\t\t\tmodule.exportAlls[name] = declaration;\n\n\t\t\t\t\t\t\t\t\t\t\tdeclaration.statement.dependsOn[name] = declaration.statement.stronglyDependsOn[name] = result;\n\n\t\t\t\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t})();\n\n\t\t\t\t\t\tif (typeof _ret2 === 'object') return _ret2.v;\n\t\t\t\t\t}\n\n\t\t\t\t\texportDeclaration.isUsed = true;\n\t\t\t\t\treturn module.mark(exportDeclaration.localName);\n\t\t\t\t});\n\t\t\t})();\n\t\t}\n\n\t\t// The definition is in this module\n\t\telse if (name === 'default' && this.exports.default.isDeclaration) {\n\t\t\t// We have something like `export default foo` - so we just start again,\n\t\t\t// searching for `foo` instead of default\n\t\t\tpromise = this.mark(this.exports.default.name);\n\t\t} else {\n\t\t\t(function () {\n\t\t\t\tvar statement = undefined;\n\n\t\t\t\tstatement = name === 'default' ? _this5.exports.default.statement : _this5.definitions[name];\n\t\t\t\tpromise = statement && !statement.isIncluded ? statement.mark() : emptyArrayPromise;\n\n\t\t\t\t// Special case - `export default foo; foo += 1` - need to be\n\t\t\t\t// vigilant about maintaining the correct order of the export\n\t\t\t\t// declaration. Otherwise, the export declaration will always\n\t\t\t\t// go at the end of the expansion, because the expansion of\n\t\t\t\t// `foo` will include statements *after* the declaration\n\t\t\t\tif (name === 'default' && _this5.exports.default.identifier && _this5.exports.default.isModified) {\n\t\t\t\t\t(function () {\n\t\t\t\t\t\tvar defaultExportStatement = _this5.exports.default.statement;\n\t\t\t\t\t\tpromise = promise.then(function (statements) {\n\t\t\t\t\t\t\t// remove the default export statement...\n\t\t\t\t\t\t\t// TODO could this be statements.pop()?\n\t\t\t\t\t\t\tstatements.splice(statements.indexOf(defaultExportStatement), 1);\n\n\t\t\t\t\t\t\tvar i = statements.length;\n\t\t\t\t\t\t\tvar inserted = false;\n\n\t\t\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\t\t\tif (statements[i].module === _this5 && statements[i].index < defaultExportStatement.index) {\n\t\t\t\t\t\t\t\t\tstatements.splice(i + 1, 0, defaultExportStatement);\n\t\t\t\t\t\t\t\t\tinserted = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!inserted) statements.push(statement);\n\t\t\t\t\t\t\treturn statements;\n\t\t\t\t\t\t});\n\t\t\t\t\t})();\n\t\t\t\t}\n\t\t\t})();\n\t\t}\n\n\t\tthis.definitionPromises[name] = promise || emptyArrayPromise;\n\t\treturn this.definitionPromises[name];\n\t};\n\n\tModule.prototype.markAllStatements = function markAllStatements(isEntryModule) {\n\t\tvar _this6 = this;\n\n\t\treturn sequence(this.statements, function (statement) {\n\t\t\tif (statement.isIncluded) return; // TODO can this happen? probably not...\n\n\t\t\t// skip import declarations...\n\t\t\tif (statement.isImportDeclaration) {\n\t\t\t\t// ...unless they're empty, in which case assume we're importing them for the side-effects\n\t\t\t\t// THIS IS NOT FOOLPROOF. Probably need /*rollup: include */ or similar\n\t\t\t\tif (!statement.node.specifiers.length) {\n\t\t\t\t\treturn _this6.bundle.fetchModule(statement.node.source.value, _this6.id).then(function (module) {\n\t\t\t\t\t\tstatement.module = module;\n\t\t\t\t\t\tif (module.isExternal) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn module.markAllStatements();\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// skip `export { foo, bar, baz }`...\n\t\t\tif (statement.node.type === 'ExportNamedDeclaration' && statement.node.specifiers.length) {\n\t\t\t\t// ...but ensure they are defined, if this is the entry module\n\t\t\t\tif (isEntryModule) {\n\t\t\t\t\treturn statement.mark();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// include everything else\n\t\t\treturn statement.mark();\n\t\t});\n\t};\n\n\t// TODO rename this to parse, once https://github.com/rollup/rollup/issues/42 is fixed\n\n\tModule.prototype._parse = function _parse() {\n\t\tvar _this7 = this;\n\n\t\t// Try to extract a list of top-level statements/declarations. If\n\t\t// the parse fails, attach file info and abort\n\t\tvar ast = undefined;\n\n\t\ttry {\n\t\t\tast = acorn.parse(this.source, {\n\t\t\t\tecmaVersion: 6,\n\t\t\t\tsourceType: 'module',\n\t\t\t\tonComment: function (block, text, start, end) {\n\t\t\t\t\treturn _this7.comments.push({ block: block, text: text, start: start, end: end });\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (err) {\n\t\t\terr.code = 'PARSE_ERROR';\n\t\t\terr.file = this.id; // see above - not necessarily true, but true enough\n\t\t\tthrow err;\n\t\t}\n\n\t\twalk(ast, {\n\t\t\tenter: function (node) {\n\t\t\t\t_this7.magicString.addSourcemapLocation(node.start);\n\t\t\t\t_this7.magicString.addSourcemapLocation(node.end);\n\t\t\t}\n\t\t});\n\n\t\tvar statements = [];\n\t\tvar lastChar = 0;\n\t\tvar commentIndex = 0;\n\n\t\tast.body.forEach(function (node) {\n\t\t\t// special case - top-level var declarations with multiple declarators\n\t\t\t// should be split up. Otherwise, we may end up including code we\n\t\t\t// don't need, just because an unwanted declarator is included\n\t\t\tif (node.type === 'VariableDeclaration' && node.declarations.length > 1) {\n\t\t\t\t// remove the leading var/let/const\n\t\t\t\t_this7.magicString.remove(node.start, node.declarations[0].start);\n\n\t\t\t\tnode.declarations.forEach(function (declarator, i) {\n\t\t\t\t\tvar start = declarator.start;\n\t\t\t\t\tvar end = declarator.end;\n\n\t\t\t\t\tvar syntheticNode = {\n\t\t\t\t\t\ttype: 'VariableDeclaration',\n\t\t\t\t\t\tkind: node.kind,\n\t\t\t\t\t\tstart: start,\n\t\t\t\t\t\tend: end,\n\t\t\t\t\t\tdeclarations: [declarator],\n\t\t\t\t\t\tisSynthetic: true\n\t\t\t\t\t};\n\n\t\t\t\t\tvar statement = new Statement(syntheticNode, _this7, start, end);\n\t\t\t\t\tstatements.push(statement);\n\t\t\t\t});\n\n\t\t\t\tlastChar = node.end; // TODO account for trailing line comment\n\t\t\t} else {\n\t\t\t\tvar comment = undefined;\n\t\t\t\tdo {\n\t\t\t\t\tcomment = _this7.comments[commentIndex];\n\t\t\t\t\tif (!comment) break;\n\t\t\t\t\tif (comment.start > node.start) break;\n\t\t\t\t\tcommentIndex += 1;\n\t\t\t\t} while (comment.end < lastChar);\n\n\t\t\t\tvar start = comment ? Math.min(comment.start, node.start) : node.start;\n\t\t\t\tvar end = node.end; // TODO account for trailing line comment\n\n\t\t\t\tvar statement = new Statement(node, _this7, start, end);\n\t\t\t\tstatements.push(statement);\n\n\t\t\t\tlastChar = end;\n\t\t\t}\n\t\t});\n\n\t\tstatements.forEach(function (statement, i) {\n\t\t\tvar nextStatement = statements[i + 1];\n\t\t\tstatement.next = nextStatement ? nextStatement.start : statement.end;\n\t\t});\n\n\t\treturn statements;\n\t};\n\n\tModule.prototype.rename = function rename(name, replacement) {\n\t\t// TODO again, hacky...\n\t\tthis.canonicalNames[name] = this.canonicalNames[name + '-es6'] = replacement;\n\t};\n\n\tModule.prototype.render = function render(allBundleExports, format) {\n\t\tvar magicString = this.magicString.clone();\n\n\t\tvar previousIndex = -1;\n\t\tvar previousMargin = 0;\n\n\t\tthis.statements.forEach(function (statement, i) {\n\t\t\tif (!statement.isIncluded) {\n\t\t\t\tmagicString.remove(statement.start, statement.next);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// skip `export { foo, bar, baz }`\n\t\t\tif (statement.node.type === 'ExportNamedDeclaration') {\n\t\t\t\t// skip `export { foo, bar, baz }`\n\t\t\t\tif (statement.node.specifiers.length) {\n\t\t\t\t\tmagicString.remove(statement.start, statement.next);\n\t\t\t\t\treturn;\n\t\t\t\t};\n\n\t\t\t\t// skip `export var foo;` if foo is exported\n\t\t\t\tif (isEmptyExportedVarDeclaration(statement.node.declaration, statement.module, allBundleExports, format === 'es6')) {\n\t\t\t\t\tmagicString.remove(statement.start, statement.next);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// skip empty var declarations for exported bindings\n\t\t\t// (otherwise we're left with `exports.foo;`, which is useless)\n\t\t\tif (isEmptyExportedVarDeclaration(statement.node, statement.module, allBundleExports, format === 'es6')) {\n\t\t\t\tmagicString.remove(statement.start, statement.next);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// split up/remove var declarations as necessary\n\t\t\tif (statement.node.isSynthetic) {\n\t\t\t\tmagicString.insert(statement.start, statement.node.kind + ' ');\n\t\t\t\tmagicString.overwrite(statement.end, statement.next, ';\\n'); // TODO account for trailing newlines\n\t\t\t}\n\n\t\t\tvar replacements = blank();\n\t\t\tvar bundleExports = blank();\n\n\t\t\tkeys(statement.dependsOn).concat(keys(statement.defines)).forEach(function (name) {\n\t\t\t\tvar canonicalName = statement.module.getCanonicalName(name, format === 'es6');\n\n\t\t\t\tif (allBundleExports[canonicalName]) {\n\t\t\t\t\tbundleExports[name] = replacements[name] = allBundleExports[canonicalName];\n\t\t\t\t} else if (name !== canonicalName) {\n\t\t\t\t\treplacements[name] = canonicalName;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tstatement.replaceIdentifiers(magicString, replacements, bundleExports);\n\n\t\t\t// modify exports as necessary\n\t\t\tif (statement.isExportDeclaration) {\n\t\t\t\t// remove `export` from `export var foo = 42`\n\t\t\t\tif (statement.node.type === 'ExportNamedDeclaration' && statement.node.declaration.type === 'VariableDeclaration') {\n\t\t\t\t\tmagicString.remove(statement.node.start, statement.node.declaration.start);\n\t\t\t\t}\n\n\t\t\t\t// remove `export` from `export class Foo {...}` or `export default Foo`\n\t\t\t\t// TODO default exports need different treatment\n\t\t\t\telse if (statement.node.declaration.id) {\n\t\t\t\t\tmagicString.remove(statement.node.start, statement.node.declaration.start);\n\t\t\t\t} else if (statement.node.type === 'ExportDefaultDeclaration') {\n\t\t\t\t\tvar _module3 = statement.module;\n\t\t\t\t\tvar canonicalName = _module3.getCanonicalName('default', format === 'es6');\n\n\t\t\t\t\tif (statement.node.declaration.type === 'Identifier' && canonicalName === _module3.getCanonicalName(statement.node.declaration.name, format === 'es6')) {\n\t\t\t\t\t\tmagicString.remove(statement.start, statement.next);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// anonymous functions should be converted into declarations\n\t\t\t\t\tif (statement.node.declaration.type === 'FunctionExpression') {\n\t\t\t\t\t\tmagicString.overwrite(statement.node.start, statement.node.declaration.start + 8, 'function ' + canonicalName);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmagicString.overwrite(statement.node.start, statement.node.declaration.start, 'var ' + canonicalName + ' = ');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Unhandled export');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn magicString.trim();\n\t};\n\n\tModule.prototype.suggestName = function suggestName(defaultOrBatch, suggestion) {\n\t\t// deconflict anonymous default exports with this module's definitions\n\t\tvar shouldDeconflict = this.exports.default && this.exports.default.isAnonymous;\n\n\t\tif (shouldDeconflict) suggestion = deconflict(suggestion, this.definitions);\n\n\t\tif (!this.suggestedNames[defaultOrBatch]) {\n\t\t\tthis.suggestedNames[defaultOrBatch] = makeLegalIdentifier(suggestion);\n\t\t}\n\t};\n\n\treturn Module;\n})();\n\nvar ExternalModule = (function () {\n\tfunction ExternalModule(id) {\n\t\tclassCallCheck(this, ExternalModule);\n\n\t\tthis.id = id;\n\t\tthis.name = null;\n\n\t\tthis.isExternal = true;\n\t\tthis.importedByBundle = [];\n\n\t\tthis.canonicalNames = blank();\n\t\tthis.suggestedNames = blank();\n\n\t\tthis.needsDefault = false;\n\n\t\t// Invariant: needsNamed and needsAll are never both true at once.\n\t\t// Because an import with both a namespace and named import is invalid:\n\t\t//\n\t\t// \t\timport * as ns, { a } from '...'\n\t\t//\n\t\tthis.needsNamed = false;\n\t\tthis.needsAll = false;\n\t}\n\n\tExternalModule.prototype.findDefiningStatement = function findDefiningStatement() {\n\t\treturn null;\n\t};\n\n\tExternalModule.prototype.getCanonicalName = function getCanonicalName(name, es6) {\n\t\tif (name === 'default') {\n\t\t\treturn this.needsNamed && !es6 ? this.name + '__default' : this.name;\n\t\t}\n\n\t\tif (name === '*') {\n\t\t\treturn this.name; // TODO is this correct in ES6?\n\t\t}\n\n\t\treturn es6 ? this.canonicalNames[name] || name : this.name + '.' + name;\n\t};\n\n\tExternalModule.prototype.rename = function rename(name, replacement) {\n\t\tthis.canonicalNames[name] = replacement;\n\t};\n\n\tExternalModule.prototype.suggestName = function suggestName(exportName, suggestion) {\n\t\tif (!this.suggestedNames[exportName]) {\n\t\t\tthis.suggestedNames[exportName] = suggestion;\n\t\t}\n\t};\n\n\treturn ExternalModule;\n})();\n\nfunction ensureArray(thing) {\n\tif (Array.isArray(thing)) return thing;\n\tif (thing == undefined) return [];\n\treturn [thing];\n}\n\nfunction defaultResolver(importee, importer, options) {\n\t// absolute paths are left untouched\n\tif (isAbsolute(importee)) return importee;\n\n\t// if this is the entry point, resolve against cwd\n\tif (importer === undefined) return resolve(process.cwd(), importee);\n\n\t// we try to resolve external modules\n\tif (importee[0] !== '.') {\n\t\t// unless we want to keep it external, that is\n\t\tif (~options.external.indexOf(importee)) return null;\n\n\t\treturn options.resolveExternal(importee, importer, options);\n\t}\n\n\treturn resolve(dirname(importer), importee).replace(/\\.js$/, '') + '.js';\n}\n\nfunction defaultExternalResolver(id, importer) {\n\t// for now, only node_modules is supported, and only jsnext:main\n\tvar root = absolutePath.exec(importer)[0];\n\tvar dir = dirname(importer);\n\n\twhile (dir !== root) {\n\t\tvar pkgPath = resolve(dir, 'node_modules', id, 'package.json');\n\t\tvar pkgJson = undefined;\n\n\t\ttry {\n\t\t\tpkgJson = readFileSync(pkgPath).toString();\n\t\t} catch (err) {}\n\n\t\tif (pkgJson) {\n\t\t\tvar pkg = undefined;\n\n\t\t\ttry {\n\t\t\t\tpkg = JSON.parse(pkgJson);\n\t\t\t} catch (err) {\n\t\t\t\tthrow new Error('Malformed JSON: ' + pkgPath);\n\t\t\t}\n\n\t\t\tvar main = pkg['jsnext:main'];\n\n\t\t\tif (!main) {\n\t\t\t\tthrow new Error('Package ' + id + ' does not have a jsnext:main field, and so cannot be included in your rollup. Try adding it as an external module instead (e.g. options.external = [\\'' + id + '\\']). See https://github.com/rollup/rollup/wiki/jsnext:main for more info');\n\t\t\t}\n\n\t\t\treturn resolve(dirname(pkgPath), main).replace(/\\.js$/, '') + '.js';\n\t\t}\n\n\t\tdir = dirname(dir);\n\t}\n\n\tthrow new Error('Could not find package ' + id + ' (required by ' + importer + ')');\n}\n\nfunction defaultLoader(id, options) {\n\t// TODO support plugins e.g. !css and !json?\n\tvar source = readFileSync(id, { encoding: 'utf-8' });\n\n\treturn options.transform.reduce(function (source, transformer) {\n\t\treturn transformer(source, id);\n\t}, source);\n}\n\nvar Bundle = (function () {\n\tfunction Bundle(options) {\n\t\tclassCallCheck(this, Bundle);\n\n\t\tthis.entry = options.entry;\n\t\tthis.entryModule = null;\n\n\t\tthis.resolveId = options.resolveId || defaultResolver;\n\t\tthis.load = options.load || defaultLoader;\n\n\t\tthis.resolveOptions = {\n\t\t\texternal: ensureArray(options.external),\n\t\t\tresolveExternal: options.resolveExternal || defaultExternalResolver\n\t\t};\n\n\t\tthis.loadOptions = {\n\t\t\ttransform: ensureArray(options.transform)\n\t\t};\n\n\t\tthis.varExports = blank();\n\t\tthis.toExport = null;\n\n\t\tthis.modulePromises = blank();\n\t\tthis.modules = [];\n\n\t\tthis.statements = null;\n\t\tthis.externalModules = [];\n\t\tthis.internalNamespaceModules = [];\n\t\tthis.assumedGlobals = blank();\n\t}\n\n\tBundle.prototype.build = function build() {\n\t\tvar _this = this;\n\n\t\treturn this.fetchModule(this.entry, undefined).then(function (entryModule) {\n\t\t\tvar defaultExport = entryModule.exports.default;\n\n\t\t\t_this.entryModule = entryModule;\n\n\t\t\tif (defaultExport) {\n\t\t\t\t// `export default function foo () {...}` -\n\t\t\t\t// use the declared name for the export\n\t\t\t\tif (defaultExport.declaredName) {\n\t\t\t\t\tentryModule.suggestName('default', defaultExport.declaredName);\n\t\t\t\t}\n\n\t\t\t\t// `export default a + b` - generate an export name\n\t\t\t\t// based on the id of the entry module\n\t\t\t\telse {\n\t\t\t\t\t(function () {\n\t\t\t\t\t\tvar defaultExportName = makeLegalIdentifier(basename(_this.entryModule.id).slice(0, -extname(_this.entryModule.id).length));\n\n\t\t\t\t\t\t// deconflict\n\t\t\t\t\t\tvar topLevelNames = [];\n\t\t\t\t\t\tentryModule.statements.forEach(function (statement) {\n\t\t\t\t\t\t\tkeys(statement.defines).forEach(function (name) {\n\t\t\t\t\t\t\t\treturn topLevelNames.push(name);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\twhile (~topLevelNames.indexOf(defaultExportName)) {\n\t\t\t\t\t\t\tdefaultExportName = '_' + defaultExportName;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentryModule.suggestName('default', defaultExportName);\n\t\t\t\t\t})();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn entryModule.markAllStatements(true);\n\t\t}).then(function () {\n\t\t\treturn _this.markAllModifierStatements();\n\t\t}).then(function () {\n\t\t\t_this.orderedModules = _this.sort();\n\t\t});\n\t};\n\n\tBundle.prototype.deconflict = function deconflict(es6) {\n\t\tvar _this2 = this;\n\n\t\tvar definers = blank();\n\t\tvar conflicts = blank();\n\n\t\t// Assign names to external modules\n\t\tthis.externalModules.forEach(function (module) {\n\t\t\t// TODO is this right?\n\t\t\tvar name = makeLegalIdentifier(module.suggestedNames['*'] || module.suggestedNames.default || module.id);\n\n\t\t\tif (definers[name]) {\n\t\t\t\tconflicts[name] = true;\n\t\t\t} else {\n\t\t\t\tdefiners[name] = [];\n\t\t\t}\n\n\t\t\tdefiners[name].push(module);\n\t\t\tmodule.name = name;\n\t\t\t_this2.assumedGlobals[name] = true;\n\t\t});\n\n\t\t// Discover conflicts (i.e. two statements in separate modules both define `foo`)\n\t\tthis.orderedModules.forEach(function (module) {\n\t\t\tmodule.statements.forEach(function (statement) {\n\t\t\t\tvar names = keys(statement.defines);\n\n\t\t\t\t// with default exports that are expressions (`export default 42`),\n\t\t\t\t// we need to ensure that the name chosen for the expression does\n\t\t\t\t// not conflict\n\t\t\t\tif (statement.node.type === 'ExportDefaultDeclaration') {\n\t\t\t\t\tvar _name = module.getCanonicalName('default', es6);\n\n\t\t\t\t\tvar isProxy = statement.node.declaration && statement.node.declaration.type === 'Identifier';\n\t\t\t\t\tvar shouldDeconflict = !isProxy || module.getCanonicalName(statement.node.declaration.name, es6) !== _name;\n\n\t\t\t\t\tif (shouldDeconflict && ! ~names.indexOf(_name)) {\n\t\t\t\t\t\tnames.push(_name);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnames.forEach(function (name) {\n\t\t\t\t\tif (definers[name]) {\n\t\t\t\t\t\tconflicts[name] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdefiners[name] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO in good js, there shouldn't be duplicate definitions\n\t\t\t\t\t// per module... but some people write bad js\n\t\t\t\t\tdefiners[name].push(module);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// Ensure we don't conflict with globals\n\t\tkeys(this.assumedGlobals).forEach(function (name) {\n\t\t\tif (definers[name]) {\n\t\t\t\tconflicts[name] = true;\n\t\t\t}\n\t\t});\n\n\t\t// Rename conflicting identifiers so they can live in the same scope\n\t\tkeys(conflicts).forEach(function (name) {\n\t\t\tvar modules = definers[name];\n\n\t\t\tif (!_this2.assumedGlobals[name]) {\n\t\t\t\t// the module closest to the entryModule gets away with\n\t\t\t\t// keeping things as they are, unless we have a conflict\n\t\t\t\t// with a global name\n\t\t\t\tmodules.pop();\n\t\t\t}\n\n\t\t\tmodules.forEach(function (module) {\n\t\t\t\tvar replacement = getSafeName(name);\n\t\t\t\tmodule.rename(name, replacement);\n\t\t\t});\n\t\t});\n\n\t\tfunction getSafeName(name) {\n\t\t\twhile (conflicts[name]) {\n\t\t\t\tname = '_' + name;\n\t\t\t}\n\n\t\t\tconflicts[name] = true;\n\t\t\treturn name;\n\t\t}\n\t};\n\n\tBundle.prototype.fetchModule = function fetchModule(importee, importer) {\n\t\tvar _this3 = this;\n\n\t\treturn _Promise.resolve(this.resolveId(importee, importer, this.resolveOptions)).then(function (id) {\n\t\t\tif (!id) {\n\t\t\t\t// external module\n\t\t\t\tif (!_this3.modulePromises[importee]) {\n\t\t\t\t\tvar _module = new ExternalModule(importee);\n\t\t\t\t\t_this3.externalModules.push(_module);\n\t\t\t\t\t_this3.modulePromises[importee] = _Promise.resolve(_module);\n\t\t\t\t}\n\n\t\t\t\treturn _this3.modulePromises[importee];\n\t\t\t}\n\n\t\t\tif (!_this3.modulePromises[id]) {\n\t\t\t\t_this3.modulePromises[id] = _Promise.resolve(_this3.load(id, _this3.loadOptions)).then(function (source) {\n\t\t\t\t\tvar module = new Module({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tsource: source,\n\t\t\t\t\t\tbundle: _this3\n\t\t\t\t\t});\n\n\t\t\t\t\t_this3.modules.push(module);\n\n\t\t\t\t\treturn module;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn _this3.modulePromises[id];\n\t\t});\n\t};\n\n\tBundle.prototype.markAllModifierStatements = function markAllModifierStatements() {\n\t\tvar _this4 = this;\n\n\t\tvar settled = true;\n\t\tvar promises = [];\n\n\t\tthis.modules.forEach(function (module) {\n\t\t\tmodule.statements.forEach(function (statement) {\n\t\t\t\tif (statement.isIncluded) return;\n\n\t\t\t\tkeys(statement.modifies).forEach(function (name) {\n\t\t\t\t\tvar definingStatement = module.definitions[name];\n\t\t\t\t\tvar exportDeclaration = module.exports[name] || module.exports.default && module.exports.default.identifier === name && module.exports.default;\n\n\t\t\t\t\tvar shouldMark = definingStatement && definingStatement.isIncluded || exportDeclaration && exportDeclaration.isUsed;\n\n\t\t\t\t\tif (shouldMark) {\n\t\t\t\t\t\tsettled = false;\n\t\t\t\t\t\tpromises.push(statement.mark());\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// special case - https://github.com/rollup/rollup/pull/40\n\t\t\t\t\tvar importDeclaration = module.imports[name];\n\t\t\t\t\tif (!importDeclaration) return;\n\n\t\t\t\t\tvar promise = _Promise.resolve(importDeclaration.module || _this4.fetchModule(importDeclaration.source, module.id)).then(function (module) {\n\t\t\t\t\t\timportDeclaration.module = module;\n\t\t\t\t\t\tvar exportDeclaration = module.exports[importDeclaration.name];\n\t\t\t\t\t\t// TODO things like `export default a + b` don't apply here... right?\n\t\t\t\t\t\treturn module.findDefiningStatement(exportDeclaration.localName);\n\t\t\t\t\t}).then(function (definingStatement) {\n\t\t\t\t\t\tif (!definingStatement) return;\n\n\t\t\t\t\t\tsettled = false;\n\t\t\t\t\t\treturn statement.mark();\n\t\t\t\t\t});\n\n\t\t\t\t\tpromises.push(promise);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn _Promise.all(promises).then(function () {\n\t\t\tif (!settled) return _this4.markAllModifierStatements();\n\t\t});\n\t};\n\n\tBundle.prototype.render = function render() {\n\t\tvar _this5 = this;\n\n\t\tvar options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t\tvar format = options.format || 'es6';\n\t\tthis.deconflict(format === 'es6');\n\n\t\t// If we have named exports from the bundle, and those exports\n\t\t// are assigned to *within* the bundle, we may need to rewrite e.g.\n\t\t//\n\t\t// export let count = 0;\n\t\t// export function incr () { count++ }\n\t\t//\n\t\t// might become...\n\t\t//\n\t\t// exports.count = 0;\n\t\t// function incr () {\n\t\t// exports.count += 1;\n\t\t// }\n\t\t// exports.incr = incr;\n\t\t//\n\t\t// This doesn't apply if the bundle is exported as ES6!\n\t\tvar allBundleExports = blank();\n\n\t\tif (format !== 'es6') {\n\t\t\tkeys(this.entryModule.exports).forEach(function (key) {\n\t\t\t\tvar exportDeclaration = _this5.entryModule.exports[key];\n\n\t\t\t\tvar originalDeclaration = _this5.entryModule.findDeclaration(exportDeclaration.localName);\n\n\t\t\t\tif (originalDeclaration && originalDeclaration.type === 'VariableDeclaration') {\n\t\t\t\t\tvar canonicalName = _this5.entryModule.getCanonicalName(exportDeclaration.localName, false);\n\n\t\t\t\t\tallBundleExports[canonicalName] = 'exports.' + key;\n\t\t\t\t\t_this5.varExports[key] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// since we're rewriting variable exports, we want to\n\t\t// ensure we don't try and export them again at the bottom\n\t\tthis.toExport = keys(this.entryModule.exports).filter(function (key) {\n\t\t\treturn !_this5.varExports[key];\n\t\t});\n\n\t\tvar magicString = new MagicString.Bundle({ separator: '\\n\\n' });\n\n\t\tthis.orderedModules.forEach(function (module) {\n\t\t\tvar source = module.render(allBundleExports, format);\n\t\t\tif (source.toString().length) {\n\t\t\t\tmagicString.addSource(source);\n\t\t\t}\n\t\t});\n\n\t\t// prepend bundle with internal namespaces\n\t\tvar indentString = magicString.getIndentString();\n\t\tvar namespaceBlock = this.internalNamespaceModules.map(function (module) {\n\t\t\tvar exportKeys = keys(module.exports);\n\n\t\t\treturn 'var ' + module.getCanonicalName('*', format === 'es6') + ' = {\\n' + exportKeys.map(function (key) {\n\t\t\t\treturn indentString + 'get ' + key + ' () { return ' + module.getCanonicalName(key, format === 'es6') + '; }';\n\t\t\t}).join(',\\n') + '\\n};\\n\\n';\n\t\t}).join('');\n\n\t\tmagicString.prepend(namespaceBlock);\n\n\t\tvar finalise = finalisers[format];\n\n\t\tif (!finalise) {\n\t\t\tthrow new Error('You must specify an output type - valid options are ' + keys(finalisers).join(', '));\n\t\t}\n\n\t\tmagicString = finalise(this, magicString.trim(), {\n\t\t\t// Determine export mode - 'default', 'named', 'none'\n\t\t\texportMode: getExportMode(this, options.exports),\n\n\t\t\t// Determine indentation\n\t\t\tindentString: getIndentString(magicString, options)\n\t\t}, options);\n\n\t\tvar code = magicString.toString();\n\t\tvar map = null;\n\n\t\tif (options.sourceMap) {\n\t\t\tvar file = options.sourceMapFile || options.dest;\n\t\t\tmap = magicString.generateMap({\n\t\t\t\tincludeContent: true,\n\t\t\t\tfile\n\t\t\t\t// TODO\n\t\t\t\t: file });\n\n\t\t\tmap.sources = map.sources.map(unixizePath);\n\t\t}\n\n\t\treturn { code: code, map: map };\n\t};\n\n\tBundle.prototype.sort = function sort() {\n\t\tvar seen = {};\n\t\tvar ordered = [];\n\t\tvar hasCycles = undefined;\n\n\t\tvar strongDeps = {};\n\t\tvar stronglyDependsOn = {};\n\n\t\tfunction visit(module) {\n\t\t\tseen[module.id] = true;\n\n\t\t\tvar _module$consolidateDependencies = module.consolidateDependencies();\n\n\t\t\tvar strongDependencies = _module$consolidateDependencies.strongDependencies;\n\t\t\tvar weakDependencies = _module$consolidateDependencies.weakDependencies;\n\n\t\t\tstrongDeps[module.id] = [];\n\t\t\tstronglyDependsOn[module.id] = {};\n\n\t\t\tkeys(strongDependencies).forEach(function (id) {\n\t\t\t\tvar imported = strongDependencies[id];\n\n\t\t\t\tstrongDeps[module.id].push(imported);\n\n\t\t\t\tif (seen[id]) {\n\t\t\t\t\t// we need to prevent an infinite loop, and note that\n\t\t\t\t\t// we need to check for strong/weak dependency relationships\n\t\t\t\t\thasCycles = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvisit(imported);\n\t\t\t});\n\n\t\t\tkeys(weakDependencies).forEach(function (id) {\n\t\t\t\tvar imported = weakDependencies[id];\n\n\t\t\t\tif (seen[id]) {\n\t\t\t\t\t// we need to prevent an infinite loop, and note that\n\t\t\t\t\t// we need to check for strong/weak dependency relationships\n\t\t\t\t\thasCycles = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvisit(imported);\n\t\t\t});\n\n\t\t\t// add second (and third...) order dependencies\n\t\t\tfunction addStrongDependencies(dependency) {\n\t\t\t\tif (stronglyDependsOn[module.id][dependency.id]) return;\n\n\t\t\t\tstronglyDependsOn[module.id][dependency.id] = true;\n\t\t\t\tstrongDeps[dependency.id].forEach(addStrongDependencies);\n\t\t\t}\n\n\t\t\tstrongDeps[module.id].forEach(addStrongDependencies);\n\n\t\t\tordered.push(module);\n\t\t}\n\n\t\tvisit(this.entryModule);\n\n\t\tif (hasCycles) {\n\t\t\tvar unordered = ordered;\n\t\t\tordered = [];\n\n\t\t\t// unordered is actually semi-ordered, as [ fewer dependencies ... more dependencies ]\n\t\t\tunordered.forEach(function (module) {\n\t\t\t\t// ensure strong dependencies of `module` that don't strongly depend on `module` go first\n\t\t\t\tstrongDeps[module.id].forEach(place);\n\n\t\t\t\tfunction place(dep) {\n\t\t\t\t\tif (!stronglyDependsOn[dep.id][module.id] && ! ~ordered.indexOf(dep)) {\n\t\t\t\t\t\tstrongDeps[dep.id].forEach(place);\n\t\t\t\t\t\tordered.push(dep);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (! ~ordered.indexOf(module)) {\n\t\t\t\t\tordered.push(module);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn ordered;\n\t};\n\n\treturn Bundle;\n})();\n\nvar SOURCEMAPPING_URL = 'sourceMa';\nSOURCEMAPPING_URL += 'ppingURL';\nfunction rollup(options) {\n\tif (!options || !options.entry) {\n\t\tthrow new Error('You must supply options.entry to rollup');\n\t}\n\n\tvar bundle = new Bundle(options);\n\n\treturn bundle.build().then(function () {\n\t\treturn {\n\t\t\tgenerate: function (options) {\n\t\t\t\treturn bundle.render(options);\n\t\t\t},\n\t\t\twrite: function (options) {\n\t\t\t\tif (!options || !options.dest) {\n\t\t\t\t\tthrow new Error('You must supply options.dest to bundle.write');\n\t\t\t\t}\n\n\t\t\t\tvar dest = options.dest;\n\n\t\t\t\tvar _bundle$render = bundle.render(options);\n\n\t\t\t\tvar code = _bundle$render.code;\n\t\t\t\tvar map = _bundle$render.map;\n\n\t\t\t\tvar promises = [];\n\n\t\t\t\tif (options.sourceMap) {\n\t\t\t\t\tvar url = undefined;\n\n\t\t\t\t\tif (options.sourceMap === 'inline') {\n\t\t\t\t\t\turl = map.toUrl();\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = basename(dest) + '.map';\n\t\t\t\t\t\tpromises.push(writeFile(dest + '.map', map.toString()));\n\t\t\t\t\t}\n\n\t\t\t\t\tcode += '\\n//# ' + SOURCEMAPPING_URL + '=' + url;\n\t\t\t\t}\n\n\t\t\t\tpromises.push(writeFile(dest, code));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t}\n\t\t};\n\t});\n}\n\nexports.rollup = rollup;","(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})"],"names":[],"mappings":"ASAA;;ADAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ADvvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AD76HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AD75CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AD5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ADpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ADjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AD1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ADr6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
\No newline at end of file