{"version":3,"sources":["jsdelivr-header.js","/npm/msgpack-js-browser@0.1.4/msgpack.js"],"names":[],"mappings":"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","file":"/npm/msgpack-js-browser@0.1.4/msgpack.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/msgpack-js-browser@0.1.4/msgpack.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","( // Module boilerplate to support browser globals and browserify and AMD.\n  typeof define === \"function\" ? function (m) { define(\"msgpack-js\", m); } :\n  typeof exports === \"object\" ? function (m) { module.exports = m(); } :\n  function(m){ this.msgpack = m(); }\n)(function () {\n\"use strict\";\n\nvar exports = {};\n\nexports.inspect = inspect;\nfunction inspect(buffer) {\n  if (buffer === undefined) return \"undefined\";\n  var view;\n  var type;\n  if (buffer instanceof ArrayBuffer) {\n    type = \"ArrayBuffer\";\n    view = new DataView(buffer);\n  }\n  else if (buffer instanceof DataView) {\n    type = \"DataView\";\n    view = buffer;\n  }\n  if (!view) return JSON.stringify(buffer);\n  var bytes = [];\n  for (var i = 0; i < buffer.byteLength; i++) {\n    if (i > 20) {\n      bytes.push(\"...\");\n      break;\n    }\n    var byte = view.getUint8(i).toString(16);\n    if (byte.length === 1) byte = \"0\" + byte;\n    bytes.push(byte);\n  }\n  return \"<\" + type + \" \" + bytes.join(\" \") + \">\";\n}\n\n// Encode string as utf8 into dataview at offset\nexports.utf8Write = utf8Write;\nfunction utf8Write(view, offset, string) {\n  var byteLength = view.byteLength;\n  for(var i = 0, l = string.length; i < l; i++) {\n    var codePoint = string.charCodeAt(i);\n\n    // One byte of UTF-8\n    if (codePoint < 0x80) {\n      view.setUint8(offset++, codePoint >>> 0 & 0x7f | 0x00);\n      continue;\n    }\n\n    // Two bytes of UTF-8\n    if (codePoint < 0x800) {\n      view.setUint8(offset++, codePoint >>> 6 & 0x1f | 0xc0);\n      view.setUint8(offset++, codePoint >>> 0 & 0x3f | 0x80);\n      continue;\n    }\n\n    // Three bytes of UTF-8.  \n    if (codePoint < 0x10000) {\n      view.setUint8(offset++, codePoint >>> 12 & 0x0f | 0xe0);\n      view.setUint8(offset++, codePoint >>> 6  & 0x3f | 0x80);\n      view.setUint8(offset++, codePoint >>> 0  & 0x3f | 0x80);\n      continue;\n    }\n\n    // Four bytes of UTF-8\n    if (codePoint < 0x110000) {\n      view.setUint8(offset++, codePoint >>> 18 & 0x07 | 0xf0);\n      view.setUint8(offset++, codePoint >>> 12 & 0x3f | 0x80);\n      view.setUint8(offset++, codePoint >>> 6  & 0x3f | 0x80);\n      view.setUint8(offset++, codePoint >>> 0  & 0x3f | 0x80);\n      continue;\n    }\n    throw new Error(\"bad codepoint \" + codePoint);\n  }\n}\n\nexports.utf8Read = utf8Read;\nfunction utf8Read(view, offset, length) {\n  var string = \"\";\n  for (var i = offset, end = offset + length; i < end; i++) {\n    var byte = view.getUint8(i);\n    // One byte character\n    if ((byte & 0x80) === 0x00) {\n      string += String.fromCharCode(byte);\n      continue;\n    }\n    // Two byte character\n    if ((byte & 0xe0) === 0xc0) {\n      string += String.fromCharCode(\n        ((byte & 0x0f) << 6) | \n        (view.getUint8(++i) & 0x3f)\n      );\n      continue;\n    }\n    // Three byte character\n    if ((byte & 0xf0) === 0xe0) {\n      string += String.fromCharCode(\n        ((byte & 0x0f) << 12) |\n        ((view.getUint8(++i) & 0x3f) << 6) |\n        ((view.getUint8(++i) & 0x3f) << 0)\n      );\n      continue;\n    }\n    // Four byte character\n    if ((byte & 0xf8) === 0xf0) {\n      string += String.fromCharCode(\n        ((byte & 0x07) << 18) |\n        ((view.getUint8(++i) & 0x3f) << 12) |\n        ((view.getUint8(++i) & 0x3f) << 6) |\n        ((view.getUint8(++i) & 0x3f) << 0)\n      );\n      continue;\n    }\n    throw new Error(\"Invalid byte \" + byte.toString(16));\n  }\n  return string;\n}\n\nexports.utf8ByteCount = utf8ByteCount;\nfunction utf8ByteCount(string) {\n  var count = 0;\n  for(var i = 0, l = string.length; i < l; i++) {\n    var codePoint = string.charCodeAt(i);\n    if (codePoint < 0x80) {\n      count += 1;\n      continue;\n    }\n    if (codePoint < 0x800) {\n      count += 2;\n      continue;\n    }\n    if (codePoint < 0x10000) {\n      count += 3;\n      continue;\n    }\n    if (codePoint < 0x110000) {\n      count += 4;\n      continue;\n    }\n    throw new Error(\"bad codepoint \" + codePoint);\n  }\n  return count;\n}\n\nexports.encode = function (value) {\n  var buffer = new ArrayBuffer(sizeof(value));\n  var view = new DataView(buffer);\n  encode(value, view, 0);\n  return buffer;\n}\n\nexports.decode = decode;\n\n// http://wiki.msgpack.org/display/MSGPACK/Format+specification\n// I've extended the protocol to have two new types that were previously reserved.\n//   buffer 16  11011000  0xd8\n//   buffer 32  11011001  0xd9\n// These work just like raw16 and raw32 except they are node buffers instead of strings.\n//\n// Also I've added a type for `undefined`\n//   undefined  11000100  0xc4\n\nfunction Decoder(view, offset) {\n  this.offset = offset || 0;\n  this.view = view;\n}\nDecoder.prototype.map = function (length) {\n  var value = {};\n  for (var i = 0; i < length; i++) {\n    var key = this.parse();\n    value[key] = this.parse();\n  }\n  return value;\n};\nDecoder.prototype.buf = function (length) {\n  var value = new ArrayBuffer(length);\n  (new Uint8Array(value)).set(new Uint8Array(this.view.buffer, this.offset, length), 0);\n  this.offset += length;\n  return value;\n};\nDecoder.prototype.raw = function (length) {\n  var value = utf8Read(this.view, this.offset, length);\n  this.offset += length;\n  return value;\n};\nDecoder.prototype.array = function (length) {\n  var value = new Array(length);\n  for (var i = 0; i < length; i++) {\n    value[i] = this.parse();\n  }\n  return value;\n};\nDecoder.prototype.parse = function () {\n  var type = this.view.getUint8(this.offset);\n  var value, length;\n  // FixRaw\n  if ((type & 0xe0) === 0xa0) {\n    length = type & 0x1f;\n    this.offset++;\n    return this.raw(length);\n  }\n  // FixMap\n  if ((type & 0xf0) === 0x80) {\n    length = type & 0x0f;\n    this.offset++;\n    return this.map(length);\n  }\n  // FixArray\n  if ((type & 0xf0) === 0x90) {\n    length = type & 0x0f;\n    this.offset++;\n    return this.array(length);\n  }\n  // Positive FixNum\n  if ((type & 0x80) === 0x00) {\n    this.offset++;\n    return type;\n  }\n  // Negative Fixnum\n  if ((type & 0xe0) === 0xe0) {\n    value = this.view.getInt8(this.offset);\n    this.offset++;\n    return value;\n  }\n  switch (type) {\n  // raw 16\n  case 0xda:\n    length = this.view.getUint16(this.offset + 1);\n    this.offset += 3;\n    return this.raw(length);\n  // raw 32\n  case 0xdb:\n    length = this.view.getUint32(this.offset + 1);\n    this.offset += 5;\n    return this.raw(length);\n  // nil\n  case 0xc0:\n    this.offset++;\n    return null;\n  // false\n  case 0xc2:\n    this.offset++;\n    return false;\n  // true\n  case 0xc3:\n    this.offset++;\n    return true;\n  // undefined\n  case 0xc4:\n    this.offset++;\n    return undefined;\n  // uint8\n  case 0xcc:\n    value = this.view.getUint8(this.offset + 1);\n    this.offset += 2;\n    return value;\n  // uint 16\n  case 0xcd:\n    value = this.view.getUint16(this.offset + 1);\n    this.offset += 3;\n    return value;\n  // uint 32\n  case 0xce:\n    value = this.view.getUint32(this.offset + 1);\n    this.offset += 5;\n    return value;\n  // int 8\n  case 0xd0:\n    value = this.view.getInt8(this.offset + 1);\n    this.offset += 2;\n    return value;\n  // int 16\n  case 0xd1:\n    value = this.view.getInt16(this.offset + 1);\n    this.offset += 3;\n    return value;\n  // int 32\n  case 0xd2:\n    value = this.view.getInt32(this.offset + 1);\n    this.offset += 5;\n    return value;\n  // map 16\n  case 0xde:\n    length = this.view.getUint16(this.offset + 1);\n    this.offset += 3;\n    return this.map(length);\n  // map 32\n  case 0xdf:\n    length = this.view.getUint32(this.offset + 1);\n    this.offset += 5;\n    return this.map(length);\n  // array 16\n  case 0xdc:\n    length = this.view.getUint16(this.offset + 1);\n    this.offset += 3;\n    return this.array(length);\n  // array 32\n  case 0xdd:\n    length = this.view.getUint32(this.offset + 1);\n    this.offset += 5;\n    return this.array(length);\n  // buffer 16\n  case 0xd8:\n    length = this.view.getUint16(this.offset + 1);\n    this.offset += 3;\n    return this.buf(length);\n  // buffer 32\n  case 0xd9:\n    length = this.view.getUint32(this.offset + 1);\n    this.offset += 5;\n    return this.buf(length);\n  // float\n  case 0xca:\n    value = this.view.getFloat32(this.offset + 1);\n    this.offset += 5;\n    return value;\n  // double\n  case 0xcb:\n    value = this.view.getFloat64(this.offset + 1);\n    this.offset += 9;\n    return value;\n  }\n  throw new Error(\"Unknown type 0x\" + type.toString(16));\n};\nfunction decode(buffer) {\n  var view = new DataView(buffer);\n  var decoder = new Decoder(view);\n  var value = decoder.parse();\n  if (decoder.offset !== buffer.byteLength) throw new Error((buffer.byteLength - decoder.offset) + \" trailing bytes\");\n  return value;\n}\n\nfunction encode(value, view, offset) {\n  var type = typeof value;\n\n  // Strings Bytes\n  if (type === \"string\") {\n    var length = utf8ByteCount(value);\n    // fix raw\n    if (length < 0x20) {\n      view.setUint8(offset, length | 0xa0);\n      utf8Write(view, offset + 1, value);\n      return 1 + length;\n    }\n    // raw 16\n    if (length < 0x10000) {\n      view.setUint8(offset, 0xda);\n      view.setUint16(offset + 1, length);\n      utf8Write(view, offset + 3, value);\n      return 3 + length;\n    }\n    // raw 32\n    if (length < 0x100000000) {\n      view.setUint8(offset, 0xdb);\n      view.setUint32(offset + 1, length);\n      utf8Write(view, offset + 5, value);\n      return 5 + length;\n    }\n  }\n\n  if (value instanceof ArrayBuffer) {\n    var length = value.byteLength;\n    // buffer 16\n    if (length < 0x10000) {\n      view.setUint8(offset, 0xd8);\n      view.setUint16(offset + 1, length);\n      (new Uint8Array(view.buffer)).set(new Uint8Array(value), offset + 3);\n      return 3 + length;\n    }\n    // buffer 32\n    if (length < 0x100000000) {\n      view.setUint8(offset, 0xd9);\n      view.setUint32(offset + 1, length);\n      (new Uint8Array(view.buffer)).set(new Uint8Array(value), offset + 5);\n      return 5 + length;\n    }\n  }\n  \n  if (type === \"number\") {\n    // Floating Point\n    if ((value << 0) !== value) {\n      view.setUint8(offset, 0xcb);\n      view.setFloat64(offset + 1, value);\n      return 9;\n    }\n\n    // Integers\n    if (value >=0) {\n      // positive fixnum\n      if (value < 0x80) {\n        view.setUint8(offset, value);\n        return 1;\n      }\n      // uint 8\n      if (value < 0x100) {\n        view.setUint8(offset, 0xcc);\n        view.setUint8(offset + 1, value);\n        return 2;\n      }\n      // uint 16\n      if (value < 0x10000) {\n        view.setUint8(offset, 0xcd);\n        view.setUint16(offset + 1, value);\n        return 3;\n      }\n      // uint 32\n      if (value < 0x100000000) {\n        view.setUint8(offset, 0xce);\n        view.setUint32(offset + 1, value);\n        return 5;\n      }\n      throw new Error(\"Number too big 0x\" + value.toString(16));\n    }\n    // negative fixnum\n    if (value >= -0x20) {\n      view.setInt8(offset, value);\n      return 1;\n    }\n    // int 8\n    if (value >= -0x80) {\n      view.setUint8(offset, 0xd0);\n      view.setInt8(offset + 1, value);\n      return 2;\n    }\n    // int 16\n    if (value >= -0x8000) {\n      view.setUint8(offset, 0xd1);\n      view.setInt16(offset + 1, value);\n      return 3;\n    }\n    // int 32\n    if (value >= -0x80000000) {\n      view.setUint8(offset, 0xd2);\n      view.setInt32(offset + 1, value);\n      return 5;\n    }\n    throw new Error(\"Number too small -0x\" + (-value).toString(16).substr(1));\n  }\n  \n  // undefined\n  if (type === \"undefined\") {\n    view.setUint8(offset, 0xc4);\n    return 1;\n  }\n  \n  // null\n  if (value === null) {\n    view.setUint8(offset, 0xc0);\n    return 1;\n  }\n\n  // Boolean\n  if (type === \"boolean\") {\n    view.setUint8(offset, value ? 0xc3 : 0xc2);\n    return 1;\n  }\n  \n  // Container Types\n  if (type === \"object\") {\n    var length, size = 0;\n    var isArray = Array.isArray(value);\n\n    if (isArray) {\n      length = value.length;\n    }\n    else {\n      var keys = Object.keys(value);\n      length = keys.length;\n    }\n\n    var size;\n    if (length < 0x10) {\n      view.setUint8(offset, length | (isArray ? 0x90 : 0x80));\n      size = 1;\n    }\n    else if (length < 0x10000) {\n      view.setUint8(offset, isArray ? 0xdc : 0xde);\n      view.setUint16(offset + 1, length);\n      size = 3;\n    }\n    else if (length < 0x100000000) {\n      view.setUint8(offset, isArray ? 0xdd : 0xdf);\n      view.setUint32(offset + 1, length);\n      size = 5;\n    }\n\n    if (isArray) {\n      for (var i = 0; i < length; i++) {\n        size += encode(value[i], view, offset + size);\n      }\n    }\n    else {\n      for (var i = 0; i < length; i++) {\n        var key = keys[i];\n        size += encode(key, view, offset + size);\n        size += encode(value[key], view, offset + size);\n      }\n    }\n    \n    return size;\n  }\n  throw new Error(\"Unknown type \" + type);\n}\n\nfunction sizeof(value) {\n  var type = typeof value;\n\n  // Raw Bytes\n  if (type === \"string\") {\n    var length = utf8ByteCount(value);\n    if (length < 0x20) {\n      return 1 + length;\n    }\n    if (length < 0x10000) {\n      return 3 + length;\n    }\n    if (length < 0x100000000) {\n      return 5 + length;\n    }\n  }\n  \n  if (value instanceof ArrayBuffer) {\n    var length = value.byteLength;\n    if (length < 0x10000) {\n      return 3 + length;\n    }\n    if (length < 0x100000000) {\n      return 5 + length;\n    }\n  }\n  \n  if (type === \"number\") {\n    // Floating Point\n    // double\n    if (value << 0 !== value) return 9;\n\n    // Integers\n    if (value >=0) {\n      // positive fixnum\n      if (value < 0x80) return 1;\n      // uint 8\n      if (value < 0x100) return 2;\n      // uint 16\n      if (value < 0x10000) return 3;\n      // uint 32\n      if (value < 0x100000000) return 5;\n      // uint 64\n      if (value < 0x10000000000000000) return 9;\n      throw new Error(\"Number too big 0x\" + value.toString(16));\n    }\n    // negative fixnum\n    if (value >= -0x20) return 1;\n    // int 8\n    if (value >= -0x80) return 2;\n    // int 16\n    if (value >= -0x8000) return 3;\n    // int 32\n    if (value >= -0x80000000) return 5;\n    // int 64\n    if (value >= -0x8000000000000000) return 9;\n    throw new Error(\"Number too small -0x\" + value.toString(16).substr(1));\n  }\n  \n  // Boolean, null, undefined\n  if (type === \"boolean\" || type === \"undefined\" || value === null) return 1;\n  \n  // Container Types\n  if (type === \"object\") {\n    var length, size = 0;\n    if (Array.isArray(value)) {\n      length = value.length;\n      for (var i = 0; i < length; i++) {\n        size += sizeof(value[i]);\n      }\n    }\n    else {\n      var keys = Object.keys(value);\n      length = keys.length;\n      for (var i = 0; i < length; i++) {\n        var key = keys[i];\n        size += sizeof(key) + sizeof(value[key]);\n      }\n    }\n    if (length < 0x10) {\n      return 1 + size;\n    }\n    if (length < 0x10000) {\n      return 3 + size;\n    }\n    if (length < 0x100000000) {\n      return 5 + size;\n    }\n    throw new Error(\"Array or object too long 0x\" + length.toString(16));\n  }\n  throw new Error(\"Unknown type \" + type);\n}\n\nreturn exports;\n\n});\n"]}