@canvasengine/tiled 2.0.0-beta.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classes/Gid.d.ts +13 -0
- package/dist/classes/Layer.d.ts +26 -0
- package/dist/classes/Map.d.ts +232 -0
- package/dist/classes/Object.d.ts +8 -0
- package/dist/classes/Properties.d.ts +11 -0
- package/dist/classes/Tile.d.ts +19 -0
- package/dist/classes/Tileset.d.ts +13 -0
- package/dist/generate/tileset.d.ts +11 -0
- package/dist/generate/wangtile.d.ts +21 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +6205 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/open-file.d.ts +24 -0
- package/dist/parser/parser.d.ts +27 -0
- package/dist/types/Layer.d.ts +116 -0
- package/dist/types/Map.d.ts +72 -0
- package/dist/types/Objects.d.ts +57 -0
- package/dist/types/Text.d.ts +47 -0
- package/dist/types/Tile.d.ts +17 -0
- package/dist/types/Tileset.d.ts +92 -0
- package/dist/types/Types.d.ts +147 -0
- package/dist/types/WorldMaps.d.ts +12 -0
- package/dist/utils.d.ts +10 -0
- package/package.json +31 -0
- package/readme.md +1 -0
- package/src/classes/Gid.ts +46 -0
- package/src/classes/Layer.ts +135 -0
- package/src/classes/Map.ts +443 -0
- package/src/classes/Object.ts +16 -0
- package/src/classes/Properties.ts +30 -0
- package/src/classes/Tile.ts +22 -0
- package/src/classes/Tileset.ts +34 -0
- package/src/generate/tileset.ts +35 -0
- package/src/generate/wangtile.ts +166 -0
- package/src/index.ts +16 -0
- package/src/parser/open-file.ts +155 -0
- package/src/parser/parser.ts +309 -0
- package/src/types/Layer.ts +127 -0
- package/src/types/Map.ts +83 -0
- package/src/types/Objects.ts +64 -0
- package/src/types/Text.ts +47 -0
- package/src/types/Tile.ts +19 -0
- package/src/types/Tileset.ts +99 -0
- package/src/types/Types.ts +157 -0
- package/src/types/WorldMaps.ts +13 -0
- package/src/utils.ts +22 -0
- package/tests/class.spec.ts +88 -0
- package/tests/data.ts +5440 -0
- package/tests/parser.spec.ts +112 -0
- package/tests/tile-properties.spec.ts +99 -0
- package/tests/tiledmap-multi-layers.spec.ts +99 -0
- package/tests/tiledmap.spec.ts +223 -0
- package/tsconfig.json +28 -0
- package/vite.config.ts +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types/Layer.ts","../src/utils.ts","../__vite-browser-external","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js","../../../node_modules/.pnpm/sax@1.4.1/node_modules/sax/lib/sax.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/array-helper.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/options-helper.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2js.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2json.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/js2xml.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/json2xml.js","../../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/index.js","../src/parser/parser.ts","../src/classes/Properties.ts","../src/classes/Gid.ts","../src/classes/Tile.ts","../src/classes/Object.ts","../src/classes/Layer.ts","../src/classes/Tileset.ts","../src/parser/open-file.ts","../src/classes/Map.ts"],"sourcesContent":["import { TiledObject } from \"./Objects\";\nimport { TiledChunk, TiledCompression, TiledEncoding, TiledImage, TiledProperty } from \"./Types\";\n\nexport enum TiledLayerType {\n Tile = 'tilelayer',\n ObjectGroup = 'objectgroup',\n Image = 'imagelayer',\n Group = 'group'\n}\n\nexport interface TiledLayer {\n /**\n * Incremental ID - unique across all layers\n */\n id: number;\n /**\n * Image used by this layer. imagelayer only.\n */\n image: TiledImage;\n /**\n * Array of unsigned int (GIDs) or base64-encoded data. tilelayer only.\n */\n data: number[] | string;\n /**\n * \tArray of chunks (optional). tilelayer only.\n */\n chunks: TiledChunk[];\n /**\n * Column count. Same as map width for fixed-size maps.\n */\n width: number;\n /**\n * Row count. Same as map height for fixed-size maps.\n */\n height: number;\n /**\n * Name assigned to this layer\n */\n name: string;\n /**\n * From [0, 1]\n */\n opacity: number;\n properties: {\n [key: string]: any\n }\n /**\n * csv (default) or base64. tilelayer only.\n */\n encoding: TiledEncoding;\n /**\n * zlib, gzip, zstd (since Tiled 1.3) or empty (default). tilelayer only.\n */\n compression?: TiledCompression;\n \n /**\n * Type of layer (tilelayer, objectgroup)\n */\n type: TiledLayerType;\n\n /**\n * @since 1.9\n */\n class: string\n\n /**\n * Whether layer is shown or hidden in editor\n */\n visible: boolean;\n \n /**\n * Horizontal layer offset in tiles. Always 0.\n */\n x: number;\n /**\n * Vertical layer offset in tiles. Always 0.\n */\n y: number;\n \n /**\n * Layer order in the original Tiled source\n */\n order: number;\n /**\n * Horizontal layer offset in pixels (default: 0)\n */\n offsetx: number;\n /**\n * Vertical layer offset in pixels (default: 0)\n */\n offsety: number;\n /**\n * X coordinate where layer content starts (for infinite maps)\n */\n startx: number;\n /**\n * Y coordinate where layer content starts (for infinite maps)\n */\n starty: number;\n \n /**\n * Hex-formatted color (#RRGGBB or #AARRGGBB) that is multiplied with any graphics drawn by this layer or any child layers (optional).\n */\n tintcolor: string;\n /**\n * Hex-formatted color (#RRGGBB) (optional). imagelayer only.\n */\n transparentcolor: string;\n \n /**\n * topdown (default) or index. objectgroup only.\n */\n draworder: 'topdown' | 'index' | 'objectgroup';\n /**\n * Array of objects. objectgroup only.\n */\n objects: TiledObject[];\n\n layers: TiledLayer[]\n\n parallaxx: number\n parallaxy: number\n repeatx: number\n repeaty: number\n locked: boolean\n color: string\n }","export function isTiledFormat(val: any): boolean {\n return typeof val == 'object' && val.version && val.orientation\n}\n/**\n * Join path segments with forward slashes\n * @param {...string} segments - Path segments to join\n * @returns {string} Joined path\n * @example\n * joinPath('base', 'static', 'file.json') // returns 'base/static/file.json'\n */\n\nexport function joinPath(...segments: string[]): string {\n return segments\n .filter(segment => segment && segment.length > 0)\n .join('/')\n .replace(/\\/+/g, '/') // Replace multiple slashes with single slash\n}\n\n\nexport function getBaseName(path: string): string {\n return path.substring(0, path.lastIndexOf('/') + 1)\n}","export default {}","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * 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 * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\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 'latin1':\n case 'binary':\n case 'base64':\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 (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let 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 const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\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 'latin1':\n case 'binary':\n return latin1Slice(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\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\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.toLocaleString = Buffer.prototype.toString\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 let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const 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 const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\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 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 } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const 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 let 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 case 'latin1':\n case 'binary':\n return asciiWrite(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 end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; 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 const 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 const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\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 =\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 let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\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 let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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 let val = this[offset]\n let mul = 1\n let 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 let i = byteLength\n let mul = 1\n let 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 offset = offset >>> 0\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 offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let 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 =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let 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 =\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 this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\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 this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\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 const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\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 (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\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 value = +value\n offset = offset >>> 0\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 value = +value\n offset = offset >>> 0\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 (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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('Index out of range')\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 const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().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 utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; 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 // no lead yet\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 }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\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 }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\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 }\n\n leadSurrogate = null\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 < 0x110000) {\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 const byteArray = []\n for (let 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 let c, hi, lo\n const byteArray = []\n for (let 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 let i\n for (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\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\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\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue;\n }\n\n if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n","module.exports = {\r\n\r\n isArray: function(value) {\r\n if (Array.isArray) {\r\n return Array.isArray(value);\r\n }\r\n // fallback for older browsers like IE 8\r\n return Object.prototype.toString.call( value ) === '[object Array]';\r\n }\r\n\r\n};\r\n","var isArray = require('./array-helper').isArray;\r\n\r\nmodule.exports = {\r\n\r\n copyOptions: function (options) {\r\n var key, copy = {};\r\n for (key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n copy[key] = options[key];\r\n }\r\n }\r\n return copy;\r\n },\r\n\r\n ensureFlagExists: function (item, options) {\r\n if (!(item in options) || typeof options[item] !== 'boolean') {\r\n options[item] = false;\r\n }\r\n },\r\n\r\n ensureSpacesExists: function (options) {\r\n if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {\r\n options.spaces = 0;\r\n }\r\n },\r\n\r\n ensureAlwaysArrayExists: function (options) {\r\n if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {\r\n options.alwaysArray = false;\r\n }\r\n },\r\n\r\n ensureKeyExists: function (key, options) {\r\n if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {\r\n options[key + 'Key'] = options.compact ? '_' + key : key;\r\n }\r\n },\r\n\r\n checkFnExists: function (key, options) {\r\n return key + 'Fn' in options;\r\n }\r\n\r\n};\r\n","var sax = require('sax');\r\nvar expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } };\r\nvar helper = require('./options-helper');\r\nvar isArray = require('./array-helper').isArray;\r\n\r\nvar options;\r\nvar pureJsParser = true;\r\nvar currentElement;\r\n\r\nfunction validateOptions(userOptions) {\r\n options = helper.copyOptions(userOptions);\r\n helper.ensureFlagExists('ignoreDeclaration', options);\r\n helper.ensureFlagExists('ignoreInstruction', options);\r\n helper.ensureFlagExists('ignoreAttributes', options);\r\n helper.ensureFlagExists('ignoreText', options);\r\n helper.ensureFlagExists('ignoreComment', options);\r\n helper.ensureFlagExists('ignoreCdata', options);\r\n helper.ensureFlagExists('ignoreDoctype', options);\r\n helper.ensureFlagExists('compact', options);\r\n helper.ensureFlagExists('alwaysChildren', options);\r\n helper.ensureFlagExists('addParent', options);\r\n helper.ensureFlagExists('trim', options);\r\n helper.ensureFlagExists('nativeType', options);\r\n helper.ensureFlagExists('nativeTypeAttributes', options);\r\n helper.ensureFlagExists('sanitize', options);\r\n helper.ensureFlagExists('instructionHasAttributes', options);\r\n helper.ensureFlagExists('captureSpacesBetweenElements', options);\r\n helper.ensureAlwaysArrayExists(options);\r\n helper.ensureKeyExists('declaration', options);\r\n helper.ensureKeyExists('instruction', options);\r\n helper.ensureKeyExists('attributes', options);\r\n helper.ensureKeyExists('text', options);\r\n helper.ensureKeyExists('comment', options);\r\n helper.ensureKeyExists('cdata', options);\r\n helper.ensureKeyExists('doctype', options);\r\n helper.ensureKeyExists('type', options);\r\n helper.ensureKeyExists('name', options);\r\n helper.ensureKeyExists('elements', options);\r\n helper.ensureKeyExists('parent', options);\r\n helper.checkFnExists('doctype', options);\r\n helper.checkFnExists('instruction', options);\r\n helper.checkFnExists('cdata', options);\r\n helper.checkFnExists('comment', options);\r\n helper.checkFnExists('text', options);\r\n helper.checkFnExists('instructionName', options);\r\n helper.checkFnExists('elementName', options);\r\n helper.checkFnExists('attributeName', options);\r\n helper.checkFnExists('attributeValue', options);\r\n helper.checkFnExists('attributes', options);\r\n return options;\r\n}\r\n\r\nfunction nativeType(value) {\r\n var nValue = Number(value);\r\n if (!isNaN(nValue)) {\r\n return nValue;\r\n }\r\n var bValue = value.toLowerCase();\r\n if (bValue === 'true') {\r\n return true;\r\n } else if (bValue === 'false') {\r\n return false;\r\n }\r\n return value;\r\n}\r\n\r\nfunction addField(type, value) {\r\n var key;\r\n if (options.compact) {\r\n if (\r\n !currentElement[options[type + 'Key']] &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[options[type + 'Key']] = [];\r\n }\r\n if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];\r\n }\r\n if (type + 'Fn' in options && typeof value === 'string') {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n } else {\r\n var temp = value[key];\r\n delete value[key];\r\n value[options.instructionNameFn(key, temp, currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n if (isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']].push(value);\r\n } else {\r\n currentElement[options[type + 'Key']] = value;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n var element = {};\r\n element[options.typeKey] = type;\r\n if (type === 'instruction') {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n break;\r\n }\r\n }\r\n element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;\r\n if (options.instructionHasAttributes) {\r\n element[options.attributesKey] = value[key][options.attributesKey];\r\n if ('instructionFn' in options) {\r\n element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);\r\n }\r\n } else {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n }\r\n element[options.instructionKey] = value[key];\r\n }\r\n } else {\r\n if (type + 'Fn' in options) {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n element[options[type + 'Key']] = value;\r\n }\r\n if (options.addParent) {\r\n element[options.parentKey] = currentElement;\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n}\r\n\r\nfunction manipulateAttributes(attributes) {\r\n if ('attributesFn' in options && attributes) {\r\n attributes = options.attributesFn(attributes, currentElement);\r\n }\r\n if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n if (options.trim) attributes[key] = attributes[key].trim();\r\n if (options.nativeTypeAttributes) {\r\n attributes[key] = nativeType(attributes[key]);\r\n }\r\n if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);\r\n if ('attributeNameFn' in options) {\r\n var temp = attributes[key];\r\n delete attributes[key];\r\n attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n return attributes;\r\n}\r\n\r\nfunction onInstruction(instruction) {\r\n var attributes = {};\r\n if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {\r\n var attrsRegExp = /([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;\r\n var match;\r\n while ((match = attrsRegExp.exec(instruction.body)) !== null) {\r\n attributes[match[1]] = match[2] || match[3] || match[4];\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n }\r\n if (instruction.name.toLowerCase() === 'xml') {\r\n if (options.ignoreDeclaration) {\r\n return;\r\n }\r\n currentElement[options.declarationKey] = {};\r\n if (Object.keys(attributes).length) {\r\n currentElement[options.declarationKey][options.attributesKey] = attributes;\r\n }\r\n if (options.addParent) {\r\n currentElement[options.declarationKey][options.parentKey] = currentElement;\r\n }\r\n } else {\r\n if (options.ignoreInstruction) {\r\n return;\r\n }\r\n if (options.trim) {\r\n instruction.body = instruction.body.trim();\r\n }\r\n var value = {};\r\n if (options.instructionHasAttributes && Object.keys(attributes).length) {\r\n value[instruction.name] = {};\r\n value[instruction.name][options.attributesKey] = attributes;\r\n } else {\r\n value[instruction.name] = instruction.body;\r\n }\r\n addField('instruction', value);\r\n }\r\n}\r\n\r\nfunction onStartElement(name, attributes) {\r\n var element;\r\n if (typeof name === 'object') {\r\n attributes = name.attributes;\r\n name = name.name;\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n if ('elementNameFn' in options) {\r\n name = options.elementNameFn(name, currentElement);\r\n }\r\n if (options.compact) {\r\n element = {};\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = {};\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n element[options.attributesKey][key] = attributes[key];\r\n }\r\n }\r\n }\r\n if (\r\n !(name in currentElement) &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[name] = [];\r\n }\r\n if (currentElement[name] && !isArray(currentElement[name])) {\r\n currentElement[name] = [currentElement[name]];\r\n }\r\n if (isArray(currentElement[name])) {\r\n currentElement[name].push(element);\r\n } else {\r\n currentElement[name] = element;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n element = {};\r\n element[options.typeKey] = 'element';\r\n element[options.nameKey] = name;\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = attributes;\r\n }\r\n if (options.alwaysChildren) {\r\n element[options.elementsKey] = [];\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent\r\n currentElement = element;\r\n}\r\n\r\nfunction onText(text) {\r\n if (options.ignoreText) {\r\n return;\r\n }\r\n if (!text.trim() && !options.captureSpacesBetweenElements) {\r\n return;\r\n }\r\n if (options.trim) {\r\n text = text.trim();\r\n }\r\n if (options.nativeType) {\r\n text = nativeType(text);\r\n }\r\n if (options.sanitize) {\r\n text = text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n }\r\n addField('text', text);\r\n}\r\n\r\nfunction onComment(comment) {\r\n if (options.ignoreComment) {\r\n return;\r\n }\r\n if (options.trim) {\r\n comment = comment.trim();\r\n }\r\n addField('comment', comment);\r\n}\r\n\r\nfunction onEndElement(name) {\r\n var parentElement = currentElement[options.parentKey];\r\n if (!options.addParent) {\r\n delete currentElement[options.parentKey];\r\n }\r\n currentElement = parentElement;\r\n}\r\n\r\nfunction onCdata(cdata) {\r\n if (options.ignoreCdata) {\r\n return;\r\n }\r\n if (options.trim) {\r\n cdata = cdata.trim();\r\n }\r\n addField('cdata', cdata);\r\n}\r\n\r\nfunction onDoctype(doctype) {\r\n if (options.ignoreDoctype) {\r\n return;\r\n }\r\n doctype = doctype.replace(/^ /, '');\r\n if (options.trim) {\r\n doctype = doctype.trim();\r\n }\r\n addField('doctype', doctype);\r\n}\r\n\r\nfunction onError(error) {\r\n error.note = error; //console.error(error);\r\n}\r\n\r\nmodule.exports = function (xml, userOptions) {\r\n\r\n var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8');\r\n var result = {};\r\n currentElement = result;\r\n\r\n options = validateOptions(userOptions);\r\n\r\n if (pureJsParser) {\r\n parser.opt = {strictEntities: true};\r\n parser.onopentag = onStartElement;\r\n parser.ontext = onText;\r\n parser.oncomment = onComment;\r\n parser.onclosetag = onEndElement;\r\n parser.onerror = onError;\r\n parser.oncdata = onCdata;\r\n parser.ondoctype = onDoctype;\r\n parser.onprocessinginstruction = onInstruction;\r\n } else {\r\n parser.on('startElement', onStartElement);\r\n parser.on('text', onText);\r\n parser.on('comment', onComment);\r\n parser.on('endElement', onEndElement);\r\n parser.on('error', onError);\r\n //parser.on('startCdata', onStartCdata);\r\n //parser.on('endCdata', onEndCdata);\r\n //parser.on('entityDecl', onEntityDecl);\r\n }\r\n\r\n if (pureJsParser) {\r\n parser.write(xml).close();\r\n } else {\r\n if (!parser.parse(xml)) {\r\n throw new Error('XML parsing error: ' + parser.getError());\r\n }\r\n }\r\n\r\n if (result[options.elementsKey]) {\r\n var temp = result[options.elementsKey];\r\n delete result[options.elementsKey];\r\n result[options.elementsKey] = temp;\r\n delete result.text;\r\n }\r\n\r\n return result;\r\n\r\n};\r\n","var helper = require('./options-helper');\r\nvar xml2js = require('./xml2js');\r\n\r\nfunction validateOptions (userOptions) {\r\n var options = helper.copyOptions(userOptions);\r\n helper.ensureSpacesExists(options);\r\n return options;\r\n}\r\n\r\nmodule.exports = function(xml, userOptions) {\r\n var options, js, json, parentKey;\r\n options = validateOptions(userOptions);\r\n js = xml2js(xml, options);\r\n parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';\r\n // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this\r\n if ('addParent' in options && options.addParent) {\r\n json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);\r\n } else {\r\n json = JSON.stringify(js, null, options.spaces);\r\n }\r\n return json.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n};\r\n","var helper = require('./options-helper');\nvar isArray = require('./array-helper').isArray;\n\nvar currentElement, currentElementName;\n\nfunction validateOptions(userOptions) {\n var options = helper.copyOptions(userOptions);\n helper.ensureFlagExists('ignoreDeclaration', options);\n helper.ensureFlagExists('ignoreInstruction', options);\n helper.ensureFlagExists('ignoreAttributes', options);\n helper.ensureFlagExists('ignoreText', options);\n helper.ensureFlagExists('ignoreComment', options);\n helper.ensureFlagExists('ignoreCdata', options);\n helper.ensureFlagExists('ignoreDoctype', options);\n helper.ensureFlagExists('compact', options);\n helper.ensureFlagExists('indentText', options);\n helper.ensureFlagExists('indentCdata', options);\n helper.ensureFlagExists('indentAttributes', options);\n helper.ensureFlagExists('indentInstruction', options);\n helper.ensureFlagExists('fullTagEmptyElement', options);\n helper.ensureFlagExists('noQuotesForNativeAttributes', options);\n helper.ensureSpacesExists(options);\n if (typeof options.spaces === 'number') {\n options.spaces = Array(options.spaces + 1).join(' ');\n }\n helper.ensureKeyExists('declaration', options);\n helper.ensureKeyExists('instruction', options);\n helper.ensureKeyExists('attributes', options);\n helper.ensureKeyExists('text', options);\n helper.ensureKeyExists('comment', options);\n helper.ensureKeyExists('cdata', options);\n helper.ensureKeyExists('doctype', options);\n helper.ensureKeyExists('type', options);\n helper.ensureKeyExists('name', options);\n helper.ensureKeyExists('elements', options);\n helper.checkFnExists('doctype', options);\n helper.checkFnExists('instruction', options);\n helper.checkFnExists('cdata', options);\n helper.checkFnExists('comment', options);\n helper.checkFnExists('text', options);\n helper.checkFnExists('instructionName', options);\n helper.checkFnExists('elementName', options);\n helper.checkFnExists('attributeName', options);\n helper.checkFnExists('attributeValue', options);\n helper.checkFnExists('attributes', options);\n helper.checkFnExists('fullTagEmptyElement', options);\n return options;\n}\n\nfunction writeIndentation(options, depth, firstLine) {\n return (!firstLine && options.spaces ? '\\n' : '') + Array(depth + 1).join(options.spaces);\n}\n\nfunction writeAttributes(attributes, options, depth) {\n if (options.ignoreAttributes) {\n return '';\n }\n if ('attributesFn' in options) {\n attributes = options.attributesFn(attributes, currentElementName, currentElement);\n }\n var key, attr, attrName, quote, result = [];\n for (key in attributes) {\n if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {\n quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '\"';\n attr = '' + attributes[key]; // ensure number and boolean are converted to String\n attr = attr.replace(/\"/g, '"');\n attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;\n result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));\n result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);\n }\n }\n if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {\n result.push(writeIndentation(options, depth, false));\n }\n return result.join('');\n}\n\nfunction writeDeclaration(declaration, options, depth) {\n currentElement = declaration;\n currentElementName = 'xml';\n return options.ignoreDeclaration ? '' : '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';\n}\n\nfunction writeInstruction(instruction, options, depth) {\n if (options.ignoreInstruction) {\n return '';\n }\n var key;\n for (key in instruction) {\n if (instruction.hasOwnProperty(key)) {\n break;\n }\n }\n var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;\n if (typeof instruction[key] === 'object') {\n currentElement = instruction;\n currentElementName = instructionName;\n return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';\n } else {\n var instructionValue = instruction[key] ? instruction[key] : '';\n if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);\n return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';\n }\n}\n\nfunction writeComment(comment, options) {\n return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';\n}\n\nfunction writeCdata(cdata, options) {\n return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace(']]>', ']]]]><![CDATA[>')) + ']]>';\n}\n\nfunction writeDoctype(doctype, options) {\n return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';\n}\n\nfunction writeText(text, options) {\n if (options.ignoreText) return '';\n text = '' + text; // ensure Number and Boolean are converted to String\n text = text.replace(/&/g, '&'); // desanitize to avoid double sanitization\n text = text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;\n}\n\nfunction hasContent(element, options) {\n var i;\n if (element.elements && element.elements.length) {\n for (i = 0; i < element.elements.length; ++i) {\n switch (element.elements[i][options.typeKey]) {\n case 'text':\n if (options.indentText) {\n return true;\n }\n break; // skip to next key\n case 'cdata':\n if (options.indentCdata) {\n return true;\n }\n break; // skip to next key\n case 'instruction':\n if (options.indentInstruction) {\n return true;\n }\n break; // skip to next key\n case 'doctype':\n case 'comment':\n case 'element':\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElement(element, options, depth) {\n currentElement = element;\n currentElementName = element.name;\n var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;\n xml.push('<' + elementName);\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(element.name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n if (element[options.elementsKey] && element[options.elementsKey].length) {\n xml.push(writeElements(element[options.elementsKey], options, depth + 1));\n currentElement = element;\n currentElementName = element.name;\n }\n xml.push(options.spaces && hasContent(element, options) ? '\\n' + Array(depth + 1).join(options.spaces) : '');\n xml.push('</' + elementName + '>');\n } else {\n xml.push('/>');\n }\n return xml.join('');\n}\n\nfunction writeElements(elements, options, depth, firstLine) {\n return elements.reduce(function (xml, element) {\n var indent = writeIndentation(options, depth, firstLine && !xml);\n switch (element.type) {\n case 'element': return xml + indent + writeElement(element, options, depth);\n case 'comment': return xml + indent + writeComment(element[options.commentKey], options);\n case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);\n case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);\n case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);\n case 'instruction':\n var instruction = {};\n instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];\n return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);\n }\n }, '');\n}\n\nfunction hasContentCompact(element, options, anyContent) {\n var key;\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n switch (key) {\n case options.parentKey:\n case options.attributesKey:\n break; // skip to next key\n case options.textKey:\n if (options.indentText || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.cdataKey:\n if (options.indentCdata || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.instructionKey:\n if (options.indentInstruction || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.doctypeKey:\n case options.commentKey:\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElementCompact(element, name, options, depth, indent) {\n currentElement = element;\n currentElementName = name;\n var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;\n if (typeof element === 'undefined' || element === null || element === '') {\n return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';\n }\n var xml = [];\n if (name) {\n xml.push('<' + elementName);\n if (typeof element !== 'object') {\n xml.push('>' + writeText(element,options) + '</' + elementName + '>');\n return xml.join('');\n }\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n } else {\n xml.push('/>');\n return xml.join('');\n }\n }\n xml.push(writeElementsCompact(element, options, depth + 1, false));\n currentElement = element;\n currentElementName = name;\n if (name) {\n xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');\n }\n return xml.join('');\n}\n\nfunction writeElementsCompact(element, options, depth, firstLine) {\n var i, key, nodes, xml = [];\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n nodes = isArray(element[key]) ? element[key] : [element[key]];\n for (i = 0; i < nodes.length; ++i) {\n switch (key) {\n case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;\n case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;\n case options.attributesKey: case options.parentKey: break; // skip\n case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;\n case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;\n case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;\n case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;\n default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));\n }\n firstLine = firstLine && !xml.length;\n }\n }\n }\n return xml.join('');\n}\n\nmodule.exports = function (js, options) {\n options = validateOptions(options);\n var xml = [];\n currentElement = js;\n currentElementName = '_root_';\n if (options.compact) {\n xml.push(writeElementsCompact(js, options, 0, true));\n } else {\n if (js[options.declarationKey]) {\n xml.push(writeDeclaration(js[options.declarationKey], options, 0));\n }\n if (js[options.elementsKey] && js[options.elementsKey].length) {\n xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));\n }\n }\n return xml.join('');\n};\n","var js2xml = require('./js2xml.js');\r\n\r\nmodule.exports = function (json, options) {\r\n if (json instanceof Buffer) {\r\n json = json.toString();\r\n }\r\n var js = null;\r\n if (typeof (json) === 'string') {\r\n try {\r\n js = JSON.parse(json);\r\n } catch (e) {\r\n throw new Error('The JSON structure is invalid');\r\n }\r\n } else {\r\n js = json;\r\n }\r\n return js2xml(js, options);\r\n};\r\n","/*jslint node:true */\r\n\r\nvar xml2js = require('./xml2js');\r\nvar xml2json = require('./xml2json');\r\nvar js2xml = require('./js2xml');\r\nvar json2xml = require('./json2xml');\r\n\r\nmodule.exports = {\r\n xml2js: xml2js,\r\n xml2json: xml2json,\r\n js2xml: js2xml,\r\n json2xml: json2xml\r\n};\r\n","import { xml2js } from 'xml-js'\nimport { TiledMap } from '../types/Map'\nimport { TilesetTile } from '../types/Tile'\nimport { TiledTileset } from '../types/Tileset'\nimport { Buffer } from 'buffer'\nimport { getBaseName, joinPath } from '../utils'\n\nexport class TiledParser {\n private layers: Map<number, any> = new Map()\n\n constructor(private xml: string, private filePath: string = '', private basePath: string = '') { \n }\n\n static propToNumber = (obj, props: string[]) => {\n for (let key of props) {\n if (obj[key] !== undefined) {\n obj[key] = +obj[key]\n }\n }\n return obj\n }\n\n static propToBool = (obj, props: string[]) => {\n for (let key of props) {\n if (obj[key] !== undefined) {\n obj[key] = obj[key] == 'true' || obj[key] == '1'\n }\n }\n return obj\n }\n\n static toArray<T>(prop): T[] {\n if (!prop) return []\n if (!Array.isArray(prop)) return [prop]\n return prop\n }\n\n getImagePath(image: string) {\n if (this.filePath.startsWith('http')) return new URL(image, this.filePath).href\n return joinPath(this.basePath, image)\n }\n\n /**\n * Check if the object is a tileset source reference\n * Tileset sources should not have their paths transformed with getImagePath\n */\n private isTilesetSource(obj: any): boolean {\n // Check if object has tileset-specific properties\n return obj.firstgid !== undefined || \n obj.tilewidth !== undefined || \n obj.tileheight !== undefined ||\n obj.tilecount !== undefined ||\n obj.columns !== undefined\n }\n\n transform = (obj) => {\n if (!obj) return\n const attr = obj.attributes || obj._attributes\n if (!attr) return obj\n let newObj = {\n ...obj,\n ...attr,\n ...TiledParser.propToNumber(attr, [\n 'version',\n 'width',\n 'height',\n 'tilewidth',\n 'tileheight',\n 'nextlayerid',\n 'nextobjectid',\n 'hexsidelength',\n 'opacity',\n 'x',\n 'y',\n 'offsetx',\n 'offsety',\n 'startx',\n 'starty',\n 'id',\n 'firstgid',\n 'imageheight',\n 'imagewidth',\n 'margin',\n 'columns',\n 'rows',\n 'tilecount',\n 'rotation',\n 'gid',\n 'tileid',\n 'duration',\n 'parallaxx',\n 'parallaxy',\n 'repeatx',\n 'repeaty',\n 'pixelsize'\n ]),\n ...TiledParser.propToBool(attr, [\n 'visible',\n 'infinite',\n 'locked',\n 'bold',\n 'italic',\n 'kerning',\n 'strikeout',\n 'underline',\n 'wrap'\n ])\n }\n if (newObj.properties) {\n const properties: any = TiledParser.toArray(newObj.properties.property)\n const propObj = {}\n for (let prop of properties) {\n const attr = prop._attributes\n if (!attr) continue\n let val\n switch (attr.type) {\n case 'file':\n val = this.getImagePath(attr.value)\n break\n case 'object':\n case 'float':\n case 'int':\n val = +attr.value\n break\n case 'bool':\n val = attr.value == 'true' ? true : false\n break\n case 'class':\n val = {\n ...(this.transform(prop)?.properties ?? {}),\n _classname: attr.propertytype\n }\n break\n default:\n val = attr.value\n }\n propObj[attr.name] = val\n }\n newObj.properties = propObj\n }\n if (newObj.polygon) {\n newObj.polygon = this.transform(newObj.polygon)\n }\n if (newObj.polyline) {\n newObj.polyline = this.transform(newObj.polyline)\n }\n if (newObj.points) {\n newObj = newObj.points.split(' ').map(point => {\n const pos = point.split(',')\n return { x: +pos[0], y: +pos[1] }\n })\n }\n if (newObj.point) {\n newObj.point = true\n }\n if (newObj.ellipse) {\n newObj.ellipse = true\n }\n if (newObj.text) {\n newObj.text = {\n text: newObj.text._text,\n ...this.transform(newObj.text)\n }\n delete newObj.text._text\n }\n if (newObj.image) {\n newObj.image = this.transform(newObj.image)\n }\n if (newObj.source) {\n // For tileset source, keep the original path without transformation\n // The path resolution will be handled in the TiledParserFile class\n if (!this.isTilesetSource(newObj)) {\n newObj.source = this.getImagePath(newObj.source)\n }\n }\n const objectgroup = newObj.object || newObj.objectgroup?.object\n if (objectgroup) {\n newObj.objects = TiledParser.toArray(objectgroup).map((object: any) => {\n return this.transform(object)\n })\n }\n delete newObj._attributes\n delete newObj.attributes\n delete newObj.object\n delete newObj.objectgroup\n return newObj\n }\n\n static unpackTileBytes(buffer: Buffer, size: number): number[] | never {\n const expectedCount = size * 4\n if (buffer.length !== expectedCount) {\n throw new Error(\"Expected \" + expectedCount +\n \" bytes of tile data; received \" + buffer.length)\n }\n let tileIndex = 0\n const array: number[] = []\n for (let i = 0; i < expectedCount; i += 4) {\n array[tileIndex] = buffer.readUInt32LE(i)\n tileIndex++\n }\n return array\n }\n\n static decode(obj: { encoding: string, data: string }, size: number) {\n const { encoding, data } = obj\n if (encoding == 'base64') {\n return TiledParser.unpackTileBytes(Buffer.from(data.trim(), 'base64'), size)\n }\n else if (encoding == 'csv') {\n return data.trim().split(',').map(x => +x)\n }\n return data\n }\n\n parseMap(): TiledMap {\n const json: any = xml2js(this.xml, { compact: true })\n const jsonNoCompact: any = xml2js(this.xml)\n //const layer = json.map.layer\n const tileset = json.map.tileset\n const group = json.map.group\n\n const recursiveObjectGroup = (obj) => {\n const { objectgroup, group, layer, imagelayer } = obj\n const setLayer = (type) => {\n if (!type) return\n TiledParser.toArray(type).forEach((val: any) => {\n if (this.layers.has(+val._attributes.id)) {\n throw new Error(`Tiled Parser Error: Layer with id ${val._attributes.id} already exists`)\n }\n this.layers.set(+val._attributes.id, val)\n })\n }\n setLayer(objectgroup)\n setLayer(layer)\n setLayer(group)\n setLayer(imagelayer)\n if (group) {\n recursiveObjectGroup(group)\n }\n }\n\n recursiveObjectGroup(json.map)\n\n const recursiveLayer = (elements, array: any = []) => {\n if (!elements) return array\n for (let element of elements) {\n const { name } = element\n if (!['layer', 'group', 'imagelayer', 'objectgroup'].includes(name)) continue\n const data = element.elements?.find(el => el.name == 'data')\n element.layer = this.layers.get(+element.attributes.id)\n const obj = {\n ...(this.transform(data) ?? {}),\n ...this.transform(element),\n ...this.transform(element.layer),\n layers: recursiveLayer(element.elements),\n data: data ? data.elements[0].text : undefined,\n type: name == 'layer' ? 'tilelayer' : name\n }\n delete obj.elements\n delete obj.layer\n if (obj.data) obj.data = TiledParser.decode(obj, obj.width * obj.height)\n array.push(obj)\n }\n return array\n }\n\n const layers = recursiveLayer(jsonNoCompact.elements[0].elements)\n\n const tilesets = TiledParser.toArray<TiledTileset>(tileset).map(tileset => {\n const obj = this.transform(tileset)\n return obj\n })\n\n const ret = {\n ...this.transform(json.map),\n layers,\n tilesets\n }\n\n delete ret.layer\n delete ret.tileset\n delete ret.group\n delete ret.imagelayer\n\n return ret\n }\n\n parseTileset(): TiledTileset {\n const json: any = xml2js(this.xml, { compact: true })\n const { tileset } = json\n\n const ret = {\n ...this.transform(tileset),\n image: this.transform(tileset.image),\n tiles: TiledParser.toArray<TilesetTile>(tileset.tile).map((tile: any) => {\n const ret = this.transform(tile)\n if (tile.animation) {\n ret.animations = TiledParser.toArray(tile.animation.frame).map(this.transform)\n }\n delete ret.animation\n return ret\n })\n }\n\n delete ret.tile\n\n return ret\n }\n}","export class TiledProperties {\n properties: {\n [key: string]: any\n } = {}\n class: string\n\n constructor(data?: any) {\n this.properties = data?.properties ?? {}\n }\n\n getProperty<P, D = undefined>(name: string, defaultValue?: D): P | D {\n const val = this.properties[name]\n if (val === undefined) {\n return defaultValue as D\n }\n return val as any\n }\n\n hasProperty(name: string): boolean {\n return !!this.properties[name]\n }\n\n setProperty<T>(name: string, value: T) {\n this.properties[name] = value\n }\n\n getType(): string {\n return this.class || this['type']\n }\n }","import { TiledProperties } from \"./Properties\"\n\nconst FLIPPED_HORIZONTALLY_FLAG = 0x80000000\nconst FLIPPED_VERTICALLY_FLAG = 0x40000000\nconst FLIPPED_DIAGONALLY_FLAG = 0x20000000\nconst ROTATED_HEXAGONAL_120_FLAG = 0x10000000\n\nexport class TileGid extends TiledProperties {\n private _gid: number \n\n constructor(public obj?) {\n super(obj)\n this._gid = obj?.gid\n }\n\n static getRealGid(gid: number): number {\n return gid & ~(FLIPPED_HORIZONTALLY_FLAG |\n FLIPPED_VERTICALLY_FLAG |\n FLIPPED_DIAGONALLY_FLAG | \n ROTATED_HEXAGONAL_120_FLAG)\n }\n\n get horizontalFlip(): boolean {\n return !!(this._gid & FLIPPED_HORIZONTALLY_FLAG)\n }\n\n get verticalFlip(): boolean {\n return !!(this._gid & FLIPPED_VERTICALLY_FLAG)\n }\n\n get diagonalFlip(): boolean {\n return !!(this._gid & FLIPPED_DIAGONALLY_FLAG)\n }\n\n get rotatedHex120(): boolean {\n return !!(this._gid & ROTATED_HEXAGONAL_120_FLAG)\n }\n\n get gid(): number {\n return TileGid.getRealGid(this._gid)\n }\n\n set gid(val: number) {\n this._gid = val\n }\n}","import { TilesetTile } from \"../types/Tile\";\nimport { TileGid } from \"./Gid\";\n\ntype TileInfo = TilesetTile & { gid?: number, index: number, layerIndex?: number }\n\nexport class Tile extends TileGid {\n index: number\n\n constructor(public tile: TileInfo | { gid: number }) {\n super(tile)\n // Store the properties before Object.assign to avoid overwriting them\n const preservedProperties = this.properties\n Reflect.deleteProperty(tile, 'gid')\n Object.assign(this, tile)\n // Restore properties if they were overwritten by Object.assign\n if (preservedProperties && Object.keys(preservedProperties).length > 0) {\n this.properties = { ...preservedProperties, ...this.properties }\n }\n } \n}\n\nexport interface Tile extends TileInfo {}","import { TiledObject } from \"../types/Objects\";\nimport { TileGid } from \"./Gid\";\n\nexport class TiledObjectClass extends TileGid {\n layerName?: string = ''\n\n constructor(object?: TiledObject) {\n super(object)\n Object.assign(this, object)\n if (object?.gid) {\n this.y -= this.height\n }\n }\n}\n\nexport interface TiledObjectClass extends TiledObject {}","import { TiledLayer } from \"../types/Layer\";\nimport { TileGid } from \"./Gid\";\nimport { TiledObjectClass } from \"./Object\";\nimport { TiledProperties } from \"./Properties\";\nimport { Tile } from \"./Tile\";\nimport { Tileset } from \"./Tileset\";\n\nexport class Layer extends TiledProperties {\n cacheTiles: boolean = false\n tiles: (Tile | undefined)[] = []\n objects: TiledObjectClass[]\n\n get size(): number {\n return this.data.length\n }\n\n constructor(layer: TiledLayer, private tilesets: Tileset[], private parent?: Layer) {\n super(layer)\n Object.assign(this, layer)\n this.mapObjects()\n this.mergePropertiesWithParent()\n // Caching tiles saves CPU but consumes RAM for large maps\n this.cacheTiles = this.getProperty<boolean, boolean>('cache-tiles', false)\n if (this.cacheTiles) this.propertiesTiles()\n }\n\n createTile(gid: number, tileIndex: number, layerIndex?: number): Tile | undefined {\n if (gid == 0) {\n return\n }\n const realGid = TileGid.getRealGid(gid)\n const tileset = Layer.findTileSet(realGid, this.tilesets)\n if (!tileset) {\n return undefined\n }\n const tile = tileset.getTile(realGid - tileset.firstgid)\n if (tile) {\n return new Tile({\n ...tile.tile,\n gid,\n index: tileIndex,\n layerIndex\n })\n }\n return new Tile({\n gid,\n index: tileIndex,\n layerIndex\n })\n }\n\n private mergePropertiesWithParent() {\n const parent = this.getLayerParent()\n if (!this.properties) this.properties = {}\n if (!parent) return\n for (let key in parent.properties) {\n const val = parent.properties[key]\n const valChild = this.properties[key]\n if (valChild === undefined) {\n this.properties[key] = val\n }\n else {\n if (key == 'z') {\n this.properties[key] += val\n }\n else {\n continue\n }\n }\n }\n this.opacity = Math.round((parent.opacity ?? 1) * (this.opacity ?? 1) * 100) / 100\n this.offsetx = (parent.offsetx ?? 0) + (this.offsetx ?? 0)\n this.offsety = (parent.offsety ?? 0) + (this.offsety ?? 0)\n this.locked = parent.locked ?? false\n }\n\n private propertiesTiles() {\n if (!this.data) return\n const data = this.data as number[]\n for (let i = 0; i < data.length; i++) {\n const id = data[i]\n this.tiles.push(this.createTile(id, i))\n }\n }\n\n private mapObjects() {\n if (this.objects) {\n this.objects = this.objects.map(object => {\n const obj = new TiledObjectClass(object)\n obj.layerName = this.name\n return obj\n })\n }\n }\n\n getTileByIndex(tileIndex: number): Tile | undefined {\n if (this.cacheTiles) {\n return this.tiles[tileIndex]\n }\n return this.createTile(this.data[tileIndex] as number, tileIndex)\n }\n\n static findTileSet(gid: number, tileSets: Tileset[]): Tileset | undefined {\n let tileset: Tileset | undefined\n for (let i = tileSets.length - 1; i >= 0; i--) {\n tileset = tileSets[i]\n if (tileset.firstgid && tileset.firstgid <= gid) {\n break;\n }\n }\n return tileset;\n }\n\n getLayerParent(): Layer | undefined {\n return this.parent\n }\n\n tilesForEach(cb: (tile: Tile | undefined, index: number) => void) {\n for (let i = 0; i < this.data.length; i++) {\n if (this.cacheTiles) {\n cb(this.tiles[i], i)\n continue\n }\n cb(this.createTile(this.data[i] as number, i) as Tile, i)\n }\n }\n\n setData(tileIndex: number, gid: number): void {\n (this.data as number[])[tileIndex] = gid\n }\n}\n\nexport interface Layer extends TiledLayer {\n objects: TiledObjectClass[]\n}","import { TilesetTile } from \"../types/Tile\"\nimport { TiledTileset } from \"../types/Tileset\"\nimport { TiledProperties } from \"./Properties\"\nimport { Tile } from \"./Tile\"\n\nexport class Tileset extends TiledProperties {\n private cacheTileId: Map<number, Tile> = new Map()\n\n constructor(private tileset: TiledTileset) {\n super(tileset)\n Object.assign(this, tileset)\n this.margin = this.margin ?? 0\n this.spacing = this.spacing ?? 0\n // Handle both 'tiles' and 'tile' property names\n const tilesArray = tileset.tiles || (tileset as any).tile || []\n for (let tile of tilesArray) {\n this.addTile(tile)\n }\n Reflect.deleteProperty(this, 'tiles')\n Reflect.deleteProperty(this, 'tile')\n }\n\n addTile(tileObj: TilesetTile): Tile {\n const tile = new Tile(tileObj)\n this.cacheTileId.set(tile.id, tile)\n return tile\n }\n\n getTile(id: number): Tile | undefined {\n return this.cacheTileId.get(+id)\n }\n}\n\nexport interface Tileset extends TiledTileset {}","import { TiledParser } from \"./parser\"\nimport { TiledMap } from \"../types/Map\"\nimport { TiledTileset } from \"../types/Tileset\"\nimport { joinPath } from \"../utils\"\n\ntype ParseOptions = { getOnlyBasename?: boolean }\n\n\nexport class TiledParserFile {\n private basePath: string\n\n constructor(private file: string, {\n basePath = '',\n staticDir = '',\n relativePath = ''\n } = {}) {\n this.basePath = basePath\n }\n\n static isBrowser() {\n // @ts-ignore\n return (typeof window !== 'undefined' && !window.useFileSystem)\n }\n\n static typeOfFile(file: string): {\n isXml: boolean\n isObject: boolean\n isHttp: boolean\n isPath: boolean\n } {\n file = file.trim()\n const isString = typeof file == 'string'\n const info = {\n isXml: isString && file.startsWith('<?xml'),\n isObject: !!file['version'],\n isHttp: isString && file.startsWith('http')\n }\n return {\n ...info,\n isPath: !info.isXml && !info.isObject && !info.isHttp\n }\n }\n\n private _parseFile<T>(file: string, type: string, cb: Function) {\n const isXml = content => TiledParserFile.typeOfFile(content).isXml\n\n const loadContent = (content) => {\n if (!content) {\n return cb(null)\n }\n if (isXml(content)) {\n const parser = new TiledParser(content, file, this.basePath)\n if (type == 'map') {\n const json = parser.parseMap() as any\n return cb(json)\n }\n else if (type == 'tileset') {\n const json = parser.parseTileset() as any\n return cb(json)\n }\n }\n\n return cb(JSON.parse(content))\n }\n\n if (TiledParserFile.typeOfFile(file).isObject) {\n return cb(file)\n }\n\n const { isHttp } = TiledParserFile.typeOfFile(file)\n if (isXml(file)) {\n loadContent(file)\n }\n else if (isHttp || (TiledParserFile.isBrowser() && process.env.NODE_ENV != 'test')) {\n let url = isHttp ? file : joinPath(this.basePath, file)\n // @ts-ignore\n if (TiledParserFile.isBrowser() && window.urlCache) {\n // @ts-ignore\n url = window.urlCache[file]\n }\n fetch(url, {\n headers: {\n 'Content-Type': 'application/xml'\n }\n })\n .then(response => response.text())\n .then(loadContent)\n .catch(err => cb(null, err))\n }\n }\n\n parseFile(cb: Function, options: ParseOptions = {}) {\n const { getOnlyBasename } = options\n const basename = path => path.substring(path.lastIndexOf('/') + 1)\n if (getOnlyBasename) {\n if (TiledParserFile.typeOfFile(this.file).isPath) {\n this.file = basename(this.file)\n }\n }\n this._parseFile<TiledMap>(this.file, 'map', (map, err) => {\n let hasError = false\n if (err) return cb(null, err)\n if (map.tilesets) {\n const parseTileset: TiledTileset[] = []\n const finish = () => {\n loadAll++\n if (loadAll == map.tilesets.length && !hasError) {\n map.tilesets = parseTileset\n cb(map)\n }\n }\n let loadAll = 0\n for (let i=0; i < map.tilesets.length ; i++) {\n const tileset = map.tilesets[i]\n \n // Check if tileset already contains XML child data (tiles, image, etc.)\n if (!tileset.source || tileset.tiles || tileset.image || tileset.tile) {\n // Tileset already contains data, no need to load from external source\n parseTileset[i] = tileset\n finish()\n continue\n }\n \n if (getOnlyBasename) {\n if (TiledParserFile.typeOfFile(tileset.source).isPath) {\n tileset.source = basename(tileset.source)\n }\n }\n\n this._parseFile<TiledTileset>(tileset.source, 'tileset', (result, err) => {\n if (err) {\n hasError = true\n return cb(null, err)\n }\n parseTileset[i] = {\n ...result,\n firstgid: tileset.firstgid\n }\n finish()\n })\n }\n \n }\n })\n }\n\n parseFilePromise(options: ParseOptions = {}): Promise<TiledMap> {\n return new Promise((resolve, reject) => {\n this.parseFile((ret, err) => {\n if (ret) resolve(ret)\n else reject(err)\n }, options)\n })\n }\n}","import { TiledLayer, TiledLayerType } from \"../types/Layer\";\nimport { TiledMap } from \"../types/Map\";\nimport { TiledTileset } from \"../types/Tileset\";\nimport { Layer } from \"./Layer\";\nimport { TiledObjectClass } from \"./Object\";\nimport { TiledProperties } from \"./Properties\";\nimport { Tile } from \"./Tile\";\nimport { Tileset } from \"./Tileset\";\n\nexport interface TileInfo {\n tiles: Tile[]\n hasCollision: boolean | undefined\n isClimbable?: boolean | undefined\n isOverlay: boolean | undefined\n objectGroups: TiledObjectClass[],\n tileIndex: number\n}\n\nexport interface GetTileOptions {\n populateTiles?: boolean\n}\n\n// Allows you to cache tilesets. Avoid rebuilding for other maps\nexport let bufferTilesets = {}\n\nexport class MapClass extends TiledProperties {\n /** \n * @title Data of map\n * @prop {object} [data]\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n data: TiledMap\n\n tilesets: Tileset[] = []\n layers: Layer[] = []\n\n private tmpLayers: Layer[] = []\n private tilesIndex: {\n [zIndex: number]: Uint16Array\n } = {}\n\n /**\n * Allows to define the size of ArrayBuffer to keep in memory the tiles of the map\n */\n private allocateMemory: number = 0\n\n /**\n * If set to true, the memory allocation will take only one tile (the tile of the last layer)\n */\n private lowMemory: boolean = false\n\n constructor(map?: TiledMap) {\n super(map ?? {})\n if (map) this.load(map)\n }\n\n load(map: TiledMap) {\n Object.assign(this, map)\n if (this.hasProperty('low-memory')) {\n this.lowMemory = this.getProperty<boolean, boolean>('low-memory', false)\n }\n this.tmpLayers = []\n this.mapTilesets()\n this.mapLayers(this.layers)\n this.layers = [...this.tmpLayers]\n Reflect.deleteProperty(this, 'tmpLayers')\n this.setTilesIndex()\n this.data = map \n }\n\n /** \n * @title Width of the map in pixels\n * @prop {number} [widthPx]\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n\n get widthPx(): number {\n return this.width * this.tilewidth\n }\n\n /** \n * @title Height of the map in pixels\n * @prop {number} [heightPx]\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n get heightPx(): number {\n return this.height * this.tileheight\n }\n\n /** \n * @title The depth of the map in pixels (this is the height of a tile ;))\n * @prop {number} map.zTileHeight\n * @readonly\n * @memberof Map\n * @memberof RpgSceneMap\n * */\n get zTileHeight(): number {\n return this.tileheight\n }\n\n /**\n * Find a layer by name. Returns `undefined` is the layer is not found\n\n * @title Get Layer by name\n * @method map.getLayerByName(name)\n * @param {string} name layer name\n * @returns {LayerInfo | undefined}\n * @example\n * ```ts\n * const tiles = map.getLayerByName(0, 0)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getLayerByName(name: string): TiledLayer | undefined {\n return this.layers.find(layer => layer.name == name)\n }\n\n /**\n * Get the tile index on the tileset\n * \n * @title Get index of tile\n * @method map.getTileIndex(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns {number}\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileIndex(x: number, y: number, [z] = [0]): number {\n return this.width * Math.floor((y - z) / this.tileheight) + Math.floor(x / this.tilewidth)\n }\n\n getTilePosition(index: number): { x: number, y: number } {\n return {\n y: Math.floor(index / this.width) * this.tileheight,\n x: index % (this.width) * this.tilewidth\n }\n }\n\n /**\n * Find the point of origin (top left) of a tile. Of course, its position depends on the size of the tile\n\n * @title Get origin position of tile\n * @method map.getTileOriginPosition(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns { {x: number, y: number }}\n * @example\n * ```ts\n * // If the size of a tile is 32x32px\n * const position = map.getTileOriginPosition(35, 12)\n * console.log(position) // { x: 32, y: 0 }\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n\n getTileOriginPosition(x: number, y: number): {\n x: number\n y: number\n } {\n return {\n x: Math.floor(x / this.tilewidth) * this.tilewidth,\n y: Math.floor(y / this.tileheight) * this.tileheight\n }\n }\n\n /**\n * Recover tiles according to a position\n\n * @title Get tile by position\n * @method map.getTileByPosition(x,y)\n * @param {number} x Position X\n * @param {number} x Position Y\n * @returns {TileInfo}\n * @example\n * ```ts\n * const tiles = map.getTileByPosition(0, 0)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n getTileByPosition(x: number, y: number, z: [number, number] = [0, 0], options: GetTileOptions = {}): TileInfo {\n const tileIndex = this.getTileIndex(x, y, [z[0]])\n return this.getTileByIndex(tileIndex, z, options)\n }\n\n /**\n * Retrieves tiles according to its index\n\n * @title Get tile by index\n * @method map.getTileByIndex(tileIndex)\n * @param {number} tileIndex tile index\n * @returns {TileInfo}\n * @example\n * ```ts\n * const index = map.getTileIndex(0, 0)\n * const tiles = map.getTileByIndex(index)\n * ```\n * @memberof Map\n * @memberof RpgSceneMap\n */\n\n getTileByIndex(\n tileIndex: number, \n zPlayer: [number, number] = [0, 0], \n options: GetTileOptions = {\n populateTiles: true\n }\n ): TileInfo {\n const zA = Math.floor(zPlayer[0] / this.zTileHeight)\n const zB = Math.floor(zPlayer[1] / this.zTileHeight)\n const level = this.tilesIndex[zA]\n const obj: TileInfo = {\n tiles: [],\n hasCollision: false,\n isOverlay: false,\n objectGroups: [],\n tileIndex\n }\n if (!level) {\n return obj\n }\n const [layer] = this.layers\n const getTileByPointer = (pointer = 0) => {\n const pos = tileIndex * this.realAllocateMemory + pointer\n const gid = level[pos]\n if (gid === 0) {\n return obj\n }\n const tile = layer.createTile(gid, tileIndex, level[pos+1])\n if (tile) obj.tiles.push(tile)\n }\n if (options.populateTiles) {\n for (let i=0 ; i < this.realAllocateMemory ; i += 2) {\n getTileByPointer(i)\n }\n }\n else {\n getTileByPointer()\n }\n const [tile] = obj.tiles\n if (tile) {\n obj.hasCollision = tile.getProperty<boolean, boolean>('collision', false)\n obj.objectGroups = tile.objects as TiledObjectClass[] ?? []\n }\n return obj\n }\n\n getAllObjects(): TiledObjectClass[] {\n return this.layers.reduce((prev: TiledObjectClass[], current: Layer) => {\n if (!current.objects) return prev\n return prev.concat(...current.objects)\n }, [])\n }\n\n getData() {\n return {\n ...this.data,\n layers: this.layers\n }\n }\n\n setTile(x: number, y: number, layerFilter: string | ((layer: any) => boolean), tileInfo: any): {\n x: number,\n y: number,\n tiles: {\n [tileIndex: number]: Tile\n }\n } | never {\n if (this.lowMemory) {\n throw 'Impossible to change a tile with the lowMemory option'\n }\n const tileIndex = this.getTileIndex(x, y)\n let fnFilter\n let tilesEdited = {}\n if (typeof layerFilter == 'string') {\n fnFilter = (layer) => layer.name == layerFilter\n }\n else {\n fnFilter = layerFilter\n }\n for (let i=0 ; i < this.layers.length ; i++) {\n const layer = this.layers[i]\n if (!fnFilter(layer)) continue\n let tile: Tile | undefined\n const oldTile = this.getTileByIndex(tileIndex)\n if (tileInfo.gid) {\n tile = layer.createTile(tileInfo.gid, tileIndex)\n }\n if (!tile) continue\n for (let key in tileInfo) {\n if (key == 'gid') continue\n tile[key] = tileInfo[key]\n }\n tilesEdited[layer.name] = {\n gid: tile.gid,\n properties: tile.properties\n }\n this.setTileIndex(layer, oldTile.tiles[0], tile, tileIndex, i)\n layer.setData(tileIndex, tile.gid)\n }\n return {\n x,\n y,\n tiles: tilesEdited\n }\n }\n\n removeCacheTileset(name: string) {\n delete bufferTilesets[name]\n }\n\n clearCacheTilesets() {\n bufferTilesets = {}\n }\n\n private mapTilesets() {\n this.tilesets = this.tilesets.map(tileset => {\n if (bufferTilesets[tileset.name]) {\n const instance = bufferTilesets[tileset.name]\n instance.firstgid = tileset.firstgid\n return instance\n }\n const _tileset = new Tileset(tileset)\n bufferTilesets[_tileset.name] = _tileset\n return _tileset\n })\n }\n\n private mapLayers(layers: TiledLayer[] = [], parent?: Layer) {\n for (let layer of layers) {\n const layerInstance = new Layer(layer, this.tilesets, parent)\n this.tmpLayers.push(layerInstance)\n if (layer.layers) {\n this.mapLayers(layer.layers, layerInstance)\n }\n }\n if (this.lowMemory) this.allocateMemory = 1\n if (!this.allocateMemory) this.allocateMemory = this.layers.length\n }\n\n private setTileIndex(layer: Layer, oldTile: Tile, newTile: Tile, tileIndex: number, layerIndex: number) {\n const startPos = tileIndex * this.realAllocateMemory\n let pointer = startPos + this.realAllocateMemory - 2\n const zLayer = layer.getProperty<number, number>('z', 0)\n const zTile = oldTile.getProperty<number, number>('z', 0)\n let z = zLayer + zTile\n while (pointer >= startPos) {\n const zlayer = this.tilesIndex[z]\n if (zlayer[pointer] === oldTile.gid && zlayer[pointer+1] === layerIndex) {\n this.tilesIndex[z][pointer] = newTile.gid\n }\n pointer -= 2\n }\n }\n\n /**\n * We multiply by 2 because 2 entries are stored for a tile: its GID and the Layer Index\n * \n * Example If I have 3 layers, The array will have the following form \n * \n * [\n * GID of Layer 3, \n * Layer Index of Layer 3, \n * GID of Layer 2, \n * Layer Index of Layer 2, \n * GID of Layer 1, \n * Layer Index of Layer 1,\n * ... others tiles\n * ]\n * \n * The size in memory of the map is therefore:\n * \n * `(map width * map height * number of layers * 4) bytes`\n * \n * > We multiply by 4, because an element takes 2 bytes and has 2 elements for a tile is 4 bytes in all\n * \n * Example (a 100x100 map with 5 layers)\n * \n * `100 * 100 * 5 * 4 = 200000 bytes = ~195 Kb`\n * \n * If we define on lowMemory then the calculation is the following\n * \n * `(map width * map height * 4) bytes`\n * \n * Example\n * \n * `100 * 100 * 4 = 40000 bytes = ~39 Kb`\n */\n private get realAllocateMemory() {\n return this.allocateMemory * 2\n }\n\n /**\n * We keep each tile in memory classified by z value. The values are ordered from the end to the beginning so that the first element of the array (when retrieved with getTileByIndex() is the tile on the highest layer. This way, the tile search is very fast for collisions \n * \n */\n private addTileIndex(layer: Layer, tile: Tile | undefined, tileIndex: number, layerIndex: number) {\n if ((!tile) || (tile && tile.gid == 0)) {\n return\n }\n const zLayer = layer.getProperty<number, number>('z', 0)\n const zTile = tile.getProperty<number, number>('z', 0)\n let z = zLayer + zTile\n if (!this.tilesIndex[z]) {\n const buffer = new ArrayBuffer(layer.size * this.realAllocateMemory * 2)\n this.tilesIndex[z] = new Uint16Array(buffer)\n }\n const startPos = tileIndex * this.realAllocateMemory\n let pointer = startPos + this.realAllocateMemory - 2\n\n while (this.tilesIndex[z][pointer] !== 0 && pointer > startPos) {\n pointer -= 2\n }\n\n this.tilesIndex[z][pointer] = tile.gid\n this.tilesIndex[z][pointer+1] = layerIndex\n this.tilesIndex[z][startPos] = tile.gid\n this.tilesIndex[z][startPos+1] = layerIndex\n }\n\n private setTilesIndex() {\n for (let i=0 ; i < this.layers.length ; i++) {\n const layer = this.layers[i]\n if (layer.type != TiledLayerType.Tile) {\n continue\n }\n layer.tilesForEach((tile, index) => {\n this.addTileIndex(layer, tile, index, i)\n })\n }\n }\n}\n\nexport interface MapClass extends TiledMap { }"],"names":["TiledLayerType","require$$0","require$$1","require$$2","require$$3","attr","Buffer","xml2js","group","tileset","ret","err","tile"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15]}
|