{"ast":null,"code":"/*!\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\nvar base64 = require('base64-js');\nvar ieee754 = require('ieee754');\nvar customInspectSymbol = 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;\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\nvar 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();\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {\n  console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');\n}\nfunction typedArraySupport() {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1);\n    var proto = {\n      foo: function () {\n        return 42;\n      }\n    };\n    Object.setPrototypeOf(proto, Uint8Array.prototype);\n    Object.setPrototypeOf(arr, proto);\n    return arr.foo() === 42;\n  } catch (e) {\n    return false;\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});\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined;\n    return this.byteOffset;\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  var 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('The \"string\" argument must be of type string. Received type number');\n    }\n    return allocUnsafe(arg);\n  }\n  return from(arg, encodingOrOffset, length);\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  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value);\n  }\n  if (value == null) {\n    throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\n  }\n  if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n    return fromArrayBuffer(value, encodingOrOffset, length);\n  }\n  if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length);\n  }\n  if (typeof value === 'number') {\n    throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n  }\n  var valueOf = value.valueOf && value.valueOf();\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length);\n  }\n  var b = fromObject(value);\n  if (b) return b;\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);\n  }\n  throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\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);\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}\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' ? createBuffer(size).fill(fill, encoding) : 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};\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};\nfunction fromString(string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8';\n  }\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding);\n  }\n  var length = byteLength(string, encoding) | 0;\n  var buf = createBuffer(length);\n  var actual = buf.write(string, encoding);\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  return buf;\n}\nfunction fromArrayLike(array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0;\n  var buf = createBuffer(length);\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255;\n  }\n  return buf;\n}\nfunction fromArrayView(arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView);\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n  }\n  return fromArrayLike(arrayView);\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  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds');\n  }\n  var 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  return buf;\n}\nfunction fromObject(obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0;\n    var buf = createBuffer(len);\n    if (buf.length === 0) {\n      return buf;\n    }\n    obj.copy(buf, 0, 0, len);\n    return buf;\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  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data);\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 ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');\n  }\n  return length | 0;\n}\nfunction SlowBuffer(length) {\n  if (+length != length) {\n    // eslint-disable-line eqeqeq\n    length = 0;\n  }\n  return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n  return b != null && b._isBuffer === true && 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('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n  }\n  if (a === b) return 0;\n  var x = a.length;\n  var y = b.length;\n  for (var 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  if (x < y) return -1;\n  if (y < x) return 1;\n  return 0;\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};\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  if (list.length === 0) {\n    return Buffer.alloc(0);\n  }\n  var i;\n  if (length === undefined) {\n    length = 0;\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length;\n    }\n  }\n  var buffer = Buffer.allocUnsafe(length);\n  var pos = 0;\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i];\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos);\n      } else {\n        Uint8Array.prototype.set.call(buffer, buf, pos);\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};\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('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string);\n  }\n  var len = string.length;\n  var mustMatch = arguments.length > 2 && arguments[2] === true;\n  if (!mustMatch && len === 0) return 0;\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false;\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case '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\n        encoding = ('' + encoding).toLowerCase();\n        loweredCase = true;\n    }\n  }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n  var 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  if (end === undefined || end > this.length) {\n    end = this.length;\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  if (end <= start) {\n    return '';\n  }\n  if (!encoding) encoding = 'utf8';\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end);\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end);\n      case 'ascii':\n        return asciiSlice(this, start, end);\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end);\n      case 'base64':\n        return base64Slice(this, start, end);\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end);\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;\nfunction swap(b, n, m) {\n  var i = b[n];\n  b[n] = b[m];\n  b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n  var len = this.length;\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits');\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1);\n  }\n  return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n  var len = this.length;\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits');\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3);\n    swap(this, i + 1, i + 2);\n  }\n  return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n  var len = this.length;\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits');\n  }\n  for (var 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};\nBuffer.prototype.toString = function toString() {\n  var 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};\nBuffer.prototype.toLocaleString = Buffer.prototype.toString;\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};\nBuffer.prototype.inspect = function inspect() {\n  var str = '';\n  var 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}\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('The \"target\" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target);\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  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index');\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  start >>>= 0;\n  end >>>= 0;\n  thisStart >>>= 0;\n  thisEnd >>>= 0;\n  if (this === target) return 0;\n  var x = thisEnd - thisStart;\n  var y = end - start;\n  var len = Math.min(x, y);\n  var thisCopy = this.slice(thisStart, thisEnd);\n  var targetCopy = target.slice(start, end);\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i];\n      y = targetCopy[i];\n      break;\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;else byteOffset = buffer.length - 1;\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0;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  throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1;\n  var arrLength = arr.length;\n  var valLength = val.length;\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase();\n    if (encoding === 'ucs2' || encoding === 'ucs-2' || 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  function read(buf, i) {\n    if (indexSize === 1) {\n      return buf[i];\n    } else {\n      return buf.readUInt16BE(i * indexSize);\n    }\n  }\n  var i;\n  if (dir) {\n    var 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      var found = true;\n      for (var 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  return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n  offset = Number(offset) || 0;\n  var remaining = buf.length - offset;\n  if (!length) {\n    length = remaining;\n  } else {\n    length = Number(length);\n    if (length > remaining) {\n      length = remaining;\n    }\n  }\n  var strLen = string.length;\n  if (length > strLen / 2) {\n    length = strLen / 2;\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16);\n    if (numberIsNaN(parsed)) return i;\n    buf[offset + i] = parsed;\n  }\n  return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\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('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n  }\n  var remaining = this.length - offset;\n  if (length === undefined || length > remaining) length = remaining;\n  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds');\n  }\n  if (!encoding) encoding = 'utf8';\n  var loweredCase = false;\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length);\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length);\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length);\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length);\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length);\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n        encoding = ('' + encoding).toLowerCase();\n        loweredCase = true;\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};\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}\nfunction utf8Slice(buf, start, end) {\n  end = Math.min(buf.length, end);\n  var res = [];\n  var i = start;\n  while (i < end) {\n    var firstByte = buf[i];\n    var codePoint = null;\n    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint;\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    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    res.push(codePoint);\n    i += bytesPerSequence;\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\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n  var 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  var res = '';\n  var i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}\nfunction asciiSlice(buf, start, end) {\n  var ret = '';\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F);\n  }\n  return ret;\n}\nfunction latin1Slice(buf, start, end) {\n  var ret = '';\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i]);\n  }\n  return ret;\n}\nfunction hexSlice(buf, start, end) {\n  var len = buf.length;\n  if (!start || start < 0) start = 0;\n  if (!end || end < 0 || end > len) end = len;\n  var out = '';\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]];\n  }\n  return out;\n}\nfunction utf16leSlice(buf, start, end) {\n  var bytes = buf.slice(start, end);\n  var res = '';\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n  }\n  return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n  var len = this.length;\n  start = ~~start;\n  end = end === undefined ? len : ~~end;\n  if (start < 0) {\n    start += len;\n    if (start < 0) start = 0;\n  } else if (start > len) {\n    start = len;\n  }\n  if (end < 0) {\n    end += len;\n    if (end < 0) end = 0;\n  } else if (end > len) {\n    end = len;\n  }\n  if (end < start) end = start;\n  var newBuf = this.subarray(start, end);\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype);\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}\nBuffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) checkOffset(offset, byteLength, this.length);\n  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUintBE = Buffer.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  var val = this[offset + --byteLength];\n  var mul = 1;\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 1, this.length);\n  return this[offset];\n};\nBuffer.prototype.readUint16LE = Buffer.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};\nBuffer.prototype.readUint16BE = Buffer.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};\nBuffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\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  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul;\n  }\n  mul *= 0x80;\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n  return val;\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  var i = byteLength;\n  var mul = 1;\n  var val = this[offset + --i];\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul;\n  }\n  mul *= 0x80;\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n  return val;\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};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  var val = this[offset] | this[offset + 1] << 8;\n  return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 2, this.length);\n  var val = this[offset + 1] | this[offset] << 8;\n  return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n  offset = offset >>> 0;\n  if (!noAssert) checkOffset(offset, 4, this.length);\n  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\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};\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};\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};\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};\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}\nBuffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n    checkInt(this, value, offset, byteLength, maxBytes, 0);\n  }\n  var mul = 1;\n  var i = 0;\n  this[offset] = value & 0xFF;\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = value / mul & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  byteLength = byteLength >>> 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n    checkInt(this, value, offset, byteLength, maxBytes, 0);\n  }\n  var i = byteLength - 1;\n  var mul = 1;\n  this[offset + i] = value & 0xFF;\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = value / mul & 0xFF;\n  }\n  return offset + byteLength;\n};\nBuffer.prototype.writeUint8 = Buffer.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};\nBuffer.prototype.writeUint16LE = Buffer.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};\nBuffer.prototype.writeUint16BE = Buffer.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};\nBuffer.prototype.writeUint32LE = Buffer.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};\nBuffer.prototype.writeUint32BE = Buffer.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};\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1);\n    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n  }\n  var i = 0;\n  var mul = 1;\n  var 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  return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n  value = +value;\n  offset = offset >>> 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1);\n    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n  }\n  var i = byteLength - 1;\n  var mul = 1;\n  var 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  return offset + byteLength;\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};\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};\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};\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};\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};\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}\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}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert);\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}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert);\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  var len = end - start;\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(target, this.subarray(start, end), targetStart);\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      var code = val.charCodeAt(0);\n      if (encoding === 'utf8' && code < 128 || 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  if (end <= start) {\n    return this;\n  }\n  start = start >>> 0;\n  end = end === undefined ? this.length : end >>> 0;\n  if (!val) val = 0;\n  var i;\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val;\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n    var len = bytes.length;\n    if (len === 0) {\n      throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len];\n    }\n  }\n  return this;\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\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}\nfunction utf8ToBytes(string, units) {\n  units = units || Infinity;\n  var codePoint;\n  var length = string.length;\n  var leadSurrogate = null;\n  var bytes = [];\n  for (var 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        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    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(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break;\n      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break;\n      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n    } else {\n      throw new Error('Invalid code point');\n    }\n  }\n  return bytes;\n}\nfunction asciiToBytes(str) {\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF);\n  }\n  return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n  var c, hi, lo;\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break;\n    c = str.charCodeAt(i);\n    hi = c >> 8;\n    lo = c % 256;\n    byteArray.push(lo);\n    byteArray.push(hi);\n  }\n  return byteArray;\n}\nfunction base64ToBytes(str) {\n  return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if (i + offset >= dst.length || i >= src.length) break;\n    dst[i + offset] = src[i];\n  }\n  return i;\n}\n\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 || obj != null && obj.constructor != null && obj.constructor.name != null && 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\nvar hexSliceLookupTable = function () {\n  var alphabet = '0123456789abcdef';\n  var table = new Array(256);\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16;\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j];\n    }\n  }\n  return table;\n}();","map":{"version":3,"names":["base64","require","ieee754","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","kMaxLength","TYPED_ARRAY_SUPPORT","typedArraySupport","console","error","arr","Uint8Array","proto","foo","Object","setPrototypeOf","prototype","e","defineProperty","enumerable","get","isBuffer","undefined","buffer","byteOffset","createBuffer","length","RangeError","buf","arg","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","value","fromString","ArrayBuffer","isView","fromArrayView","isInstance","fromArrayBuffer","SharedArrayBuffer","valueOf","b","fromObject","toPrimitive","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","byteLength","actual","write","slice","fromArrayLike","array","i","arrayView","copy","obj","len","numberIsNaN","type","Array","isArray","data","toString","_isBuffer","compare","a","offset","x","y","Math","min","String","toLowerCase","concat","list","pos","set","call","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","swap16","swap32","swap64","apply","toLocaleString","equals","inspect","str","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","isFinite","Error","toJSON","_arr","fromByteArray","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","push","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","code","charCodeAt","INVALID_BASE64_RE","base64clean","split","units","Infinity","leadSurrogate","byteArray","c","hi","lo","toByteArray","src","dst","constructor","name","alphabet","table","i16"],"sources":["C:/Users/user/Desktop/05mediaSocial/node_modules/buffer/index.js"],"sourcesContent":["/*!\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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar 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\nvar 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    var arr = new Uint8Array(1)\n    var 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  var 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  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var 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(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\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  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var 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  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var 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    var 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  var 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    var len = checked(obj.length) | 0\n    var 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  var x = a.length\n  var y = b.length\n\n  for (var 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  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(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  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case '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  var 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  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var 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  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var 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  var 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  var str = ''\n  var 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  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var 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  var indexSize = 1\n  var arrLength = arr.length\n  var 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  var i\n  if (dir) {\n    var 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      var found = true\n      for (var 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  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (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  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      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  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var 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\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var 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  var res = ''\n  var 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  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var 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  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = 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  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  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  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  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.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    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 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    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 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\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  var 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      var 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  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var 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// HELPER FUNCTIONS\n// ================\n\nvar 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  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var 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  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\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\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n"],"mappings":"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"},"metadata":{},"sourceType":"script","externalDependencies":[]}