{"version":3,"file":"js/66-9be8ab9ba447f7763e5f.js","mappings":"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AAK,YACL,IAAK,mBACL,IAAK,SACL,IAAK,oBACL,IAAK,iBACL,IAAK,UACL,IAAK,SACL,IAAK,YACL,IAAK,eACL,IAAK,iBACL,IAAK,iBACL,IAAK,kBACL,IAAK,iBACL,IAAK,QACL,IAAK,MACL,IAAK,eACL,IAAK,aACL,IAAK,kBACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,YACL,KAAM,iBAERC,eAAgB,CACd,EAAG,WACH,EAAG,OACH,EAAG,QACH,EAAG,QACH,EAAG,QACH,EAAG,SACH,EAAG,YACH,EAAG,SACH,EAAG,iCACH,EAAG,MACH,GAAI,MACJ,GAAI,QACJ,GAAI,iCACJ,GAAI,+BACJ,IAAK,cACL,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,QACL,IAAK,OACL,IAAK,cACL,IAAK,OACL,KAAM,YACN,KAAM,UACN,KAAM,UACN,KAAM,QACN,KAAM,UACN,KAAM,iBACN,KAAM,gBACN,KAAM,QACN,KAAM,cACN,KAAM,UACN,KAAM,UACN,KAAM,iBACN,KAAM,gBACN,KAAM,QACN,KAAM,QACN,KAAM,cACN,KAAM,YACN,KAAM,YACN,KAAM,gBACN,KAAM,gBACN,KAAM,cACN,KAAM,gBACN,KAAM,OACN,KAAM,aACN,KAAM,MACN,KAAM,OACN,KAAM,gBACN,KAAM,OACN,KAAM,gBACN,KAAM,QACN,KAAM,iBACN,KAAM,UACN,KAAM,UACN,KAAM,QACN,KAAM,gBACN,KAAM,QACN,KAAM,QACN,KAAM,gBACN,KAAM,aACN,KAAM,gBACN,KAAM,aACN,KAAM,eACN,KAAM,gBACN,KAAM,UACN,KAAM,UACN,KAAM,UACN,KAAM,eACN,KAAM,gBACN,KAAM,iBACN,KAAM,WACN,KAAM,WACN,KAAM,cACN,KAAM,UACN,KAAM,OACN,KAAM,cACN,KAAM,gBACN,KAAM,cACN,KAAM,cACN,KAAM,cACN,KAAM,cACN,KAAM,cACN,KAAM,aACN,KAAM,SACN,KAAM,OACN,KAAM,SACN,KAAM,kBACN,KAAM,iBACN,KAAM,aACN,KAAM,UAC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","sources":["webpack://app/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js","webpack://app/./node_modules/base64-js/index.js","webpack://app/./node_modules/buffer/index.js","webpack://app/./node_modules/fit-file-parser/dist/binary.js","webpack://app/./node_modules/fit-file-parser/dist/fit-parser.js","webpack://app/./node_modules/fit-file-parser/dist/fit.js","webpack://app/./node_modules/fit-file-parser/dist/messages.js","webpack://app/./node_modules/ieee754/index.js","webpack://app/./node_modules/leaflet/dist/leaflet-src.js"],"sourcesContent":["var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \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 ''\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addEndian = addEndian;\nexports.readRecord = readRecord;\nexports.getArrayBuffer = getArrayBuffer;\nexports.calculateCRC = calculateCRC;\n\nvar _fit = require('./fit');\n\nvar _messages = require('./messages');\n\nvar _buffer = require('buffer');\n\nfunction addEndian(littleEndian, bytes) {\n var result = 0;\n if (!littleEndian) bytes.reverse();\n for (var i = 0; i < bytes.length; i++) {\n result += bytes[i] << (i << 3) >>> 0;\n }\n\n return result;\n}\n\nvar timestamp = 0;\nvar lastTimeOffset = 0;\nvar CompressedTimeMask = 31;\nvar CompressedLocalMesgNumMask = 0x60;\nvar CompressedHeaderMask = 0x80;\nvar GarminTimeOffset = 631065600000;\nvar monitoring_timestamp = 0;\n\nfunction readData(blob, fDef, startIndex, options) {\n if (fDef.type !== 'string' && fDef.type !== 'byte_array') {\n var temp = [];\n for (var i = 0; i < fDef.size; i++) {\n temp.push(blob[startIndex + i]);\n }\n\n var buffer = new Uint8Array(temp).buffer;\n var dataView = new DataView(buffer);\n\n try {\n switch (fDef.type) {\n case 'sint8':\n return dataView.getInt8(0, fDef.littleEndian);\n case 'uint8':\n return dataView.getUint8(0, fDef.littleEndian);\n case 'sint16':\n return dataView.getInt16(0, fDef.littleEndian);\n case 'uint16':\n case 'uint16z':\n return dataView.getUint16(0, fDef.littleEndian);\n case 'sint32':\n return dataView.getInt32(0, fDef.littleEndian);\n case 'uint32':\n case 'uint32z':\n return dataView.getUint32(0, fDef.littleEndian);\n case 'float32':\n return dataView.getFloat32(0, fDef.littleEndian);\n case 'float64':\n return dataView.getFloat64(0, fDef.littleEndian);\n case 'uint32_array':\n var array32 = [];\n for (var _i = 0; _i < fDef.size; _i += 4) {\n array32.push(dataView.getUint32(_i, fDef.littleEndian));\n }\n return array32;\n case 'uint16_array':\n var array = [];\n for (var _i2 = 0; _i2 < fDef.size; _i2 += 2) {\n array.push(dataView.getUint16(_i2, fDef.littleEndian));\n }\n return array;\n }\n } catch (e) {\n if (!options.force) {\n throw e;\n }\n }\n\n return addEndian(fDef.littleEndian, temp);\n }\n\n if (fDef.type === 'string') {\n var _temp = [];\n for (var _i3 = 0; _i3 < fDef.size; _i3++) {\n if (blob[startIndex + _i3]) {\n _temp.push(blob[startIndex + _i3]);\n }\n }\n return new _buffer.Buffer.from(_temp).toString('utf-8');\n }\n\n if (fDef.type === 'byte_array') {\n var _temp2 = [];\n for (var _i4 = 0; _i4 < fDef.size; _i4++) {\n _temp2.push(blob[startIndex + _i4]);\n }\n return _temp2;\n }\n\n return blob[startIndex];\n}\n\nfunction formatByType(data, type, scale, offset) {\n switch (type) {\n case 'date_time':\n case 'local_date_time':\n return new Date(data * 1000 + GarminTimeOffset);\n case 'sint32':\n return data * _fit.FIT.scConst;\n case 'uint8':\n case 'sint16':\n case 'uint32':\n case 'uint16':\n return scale ? data / scale + offset : data;\n case 'uint32_array':\n case 'uint16_array':\n return data.map(function (dataItem) {\n return scale ? dataItem / scale + offset : dataItem;\n });\n default:\n if (!_fit.FIT.types[type]) {\n return data;\n }\n // Quick check for a mask\n var values = [];\n for (var key in _fit.FIT.types[type]) {\n if (_fit.FIT.types[type].hasOwnProperty(key)) {\n values.push(_fit.FIT.types[type][key]);\n }\n }\n if (values.indexOf('mask') === -1) {\n return _fit.FIT.types[type][data];\n }\n var dataItem = {};\n for (var key in _fit.FIT.types[type]) {\n if (_fit.FIT.types[type].hasOwnProperty(key)) {\n if (_fit.FIT.types[type][key] === 'mask') {\n dataItem.value = data & key;\n } else {\n dataItem[_fit.FIT.types[type][key]] = !!((data & key) >> 7); // Not sure if we need the >> 7 and casting to boolean but from all the masked props of fields so far this seems to be the case\n }\n }\n }\n return dataItem;\n }\n}\n\nfunction isInvalidValue(data, type) {\n switch (type) {\n case 'enum':\n return data === 0xFF;\n case 'sint8':\n return data === 0x7F;\n case 'uint8':\n return data === 0xFF;\n case 'sint16':\n return data === 0x7FFF;\n case 'uint16':\n return data === 0xFFFF;\n case 'sint32':\n return data === 0x7FFFFFFF;\n case 'uint32':\n return data === 0xFFFFFFFF;\n case 'string':\n return data === 0x00;\n case 'float32':\n return data === 0xFFFFFFFF;\n case 'float64':\n return data === 0xFFFFFFFFFFFFFFFF;\n case 'uint8z':\n return data === 0x00;\n case 'uint16z':\n return data === 0x0000;\n case 'uint32z':\n return data === 0x000000;\n case 'byte':\n return data === 0xFF;\n case 'sint64':\n return data === 0x7FFFFFFFFFFFFFFF;\n case 'uint64':\n return data === 0xFFFFFFFFFFFFFFFF;\n case 'uint64z':\n return data === 0x0000000000000000;\n default:\n return false;\n }\n}\n\nfunction convertTo(data, unitsList, speedUnit) {\n var unitObj = _fit.FIT.options[unitsList][speedUnit];\n return unitObj ? data * unitObj.multiplier + unitObj.offset : data;\n}\n\nfunction applyOptions(data, field, options) {\n switch (field) {\n case 'speed':\n case 'enhanced_speed':\n case 'vertical_speed':\n case 'avg_speed':\n case 'max_speed':\n case 'speed_1s':\n case 'ball_speed':\n case 'enhanced_avg_speed':\n case 'enhanced_max_speed':\n case 'avg_pos_vertical_speed':\n case 'max_pos_vertical_speed':\n case 'avg_neg_vertical_speed':\n case 'max_neg_vertical_speed':\n return convertTo(data, 'speedUnits', options.speedUnit);\n case 'distance':\n case 'total_distance':\n case 'enhanced_avg_altitude':\n case 'enhanced_min_altitude':\n case 'enhanced_max_altitude':\n case 'enhanced_altitude':\n case 'height':\n case 'odometer':\n case 'avg_stroke_distance':\n case 'min_altitude':\n case 'avg_altitude':\n case 'max_altitude':\n case 'total_ascent':\n case 'total_descent':\n case 'altitude':\n case 'cycle_length':\n case 'auto_wheelsize':\n case 'custom_wheelsize':\n case 'gps_accuracy':\n return convertTo(data, 'lengthUnits', options.lengthUnit);\n case 'temperature':\n case 'avg_temperature':\n case 'max_temperature':\n return convertTo(data, 'temperatureUnits', options.temperatureUnit);\n default:\n return data;\n }\n}\n\nfunction readRecord(blob, messageTypes, developerFields, startIndex, options, startDate, pausedTime) {\n var recordHeader = blob[startIndex];\n var localMessageType = recordHeader & 15;\n\n if ((recordHeader & CompressedHeaderMask) === CompressedHeaderMask) {\n //compressed timestamp\n\n var timeoffset = recordHeader & CompressedTimeMask;\n timestamp += timeoffset - lastTimeOffset & CompressedTimeMask;\n lastTimeOffset = timeoffset;\n\n localMessageType = (recordHeader & CompressedLocalMesgNumMask) >> 5;\n } else if ((recordHeader & 64) === 64) {\n // is definition message\n // startIndex + 1 is reserved\n\n var hasDeveloperData = (recordHeader & 32) === 32;\n var lEnd = blob[startIndex + 2] === 0;\n var numberOfFields = blob[startIndex + 5];\n var numberOfDeveloperDataFields = hasDeveloperData ? blob[startIndex + 5 + numberOfFields * 3 + 1] : 0;\n\n var mTypeDef = {\n littleEndian: lEnd,\n globalMessageNumber: addEndian(lEnd, [blob[startIndex + 3], blob[startIndex + 4]]),\n numberOfFields: numberOfFields + numberOfDeveloperDataFields,\n fieldDefs: []\n };\n\n var _message = (0, _messages.getFitMessage)(mTypeDef.globalMessageNumber);\n\n for (var i = 0; i < numberOfFields; i++) {\n var fDefIndex = startIndex + 6 + i * 3;\n var baseType = blob[fDefIndex + 2];\n\n var _message$getAttribute = _message.getAttributes(blob[fDefIndex]),\n field = _message$getAttribute.field,\n type = _message$getAttribute.type;\n\n var fDef = {\n type: type,\n fDefNo: blob[fDefIndex],\n size: blob[fDefIndex + 1],\n endianAbility: (baseType & 128) === 128,\n littleEndian: lEnd,\n baseTypeNo: baseType & 15,\n name: field,\n dataType: (0, _messages.getFitMessageBaseType)(baseType & 15)\n };\n\n mTypeDef.fieldDefs.push(fDef);\n }\n\n // numberOfDeveloperDataFields = 0 so it wont crash here and wont loop\n for (var _i5 = 0; _i5 < numberOfDeveloperDataFields; _i5++) {\n // If we fail to parse then try catch\n try {\n var _fDefIndex = startIndex + 6 + numberOfFields * 3 + 1 + _i5 * 3;\n\n var fieldNum = blob[_fDefIndex];\n var size = blob[_fDefIndex + 1];\n var devDataIndex = blob[_fDefIndex + 2];\n\n var devDef = developerFields[devDataIndex][fieldNum];\n\n var _baseType = devDef.fit_base_type_id;\n\n var _fDef = {\n type: _fit.FIT.types.fit_base_type[_baseType],\n fDefNo: fieldNum,\n size: size,\n endianAbility: (_baseType & 128) === 128,\n littleEndian: lEnd,\n baseTypeNo: _baseType & 15,\n name: devDef.field_name,\n dataType: (0, _messages.getFitMessageBaseType)(_baseType & 15),\n scale: devDef.scale || 1,\n offset: devDef.offset || 0,\n developerDataIndex: devDataIndex,\n isDeveloperField: true\n };\n\n mTypeDef.fieldDefs.push(_fDef);\n } catch (e) {\n if (options.force) {\n continue;\n }\n throw e;\n }\n }\n\n messageTypes[localMessageType] = mTypeDef;\n\n var nextIndex = startIndex + 6 + mTypeDef.numberOfFields * 3;\n var nextIndexWithDeveloperData = nextIndex + 1;\n\n return {\n messageType: 'definition',\n nextIndex: hasDeveloperData ? nextIndexWithDeveloperData : nextIndex\n };\n }\n\n var messageType = messageTypes[localMessageType] || messageTypes[0];\n\n // TODO: handle compressed header ((recordHeader & 128) == 128)\n\n // uncompressed header\n var messageSize = 0;\n var readDataFromIndex = startIndex + 1;\n var fields = {};\n var message = (0, _messages.getFitMessage)(messageType.globalMessageNumber);\n\n for (var _i6 = 0; _i6 < messageType.fieldDefs.length; _i6++) {\n var _fDef2 = messageType.fieldDefs[_i6];\n var data = readData(blob, _fDef2, readDataFromIndex, options);\n\n if (!isInvalidValue(data, _fDef2.type)) {\n if (_fDef2.isDeveloperField) {\n\n var field = _fDef2.name;\n var type = _fDef2.type;\n var scale = _fDef2.scale;\n var offset = _fDef2.offset;\n\n fields[_fDef2.name] = applyOptions(formatByType(data, type, scale, offset), field, options);\n } else {\n var _message$getAttribute2 = message.getAttributes(_fDef2.fDefNo),\n _field = _message$getAttribute2.field,\n _type = _message$getAttribute2.type,\n _scale = _message$getAttribute2.scale,\n _offset = _message$getAttribute2.offset;\n\n if (_field !== 'unknown' && _field !== '' && _field !== undefined) {\n fields[_field] = applyOptions(formatByType(data, _type, _scale, _offset), _field, options);\n }\n }\n\n if (message.name === 'record' && options.elapsedRecordField) {\n fields.elapsed_time = (fields.timestamp - startDate) / 1000;\n fields.timer_time = fields.elapsed_time - pausedTime;\n }\n }\n\n readDataFromIndex += _fDef2.size;\n messageSize += _fDef2.size;\n }\n\n if (message.name === 'field_description') {\n developerFields[fields.developer_data_index] = developerFields[fields.developer_data_index] || [];\n developerFields[fields.developer_data_index][fields.field_definition_number] = fields;\n }\n\n if (message.name === 'monitoring') {\n //we need to keep the raw timestamp value so we can calculate subsequent timestamp16 fields\n if (fields.timestamp) {\n monitoring_timestamp = fields.timestamp;\n fields.timestamp = new Date(fields.timestamp * 1000 + GarminTimeOffset);\n }\n if (fields.timestamp16 && !fields.timestamp) {\n monitoring_timestamp += fields.timestamp16 - (monitoring_timestamp & 0xFFFF) & 0xFFFF;\n //fields.timestamp = monitoring_timestamp;\n fields.timestamp = new Date(monitoring_timestamp * 1000 + GarminTimeOffset);\n }\n }\n\n var result = {\n messageType: message.name,\n nextIndex: startIndex + messageSize + 1,\n message: fields\n };\n\n return result;\n}\n\nfunction getArrayBuffer(buffer) {\n if (buffer instanceof ArrayBuffer) {\n return buffer;\n }\n var ab = new ArrayBuffer(buffer.length);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n return ab;\n}\n\nfunction calculateCRC(blob, start, end) {\n var crcTable = [0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400];\n\n var crc = 0;\n for (var i = start; i < end; i++) {\n var byteVal = blob[i];\n var tmp = crcTable[crc & 0xF];\n crc = crc >> 4 & 0x0FFF;\n crc = crc ^ tmp ^ crcTable[byteVal & 0xF];\n tmp = crcTable[crc & 0xF];\n crc = crc >> 4 & 0x0FFF;\n crc = crc ^ tmp ^ crcTable[byteVal >> 4 & 0xF];\n }\n\n return crc;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _binary = require('./binary');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FitParser = function () {\n function FitParser() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, FitParser);\n\n this.options = {\n force: options.force != null ? options.force : true,\n speedUnit: options.speedUnit || 'm/s',\n lengthUnit: options.lengthUnit || 'm',\n temperatureUnit: options.temperatureUnit || 'celsius',\n elapsedRecordField: options.elapsedRecordField || false,\n mode: options.mode || 'list'\n };\n }\n\n _createClass(FitParser, [{\n key: 'parse',\n value: function parse(content, callback) {\n var blob = new Uint8Array((0, _binary.getArrayBuffer)(content));\n\n if (blob.length < 12) {\n callback('File to small to be a FIT file', {});\n if (!this.options.force) {\n return;\n }\n }\n\n var headerLength = blob[0];\n if (headerLength !== 14 && headerLength !== 12) {\n callback('Incorrect header size', {});\n if (!this.options.force) {\n return;\n }\n }\n\n var fileTypeString = '';\n for (var i = 8; i < 12; i++) {\n fileTypeString += String.fromCharCode(blob[i]);\n }\n if (fileTypeString !== '.FIT') {\n callback('Missing \\'.FIT\\' in header', {});\n if (!this.options.force) {\n return;\n }\n }\n\n if (headerLength === 14) {\n var crcHeader = blob[12] + (blob[13] << 8);\n var crcHeaderCalc = (0, _binary.calculateCRC)(blob, 0, 12);\n if (crcHeader !== crcHeaderCalc) {\n // callback('Header CRC mismatch', {});\n // TODO: fix Header CRC check\n if (!this.options.force) {\n return;\n }\n }\n }\n\n var protocolVersion = blob[1];\n var profileVersion = blob[2] + (blob[3] << 8);\n var dataLength = blob[4] + (blob[5] << 8) + (blob[6] << 16) + (blob[7] << 24);\n var crcStart = dataLength + headerLength;\n var crcFile = blob[crcStart] + (blob[crcStart + 1] << 8);\n var crcFileCalc = (0, _binary.calculateCRC)(blob, headerLength === 12 ? 0 : headerLength, crcStart);\n\n if (crcFile !== crcFileCalc) {\n // callback('File CRC mismatch', {});\n // TODO: fix File CRC check\n if (!this.options.force) {\n return;\n }\n }\n\n var fitObj = {};\n fitObj.protocolVersion = protocolVersion;\n fitObj.profileVersion = profileVersion;\n\n var sessions = [];\n var laps = [];\n var records = [];\n var events = [];\n var hrv = [];\n var devices = [];\n var applications = [];\n var fieldDescriptions = [];\n var dive_gases = [];\n var course_points = [];\n var sports = [];\n var monitors = [];\n var stress = [];\n var definitions = [];\n var file_ids = [];\n var monitor_info = [];\n var lengths = [];\n\n var tempLaps = [];\n var tempLengths = [];\n var tempRecords = [];\n\n var loopIndex = headerLength;\n var messageTypes = [];\n var developerFields = [];\n\n var isModeCascade = this.options.mode === 'cascade';\n var isCascadeNeeded = isModeCascade || this.options.mode === 'both';\n\n var startDate = void 0,\n lastStopTimestamp = void 0;\n var pausedTime = 0;\n\n while (loopIndex < crcStart) {\n var _readRecord = (0, _binary.readRecord)(blob, messageTypes, developerFields, loopIndex, this.options, startDate, pausedTime),\n nextIndex = _readRecord.nextIndex,\n messageType = _readRecord.messageType,\n message = _readRecord.message;\n\n loopIndex = nextIndex;\n\n switch (messageType) {\n case 'lap':\n if (isCascadeNeeded) {\n message.records = tempRecords;\n tempRecords = [];\n tempLaps.push(message);\n message.lengths = tempLengths;\n tempLengths = [];\n }\n laps.push(message);\n break;\n case 'session':\n if (isCascadeNeeded) {\n message.laps = tempLaps;\n tempLaps = [];\n }\n sessions.push(message);\n break;\n case 'event':\n if (message.event === 'timer') {\n if (message.event_type === 'stop_all') {\n lastStopTimestamp = message.timestamp;\n } else if (message.event_type === 'start' && lastStopTimestamp) {\n pausedTime += (message.timestamp - lastStopTimestamp) / 1000;\n }\n }\n events.push(message);\n break;\n case 'length':\n if (isCascadeNeeded) {\n tempLengths.push(message);\n }\n lengths.push(message);\n break;\n case 'hrv':\n hrv.push(message);\n break;\n case 'record':\n if (!startDate) {\n startDate = message.timestamp;\n message.elapsed_time = 0;\n message.timer_time = 0;\n }\n records.push(message);\n if (isCascadeNeeded) {\n tempRecords.push(message);\n }\n break;\n case 'field_description':\n fieldDescriptions.push(message);\n break;\n case 'device_info':\n devices.push(message);\n break;\n case 'developer_data_id':\n applications.push(message);\n break;\n case 'dive_gas':\n dive_gases.push(message);\n break;\n case 'course_point':\n course_points.push(message);\n break;\n case 'sport':\n sports.push(message);\n break;\n case 'file_id':\n if (message) {\n file_ids.push(message);\n }\n break;\n case 'definition':\n if (message) {\n definitions.push(message);\n }\n break;\n case 'monitoring':\n monitors.push(message);\n break;\n case 'monitoring_info':\n monitor_info.push(message);\n break;\n case 'stress_level':\n stress.push(message);\n break;\n case 'software':\n fitObj.software = message;\n break;\n default:\n if (messageType !== '') {\n fitObj[messageType] = message;\n }\n break;\n }\n }\n\n if (isCascadeNeeded) {\n fitObj.activity = fitObj.activity || {};\n fitObj.activity.sessions = sessions;\n fitObj.activity.events = events;\n fitObj.activity.hrv = hrv;\n fitObj.activity.device_infos = devices;\n fitObj.activity.developer_data_ids = applications;\n fitObj.activity.field_descriptions = fieldDescriptions;\n fitObj.activity.sports = sports;\n }\n if (!isModeCascade) {\n fitObj.sessions = sessions;\n fitObj.laps = laps;\n fitObj.lengths = lengths;\n fitObj.records = records;\n fitObj.events = events;\n fitObj.device_infos = devices;\n fitObj.developer_data_ids = applications;\n fitObj.field_descriptions = fieldDescriptions;\n fitObj.hrv = hrv;\n fitObj.dive_gases = dive_gases;\n fitObj.course_points = course_points;\n fitObj.sports = sports;\n fitObj.devices = devices;\n fitObj.monitors = monitors;\n fitObj.stress = stress;\n fitObj.file_ids = file_ids;\n fitObj.monitor_info = monitor_info;\n fitObj.definitions = definitions;\n }\n\n callback(null, fitObj);\n }\n }]);\n\n return FitParser;\n}();\n\nexports.default = FitParser;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMessageName = getMessageName;\nexports.getFieldObject = getFieldObject;\n// some unit conversion constants\nvar metersInOneKilometer = 1000;\nvar secondsInOneHour = 3600;\n// according to https://en.wikipedia.org/wiki/Mile\nvar metersInOneMile = 1609.344;\n\nvar FIT = exports.FIT = {\n scConst: 180 / Math.pow(2, 31),\n options: {\n speedUnits: {\n // native speed unit: meters per second [m/s]\n 'm/s': {\n multiplier: 1,\n offset: 0\n },\n // miles per hour [mph]\n mph: {\n multiplier: secondsInOneHour / metersInOneMile,\n offset: 0\n },\n // kilometers per hour [km/h]\n 'km/h': {\n multiplier: secondsInOneHour / metersInOneKilometer,\n offset: 0\n }\n },\n lengthUnits: {\n // native length unit: meters [m]\n m: {\n multiplier: 1,\n offset: 0\n },\n // (international) mile [mi]\n mi: {\n multiplier: 1 / metersInOneMile,\n offset: 0\n },\n // kilometer [km]\n km: {\n multiplier: 1 / metersInOneKilometer,\n offset: 0\n }\n },\n temperatureUnits: {\n // native temperature unit: degree Celsius [Ā°C]\n 'Ā°C': {\n multiplier: 1,\n offset: 0\n },\n // kelvin [K]\n kelvin: {\n multiplier: 1,\n offset: -273.15\n },\n // degree fahrenheit [Ā°F]\n fahrenheit: {\n multiplier: 9 / 5,\n offset: 32\n }\n }\n },\n messages: {\n 0: {\n name: 'file_id',\n 0: { field: 'type', type: 'file', scale: null, offset: '', units: '' },\n 1: { field: 'manufacturer', type: 'manufacturer', scale: null, offset: '', units: '' },\n 2: { field: 'product', type: 'uint16', scale: null, offset: '', units: '' },\n 3: { field: 'serial_number', type: 'uint32z', scale: null, offset: '', units: '' },\n 4: { field: 'time_created', type: 'date_time', scale: null, offset: '', units: '' },\n 5: { field: 'number', type: 'uint16', scale: null, offset: '', units: '' },\n 8: { field: 'product_name', type: 'string', scale: null, offset: '', units: '' }\n },\n 1: {\n name: 'capabilities',\n 0: { field: 'languages', type: 'uint8z', scale: null, offset: '', units: '' },\n 1: { field: 'sports', type: 'sport_bits_0', scale: null, offset: '', units: '' },\n 21: { field: 'workouts_supported', type: 'workout_capabilities', scale: null, offset: '', units: '' },\n 23: { field: 'connectivity_supported', type: 'connectivity_capabilities', scale: null, offset: '', units: '' }\n },\n 2: {\n name: 'device_settings',\n 0: { field: 'active_time_zone', type: 'uint8', scale: null, offset: '', units: '' },\n 1: { field: 'utc_offset', type: 'uint32', scale: null, offset: '', units: '' },\n 2: { field: 'time_offset', type: 'uint32', scale: null, offset: '', units: 's' },\n 5: { field: 'time_zone_offset', type: 'sint8', scale: 4, offset: '', units: 'hr' },\n 55: { field: 'display_orientation', type: 'display_orientation', scale: null, offset: '', units: '' },\n 56: { field: 'mounting_side', type: 'side', scale: null, offset: '', units: '' },\n 94: { field: 'number_of_screens', type: 'uint8', scale: null, offset: '', units: '' },\n 95: { field: 'smart_notification_display_orientation', type: 'display_orientation', scale: null, offset: '', units: '' }\n },\n 3: {\n name: 'user_profile',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 0: { field: 'friendly_name', type: 'string', scale: null, offset: 0, units: '' },\n 1: { field: 'gender', type: 'gender', scale: null, offset: 0, units: '' },\n 2: { field: 'age', type: 'uint8', scale: null, offset: 0, units: 'years' },\n 3: { field: 'height', type: 'uint8', scale: 100, offset: 0, units: 'm' },\n 4: { field: 'weight', type: 'uint16', scale: 10, offset: 0, units: 'kg' },\n 5: { field: 'language', type: 'language', scale: null, offset: 0, units: '' },\n 6: { field: 'elev_setting', type: 'display_measure', scale: null, offset: 0, units: '' },\n 7: { field: 'weight_setting', type: 'display_measure', scale: null, offset: 0, units: '' },\n 8: { field: 'resting_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 9: { field: 'default_max_running_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 10: { field: 'default_max_biking_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 11: { field: 'default_max_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 12: { field: 'hr_setting', type: 'display_heart', scale: null, offset: 0, units: '' },\n 13: { field: 'speed_setting', type: 'display_measure', scale: null, offset: 0, units: '' },\n 14: { field: 'dist_setting', type: 'display_measure', scale: null, offset: 0, units: '' },\n 16: { field: 'power_setting', type: 'display_power', scale: null, offset: 0, units: '' },\n 17: { field: 'activity_class', type: 'activity_class', scale: null, offset: 0, units: '' },\n 18: { field: 'position_setting', type: 'display_position', scale: null, offset: 0, units: '' },\n 21: { field: 'temperature_setting', type: 'display_measure', scale: null, offset: 0, units: '' },\n 22: { field: 'local_id', type: 'user_local_id', scale: null, offset: 0, units: '' },\n 23: { field: 'global_id', type: 'byte', scale: null, offset: 0, units: '' },\n 30: { field: 'height_setting', type: 'display_measure', scale: null, offset: 0, units: '' }\n },\n 4: {\n name: 'hrm_profile',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'enabled', type: 'bool', scale: null, offset: '', units: '' },\n 1: { field: 'hrm_ant_id', type: 'uint16z', scale: null, offset: '', units: '' },\n 2: { field: 'log_hrv', type: 'bool', scale: null, offset: '', units: '' },\n 3: { field: 'hrm_ant_id_trans_type', type: 'uint8z', scale: null, offset: '', units: '' }\n },\n 5: {\n name: 'sdm_profile',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'enabled', type: 'bool', scale: null, offset: '', units: '' },\n 1: { field: 'sdm_ant_id', type: 'uint16z', scale: null, offset: '', units: '' },\n 2: { field: 'sdm_cal_factor', type: 'uint16', scale: 10, offset: '', units: '%' },\n 3: { field: 'odometer', type: 'uint32', scale: 100, offset: '', units: 'm' },\n 4: { field: 'speed_source', type: 'bool', scale: null, offset: '', units: '' },\n 5: { field: 'sdm_ant_id_trans_type', type: 'uint8z', scale: null, offset: '', units: '' },\n 7: { field: 'odometer_rollover', type: 'uint8', scale: null, offset: '', units: '' }\n },\n 6: {\n name: 'bike_profile',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 0: { field: 'name', type: 'string', scale: null, offset: 0, units: '' },\n 1: { field: 'sport', type: 'sport', scale: null, offset: 0, units: '' },\n 2: { field: 'sub_sport', type: 'sub_sport', scale: null, offset: 0, units: '' },\n 3: { field: 'odometer', type: 'uint32', scale: 100, offset: 0, units: 'm' },\n 4: { field: 'bike_spd_ant_id', type: 'uint16z', scale: null, offset: 0, units: '' },\n 5: { field: 'bike_cad_ant_id', type: 'uint16z', scale: null, offset: 0, units: '' },\n 6: { field: 'bike_spdcad_ant_id', type: 'uint16z', scale: null, offset: 0, units: '' },\n 7: { field: 'bike_power_ant_id', type: 'uint16z', scale: null, offset: 0, units: '' },\n 8: { field: 'custom_wheelsize', type: 'uint16', scale: 1000, offset: 0, units: 'm' },\n 9: { field: 'auto_wheelsize', type: 'uint16', scale: 1000, offset: 0, units: 'm' },\n 10: { field: 'bike_weight', type: 'uint16', scale: 10, offset: 0, units: 'kg' },\n 11: { field: 'power_cal_factor', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 12: { field: 'auto_wheel_cal', type: 'bool', scale: null, offset: 0, units: '' },\n 13: { field: 'auto_power_zero', type: 'bool', scale: null, offset: 0, units: '' },\n 14: { field: 'id', type: 'uint8', scale: null, offset: 0, units: '' },\n 15: { field: 'spd_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 16: { field: 'cad_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 17: { field: 'spdcad_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 18: { field: 'power_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 19: { field: 'crank_length', type: 'uint8', scale: 2, offset: -110, units: 'mm' },\n 20: { field: 'enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 21: { field: 'bike_spd_ant_id_trans_type', type: 'uint8z', scale: null, offset: 0, units: '' },\n 22: { field: 'bike_cad_ant_id_trans_type', type: 'uint8z', scale: null, offset: 0, units: '' },\n 23: { field: 'bike_spdcad_ant_id_trans_type', type: 'uint8z', scale: null, offset: 0, units: '' },\n 24: { field: 'bike_power_ant_id_trans_type', type: 'uint8z', scale: null, offset: 0, units: '' },\n 37: { field: 'odometer_rollover', type: 'uint8', scale: null, offset: 0, units: '' },\n 38: { field: 'front_gear_num', type: 'uint8z', scale: null, offset: 0, units: '' },\n 39: { field: 'front_gear', type: 'uint8z', scale: null, offset: 0, units: '' },\n 40: { field: 'rear_gear_num', type: 'uint8z', scale: null, offset: 0, units: '' },\n 41: { field: 'rear_gear', type: 'uint8z', scale: null, offset: 0, units: '' },\n 44: { field: 'shimano_di2_enabled', type: 'bool', scale: null, offset: 0, units: '' }\n },\n 7: {\n name: 'zones_target',\n 1: { field: 'max_heart_rate', type: 'uint8', scale: null, offset: '', units: '' },\n 2: { field: 'threshold_heart_rate', type: 'uint8', scale: null, offset: '', units: '' },\n 3: { field: 'functional_threshold_power', type: 'uint16', scale: null, offset: '', units: '' },\n 5: { field: 'hr_calc_type', type: 'hr_zone_calc', scale: null, offset: '', units: '' },\n 7: { field: 'pwr_calc_type', type: 'pwr_zone_calc', scale: null, offset: '', units: '' }\n },\n 8: {\n name: 'hr_zone',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 1: { field: 'high_bpm', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 2: { field: 'name', type: 'string', scale: null, offset: 0, units: '' }\n },\n 9: {\n name: 'power_zone',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 1: { field: 'high_value', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 2: { field: 'name', type: 'string', scale: null, offset: 0, units: '' }\n },\n 10: {\n name: 'met_zone',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 1: { field: 'high_bpm', type: 'uint8', scale: null, offset: 0, units: '' },\n 2: { field: 'calories', type: 'uint16', scale: 10, offset: 0, units: 'kcal / min' },\n 3: { field: 'fat_calories', type: 'uint8', scale: 10, offset: 0, units: 'kcal / min' }\n },\n 12: {\n name: 'sport',\n 0: { field: 'sport', type: 'sport', scale: null, offset: '', units: '' },\n 1: { field: 'sub_sport', type: 'sub_sport', scale: null, offset: '', units: '' },\n 3: { field: 'name', type: 'string', scale: null, offset: '', units: '' }\n },\n 15: {\n name: 'goal',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'sport', type: 'sport', scale: null, offset: '', units: '' },\n 1: { field: 'sub_sport', type: 'sub_sport', scale: null, offset: '', units: '' },\n 2: { field: 'start_date', type: 'date_time', scale: null, offset: '', units: '' },\n 3: { field: 'end_date', type: 'date_time', scale: null, offset: '', units: '' },\n 4: { field: 'type', type: 'goal', scale: null, offset: '', units: '' },\n 5: { field: 'value', type: 'uint32', scale: null, offset: '', units: '' },\n 6: { field: 'repeat', type: 'bool', scale: null, offset: '', units: '' },\n 7: { field: 'target_value', type: 'uint32', scale: null, offset: '', units: '' },\n 8: { field: 'recurrence', type: 'goal_recurrence', scale: null, offset: '', units: '' },\n 9: { field: 'recurrence_value', type: 'uint16', scale: null, offset: '', units: '' },\n 10: { field: 'enabled', type: 'bool', scale: null, offset: '', units: '' }\n },\n 18: {\n name: 'session',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'event', type: 'event', scale: null, offset: 0, units: '' },\n 1: { field: 'event_type', type: 'event_type', scale: null, offset: 0, units: '' },\n 2: { field: 'start_time', type: 'date_time', scale: null, offset: 0, units: '' },\n 3: { field: 'start_position_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 4: { field: 'start_position_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 5: { field: 'sport', type: 'sport', scale: null, offset: 0, units: '' },\n 6: { field: 'sub_sport', type: 'sub_sport', scale: null, offset: 0, units: '' },\n 7: { field: 'total_elapsed_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 8: { field: 'total_timer_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 9: { field: 'total_distance', type: 'uint32', scale: 100, offset: 0, units: 'm' },\n 10: { field: 'total_cycles', type: 'uint32', scale: null, offset: 0, units: 'cycles' },\n 11: { field: 'total_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 13: { field: 'total_fat_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 14: { field: 'avg_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 15: { field: 'max_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 16: { field: 'avg_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 17: { field: 'max_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 18: { field: 'avg_cadence', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 19: { field: 'max_cadence', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 20: { field: 'avg_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 21: { field: 'max_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 22: { field: 'total_ascent', type: 'uint16', scale: null, offset: 0, units: 'm' },\n 23: { field: 'total_descent', type: 'uint16', scale: null, offset: 0, units: 'm' },\n 24: { field: 'total_training_effect', type: 'uint8', scale: 10, offset: 0, units: '' },\n 25: { field: 'first_lap_index', type: 'uint16', scale: null, offset: 0, units: '' },\n 26: { field: 'num_laps', type: 'uint16', scale: null, offset: 0, units: '' },\n 27: { field: 'event_group', type: 'uint8', scale: null, offset: 0, units: '' },\n 28: { field: 'trigger', type: 'session_trigger', scale: null, offset: 0, units: '' },\n 29: { field: 'nec_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 30: { field: 'nec_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 31: { field: 'swc_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 32: { field: 'swc_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 34: { field: 'normalized_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 35: { field: 'training_stress_score', type: 'uint16', scale: 10, offset: 0, units: 'tss' },\n 36: { field: 'intensity_factor', type: 'uint16', scale: 1000, offset: 0, units: 'if' },\n 37: { field: 'left_right_balance', type: 'left_right_balance_100', scale: 100, offset: 0, units: '%' },\n 41: { field: 'avg_stroke_count', type: 'uint32', scale: 10, offset: 0, units: 'strokes/lap' },\n 42: { field: 'avg_stroke_distance', type: 'uint16', scale: 100, offset: 0, units: 'm' },\n 43: { field: 'swim_stroke', type: 'swim_stroke', scale: null, offset: 0, units: 'swim_stroke' },\n 44: { field: 'pool_length', type: 'uint16', scale: 100, offset: 0, units: 'm' },\n 45: { field: 'threshold_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 46: { field: 'pool_length_unit', type: 'display_measure', scale: null, offset: 0, units: '' },\n 47: { field: 'num_active_lengths', type: 'uint16', scale: null, offset: 0, units: 'lengths' },\n 48: { field: 'total_work', type: 'uint32', scale: null, offset: 0, units: 'J' },\n 49: { field: 'avg_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 50: { field: 'max_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 51: { field: 'gps_accuracy', type: 'uint8', scale: null, offset: 0, units: 'm' },\n 52: { field: 'avg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 53: { field: 'avg_pos_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 54: { field: 'avg_neg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 55: { field: 'max_pos_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 56: { field: 'max_neg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 57: { field: 'avg_temperature', type: 'sint8', scale: null, offset: 0, units: 'C' },\n 58: { field: 'max_temperature', type: 'sint8', scale: null, offset: 0, units: 'C' },\n 59: { field: 'total_moving_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 60: { field: 'avg_pos_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 61: { field: 'avg_neg_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 62: { field: 'max_pos_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 63: { field: 'max_neg_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 64: { field: 'min_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 65: { field: 'time_in_hr_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 66: { field: 'time_in_speed_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 67: { field: 'time_in_cadence_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 68: { field: 'time_in_power_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 69: { field: 'avg_lap_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 70: { field: 'best_lap_index', type: 'uint16', scale: null, offset: 0, units: '' },\n 71: { field: 'min_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 82: { field: 'player_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 83: { field: 'opponent_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 84: { field: 'opponent_name', type: 'string', scale: null, offset: 0, units: '' },\n 85: { field: 'stroke_count', type: 'uint16', scale: null, offset: 0, units: 'counts' },\n 86: { field: 'zone_count', type: 'uint16', scale: null, offset: 0, units: 'counts' },\n 87: { field: 'max_ball_speed', type: 'uint16', scale: 100, offset: 0, units: 'm/s' },\n 88: { field: 'avg_ball_speed', type: 'uint16', scale: 100, offset: 0, units: 'm/s' },\n 89: { field: 'avg_vertical_oscillation', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 90: { field: 'avg_stance_time_percent', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 91: { field: 'avg_stance_time', type: 'uint16', scale: 10, offset: 0, units: 'ms' },\n 92: { field: 'avg_fractional_cadence', type: 'uint8', scale: 128, offset: 0, units: 'rpm' },\n 93: { field: 'max_fractional_cadence', type: 'uint8', scale: 128, offset: 0, units: 'rpm' },\n 94: { field: 'total_fractional_cycles', type: 'uint8', scale: 128, offset: 0, units: 'cycles' },\n 95: { field: 'avg_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 96: { field: 'min_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 97: { field: 'max_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 98: { field: 'avg_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 99: { field: 'min_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 100: { field: 'max_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 101: { field: 'avg_left_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 102: { field: 'avg_right_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 103: { field: 'avg_left_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 104: { field: 'avg_right_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 105: { field: 'avg_combined_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 111: { field: 'sport_index', type: 'uint8', scale: null, offset: 0, units: '' },\n 112: { field: 'time_standing', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 113: { field: 'stand_count', type: 'uint16', scale: null, offset: 0, units: '' },\n 114: { field: 'avg_left_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 115: { field: 'avg_right_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 116: { field: 'avg_left_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 117: { field: 'avg_left_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 118: { field: 'avg_right_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 119: { field: 'avg_right_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 120: { field: 'avg_power_position', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 121: { field: 'max_power_position', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 122: { field: 'avg_cadence_position', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 123: { field: 'max_cadence_position', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 124: { field: 'enhanced_avg_speed', type: 'uint32', scale: 1000, offset: 0, units: 'm/s' },\n 125: { field: 'enhanced_max_speed', type: 'uint32', scale: 1000, offset: 0, units: 'm/s' },\n 126: { field: 'enhanced_avg_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 127: { field: 'enhanced_min_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 128: { field: 'enhanced_max_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 129: { field: 'avg_lev_motor_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 130: { field: 'max_lev_motor_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 131: { field: 'lev_battery_consumption', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 132: { field: 'avg_vertical_ratio', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 133: { field: 'avg_stance_time_balance', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 134: { field: 'avg_step_length', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 137: { field: 'total_anaerobic_effect', type: 'uint8', scale: 10, offset: 0, units: '' },\n 139: { field: 'avg_vam', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' }\n },\n 19: {\n name: 'lap',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'event', type: 'event', scale: null, offset: 0, units: '' },\n 1: { field: 'event_type', type: 'event_type', scale: null, offset: 0, units: '' },\n 2: { field: 'start_time', type: 'date_time', scale: null, offset: 0, units: '' },\n 3: { field: 'start_position_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 4: { field: 'start_position_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 5: { field: 'end_position_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 6: { field: 'end_position_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 7: { field: 'total_elapsed_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 8: { field: 'total_timer_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 9: { field: 'total_distance', type: 'uint32', scale: 100, offset: 0, units: 'm' },\n 10: { field: 'total_cycles', type: 'uint32', scale: null, offset: 0, units: 'cycles' },\n 11: { field: 'total_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 12: { field: 'total_fat_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 13: { field: 'avg_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 14: { field: 'max_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 15: { field: 'avg_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 16: { field: 'max_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 17: { field: 'avg_cadence', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 18: { field: 'max_cadence', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 19: { field: 'avg_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 20: { field: 'max_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 21: { field: 'total_ascent', type: 'uint16', scale: null, offset: 0, units: 'm' },\n 22: { field: 'total_descent', type: 'uint16', scale: null, offset: 0, units: 'm' },\n 23: { field: 'intensity', type: 'intensity', scale: null, offset: 0, units: '' },\n 24: { field: 'lap_trigger', type: 'lap_trigger', scale: null, offset: 0, units: '' },\n 25: { field: 'sport', type: 'sport', scale: null, offset: 0, units: '' },\n 26: { field: 'event_group', type: 'uint8', scale: null, offset: 0, units: '' },\n 32: { field: 'num_lengths', type: 'uint16', scale: null, offset: 0, units: 'lengths' },\n 33: { field: 'normalized_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 34: { field: 'left_right_balance', type: 'left_right_balance_100', scale: 100, offset: 0, units: '%' },\n 35: { field: 'first_length_index', type: 'uint16', scale: null, offset: 0, units: '' },\n 37: { field: 'avg_stroke_distance', type: 'uint16', scale: 100, offset: 0, units: 'm' },\n 38: { field: 'swim_stroke', type: 'swim_stroke', scale: null, offset: 0, units: '' },\n 39: { field: 'sub_sport', type: 'sub_sport', scale: null, offset: 0, units: '' },\n 40: { field: 'num_active_lengths', type: 'uint16', scale: null, offset: 0, units: 'lengths' },\n 41: { field: 'total_work', type: 'uint32', scale: null, offset: 0, units: 'J' },\n 42: { field: 'avg_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 43: { field: 'max_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 44: { field: 'gps_accuracy', type: 'uint8', scale: null, offset: 0, units: 'm' },\n 45: { field: 'avg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 46: { field: 'avg_pos_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 47: { field: 'avg_neg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 48: { field: 'max_pos_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 49: { field: 'max_neg_grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 50: { field: 'avg_temperature', type: 'sint8', scale: null, offset: 0, units: 'C' },\n 51: { field: 'max_temperature', type: 'sint8', scale: null, offset: 0, units: 'C' },\n 52: { field: 'total_moving_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 53: { field: 'avg_pos_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 54: { field: 'avg_neg_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 55: { field: 'max_pos_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 56: { field: 'max_neg_vertical_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 57: { field: 'time_in_hr_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 58: { field: 'time_in_speed_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 59: { field: 'time_in_cadence_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 60: { field: 'time_in_power_zone', type: 'uint32_array', scale: 1000, offset: 0, units: 's' },\n 61: { field: 'repetition_num', type: 'uint16', scale: null, offset: 0, units: '' },\n 62: { field: 'min_altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 63: { field: 'min_heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 71: { field: 'wkt_step_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 74: { field: 'opponent_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 75: { field: 'stroke_count', type: 'uint16', scale: null, offset: 0, units: 'counts' },\n 76: { field: 'zone_count', type: 'uint16', scale: null, offset: 0, units: 'counts' },\n 77: { field: 'avg_vertical_oscillation', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 78: { field: 'avg_stance_time_percent', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 79: { field: 'avg_stance_time', type: 'uint16', scale: 10, offset: 0, units: 'ms' },\n 80: { field: 'avg_fractional_cadence', type: 'uint8', scale: 128, offset: 0, units: 'rpm' },\n 81: { field: 'max_fractional_cadence', type: 'uint8', scale: 128, offset: 0, units: 'rpm' },\n 82: { field: 'total_fractional_cycles', type: 'uint8', scale: 128, offset: 0, units: 'cycles' },\n 83: { field: 'player_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 84: { field: 'avg_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 85: { field: 'min_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 86: { field: 'max_total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 87: { field: 'avg_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 88: { field: 'min_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 89: { field: 'max_saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 91: { field: 'avg_left_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 92: { field: 'avg_right_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 93: { field: 'avg_left_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 94: { field: 'avg_right_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 95: { field: 'avg_combined_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 98: { field: 'time_standing', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 99: { field: 'stand_count', type: 'uint16', scale: null, offset: 0, units: '' },\n 100: { field: 'avg_left_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 101: { field: 'avg_right_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 102: { field: 'avg_left_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 103: { field: 'avg_left_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 104: { field: 'avg_right_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 105: { field: 'avg_right_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 106: { field: 'avg_power_position', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 107: { field: 'max_power_position', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 108: { field: 'avg_cadence_position', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 109: { field: 'max_cadence_position', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 110: { field: 'enhanced_avg_speed', type: 'uint32', scale: 1000, offset: 0, units: 'm/s' },\n 111: { field: 'enhanced_max_speed', type: 'uint32', scale: 1000, offset: 0, units: 'm/s' },\n 112: { field: 'enhanced_avg_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 113: { field: 'enhanced_min_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 114: { field: 'enhanced_max_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 115: { field: 'avg_lev_motor_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 116: { field: 'max_lev_motor_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 117: { field: 'lev_battery_consumption', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 118: { field: 'avg_vertical_ratio', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 119: { field: 'avg_stance_time_balance', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 120: { field: 'avg_step_length', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 121: { field: 'avg_vam', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' }\n },\n 20: {\n name: 'record',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'position_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 1: { field: 'position_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 2: { field: 'altitude', type: 'uint16', scale: 5, offset: -500, units: 'm' },\n 3: { field: 'heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 4: { field: 'cadence', type: 'uint8', scale: null, offset: 0, units: 'rpm' },\n 5: { field: 'distance', type: 'uint32', scale: 100, offset: 0, units: 'm' },\n 6: { field: 'speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 7: { field: 'power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 8: { field: 'compressed_speed_distance', type: 'byte', scale: '100,16', offset: 0, units: 'm/s,m' },\n 9: { field: 'grade', type: 'sint16', scale: 100, offset: 0, units: '%' },\n 10: { field: 'resistance', type: 'uint8', scale: null, offset: 0, units: '' },\n 11: { field: 'time_from_course', type: 'sint32', scale: 1000, offset: 0, units: 's' },\n 12: { field: 'cycle_length', type: 'uint8', scale: 100, offset: 0, units: 'm' },\n 13: { field: 'temperature', type: 'sint8', scale: null, offset: 0, units: 'C' },\n 17: { field: 'speed_1s', type: 'uint8', scale: 16, offset: 0, units: 'm/s' },\n 18: { field: 'cycles', type: 'uint8', scale: null, offset: 0, units: 'cycles' },\n 19: { field: 'total_cycles', type: 'uint32', scale: null, offset: 0, units: 'cycles' },\n 28: { field: 'compressed_accumulated_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 29: { field: 'accumulated_power', type: 'uint32', scale: null, offset: 0, units: 'watts' },\n 30: { field: 'left_right_balance', type: 'left_right_balance', scale: null, offset: 0, units: '' },\n 31: { field: 'gps_accuracy', type: 'uint8', scale: null, offset: 0, units: 'm' },\n 32: { field: 'vertical_speed', type: 'sint16', scale: 1000, offset: 0, units: 'm/s' },\n 33: { field: 'calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 39: { field: 'vertical_oscillation', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 40: { field: 'stance_time_percent', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 41: { field: 'stance_time', type: 'uint16', scale: 10, offset: 0, units: 'ms' },\n 42: { field: 'activity_type', type: 'activity_type', scale: null, offset: 0, units: '' },\n 43: { field: 'left_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 44: { field: 'right_torque_effectiveness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 45: { field: 'left_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 46: { field: 'right_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 47: { field: 'combined_pedal_smoothness', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 48: { field: 'time128', type: 'uint8', scale: 128, offset: 0, units: 's' },\n 49: { field: 'stroke_type', type: 'stroke_type', scale: null, offset: 0, units: '' },\n 50: { field: 'zone', type: 'uint8', scale: null, offset: 0, units: '' },\n 51: { field: 'ball_speed', type: 'uint16', scale: 100, offset: 0, units: 'm/s' },\n 52: { field: 'cadence256', type: 'uint16', scale: 256, offset: 0, units: 'rpm' },\n 53: { field: 'fractional_cadence', type: 'uint8', scale: 128, offset: 0, units: 'rpm' },\n 54: { field: 'total_hemoglobin_conc', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 55: { field: 'total_hemoglobin_conc_min', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 56: { field: 'total_hemoglobin_conc_max', type: 'uint16', scale: 100, offset: 0, units: 'g/dL' },\n 57: { field: 'saturated_hemoglobin_percent', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 58: { field: 'saturated_hemoglobin_percent_min', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 59: { field: 'saturated_hemoglobin_percent_max', type: 'uint16', scale: 10, offset: 0, units: '%' },\n 62: { field: 'device_index', type: 'device_index', scale: null, offset: 0, units: '' },\n 67: { field: 'left_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 68: { field: 'right_pco', type: 'sint8', scale: null, offset: 0, units: 'mm' },\n 69: { field: 'left_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 70: { field: 'left_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 71: { field: 'right_power_phase', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 72: { field: 'right_power_phase_peak', type: 'uint8', scale: '0,7111111', offset: 0, units: 'degrees' },\n 73: { field: 'enhanced_speed', type: 'uint32', scale: 1000, offset: 0, units: 'm/s' },\n 78: { field: 'enhanced_altitude', type: 'uint32', scale: 5, offset: -500, units: 'm' },\n 81: { field: 'battery_soc', type: 'uint8', scale: 2, offset: 0, units: 'percent' },\n 82: { field: 'motor_power', type: 'uint16', scale: null, offset: 0, units: 'watts' },\n 83: { field: 'vertical_ratio', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 84: { field: 'stance_time_balance', type: 'uint16', scale: 100, offset: 0, units: 'percent' },\n 85: { field: 'step_length', type: 'uint16', scale: 10, offset: 0, units: 'mm' },\n 91: { field: 'absolute_pressure', type: 'uint32', scale: null, offset: 0, units: 'Pa' },\n 92: { field: 'depth', type: 'uint32', scale: null, offset: 0, units: 'm' },\n 93: { field: 'next_stop_depth', type: 'uint32', scale: null, offset: 0, units: 'm' },\n 94: { field: 'next_stop_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 95: { field: 'time_to_surface', type: 'uint32', scale: null, offset: 0, units: 's' },\n 96: { field: 'ndl_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 97: { field: 'cns_load', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 98: { field: 'n2_load', type: 'uint16', scale: null, offset: 0, units: 'percent' }\n },\n 21: {\n name: 'event',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: '', units: 's' },\n 0: { field: 'event', type: 'event', scale: null, offset: '', units: '' },\n 1: { field: 'event_type', type: 'event_type', scale: null, offset: '', units: '' },\n 2: { field: 'data16', type: 'uint16', scale: null, offset: '', units: '' },\n 3: { field: 'data', type: 'uint32', scale: null, offset: '', units: '' },\n 4: { field: 'event_group', type: 'uint8', scale: null, offset: '', units: '' },\n 7: { field: 'score', type: 'uint16', scale: null, offset: '', units: '' },\n 8: { field: 'opponent_score', type: 'uint16', scale: null, offset: '', units: '' },\n 9: { field: 'front_gear_num', type: 'uint8z', scale: null, offset: '', units: '' },\n 10: { field: 'front_gear', type: 'uint8z', scale: null, offset: '', units: '' },\n 11: { field: 'rear_gear_num', type: 'uint8z', scale: null, offset: '', units: '' },\n 12: { field: 'rear_gear', type: 'uint8z', scale: null, offset: '', units: '' },\n 13: { field: 'device_index', type: 'device_index', scale: null, offset: '', units: '' }\n },\n 23: {\n name: 'device_info',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'device_index', type: 'uint8', scale: null, offset: 0, units: '' },\n 1: { field: 'device_type', type: 'antplus_device_type', scale: null, offset: 0, units: '' },\n 2: { field: 'manufacturer', type: 'manufacturer', scale: null, offset: 0, units: '' },\n 3: { field: 'serial_number', type: 'uint32z', scale: null, offset: 0, units: '' },\n 4: { field: 'product', type: 'uint16', scale: null, offset: 0, units: '' },\n 5: { field: 'software_version', type: 'uint16', scale: 100, offset: 0, units: '' },\n 6: { field: 'hardware_version', type: 'uint8', scale: null, offset: 0, units: '' },\n 7: { field: 'cum_operating_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 10: { field: 'battery_voltage', type: 'uint16', scale: 256, offset: 0, units: 'V' },\n 11: { field: 'battery_status', type: 'battery_status', scale: null, offset: 0, units: '' },\n 18: { field: 'sensor_position', type: 'body_location', scale: null, offset: 0, units: '' },\n 19: { field: 'descriptor', type: 'string', scale: null, offset: 0, units: '' },\n 20: { field: 'ant_transmission_type', type: 'uint8z', scale: null, offset: 0, units: '' },\n 21: { field: 'ant_device_number', type: 'uint16z', scale: null, offset: 0, units: '' },\n 22: { field: 'ant_network', type: 'ant_network', scale: null, offset: 0, units: '' },\n 25: { field: 'source_type', type: 'source_type', scale: null, offset: 0, units: '' },\n 27: { field: 'product_name', type: 'string', scale: null, offset: 0, units: '' }\n },\n 26: {\n name: 'workout',\n 4: { field: 'sport', type: 'sport', scale: null, offset: '', units: '' },\n 5: { field: 'capabilities', type: 'workout_capabilities', scale: null, offset: '', units: '' },\n 6: { field: 'num_valid_steps', type: 'uint16', scale: null, offset: '', units: '' },\n 8: { field: 'wkt_name', type: 'string', scale: null, offset: '', units: '' }\n },\n 27: {\n name: 'workout_step',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 0: { field: 'wkt_step_name', type: 'string', scale: null, offset: 0, units: '' },\n 1: { field: 'duration_type', type: 'wkt_step_duration', scale: null, offset: 0, units: '' },\n 2: { field: 'duration_value', type: 'uint32', scale: null, offset: 0, units: '' },\n 3: { field: 'target_type', type: 'wkt_step_target', scale: null, offset: 0, units: '' },\n 4: { field: 'target_value', type: 'uint32', scale: null, offset: 0, units: '' },\n 5: { field: 'custom_target_value_low', type: 'uint32', scale: null, offset: 0, units: '' },\n 6: { field: 'custom_target_value_high', type: 'uint32', scale: null, offset: 0, units: '' },\n 7: { field: 'intensity', type: 'intensity', scale: null, offset: 0, units: '' }\n },\n 30: {\n name: 'weight_scale',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'weight', type: 'weight', scale: 100, offset: 0, units: 'kg' },\n 1: { field: 'percent_fat', type: 'uint16', scale: 100, offset: 0, units: '%' },\n 2: { field: 'percent_hydration', type: 'uint16', scale: 100, offset: 0, units: '%' },\n 3: { field: 'visceral_fat_mass', type: 'uint16', scale: 100, offset: 0, units: 'kg' },\n 4: { field: 'bone_mass', type: 'uint16', scale: 100, offset: 0, units: 'kg' },\n 5: { field: 'muscle_mass', type: 'uint16', scale: 100, offset: 0, units: 'kg' },\n 7: { field: 'basal_met', type: 'uint16', scale: 4, offset: 0, units: 'kcal/day' },\n 8: { field: 'physique_rating', type: 'uint8', scale: null, offset: 0, units: '' },\n 9: { field: 'active_met', type: 'uint16', scale: 4, offset: 0, units: 'kcal/day' },\n 10: { field: 'metabolic_age', type: 'uint8', scale: null, offset: 0, units: 'years' },\n 11: { field: 'visceral_fat_rating', type: 'uint8', scale: null, offset: 0, units: '' },\n 12: { field: 'user_profile_index', type: 'message_index', scale: null, offset: 0, units: '' }\n },\n 31: {\n name: 'course',\n 4: { field: 'sport', type: 'sport', scale: null, offset: '', units: '' },\n 5: { field: 'name', type: 'string', scale: null, offset: '', units: '' },\n 6: { field: 'capabilities', type: 'course_capabilities', scale: null, offset: '', units: '' }\n },\n 32: {\n name: 'course_point',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 1: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: '' },\n 2: { field: 'position_lat', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 3: { field: 'position_long', type: 'sint32', scale: null, offset: 0, units: 'semicircles' },\n 4: { field: 'distance', type: 'uint32', scale: 100, offset: 0, units: 'm' },\n 5: { field: 'type', type: 'course_point', scale: null, offset: 0, units: '' },\n 6: { field: 'name', type: 'string', scale: null, offset: 0, units: '' },\n 8: { field: 'favorite', type: 'bool', scale: null, offset: 0, units: '' }\n },\n 33: {\n name: 'totals',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'timer_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 1: { field: 'distance', type: 'uint32', scale: null, offset: 0, units: 'm' },\n 2: { field: 'calories', type: 'uint32', scale: null, offset: 0, units: 'kcal' },\n 3: { field: 'sport', type: 'sport', scale: null, offset: 0, units: '' },\n 4: { field: 'elapsed_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 5: { field: 'sessions', type: 'uint16', scale: null, offset: 0, units: '' },\n 6: { field: 'active_time', type: 'uint32', scale: null, offset: 0, units: 's' },\n 9: { field: 'sport_index', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 34: {\n name: 'activity',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: '' },\n 0: { field: 'total_timer_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 1: { field: 'num_sessions', type: 'uint16', scale: null, offset: 0, units: '' },\n 2: { field: 'type', type: 'activity', scale: null, offset: 0, units: '' },\n 3: { field: 'event', type: 'event', scale: null, offset: 0, units: '' },\n 4: { field: 'event_type', type: 'event_type', scale: null, offset: 0, units: '' },\n 5: { field: 'local_timestamp', type: 'local_date_time', scale: null, offset: 0, units: '' },\n 6: { field: 'event_group', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 35: {\n name: 'software',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 3: { field: 'version', type: 'uint16', scale: 100, offset: '', units: '' },\n 5: { field: 'part_number', type: 'string', scale: null, offset: '', units: '' }\n },\n 37: {\n name: 'file_capabilities',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 0: { field: 'type', type: 'file', scale: null, offset: 0, units: '' },\n 1: { field: 'flags', type: 'file_flags', scale: null, offset: 0, units: '' },\n 2: { field: 'directory', type: 'string', scale: null, offset: 0, units: '' },\n 3: { field: 'max_count', type: 'uint16', scale: null, offset: 0, units: '' },\n 4: { field: 'max_size', type: 'uint32', scale: null, offset: 0, units: 'bytes' }\n },\n 38: {\n name: 'mesg_capabilities',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'file', type: 'file', scale: null, offset: '', units: '' },\n 1: { field: 'mesg_num', type: 'mesg_num', scale: null, offset: '', units: '' },\n 2: { field: 'count_type', type: 'mesg_count', scale: null, offset: '', units: '' },\n 3: { field: 'count', type: 'uint16', scale: null, offset: '', units: '' }\n },\n 39: {\n name: 'field_capabilities',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'file', type: 'file', scale: null, offset: '', units: '' },\n 1: { field: 'mesg_num', type: 'mesg_num', scale: null, offset: '', units: '' },\n 2: { field: 'field_num', type: 'uint8', scale: null, offset: '', units: '' },\n 3: { field: 'count', type: 'uint16', scale: null, offset: '', units: '' }\n },\n 49: {\n name: 'file_creator',\n 0: { field: 'software_version', type: 'uint16', scale: null, offset: '', units: '' },\n 1: { field: 'hardware_version', type: 'uint8', scale: null, offset: '', units: '' }\n },\n 51: {\n name: 'blood_pressure',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'systolic_pressure', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 1: { field: 'diastolic_pressure', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 2: { field: 'mean_arterial_pressure', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 3: { field: 'map_3_sample_mean', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 4: { field: 'map_morning_values', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 5: { field: 'map_evening_values', type: 'uint16', scale: null, offset: 0, units: 'mmHg' },\n 6: { field: 'heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 7: { field: 'heart_rate_type', type: 'hr_type', scale: null, offset: 0, units: '' },\n 8: { field: 'status', type: 'bp_status', scale: null, offset: 0, units: '' },\n 9: { field: 'user_profile_index', type: 'message_index', scale: null, offset: 0, units: '' }\n },\n 55: {\n name: 'monitoring',\n 253: { field: 'timestamp', type: 'uint32', scale: null, offset: 0, units: '' },\n 0: { field: 'device_index', type: 'device_index', scale: null, offset: 0, units: '' },\n 1: { field: 'calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 2: { field: 'distance', type: 'float32', scale: null, offset: 0, units: 'm' },\n 3: { field: 'cycles', type: 'float32', scale: null, offset: 0, units: 'cycles' },\n 4: { field: 'active_time', type: 'float32', scale: null, offset: 0, units: 's' },\n 5: { field: 'activity_type', type: 'activity_type', scale: null, offset: 0, units: '' },\n 6: { field: 'activity_subtype', type: 'activity_subtype', scale: null, offset: 0, units: '' },\n 7: { field: 'activity_level', type: 'activity_level', scale: null, offset: 0, units: 's' },\n 8: { field: 'distance16', type: 'uint16', scale: null, offset: 0, units: 'm' },\n 9: { field: 'cycles16', type: 'uint16', scale: null, offset: 0, units: 'cycles' },\n 10: { field: 'active_time16', type: 'uint16', scale: null, offset: 0, units: '' },\n 11: { field: 'local_timestamp', type: 'uint32', scale: null, offset: 0, units: '' },\n 12: { field: 'temperature', type: 'float32', scale: null, offset: 0, units: 'C' },\n 14: { field: 'temperature_min', type: 'float32', scale: null, offset: 0, units: 'C' },\n 15: { field: 'temperature_max', type: 'float32', scale: null, offset: 0, units: 'C' },\n 16: { field: 'activity_time', type: 'int32', scale: null, offset: 0, units: '' },\n 19: { field: 'active_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 24: { field: 'current_activity_type_intensity', type: 'uint8', scale: null, offset: 0, units: '' },\n 25: { field: 'timestamp_min8', type: 'uint8', scale: null, offset: 0, units: '' },\n 26: { field: 'timestamp16', type: 'uint16', scale: null, offset: 0, units: '' },\n 27: { field: 'heart_rate', type: 'uint8', scale: null, offset: 0, units: 'bpm' },\n 28: { field: 'intensity', type: 'uint8', scale: null, offset: 0, units: '' },\n 29: { field: 'duration_min', type: 'uint16', scale: null, offset: 0, units: '' },\n 30: { field: 'duration', type: 'uint32', scale: null, offset: 0, units: '' },\n 31: { field: 'ascent', type: 'float32', scale: null, offset: 0, units: 'm' },\n 32: { field: 'descent', type: 'float32', scale: null, offset: 0, units: 'm' },\n 33: { field: 'moderate_activity_minutes', type: 'uint16', scale: null, offset: 0, units: '' },\n 34: { field: 'vigorous_activity_inutes', type: 'uint16', scale: null, offset: 0, units: '' }\n },\n 78: {\n name: 'hrv',\n 0: { field: 'time', type: 'uint16_array', scale: 1000, offset: 0, units: 's' }\n },\n 101: {\n name: 'length',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'event', type: 'event', scale: null, offset: 0, units: '' },\n 1: { field: 'event_type', type: 'event_type', scale: null, offset: 0, units: '' },\n 2: { field: 'start_time', type: 'date_time', scale: null, offset: 0, units: '' },\n 3: { field: 'total_elapsed_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 4: { field: 'total_timer_time', type: 'uint32', scale: 1000, offset: 0, units: 's' },\n 5: { field: 'total_strokes', type: 'uint16', scale: null, offset: 0, units: 'strokes' },\n 6: { field: 'avg_speed', type: 'uint16', scale: 1000, offset: 0, units: 'm/s' },\n 7: { field: 'swim_stroke', type: 'swim_stroke', scale: null, offset: 0, units: 'swim_stroke' },\n 9: { field: 'avg_swimming_cadence', type: 'uint8', scale: null, offset: 0, units: 'strokes/min' },\n 10: { field: 'event_group', type: 'uint8', scale: null, offset: 0, units: '' },\n 11: { field: 'total_calories', type: 'uint16', scale: null, offset: 0, units: 'kcal' },\n 12: { field: 'length_type', type: 'length_type', scale: null, offset: 0, units: 'length_type' },\n 18: { field: 'player_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 19: { field: 'opponent_score', type: 'uint16', scale: null, offset: 0, units: '' },\n 20: { field: 'stroke_count', type: 'uint16', scale: null, offset: 0, units: 'counts' },\n 21: { field: 'zone_count', type: 'uint16', scale: null, offset: 0, units: 'counts' }\n },\n 103: {\n name: 'monitoring_info',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: '' },\n 0: { field: 'local_timestamp', type: 'uint32', scale: null, offset: 0, units: '' },\n 1: { field: 'activity_type', type: 'activity_type', scale: null, offset: 0, units: '' },\n 3: { field: 'cycles_to_distance', type: 'float32', scale: null, offset: 0, units: 'cycles' },\n 4: { field: 'cycles_to_calories', type: 'float32', scale: null, offset: 0, units: 'kcal' },\n 5: { field: 'resting_metabolic_rate', type: 'uint16', scale: null, offset: 0, units: '' }\n },\n 108: {\n name: 'o_hr_settings',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: '' },\n 0: { field: 'enabled', type: 'byte', scale: null, offset: 0, units: '' }\n },\n 206: {\n name: 'field_description',\n 0: { field: 'developer_data_index', type: 'uint8', scale: null, offset: 0, units: '' },\n 1: { field: 'field_definition_number', type: 'uint8', scale: null, offset: 0, units: '' },\n 2: { field: 'fit_base_type_id', type: 'uint8', scale: null, offset: 0, units: '' },\n 3: { field: 'field_name', type: 'string', scale: null, offset: 0, units: '' },\n //4: { field: 'array', type: 'uint8', scale: null, offset: 0, units: '' },\n //5: { field: 'components', type: 'string', scale: null, offset: 0, units: '' },\n 6: { field: 'scale', type: 'uint8', scale: null, offset: 0, units: '' },\n 7: { field: 'offset', type: 'sint8', scale: null, offset: 0, units: '' },\n 8: { field: 'units', type: 'string', scale: null, offset: 0, units: '' },\n // 9: { field: 'bits', type: 'string', scale: null, offset: 0, units: '' },\n // 10: { field: 'accumulate', type: 'string', scale: null, offset: 0, units: '' },\n //13: { field: 'fit_base_unit_id', type: 'uint16', scale: null, offset: 0, units: '' },\n // 14: { field: 'native_mesg_num', type: 'mesg_num', scale: null, offset: 0, units: '' },\n 15: { field: 'native_field_num', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 227: {\n name: 'stress_level',\n 0: { field: 'stress_level_value', type: 'uint16', scale: null, offset: 0, units: '' },\n 1: { field: 'stress_level_time', type: 'date_time', scale: null, offset: 0, units: 's' },\n 2: { field: 'field_two', type: 'sint8', scale: null, offset: 0, units: '' },\n 3: { field: 'body_battery', type: 'uint8', scale: null, offset: 0, units: '' },\n 4: { field: 'field_four', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 207: {\n name: 'developer_data_id',\n 0: { field: 'developer_id', type: 'uint8', scale: null, offset: 0, units: '' },\n 1: { field: 'application_id', type: 'byte_array', scale: null, offset: 0, units: '' },\n 2: { field: 'manufacturer_id', type: 'manufacturer', scale: null, offset: 0, units: '' },\n 3: { field: 'developer_data_index', type: 'uint8', scale: null, offset: 0, units: '' },\n 4: { field: 'application_version', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 258: {\n name: 'dive_settings',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'name', type: 'string', scale: null, offset: 0, units: '' },\n 1: { field: 'model', type: 'tissue_model_type', scale: null, offset: 0, units: '' },\n 2: { field: 'gf_low', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 3: { field: 'gf_high', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 4: { field: 'water_type', type: 'water_type', scale: null, offset: 0, units: '' },\n 5: { field: 'water_density', type: 'float32', scale: null, offset: 0, units: 'kg/m^3' },\n 6: { field: 'po2_warn', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 7: { field: 'po2_critical', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 8: { field: 'po2_deco', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 9: { field: 'safety_stop_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 10: { field: 'bottom_depth', type: 'float32', scale: null, offset: 0, units: '' },\n 11: { field: 'bottom_time', type: 'uint32', scale: null, offset: 0, units: '' },\n 12: { field: 'apnea_countdown_enabled', type: 'bool', scale: null, offset: 0, units: '' },\n 13: { field: 'apnea_countdown_time', type: 'uint32', scale: null, offset: 0, units: '' },\n 14: { field: 'backlight_mode', type: 'dive_backlight_mode', scale: null, offset: 0, units: '' },\n 15: { field: 'backlight_brightness', type: 'uint8', scale: null, offset: 0, units: '' },\n 16: { field: 'backlight_timeout', type: 'backlight_timeout', scale: null, offset: 0, units: '' },\n 17: { field: 'repeat_dive_time', type: 'uint16', scale: null, offset: 0, units: 's' },\n 18: { field: 'safety_stop_time', type: 'uint16', scale: null, offset: 0, units: 's' },\n 19: { field: 'heart_rate_source_type', type: 'source_type', scale: null, offset: 0, units: '' },\n 20: { field: 'heart_rate_source', type: 'uint8', scale: null, offset: 0, units: '' }\n },\n 259: {\n name: 'dive_gas',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'helium_content', type: 'uint8', scale: null, offset: '', units: 'percent' },\n 1: { field: 'oxygen_content', type: 'uint8', scale: null, offset: '', units: 'percent' },\n 2: { field: 'status', type: 'dive_gas_status', scale: null, offset: '', units: '' }\n },\n 262: {\n name: 'dive_alarm',\n 254: { field: 'message_index', type: 'message_index', scale: null, offset: '', units: '' },\n 0: { field: 'depth', type: 'uint32', scale: null, offset: '', units: 'm' },\n 1: { field: 'time', type: 'sint32', scale: null, offset: '', units: 's' },\n 2: { field: 'enabled', type: 'bool', scale: null, offset: '', units: '' },\n 3: { field: 'alarm_type', type: 'dive_alarm_type', scale: null, offset: '', units: '' },\n 4: { field: 'sound', type: 'tone', scale: null, offset: '', units: '' },\n 5: { field: 'dive_types', type: 'sub_sport', scale: null, offset: '', units: '' }\n },\n 268: {\n name: 'dive_summary',\n 253: { field: 'timestamp', type: 'date_time', scale: null, offset: 0, units: 's' },\n 0: { field: 'reference_mesg', type: 'mesg_num', scale: null, offset: 0, units: '' },\n 1: { field: 'reference_index', type: 'message_index', scale: null, offset: 0, units: '' },\n 2: { field: 'avg_depth', type: 'uint32', scale: null, offset: 0, units: 'm' },\n 3: { field: 'max_depth', type: 'uint32', scale: null, offset: 0, units: 'm' },\n 4: { field: 'surface_interval', type: 'uint32', scale: null, offset: 0, units: 's' },\n 5: { field: 'start_cns', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 6: { field: 'end_cns', type: 'uint8', scale: null, offset: 0, units: 'percent' },\n 7: { field: 'start_n2', type: 'uint16', scale: null, offset: 0, units: 'percent' },\n 8: { field: 'end_n2', type: 'uint16', scale: null, offset: 0, units: 'percent' },\n 9: { field: 'o2_toxicity', type: 'uint16', scale: null, offset: 0, units: 'OTUs' },\n 10: { field: 'dive_number', type: 'uint32', scale: null, offset: 0, units: '' },\n 11: { field: 'bottom_time', type: 'uint32', scale: null, offset: 0, units: 's' }\n }\n },\n types: {\n file: {\n 1: 'device',\n 2: 'settings',\n 3: 'sport',\n 4: 'activity',\n 5: 'workout',\n 6: 'course',\n 7: 'schedules',\n 9: 'weight',\n 10: 'totals',\n 11: 'goals',\n 14: 'blood_pressure',\n 15: 'monitoring_a',\n 20: 'activity_summary',\n 28: 'monitoring_daily',\n 32: 'monitoring_b',\n 34: 'segment',\n 35: 'segment_list',\n 40: 'exd_configuration',\n 247: 'mfg_range_min',\n 254: 'mfg_range_max'\n },\n mesg_num: {\n 0: 'file_id',\n 1: 'capabilities',\n 2: 'device_settings',\n 3: 'user_profile',\n 4: 'hrm_profile',\n 5: 'sdm_profile',\n 6: 'bike_profile',\n 7: 'zones_target',\n 8: 'hr_zone',\n 9: 'power_zone',\n 10: 'met_zone',\n 12: 'sport',\n 15: 'goal',\n 18: 'session',\n 19: 'lap',\n 20: 'record',\n 21: 'event',\n 23: 'device_info',\n 26: 'workout',\n 27: 'workout_step',\n 28: 'schedule',\n 30: 'weight_scale',\n 31: 'course',\n 32: 'course_point',\n 33: 'totals',\n 34: 'activity',\n 35: 'software',\n 37: 'file_capabilities',\n 38: 'mesg_capabilities',\n 39: 'field_capabilities',\n 49: 'file_creator',\n 51: 'blood_pressure',\n 53: 'speed_zone',\n 55: 'monitoring',\n 72: 'training_file',\n 78: 'hrv',\n 80: 'ant_rx',\n 81: 'ant_tx',\n 82: 'ant_channel_id',\n 101: 'length',\n 103: 'monitoring_info',\n 105: 'pad',\n 106: 'slave_device',\n 127: 'connectivity',\n 128: 'weather_conditions',\n 129: 'weather_alert',\n 131: 'cadence_zone',\n 132: 'hr',\n 142: 'segment_lap',\n 145: 'memo_glob',\n 148: 'segment_id',\n 149: 'segment_leaderboard_entry',\n 150: 'segment_point',\n 151: 'segment_file',\n 158: 'workout_session',\n 159: 'watchface_settings',\n 160: 'gps_metadata',\n 161: 'camera_event',\n 162: 'timestamp_correlation',\n 164: 'gyroscope_data',\n 165: 'accelerometer_data',\n 167: 'three_d_sensor_calibration',\n 169: 'video_frame',\n 174: 'obdii_data',\n 177: 'nmea_sentence',\n 178: 'aviation_attitude',\n 184: 'video',\n 185: 'video_title',\n 186: 'video_description',\n 187: 'video_clip',\n 200: 'exd_screen_configuration',\n 201: 'exd_data_field_configuration',\n 202: 'exd_data_concept_configuration',\n 206: 'field_description',\n 207: 'developer_data_id',\n 208: 'magnetometer_data',\n 209: 'barometer_data',\n 210: 'one_d_sensor_calibration',\n 225: 'set',\n 227: 'stress_level',\n 258: 'dive_settings',\n 259: 'dive_gas',\n 262: 'dive_alarm',\n 264: 'exercise_title',\n 268: 'dive_summary',\n 285: 'jump',\n 317: 'climb_pro',\n 65280: 'mfg_range_min',\n 65534: 'mfg_range_max'\n },\n checksum: {\n 0: 'clear',\n 1: 'ok'\n },\n file_flags: {\n 0: 0,\n 2: 'read',\n 4: 'write',\n 8: 'erase'\n },\n mesg_count: {\n 0: 'num_per_file',\n 1: 'max_per_file',\n 2: 'max_per_file_type'\n },\n date_time: {\n 0: 0,\n 268435456: 'min'\n },\n local_date_time: {\n 0: 0,\n 268435456: 'min'\n },\n message_index: {\n 0: 0,\n 4095: 'mask',\n 28672: 'reserved',\n 32768: 'selected'\n },\n gender: {\n 0: 'female',\n 1: 'male'\n },\n language: {\n 0: 'english',\n 1: 'french',\n 2: 'italian',\n 3: 'german',\n 4: 'spanish',\n 5: 'croatian',\n 6: 'czech',\n 7: 'danish',\n 8: 'dutch',\n 9: 'finnish',\n 10: 'greek',\n 11: 'hungarian',\n 12: 'norwegian',\n 13: 'polish',\n 14: 'portuguese',\n 15: 'slovakian',\n 16: 'slovenian',\n 17: 'swedish',\n 18: 'russian',\n 19: 'turkish',\n 20: 'latvian',\n 21: 'ukrainian',\n 22: 'arabic',\n 23: 'farsi',\n 24: 'bulgarian',\n 25: 'romanian',\n 26: 'chinese',\n 27: 'japanese',\n 28: 'korean',\n 29: 'taiwanese',\n 30: 'thai',\n 31: 'hebrew',\n 32: 'brazilian_portuguese',\n 33: 'indonesian',\n 34: 'malaysian',\n 35: 'vietnamese',\n 36: 'burmese',\n 37: 'mongolian',\n 254: 'custom'\n },\n language_bits_0: {\n 0: 0,\n 1: 'english',\n 2: 'french',\n 4: 'italian',\n 8: 'german',\n 16: 'spanish',\n 32: 'croatian',\n 64: 'czech',\n 128: 'danish'\n },\n language_bits_1: {\n 0: 0,\n 1: 'dutch',\n 2: 'finnish',\n 4: 'greek',\n 8: 'hungarian',\n 16: 'norwegian',\n 32: 'polish',\n 64: 'portuguese',\n 128: 'slovakian'\n },\n language_bits_2: {\n 0: 0,\n 1: 'slovenian',\n 2: 'swedish',\n 4: 'russian',\n 8: 'turkish',\n 16: 'latvian',\n 32: 'ukrainian',\n 64: 'arabic',\n 128: 'farsi'\n },\n language_bits_3: {\n 0: 0,\n 1: 'bulgarian',\n 2: 'romanian',\n 4: 'chinese',\n 8: 'japanese',\n 16: 'korean',\n 32: 'taiwanese',\n 64: 'thai',\n 128: 'hebrew'\n },\n language_bits_4: {\n 0: 0,\n 1: 'brazilian_portuguese',\n 2: 'indonesian',\n 4: 'malaysian',\n 8: 'vietnamese',\n 16: 'burmese',\n 32: 'mongolian'\n },\n time_zone: {\n 0: 'almaty',\n 1: 'bangkok',\n 2: 'bombay',\n 3: 'brasilia',\n 4: 'cairo',\n 5: 'cape_verde_is',\n 6: 'darwin',\n 7: 'eniwetok',\n 8: 'fiji',\n 9: 'hong_kong',\n 10: 'islamabad',\n 11: 'kabul',\n 12: 'magadan',\n 13: 'mid_atlantic',\n 14: 'moscow',\n 15: 'muscat',\n 16: 'newfoundland',\n 17: 'samoa',\n 18: 'sydney',\n 19: 'tehran',\n 20: 'tokyo',\n 21: 'us_alaska',\n 22: 'us_atlantic',\n 23: 'us_central',\n 24: 'us_eastern',\n 25: 'us_hawaii',\n 26: 'us_mountain',\n 27: 'us_pacific',\n 28: 'other',\n 29: 'auckland',\n 30: 'kathmandu',\n 31: 'europe_western_wet',\n 32: 'europe_central_cet',\n 33: 'europe_eastern_eet',\n 34: 'jakarta',\n 35: 'perth',\n 36: 'adelaide',\n 37: 'brisbane',\n 38: 'tasmania',\n 39: 'iceland',\n 40: 'amsterdam',\n 41: 'athens',\n 42: 'barcelona',\n 43: 'berlin',\n 44: 'brussels',\n 45: 'budapest',\n 46: 'copenhagen',\n 47: 'dublin',\n 48: 'helsinki',\n 49: 'lisbon',\n 50: 'london',\n 51: 'madrid',\n 52: 'munich',\n 53: 'oslo',\n 54: 'paris',\n 55: 'prague',\n 56: 'reykjavik',\n 57: 'rome',\n 58: 'stockholm',\n 59: 'vienna',\n 60: 'warsaw',\n 61: 'zurich',\n 62: 'quebec',\n 63: 'ontario',\n 64: 'manitoba',\n 65: 'saskatchewan',\n 66: 'alberta',\n 67: 'british_columbia',\n 68: 'boise',\n 69: 'boston',\n 70: 'chicago',\n 71: 'dallas',\n 72: 'denver',\n 73: 'kansas_city',\n 74: 'las_vegas',\n 75: 'los_angeles',\n 76: 'miami',\n 77: 'minneapolis',\n 78: 'new_york',\n 79: 'new_orleans',\n 80: 'phoenix',\n 81: 'santa_fe',\n 82: 'seattle',\n 83: 'washington_dc',\n 84: 'us_arizona',\n 85: 'chita',\n 86: 'ekaterinburg',\n 87: 'irkutsk',\n 88: 'kaliningrad',\n 89: 'krasnoyarsk',\n 90: 'novosibirsk',\n 91: 'petropavlovsk_kamchatskiy',\n 92: 'samara',\n 93: 'vladivostok',\n 94: 'mexico_central',\n 95: 'mexico_mountain',\n 96: 'mexico_pacific',\n 97: 'cape_town',\n 98: 'winkhoek',\n 99: 'lagos',\n 100: 'riyahd',\n 101: 'venezuela',\n 102: 'australia_lh',\n 103: 'santiago',\n 253: 'manual',\n 254: 'automatic'\n },\n display_measure: {\n 0: 'metric',\n 1: 'statute',\n 2: 'nautical'\n },\n display_heart: {\n 0: 'bpm',\n 1: 'max',\n 2: 'reserve'\n },\n display_power: {\n 0: 'watts',\n 1: 'percent_ftp'\n },\n display_position: {\n 0: 'degree',\n 1: 'degree_minute',\n 2: 'degree_minute_second',\n 3: 'austrian_grid',\n 4: 'british_grid',\n 5: 'dutch_grid',\n 6: 'hungarian_grid',\n 7: 'finnish_grid',\n 8: 'german_grid',\n 9: 'icelandic_grid',\n 10: 'indonesian_equatorial',\n 11: 'indonesian_irian',\n 12: 'indonesian_southern',\n 13: 'india_zone_0',\n 14: 'india_zone_IA',\n 15: 'india_zone_IB',\n 16: 'india_zone_IIA',\n 17: 'india_zone_IIB',\n 18: 'india_zone_IIIA',\n 19: 'india_zone_IIIB',\n 20: 'india_zone_IVA',\n 21: 'india_zone_IVB',\n 22: 'irish_transverse',\n 23: 'irish_grid',\n 24: 'loran',\n 25: 'maidenhead_grid',\n 26: 'mgrs_grid',\n 27: 'new_zealand_grid',\n 28: 'new_zealand_transverse',\n 29: 'qatar_grid',\n 30: 'modified_swedish_grid',\n 31: 'swedish_grid',\n 32: 'south_african_grid',\n 33: 'swiss_grid',\n 34: 'taiwan_grid',\n 35: 'united_states_grid',\n 36: 'utm_ups_grid',\n 37: 'west_malayan',\n 38: 'borneo_rso',\n 39: 'estonian_grid',\n 40: 'latvian_grid',\n 41: 'swedish_ref_99_grid'\n },\n 'switch': {\n 0: 'off',\n 1: 'on',\n 2: 'auto'\n },\n sport: {\n 0: 'generic',\n 1: 'running',\n 2: 'cycling',\n 3: 'transition',\n 4: 'fitness_equipment',\n 5: 'swimming',\n 6: 'basketball',\n 7: 'soccer',\n 8: 'tennis',\n 9: 'american_football',\n 10: 'training',\n 11: 'walking',\n 12: 'cross_country_skiing',\n 13: 'alpine_skiing',\n 14: 'snowboarding',\n 15: 'rowing',\n 16: 'mountaineering',\n 17: 'hiking',\n 18: 'multisport',\n 19: 'paddling',\n 20: 'flying',\n 21: 'e_biking',\n 22: 'motorcycling',\n 23: 'boating',\n 24: 'driving',\n 25: 'golf',\n 26: 'hang_gliding',\n 27: 'horseback_riding',\n 28: 'hunting',\n 29: 'fishing',\n 30: 'inline_skating',\n 31: 'rock_climbing',\n 32: 'sailing',\n 33: 'ice_skating',\n 34: 'sky_diving',\n 35: 'snowshoeing',\n 36: 'snowmobiling',\n 37: 'stand_up_paddleboarding',\n 38: 'surfing',\n 39: 'wakeboarding',\n 40: 'water_skiing',\n 41: 'kayaking',\n 42: 'rafting',\n 43: 'windsurfing',\n 44: 'kitesurfing',\n 45: 'tactical',\n 46: 'jumpmaster',\n 47: 'boxing',\n 48: 'floor_climbing',\n 53: 'diving',\n 254: 'all'\n },\n sport_bits_0: {\n 0: 0,\n 1: 'generic',\n 2: 'running',\n 4: 'cycling',\n 8: 'transition',\n 16: 'fitness_equipment',\n 32: 'swimming',\n 64: 'basketball',\n 128: 'soccer'\n },\n sport_bits_1: {\n 0: 0,\n 1: 'tennis',\n 2: 'american_football',\n 4: 'training',\n 8: 'walking',\n 16: 'cross_country_skiing',\n 32: 'alpine_skiing',\n 64: 'snowboarding',\n 128: 'rowing'\n },\n sport_bits_2: {\n 0: 0,\n 1: 'mountaineering',\n 2: 'hiking',\n 4: 'multisport',\n 8: 'paddling',\n 16: 'flying',\n 32: 'e_biking',\n 64: 'motorcycling',\n 128: 'boating'\n },\n sport_bits_3: {\n 0: 0,\n 1: 'driving',\n 2: 'golf',\n 4: 'hang_gliding',\n 8: 'horseback_riding',\n 16: 'hunting',\n 32: 'fishing',\n 64: 'inline_skating',\n 128: 'rock_climbing'\n },\n sport_bits_4: {\n 0: 0,\n 1: 'sailing',\n 2: 'ice_skating',\n 4: 'sky_diving',\n 8: 'snowshoeing',\n 16: 'snowmobiling',\n 32: 'stand_up_paddleboarding',\n 64: 'surfing',\n 128: 'wakeboarding'\n },\n sport_bits_5: {\n 0: 0,\n 1: 'water_skiing',\n 2: 'kayaking',\n 4: 'rafting',\n 8: 'windsurfing',\n 16: 'kitesurfing',\n 32: 'tactical',\n 64: 'jumpmaster',\n 128: 'boxing'\n },\n sport_bits_6: {\n 0: 0,\n 1: 'floor_climbing'\n },\n sub_sport: {\n 0: 'generic',\n 1: 'treadmill',\n 2: 'street',\n 3: 'trail',\n 4: 'track',\n 5: 'spin',\n 6: 'indoor_cycling',\n 7: 'road',\n 8: 'mountain',\n 9: 'downhill',\n 10: 'recumbent',\n 11: 'cyclocross',\n 12: 'hand_cycling',\n 13: 'track_cycling',\n 14: 'indoor_rowing',\n 15: 'elliptical',\n 16: 'stair_climbing',\n 17: 'lap_swimming',\n 18: 'open_water',\n 19: 'flexibility_training',\n 20: 'strength_training',\n 21: 'warm_up',\n 22: 'match',\n 23: 'exercise',\n 24: 'challenge',\n 25: 'indoor_skiing',\n 26: 'cardio_training',\n 27: 'indoor_walking',\n 28: 'e_bike_fitness',\n 29: 'bmx',\n 30: 'casual_walking',\n 31: 'speed_walking',\n 32: 'bike_to_run_transition',\n 33: 'run_to_bike_transition',\n 34: 'swim_to_bike_transition',\n 35: 'atv',\n 36: 'motocross',\n 37: 'backcountry',\n 38: 'resort',\n 39: 'rc_drone',\n 40: 'wingsuit',\n 41: 'whitewater',\n 42: 'skate_skiing',\n 43: 'yoga',\n 44: 'pilates',\n 45: 'indoor_running',\n 46: 'gravel_cycling',\n 47: 'e_bike_mountain',\n 48: 'commuting',\n 49: 'mixed_surface',\n 50: 'navigate',\n 51: 'track_me',\n 52: 'map',\n 53: 'single_gas_diving',\n 54: 'multi_gas_diving',\n 55: 'gauge_diving',\n 56: 'apnea_diving',\n 57: 'apnea_hunting',\n 58: 'virtual_activity',\n 59: 'obstacle',\n 254: 'all'\n },\n sport_event: {\n 0: 'uncategorized',\n 1: 'geocaching',\n 2: 'fitness',\n 3: 'recreation',\n 4: 'race',\n 5: 'special_event',\n 6: 'training',\n 7: 'transportation',\n 8: 'touring'\n },\n activity: {\n 0: 'manual',\n 1: 'auto_multi_sport'\n },\n intensity: {\n 0: 'active',\n 1: 'rest',\n 2: 'warmup',\n 3: 'cooldown'\n },\n session_trigger: {\n 0: 'activity_end',\n 1: 'manual',\n 2: 'auto_multi_sport',\n 3: 'fitness_equipment'\n },\n autolap_trigger: {\n 0: 'time',\n 1: 'distance',\n 2: 'position_start',\n 3: 'position_lap',\n 4: 'position_waypoint',\n 5: 'position_marked',\n 6: 'off'\n },\n lap_trigger: {\n 0: 'manual',\n 1: 'time',\n 2: 'distance',\n 3: 'position_start',\n 4: 'position_lap',\n 5: 'position_waypoint',\n 6: 'position_marked',\n 7: 'session_end',\n 8: 'fitness_equipment'\n },\n time_mode: {\n 0: 'hour12',\n 1: 'hour24',\n 2: 'military',\n 3: 'hour_12_with_seconds',\n 4: 'hour_24_with_seconds',\n 5: 'utc'\n },\n backlight_mode: {\n 0: 'off',\n 1: 'manual',\n 2: 'key_and_messages',\n 3: 'auto_brightness',\n 4: 'smart_notifications',\n 5: 'key_and_messages_night',\n 6: 'key_and_messages_and_smart_notifications'\n },\n date_mode: {\n 0: 'day_month',\n 1: 'month_day'\n },\n backlight_timeout: {\n 0: 'infinite'\n },\n event: {\n 0: 'timer',\n 3: 'workout',\n 4: 'workout_step',\n 5: 'power_down',\n 6: 'power_up',\n 7: 'off_course',\n 8: 'session',\n 9: 'lap',\n 10: 'course_point',\n 11: 'battery',\n 12: 'virtual_partner_pace',\n 13: 'hr_high_alert',\n 14: 'hr_low_alert',\n 15: 'speed_high_alert',\n 16: 'speed_low_alert',\n 17: 'cad_high_alert',\n 18: 'cad_low_alert',\n 19: 'power_high_alert',\n 20: 'power_low_alert',\n 21: 'recovery_hr',\n 22: 'battery_low',\n 23: 'time_duration_alert',\n 24: 'distance_duration_alert',\n 25: 'calorie_duration_alert',\n 26: 'activity',\n 27: 'fitness_equipment',\n 28: 'length',\n 32: 'user_marker',\n 33: 'sport_point',\n 36: 'calibration',\n 42: 'front_gear_change',\n 43: 'rear_gear_change',\n 44: 'rider_position_change',\n 45: 'elev_high_alert',\n 46: 'elev_low_alert',\n 47: 'comm_timeout'\n },\n event_type: {\n 0: 'start',\n 1: 'stop',\n 2: 'consecutive_depreciated',\n 3: 'marker',\n 4: 'stop_all',\n 5: 'begin_depreciated',\n 6: 'end_depreciated',\n 7: 'end_all_depreciated',\n 8: 'stop_disable',\n 9: 'stop_disable_all'\n },\n timer_trigger: {\n 0: 'manual',\n 1: 'auto',\n 2: 'fitness_equipment'\n },\n fitness_equipment_state: {\n 0: 'ready',\n 1: 'in_use',\n 2: 'paused',\n 3: 'unknown'\n },\n tone: {\n 0: 'off',\n 1: 'tone',\n 2: 'vibrate',\n 3: 'tone_and_vibrate'\n },\n autoscroll: {\n 0: 'none',\n 1: 'slow',\n 2: 'medium',\n 3: 'fast'\n },\n activity_class: {\n 0: 0,\n 100: 'level_max',\n 127: 'level',\n 128: 'athlete'\n },\n hr_zone_calc: {\n 0: 'custom',\n 1: 'percent_max_hr',\n 2: 'percent_hrr'\n },\n pwr_zone_calc: {\n 0: 'custom',\n 1: 'percent_ftp'\n },\n wkt_step_duration: {\n 0: 'time',\n 1: 'distance',\n 2: 'hr_less_than',\n 3: 'hr_greater_than',\n 4: 'calories',\n 5: 'open',\n 6: 'repeat_until_steps_cmplt',\n 7: 'repeat_until_time',\n 8: 'repeat_until_distance',\n 9: 'repeat_until_calories',\n 10: 'repeat_until_hr_less_than',\n 11: 'repeat_until_hr_greater_than',\n 12: 'repeat_until_power_less_than',\n 13: 'repeat_until_power_greater_than',\n 14: 'power_less_than',\n 15: 'power_greater_than',\n 16: 'training_peaks_tss',\n 17: 'repeat_until_power_last_lap_less_than',\n 18: 'repeat_until_max_power_last_lap_less_than',\n 19: 'power_3s_less_than',\n 20: 'power_10s_less_than',\n 21: 'power_30s_less_than',\n 22: 'power_3s_greater_than',\n 23: 'power_10s_greater_than',\n 24: 'power_30s_greater_than',\n 25: 'power_lap_less_than',\n 26: 'power_lap_greater_than',\n 27: 'repeat_until_training_peaks_tss',\n 28: 'repetition_time',\n 29: 'reps'\n },\n wkt_step_target: {\n 0: 'speed',\n 1: 'heart_rate',\n 2: 'open',\n 3: 'cadence',\n 4: 'power',\n 5: 'grade',\n 6: 'resistance',\n 7: 'power_3s',\n 8: 'power_10s',\n 9: 'power_30s',\n 10: 'power_lap',\n 11: 'swim_stroke',\n 12: 'speed_lap',\n 13: 'heart_rate_lap'\n },\n goal: {\n 0: 'time',\n 1: 'distance',\n 2: 'calories',\n 3: 'frequency',\n 4: 'steps',\n 5: 'ascent',\n 6: 'active_minutes'\n },\n goal_recurrence: {\n 0: 'off',\n 1: 'daily',\n 2: 'weekly',\n 3: 'monthly',\n 4: 'yearly',\n 5: 'custom'\n },\n goal_source: {\n 0: 'auto',\n 1: 'community',\n 2: 'user'\n },\n schedule: {\n 0: 'workout',\n 1: 'course'\n },\n course_point: {\n 0: 'generic',\n 1: 'summit',\n 2: 'valley',\n 3: 'water',\n 4: 'food',\n 5: 'danger',\n 6: 'left',\n 7: 'right',\n 8: 'straight',\n 9: 'first_aid',\n 10: 'fourth_category',\n 11: 'third_category',\n 12: 'second_category',\n 13: 'first_category',\n 14: 'hors_category',\n 15: 'sprint',\n 16: 'left_fork',\n 17: 'right_fork',\n 18: 'middle_fork',\n 19: 'slight_left',\n 20: 'sharp_left',\n 21: 'slight_right',\n 22: 'sharp_right',\n 23: 'u_turn',\n 24: 'segment_start',\n 25: 'segment_end'\n },\n manufacturer: {\n 0: 0,\n 1: 'garmin',\n 2: 'garmin_fr405_antfs',\n 3: 'zephyr',\n 4: 'dayton',\n 5: 'idt',\n 6: 'srm',\n 7: 'quarq',\n 8: 'ibike',\n 9: 'saris',\n 10: 'spark_hk',\n 11: 'tanita',\n 12: 'echowell',\n 13: 'dynastream_oem',\n 14: 'nautilus',\n 15: 'dynastream',\n 16: 'timex',\n 17: 'metrigear',\n 18: 'xelic',\n 19: 'beurer',\n 20: 'cardiosport',\n 21: 'a_and_d',\n 22: 'hmm',\n 23: 'suunto',\n 24: 'thita_elektronik',\n 25: 'gpulse',\n 26: 'clean_mobile',\n 27: 'pedal_brain',\n 28: 'peaksware',\n 29: 'saxonar',\n 30: 'lemond_fitness',\n 31: 'dexcom',\n 32: 'wahoo_fitness',\n 33: 'octane_fitness',\n 34: 'archinoetics',\n 35: 'the_hurt_box',\n 36: 'citizen_systems',\n 37: 'magellan',\n 38: 'osynce',\n 39: 'holux',\n 40: 'concept2',\n 42: 'one_giant_leap',\n 43: 'ace_sensor',\n 44: 'brim_brothers',\n 45: 'xplova',\n 46: 'perception_digital',\n 47: 'bf1systems',\n 48: 'pioneer',\n 49: 'spantec',\n 50: 'metalogics',\n 51: '4iiiis',\n 52: 'seiko_epson',\n 53: 'seiko_epson_oem',\n 54: 'ifor_powell',\n 55: 'maxwell_guider',\n 56: 'star_trac',\n 57: 'breakaway',\n 58: 'alatech_technology_ltd',\n 59: 'mio_technology_europe',\n 60: 'rotor',\n 61: 'geonaute',\n 62: 'id_bike',\n 63: 'specialized',\n 64: 'wtek',\n 65: 'physical_enterprises',\n 66: 'north_pole_engineering',\n 67: 'bkool',\n 68: 'cateye',\n 69: 'stages_cycling',\n 70: 'sigmasport',\n 71: 'tomtom',\n 72: 'peripedal',\n 73: 'wattbike',\n 76: 'moxy',\n 77: 'ciclosport',\n 78: 'powerbahn',\n 79: 'acorn_projects_aps',\n 80: 'lifebeam',\n 81: 'bontrager',\n 82: 'wellgo',\n 83: 'scosche',\n 84: 'magura',\n 85: 'woodway',\n 86: 'elite',\n 87: 'nielsen_kellerman',\n 88: 'dk_city',\n 89: 'tacx',\n 90: 'direction_technology',\n 91: 'magtonic',\n 92: '1partcarbon',\n 93: 'inside_ride_technologies',\n 94: 'sound_of_motion',\n 95: 'stryd',\n 96: 'icg',\n 97: 'mipulse',\n 98: 'bsx_athletics',\n 99: 'look',\n 100: 'campagnolo_srl',\n 101: 'body_bike_smart',\n 102: 'praxisworks',\n 103: 'limits_technology',\n 104: 'topaction_technology',\n 105: 'cosinuss',\n 106: 'fitcare',\n 107: 'magene',\n 108: 'giant_manufacturing_co',\n 109: 'tigrasport',\n 110: 'salutron',\n 111: 'technogym',\n 112: 'bryton_sensors',\n 113: 'latitude_limited',\n 114: 'soaring_technology',\n 115: 'igpsport',\n 116: 'thinkrider',\n 117: 'gopher_sport',\n 118: 'waterrower',\n 119: 'orangetheory',\n 120: 'inpeak',\n 121: 'kinetic',\n 122: 'johnson_health_tech',\n 123: 'polar_electro',\n 124: 'seesense',\n 125: 'nci_technology',\n 255: 'development',\n 257: 'healthandlife',\n 258: 'lezyne',\n 259: 'scribe_labs',\n 260: 'zwift',\n 261: 'watteam',\n 262: 'recon',\n 263: 'favero_electronics',\n 264: 'dynovelo',\n 265: 'strava',\n 266: 'precor',\n 267: 'bryton',\n 268: 'sram',\n 269: 'navman',\n 270: 'cobi',\n 271: 'spivi',\n 272: 'mio_magellan',\n 273: 'evesports',\n 274: 'sensitivus_gauge',\n 275: 'podoon',\n 276: 'life_time_fitness',\n 277: 'falco_e_motors',\n 278: 'minoura',\n 279: 'cycliq',\n 280: 'luxottica',\n 281: 'trainer_road',\n 282: 'the_sufferfest',\n 283: 'fullspeedahead',\n 284: 'virtualtraining',\n 285: 'feedbacksports',\n 286: 'omata',\n 287: 'vdo',\n 288: 'magneticdays',\n 289: 'hammerhead',\n 290: 'kinetic_by_kurt',\n 291: 'shapelog',\n 292: 'dabuziduo',\n 293: 'jetblack',\n 294: 'coros',\n 295: 'virtugo',\n 296: 'velosense',\n 5759: 'actigraphcorp'\n },\n garmin_product: {\n 0: 'hrm_bike',\n 1: 'hrm1',\n 2: 'axh01',\n 3: 'axb01',\n 4: 'axb02',\n 5: 'hrm2ss',\n 6: 'dsi_alf02',\n 7: 'hrm3ss',\n 8: 'hrm_run_single_byte_product_id',\n 9: 'bsm',\n 10: 'bcm',\n 11: 'axs01',\n 12: 'hrm_tri_single_byte_product_id',\n 14: 'fr225_single_byte_product_id',\n 473: 'fr301_china',\n 474: 'fr301_japan',\n 475: 'fr301_korea',\n 494: 'fr301_taiwan',\n 717: 'fr405',\n 782: 'fr50',\n 987: 'fr405_japan',\n 988: 'fr60',\n 1011: 'dsi_alf01',\n 1018: 'fr310xt',\n 1036: 'edge500',\n 1124: 'fr110',\n 1169: 'edge800',\n 1199: 'edge500_taiwan',\n 1213: 'edge500_japan',\n 1253: 'chirp',\n 1274: 'fr110_japan',\n 1325: 'edge200',\n 1328: 'fr910xt',\n 1333: 'edge800_taiwan',\n 1334: 'edge800_japan',\n 1341: 'alf04',\n 1345: 'fr610',\n 1360: 'fr210_japan',\n 1380: 'vector_ss',\n 1381: 'vector_cp',\n 1386: 'edge800_china',\n 1387: 'edge500_china',\n 1410: 'fr610_japan',\n 1422: 'edge500_korea',\n 1436: 'fr70',\n 1446: 'fr310xt_4t',\n 1461: 'amx',\n 1482: 'fr10',\n 1497: 'edge800_korea',\n 1499: 'swim',\n 1537: 'fr910xt_china',\n 1551: 'fenix',\n 1555: 'edge200_taiwan',\n 1561: 'edge510',\n 1567: 'edge810',\n 1570: 'tempe',\n 1600: 'fr910xt_japan',\n 1623: 'fr620',\n 1632: 'fr220',\n 1664: 'fr910xt_korea',\n 1688: 'fr10_japan',\n 1721: 'edge810_japan',\n 1735: 'virb_elite',\n 1736: 'edge_touring',\n 1742: 'edge510_japan',\n 1743: 'hrm_tri',\n 1752: 'hrm_run',\n 1765: 'fr920xt',\n 1821: 'edge510_asia',\n 1822: 'edge810_china',\n 1823: 'edge810_taiwan',\n 1836: 'edge1000',\n 1837: 'vivo_fit',\n 1853: 'virb_remote',\n 1885: 'vivo_ki',\n 1903: 'fr15',\n 1907: 'vivo_active',\n 1918: 'edge510_korea',\n 1928: 'fr620_japan',\n 1929: 'fr620_china',\n 1930: 'fr220_japan',\n 1931: 'fr220_china',\n 1936: 'approach_s6',\n 1956: 'vivo_smart',\n 1967: 'fenix2',\n 1988: 'epix',\n 2050: 'fenix3',\n 2052: 'edge1000_taiwan',\n 2053: 'edge1000_japan',\n 2061: 'fr15_japan',\n 2067: 'edge520',\n 2070: 'edge1000_china',\n 2072: 'fr620_russia',\n 2073: 'fr220_russia',\n 2079: 'vector_s',\n 2100: 'edge1000_korea',\n 2130: 'fr920xt_taiwan',\n 2131: 'fr920xt_china',\n 2132: 'fr920xt_japan',\n 2134: 'virbx',\n 2135: 'vivo_smart_apac',\n 2140: 'etrex_touch',\n 2147: 'edge25',\n 2148: 'fr25',\n 2150: 'vivo_fit2',\n 2153: 'fr225',\n 2156: 'fr630',\n 2157: 'fr230',\n 2158: 'fr735xt',\n 2160: 'vivo_active_apac',\n 2161: 'vector_2',\n 2162: 'vector_2s',\n 2172: 'virbxe',\n 2173: 'fr620_taiwan',\n 2174: 'fr220_taiwan',\n 2175: 'truswing',\n 2188: 'fenix3_china',\n 2189: 'fenix3_twn',\n 2192: 'varia_headlight',\n 2193: 'varia_taillight_old',\n 2204: 'edge_explore_1000',\n 2219: 'fr225_asia',\n 2225: 'varia_radar_taillight',\n 2226: 'varia_radar_display',\n 2238: 'edge20',\n 2262: 'd2_bravo',\n 2266: 'approach_s20',\n 2276: 'varia_remote',\n 2327: 'hrm4_run',\n 2337: 'vivo_active_hr',\n 2348: 'vivo_smart_hr',\n 2368: 'vivo_move',\n 2398: 'varia_vision',\n 2406: 'vivo_fit3',\n 2413: 'fenix3_hr',\n 2417: 'virb_ultra_30',\n 2429: 'index_smart_scale',\n 2431: 'fr235',\n 2432: 'fenix3_chronos',\n 2441: 'oregon7xx',\n 2444: 'rino7xx',\n 2496: 'nautix',\n 2530: 'edge_820',\n 2531: 'edge_explore_820',\n 2544: 'fenix5s',\n 2547: 'd2_bravo_titanium',\n 2567: 'varia_ut800',\n 2593: 'running_dynamics_pod',\n 2604: 'fenix5x',\n 2606: 'vivo_fit_jr',\n 2691: 'fr935',\n 2697: 'fenix5',\n 2859: 'descent',\n 10007: 'sdm4',\n 10014: 'edge_remote',\n 20119: 'training_center',\n 65531: 'connectiq_simulator',\n 65532: 'android_antplus_plugin',\n 65534: 'connect'\n },\n antplus_device_type: {\n 0: 0,\n 1: 'antfs',\n 11: 'bike_power',\n 12: 'environment_sensor_legacy',\n 15: 'multi_sport_speed_distance',\n 16: 'control',\n 17: 'fitness_equipment',\n 18: 'blood_pressure',\n 19: 'geocache_node',\n 20: 'light_electric_vehicle',\n 25: 'env_sensor',\n 26: 'racquet',\n 27: 'control_hub',\n 31: 'muscle_oxygen',\n 35: 'bike_light_main',\n 36: 'bike_light_shared',\n 38: 'exd',\n 40: 'bike_radar',\n 119: 'weight_scale',\n 120: 'heart_rate',\n 121: 'bike_speed_cadence',\n 122: 'bike_cadence',\n 123: 'bike_speed',\n 124: 'stride_speed_distance'\n },\n ant_network: {\n 0: 'public',\n 1: 'antplus',\n 2: 'antfs',\n 3: 'private'\n },\n workout_capabilities: {\n 0: 0,\n 1: 'interval',\n 2: 'custom',\n 4: 'fitness_equipment',\n 8: 'firstbeat',\n 16: 'new_leaf',\n 32: 'tcx',\n 128: 'speed',\n 256: 'heart_rate',\n 512: 'distance',\n 1024: 'cadence',\n 2048: 'power',\n 4096: 'grade',\n 8192: 'resistance',\n 16384: 'protected'\n },\n battery_status: {\n 0: 0,\n 1: 'new',\n 2: 'good',\n 3: 'ok',\n 4: 'low',\n 5: 'critical',\n 6: 'charging',\n 7: 'unknown'\n },\n hr_type: {\n 0: 'normal',\n 1: 'irregular'\n },\n course_capabilities: {\n 0: 0,\n 1: 'processed',\n 2: 'valid',\n 4: 'time',\n 8: 'distance',\n 16: 'position',\n 32: 'heart_rate',\n 64: 'power',\n 128: 'cadence',\n 256: 'training',\n 512: 'navigation',\n 1024: 'bikeway'\n },\n weight: {\n 0: 0,\n 65534: 'calculating'\n },\n workout_hr: {\n 0: 0,\n 100: 'bpm_offset'\n },\n workout_power: {\n 0: 0,\n 1000: 'watts_offset'\n },\n bp_status: {\n 0: 'no_error',\n 1: 'error_incomplete_data',\n 2: 'error_no_measurement',\n 3: 'error_data_out_of_range',\n 4: 'error_irregular_heart_rate'\n },\n user_local_id: {\n 0: 'local_min',\n 15: 'local_max',\n 16: 'stationary_min',\n 255: 'stationary_max',\n 256: 'portable_min',\n 65534: 'portable_max'\n },\n swim_stroke: {\n 0: 'freestyle',\n 1: 'backstroke',\n 2: 'breaststroke',\n 3: 'butterfly',\n 4: 'drill',\n 5: 'mixed',\n 6: 'im'\n },\n activity_type: {\n 0: 'generic',\n 1: 'running',\n 2: 'cycling',\n 3: 'transition',\n 4: 'fitness_equipment',\n 5: 'swimming',\n 6: 'walking',\n 8: 'sedentary',\n 254: 'all'\n },\n activity_subtype: {\n 0: 'generic',\n 1: 'treadmill',\n 2: 'street',\n 3: 'trail',\n 4: 'track',\n 5: 'spin',\n 6: 'indoor_cycling',\n 7: 'road',\n 8: 'mountain',\n 9: 'downhill',\n 10: 'recumbent',\n 11: 'cyclocross',\n 12: 'hand_cycling',\n 13: 'track_cycling',\n 14: 'indoor_rowing',\n 15: 'elliptical',\n 16: 'stair_climbing',\n 17: 'lap_swimming',\n 18: 'open_water',\n 254: 'all'\n },\n activity_level: {\n 0: 'low',\n 1: 'medium',\n 2: 'high'\n },\n side: {\n 0: 'right',\n 1: 'left'\n },\n left_right_balance: {\n 0: 0,\n 127: 'mask',\n 128: 'right'\n },\n left_right_balance_100: {\n 0: 0,\n 16383: 'mask',\n 32768: 'right'\n },\n length_type: {\n 0: 'idle',\n 1: 'active'\n },\n day_of_week: {\n 0: 'sunday',\n 1: 'monday',\n 2: 'tuesday',\n 3: 'wednesday',\n 4: 'thursday',\n 5: 'friday',\n 6: 'saturday'\n },\n connectivity_capabilities: {\n 0: 0,\n 1: 'bluetooth',\n 2: 'bluetooth_le',\n 4: 'ant',\n 8: 'activity_upload',\n 16: 'course_download',\n 32: 'workout_download',\n 64: 'live_track',\n 128: 'weather_conditions',\n 256: 'weather_alerts',\n 512: 'gps_ephemeris_download',\n 1024: 'explicit_archive',\n 2048: 'setup_incomplete',\n 4096: 'continue_sync_after_software_update',\n 8192: 'connect_iq_app_download',\n 16384: 'golf_course_download',\n 32768: 'device_initiates_sync',\n 65536: 'connect_iq_watch_app_download',\n 131072: 'connect_iq_widget_download',\n 262144: 'connect_iq_watch_face_download',\n 524288: 'connect_iq_data_field_download',\n 1048576: 'connect_iq_app_managment',\n 2097152: 'swing_sensor',\n 4194304: 'swing_sensor_remote',\n 8388608: 'incident_detection',\n 16777216: 'audio_prompts',\n 33554432: 'wifi_verification',\n 67108864: 'true_up',\n 134217728: 'find_my_watch',\n 268435456: 'remote_manual_sync',\n 536870912: 'live_track_auto_start',\n 1073741824: 'live_track_messaging',\n 2147483648: 'instant_input'\n },\n weather_report: {\n 0: 'current',\n 1: 'hourly_forecast',\n 2: 'daily_forecast'\n },\n weather_status: {\n 0: 'clear',\n 1: 'partly_cloudy',\n 2: 'mostly_cloudy',\n 3: 'rain',\n 4: 'snow',\n 5: 'windy',\n 6: 'thunderstorms',\n 7: 'wintry_mix',\n 8: 'fog',\n 11: 'hazy',\n 12: 'hail',\n 13: 'scattered_showers',\n 14: 'scattered_thunderstorms',\n 15: 'unknown_precipitation',\n 16: 'light_rain',\n 17: 'heavy_rain',\n 18: 'light_snow',\n 19: 'heavy_snow',\n 20: 'light_rain_snow',\n 21: 'heavy_rain_snow',\n 22: 'cloudy'\n },\n weather_severity: {\n 0: 'unknown',\n 1: 'warning',\n 2: 'watch',\n 3: 'advisory',\n 4: 'statement'\n },\n weather_severe_type: {\n 0: 'unspecified',\n 1: 'tornado',\n 2: 'tsunami',\n 3: 'hurricane',\n 4: 'extreme_wind',\n 5: 'typhoon',\n 6: 'inland_hurricane',\n 7: 'hurricane_force_wind',\n 8: 'waterspout',\n 9: 'severe_thunderstorm',\n 10: 'wreckhouse_winds',\n 11: 'les_suetes_wind',\n 12: 'avalanche',\n 13: 'flash_flood',\n 14: 'tropical_storm',\n 15: 'inland_tropical_storm',\n 16: 'blizzard',\n 17: 'ice_storm',\n 18: 'freezing_rain',\n 19: 'debris_flow',\n 20: 'flash_freeze',\n 21: 'dust_storm',\n 22: 'high_wind',\n 23: 'winter_storm',\n 24: 'heavy_freezing_spray',\n 25: 'extreme_cold',\n 26: 'wind_chill',\n 27: 'cold_wave',\n 28: 'heavy_snow_alert',\n 29: 'lake_effect_blowing_snow',\n 30: 'snow_squall',\n 31: 'lake_effect_snow',\n 32: 'winter_weather',\n 33: 'sleet',\n 34: 'snowfall',\n 35: 'snow_and_blowing_snow',\n 36: 'blowing_snow',\n 37: 'snow_alert',\n 38: 'arctic_outflow',\n 39: 'freezing_drizzle',\n 40: 'storm',\n 41: 'storm_surge',\n 42: 'rainfall',\n 43: 'areal_flood',\n 44: 'coastal_flood',\n 45: 'lakeshore_flood',\n 46: 'excessive_heat',\n 47: 'heat',\n 48: 'weather',\n 49: 'high_heat_and_humidity',\n 50: 'humidex_and_health',\n 51: 'humidex',\n 52: 'gale',\n 53: 'freezing_spray',\n 54: 'special_marine',\n 55: 'squall',\n 56: 'strong_wind',\n 57: 'lake_wind',\n 58: 'marine_weather',\n 59: 'wind',\n 60: 'small_craft_hazardous_seas',\n 61: 'hazardous_seas',\n 62: 'small_craft',\n 63: 'small_craft_winds',\n 64: 'small_craft_rough_bar',\n 65: 'high_water_level',\n 66: 'ashfall',\n 67: 'freezing_fog',\n 68: 'dense_fog',\n 69: 'dense_smoke',\n 70: 'blowing_dust',\n 71: 'hard_freeze',\n 72: 'freeze',\n 73: 'frost',\n 74: 'fire_weather',\n 75: 'flood',\n 76: 'rip_tide',\n 77: 'high_surf',\n 78: 'smog',\n 79: 'air_quality',\n 80: 'brisk_wind',\n 81: 'air_stagnation',\n 82: 'low_water',\n 83: 'hydrological',\n 84: 'special_weather'\n },\n stroke_type: {\n 0: 'no_event',\n 1: 'other',\n 2: 'serve',\n 3: 'forehand',\n 4: 'backhand',\n 5: 'smash'\n },\n body_location: {\n 0: 'left_leg',\n 1: 'left_calf',\n 2: 'left_shin',\n 3: 'left_hamstring',\n 4: 'left_quad',\n 5: 'left_glute',\n 6: 'right_leg',\n 7: 'right_calf',\n 8: 'right_shin',\n 9: 'right_hamstring',\n 10: 'right_quad',\n 11: 'right_glute',\n 12: 'torso_back',\n 13: 'left_lower_back',\n 14: 'left_upper_back',\n 15: 'right_lower_back',\n 16: 'right_upper_back',\n 17: 'torso_front',\n 18: 'left_abdomen',\n 19: 'left_chest',\n 20: 'right_abdomen',\n 21: 'right_chest',\n 22: 'left_arm',\n 23: 'left_shoulder',\n 24: 'left_bicep',\n 25: 'left_tricep',\n 26: 'left_brachioradialis',\n 27: 'left_forearm_extensors',\n 28: 'right_arm',\n 29: 'right_shoulder',\n 30: 'right_bicep',\n 31: 'right_tricep',\n 32: 'right_brachioradialis',\n 33: 'right_forearm_extensors',\n 34: 'neck',\n 35: 'throat',\n 36: 'waist_mid_back',\n 37: 'waist_front',\n 38: 'waist_left',\n 39: 'waist_right'\n },\n segment_lap_status: {\n 0: 'end',\n 1: 'fail'\n },\n segment_leaderboard_type: {\n 0: 'overall',\n 1: 'personal_best',\n 2: 'connections',\n 3: 'group',\n 4: 'challenger',\n 5: 'kom',\n 6: 'qom',\n 7: 'pr',\n 8: 'goal',\n 9: 'rival',\n 10: 'club_leader'\n },\n segment_delete_status: {\n 0: 'do_not_delete',\n 1: 'delete_one',\n 2: 'delete_all'\n },\n segment_selection_type: {\n 0: 'starred',\n 1: 'suggested'\n },\n source_type: {\n 0: 'ant',\n 1: 'antplus',\n 2: 'bluetooth',\n 3: 'bluetooth_low_energy',\n 4: 'wifi',\n 5: 'local'\n },\n display_orientation: {\n 0: 'auto',\n 1: 'portrait',\n 2: 'landscape',\n 3: 'portrait_flipped',\n 4: 'landscape_flipped'\n },\n workout_equipment: {\n 0: 'none',\n 1: 'swim_fins',\n 2: 'swim_kickboard',\n 3: 'swim_paddles',\n 4: 'swim_pull_buoy',\n 5: 'swim_snorkel'\n },\n watchface_mode: {\n 0: 'digital',\n 1: 'analog',\n 2: 'connect_iq',\n 3: 'disabled'\n },\n digital_watchface_layout: {\n 0: 'traditional',\n 1: 'modern',\n 2: 'bold'\n },\n analog_watchface_layout: {\n 0: 'minimal',\n 1: 'traditional',\n 2: 'modern'\n },\n rider_position_type: {\n 0: 'seated',\n 1: 'standing',\n 2: 'transition_to_seated',\n 3: 'transition_to_standing'\n },\n power_phase_type: {\n 0: 'power_phase_start_angle',\n 1: 'power_phase_end_angle',\n 2: 'power_phase_arc_length',\n 3: 'power_phase_center'\n },\n camera_event_type: {\n 0: 'video_start',\n 1: 'video_split',\n 2: 'video_end',\n 3: 'photo_taken',\n 4: 'video_second_stream_start',\n 5: 'video_second_stream_split',\n 6: 'video_second_stream_end',\n 7: 'video_split_start',\n 8: 'video_second_stream_split_start',\n 11: 'video_pause',\n 12: 'video_second_stream_pause',\n 13: 'video_resume',\n 14: 'video_second_stream_resume'\n },\n sensor_type: {\n 0: 'accelerometer',\n 1: 'gyroscope',\n 2: 'compass',\n 3: 'barometer'\n },\n bike_light_network_config_type: {\n 0: 'auto',\n 4: 'individual',\n 5: 'high_visibility',\n 6: 'trail'\n },\n comm_timeout_type: {\n 0: 'wildcard_pairing_timeout',\n 1: 'pairing_timeout',\n 2: 'connection_lost',\n 3: 'connection_timeout'\n },\n camera_orientation_type: {\n 0: 'camera_orientation_0',\n 1: 'camera_orientation_90',\n 2: 'camera_orientation_180',\n 3: 'camera_orientation_270'\n },\n attitude_stage: {\n 0: 'failed',\n 1: 'aligning',\n 2: 'degraded',\n 3: 'valid'\n },\n attitude_validity: {\n 0: 0,\n 1: 'track_angle_heading_valid',\n 2: 'pitch_valid',\n 4: 'roll_valid',\n 8: 'lateral_body_accel_valid',\n 16: 'normal_body_accel_valid',\n 32: 'turn_rate_valid',\n 64: 'hw_fail',\n 128: 'mag_invalid',\n 256: 'no_gps',\n 512: 'gps_invalid',\n 1024: 'solution_coasting',\n 2048: 'true_track_angle',\n 4096: 'magnetic_heading'\n },\n auto_sync_frequency: {\n 0: 'never',\n 1: 'occasionally',\n 2: 'frequent',\n 3: 'once_a_day',\n 4: 'remote'\n },\n exd_layout: {\n 0: 'full_screen',\n 1: 'half_vertical',\n 2: 'half_horizontal',\n 3: 'half_vertical_right_split',\n 4: 'half_horizontal_bottom_split',\n 5: 'full_quarter_split',\n 6: 'half_vertical_left_split',\n 7: 'half_horizontal_top_split'\n },\n exd_display_type: {\n 0: 'numerical',\n 1: 'simple',\n 2: 'graph',\n 3: 'bar',\n 4: 'circle_graph',\n 5: 'virtual_partner',\n 6: 'balance',\n 7: 'string_list',\n 8: 'string',\n 9: 'simple_dynamic_icon',\n 10: 'gauge'\n },\n exd_data_units: {\n 0: 'no_units',\n 1: 'laps',\n 2: 'miles_per_hour',\n 3: 'kilometers_per_hour',\n 4: 'feet_per_hour',\n 5: 'meters_per_hour',\n 6: 'degrees_celsius',\n 7: 'degrees_farenheit',\n 8: 'zone',\n 9: 'gear',\n 10: 'rpm',\n 11: 'bpm',\n 12: 'degrees',\n 13: 'millimeters',\n 14: 'meters',\n 15: 'kilometers',\n 16: 'feet',\n 17: 'yards',\n 18: 'kilofeet',\n 19: 'miles',\n 20: 'time',\n 21: 'enum_turn_type',\n 22: 'percent',\n 23: 'watts',\n 24: 'watts_per_kilogram',\n 25: 'enum_battery_status',\n 26: 'enum_bike_light_beam_angle_mode',\n 27: 'enum_bike_light_battery_status',\n 28: 'enum_bike_light_network_config_type',\n 29: 'lights',\n 30: 'seconds',\n 31: 'minutes',\n 32: 'hours',\n 33: 'calories',\n 34: 'kilojoules',\n 35: 'milliseconds',\n 36: 'second_per_mile',\n 37: 'second_per_kilometer',\n 38: 'centimeter',\n 39: 'enum_course_point',\n 40: 'bradians',\n 41: 'enum_sport',\n 42: 'inches_hg',\n 43: 'mm_hg',\n 44: 'mbars',\n 45: 'hecto_pascals',\n 46: 'feet_per_min',\n 47: 'meters_per_min',\n 48: 'meters_per_sec',\n 49: 'eight_cardinal'\n },\n exd_qualifiers: {\n 0: 'no_qualifier',\n 1: 'instantaneous',\n 2: 'average',\n 3: 'lap',\n 4: 'maximum',\n 5: 'maximum_average',\n 6: 'maximum_lap',\n 7: 'last_lap',\n 8: 'average_lap',\n 9: 'to_destination',\n 10: 'to_go',\n 11: 'to_next',\n 12: 'next_course_point',\n 13: 'total',\n 14: 'three_second_average',\n 15: 'ten_second_average',\n 16: 'thirty_second_average',\n 17: 'percent_maximum',\n 18: 'percent_maximum_average',\n 19: 'lap_percent_maximum',\n 20: 'elapsed',\n 21: 'sunrise',\n 22: 'sunset',\n 23: 'compared_to_virtual_partner',\n 24: 'maximum_24h',\n 25: 'minimum_24h',\n 26: 'minimum',\n 27: 'first',\n 28: 'second',\n 29: 'third',\n 30: 'shifter',\n 31: 'last_sport',\n 32: 'moving',\n 33: 'stopped',\n 34: 'estimated_total',\n 242: 'zone_9',\n 243: 'zone_8',\n 244: 'zone_7',\n 245: 'zone_6',\n 246: 'zone_5',\n 247: 'zone_4',\n 248: 'zone_3',\n 249: 'zone_2',\n 250: 'zone_1'\n },\n exd_descriptors: {\n 0: 'bike_light_battery_status',\n 1: 'beam_angle_status',\n 2: 'batery_level',\n 3: 'light_network_mode',\n 4: 'number_lights_connected',\n 5: 'cadence',\n 6: 'distance',\n 7: 'estimated_time_of_arrival',\n 8: 'heading',\n 9: 'time',\n 10: 'battery_level',\n 11: 'trainer_resistance',\n 12: 'trainer_target_power',\n 13: 'time_seated',\n 14: 'time_standing',\n 15: 'elevation',\n 16: 'grade',\n 17: 'ascent',\n 18: 'descent',\n 19: 'vertical_speed',\n 20: 'di2_battery_level',\n 21: 'front_gear',\n 22: 'rear_gear',\n 23: 'gear_ratio',\n 24: 'heart_rate',\n 25: 'heart_rate_zone',\n 26: 'time_in_heart_rate_zone',\n 27: 'heart_rate_reserve',\n 28: 'calories',\n 29: 'gps_accuracy',\n 30: 'gps_signal_strength',\n 31: 'temperature',\n 32: 'time_of_day',\n 33: 'balance',\n 34: 'pedal_smoothness',\n 35: 'power',\n 36: 'functional_threshold_power',\n 37: 'intensity_factor',\n 38: 'work',\n 39: 'power_ratio',\n 40: 'normalized_power',\n 41: 'training_stress_Score',\n 42: 'time_on_zone',\n 43: 'speed',\n 44: 'laps',\n 45: 'reps',\n 46: 'workout_step',\n 47: 'course_distance',\n 48: 'navigation_distance',\n 49: 'course_estimated_time_of_arrival',\n 50: 'navigation_estimated_time_of_arrival',\n 51: 'course_time',\n 52: 'navigation_time',\n 53: 'course_heading',\n 54: 'navigation_heading',\n 55: 'power_zone',\n 56: 'torque_effectiveness',\n 57: 'timer_time',\n 58: 'power_weight_ratio',\n 59: 'left_platform_center_offset',\n 60: 'right_platform_center_offset',\n 61: 'left_power_phase_start_angle',\n 62: 'right_power_phase_start_angle',\n 63: 'left_power_phase_finish_angle',\n 64: 'right_power_phase_finish_angle',\n 65: 'gears',\n 66: 'pace',\n 67: 'training_effect',\n 68: 'vertical_oscillation',\n 69: 'vertical_ratio',\n 70: 'ground_contact_time',\n 71: 'left_ground_contact_time_balance',\n 72: 'right_ground_contact_time_balance',\n 73: 'stride_length',\n 74: 'running_cadence',\n 75: 'performance_condition',\n 76: 'course_type',\n 77: 'time_in_power_zone',\n 78: 'navigation_turn',\n 79: 'course_location',\n 80: 'navigation_location',\n 81: 'compass',\n 82: 'gear_combo',\n 83: 'muscle_oxygen',\n 84: 'icon',\n 85: 'compass_heading',\n 86: 'gps_heading',\n 87: 'gps_elevation',\n 88: 'anaerobic_training_effect',\n 89: 'course',\n 90: 'off_course',\n 91: 'glide_ratio',\n 92: 'vertical_distance',\n 93: 'vmg',\n 94: 'ambient_pressure',\n 95: 'pressure',\n 96: 'vam'\n },\n auto_activity_detect: {\n 0: 'none',\n 1: 'running',\n 2: 'cycling',\n 4: 'swimming',\n 8: 'walking',\n 16: 'elliptical',\n 32: 'sedentary'\n },\n supported_exd_screen_layouts: {\n 0: 0,\n 1: 'full_screen',\n 2: 'half_vertical',\n 4: 'half_horizontal',\n 8: 'half_vertical_right_split',\n 16: 'half_horizontal_bottom_split',\n 32: 'full_quarter_split',\n 64: 'half_vertical_left_split',\n 128: 'half_horizontal_top_split'\n },\n fit_base_type: {\n 0: 'enum',\n 1: 'sint8',\n 2: 'uint8',\n 7: 'string',\n 10: 'uint8z',\n 13: 'byte',\n 131: 'sint16',\n 132: 'uint16',\n 133: 'sint32',\n 134: 'uint32',\n 136: 'float32',\n 137: 'float64',\n 139: 'uint16z',\n 140: 'uint32z',\n 142: 'sint64',\n 143: 'uint64',\n 144: 'uint64z'\n },\n turn_type: {\n 0: 'arriving_idx',\n 1: 'arriving_left_idx',\n 2: 'arriving_right_idx',\n 3: 'arriving_via_idx',\n 4: 'arriving_via_left_idx',\n 5: 'arriving_via_right_idx',\n 6: 'bear_keep_left_idx',\n 7: 'bear_keep_right_idx',\n 8: 'continue_idx',\n 9: 'exit_left_idx',\n 10: 'exit_right_idx',\n 11: 'ferry_idx',\n 12: 'roundabout_45_idx',\n 13: 'roundabout_90_idx',\n 14: 'roundabout_135_idx',\n 15: 'roundabout_180_idx',\n 16: 'roundabout_225_idx',\n 17: 'roundabout_270_idx',\n 18: 'roundabout_315_idx',\n 19: 'roundabout_360_idx',\n 20: 'roundabout_neg_45_idx',\n 21: 'roundabout_neg_90_idx',\n 22: 'roundabout_neg_135_idx',\n 23: 'roundabout_neg_180_idx',\n 24: 'roundabout_neg_225_idx',\n 25: 'roundabout_neg_270_idx',\n 26: 'roundabout_neg_315_idx',\n 27: 'roundabout_neg_360_idx',\n 28: 'roundabout_generic_idx',\n 29: 'roundabout_neg_generic_idx',\n 30: 'sharp_turn_left_idx',\n 31: 'sharp_turn_right_idx',\n 32: 'turn_left_idx',\n 33: 'turn_right_idx',\n 34: 'uturn_left_idx',\n 35: 'uturn_right_idx',\n 36: 'icon_inv_idx',\n 37: 'icon_idx_cnt'\n },\n bike_light_beam_angle_mode: {\n 0: 'manual',\n 1: 'auto'\n },\n fit_base_unit: {\n 0: 'other',\n 1: 'kilogram',\n 2: 'pound'\n },\n set_type: {\n 0: 'rest',\n 1: 'active'\n },\n exercise_category: {\n 0: 'bench_press',\n 1: 'calf_raise',\n 2: 'cardio',\n 3: 'carry',\n 4: 'chop',\n 5: 'core',\n 6: 'crunch',\n 7: 'curl',\n 8: 'deadlift',\n 9: 'flye',\n 10: 'hip_raise',\n 11: 'hip_stability',\n 12: 'hip_swing',\n 13: 'hyperextension',\n 14: 'lateral_raise',\n 15: 'leg_curl',\n 16: 'leg_raise',\n 17: 'lunge',\n 18: 'olympic_lift',\n 19: 'plank',\n 20: 'plyo',\n 21: 'pull_up',\n 22: 'push_up',\n 23: 'row',\n 24: 'shoulder_press',\n 25: 'shoulder_stability',\n 26: 'shrug',\n 27: 'sit_up',\n 28: 'squat',\n 29: 'total_body',\n 30: 'triceps_extension',\n 31: 'warm_up',\n 32: 'run',\n 65534: 'unknown'\n },\n bench_press_exercise_name: {\n 0: 'alternating_dumbbell_chest_press_on_swiss_ball',\n 1: 'barbell_bench_press',\n 2: 'barbell_board_bench_press',\n 3: 'barbell_floor_press',\n 4: 'close_grip_barbell_bench_press',\n 5: 'decline_dumbbell_bench_press',\n 6: 'dumbbell_bench_press',\n 7: 'dumbbell_floor_press',\n 8: 'incline_barbell_bench_press',\n 9: 'incline_dumbbell_bench_press',\n 10: 'incline_smith_machine_bench_press',\n 11: 'isometric_barbell_bench_press',\n 12: 'kettlebell_chest_press',\n 13: 'neutral_grip_dumbbell_bench_press',\n 14: 'neutral_grip_dumbbell_incline_bench_press',\n 15: 'one_arm_floor_press',\n 16: 'weighted_one_arm_floor_press',\n 17: 'partial_lockout',\n 18: 'reverse_grip_barbell_bench_press',\n 19: 'reverse_grip_incline_bench_press',\n 20: 'single_arm_cable_chest_press',\n 21: 'single_arm_dumbbell_bench_press',\n 22: 'smith_machine_bench_press',\n 23: 'swiss_ball_dumbbell_chest_press',\n 24: 'triple_stop_barbell_bench_press',\n 25: 'wide_grip_barbell_bench_press',\n 26: 'alternating_dumbbell_chest_press'\n },\n calf_raise_exercise_name: {\n 0: '3_way_calf_raise',\n 1: '3_way_weighted_calf_raise',\n 2: '3_way_single_leg_calf_raise',\n 3: '3_way_weighted_single_leg_calf_raise',\n 4: 'donkey_calf_raise',\n 5: 'weighted_donkey_calf_raise',\n 6: 'seated_calf_raise',\n 7: 'weighted_seated_calf_raise',\n 8: 'seated_dumbbell_toe_raise',\n 9: 'single_leg_bent_knee_calf_raise',\n 10: 'weighted_single_leg_bent_knee_calf_raise',\n 11: 'single_leg_decline_push_up',\n 12: 'single_leg_donkey_calf_raise',\n 13: 'weighted_single_leg_donkey_calf_raise',\n 14: 'single_leg_hip_raise_with_knee_hold',\n 15: 'single_leg_standing_calf_raise',\n 16: 'single_leg_standing_dumbbell_calf_raise',\n 17: 'standing_barbell_calf_raise',\n 18: 'standing_calf_raise',\n 19: 'weighted_standing_calf_raise',\n 20: 'standing_dumbbell_calf_raise'\n },\n cardio_exercise_name: {\n 0: 'bob_and_weave_circle',\n 1: 'weighted_bob_and_weave_circle',\n 2: 'cardio_core_crawl',\n 3: 'weighted_cardio_core_crawl',\n 4: 'double_under',\n 5: 'weighted_double_under',\n 6: 'jump_rope',\n 7: 'weighted_jump_rope',\n 8: 'jump_rope_crossover',\n 9: 'weighted_jump_rope_crossover',\n 10: 'jump_rope_jog',\n 11: 'weighted_jump_rope_jog',\n 12: 'jumping_jacks',\n 13: 'weighted_jumping_jacks',\n 14: 'ski_moguls',\n 15: 'weighted_ski_moguls',\n 16: 'split_jacks',\n 17: 'weighted_split_jacks',\n 18: 'squat_jacks',\n 19: 'weighted_squat_jacks',\n 20: 'triple_under',\n 21: 'weighted_triple_under'\n },\n carry_exercise_name: {\n 0: 'bar_holds',\n 1: 'farmers_walk',\n 2: 'farmers_walk_on_toes',\n 3: 'hex_dumbbell_hold',\n 4: 'overhead_carry'\n },\n chop_exercise_name: {\n 0: 'cable_pull_through',\n 1: 'cable_rotational_lift',\n 2: 'cable_woodchop',\n 3: 'cross_chop_to_knee',\n 4: 'weighted_cross_chop_to_knee',\n 5: 'dumbbell_chop',\n 6: 'half_kneeling_rotation',\n 7: 'weighted_half_kneeling_rotation',\n 8: 'half_kneeling_rotational_chop',\n 9: 'half_kneeling_rotational_reverse_chop',\n 10: 'half_kneeling_stability_chop',\n 11: 'half_kneeling_stability_reverse_chop',\n 12: 'kneeling_rotational_chop',\n 13: 'kneeling_rotational_reverse_chop',\n 14: 'kneeling_stability_chop',\n 15: 'kneeling_woodchopper',\n 16: 'medicine_ball_wood_chops',\n 17: 'power_squat_chops',\n 18: 'weighted_power_squat_chops',\n 19: 'standing_rotational_chop',\n 20: 'standing_split_rotational_chop',\n 21: 'standing_split_rotational_reverse_chop',\n 22: 'standing_stability_reverse_chop'\n },\n core_exercise_name: {\n 0: 'abs_jabs',\n 1: 'weighted_abs_jabs',\n 2: 'alternating_plate_reach',\n 3: 'barbell_rollout',\n 4: 'weighted_barbell_rollout',\n 5: 'body_bar_oblique_twist',\n 6: 'cable_core_press',\n 7: 'cable_side_bend',\n 8: 'side_bend',\n 9: 'weighted_side_bend',\n 10: 'crescent_circle',\n 11: 'weighted_crescent_circle',\n 12: 'cycling_russian_twist',\n 13: 'weighted_cycling_russian_twist',\n 14: 'elevated_feet_russian_twist',\n 15: 'weighted_elevated_feet_russian_twist',\n 16: 'half_turkish_get_up',\n 17: 'kettlebell_windmill',\n 18: 'kneeling_ab_wheel',\n 19: 'weighted_kneeling_ab_wheel',\n 20: 'modified_front_lever',\n 21: 'open_knee_tucks',\n 22: 'weighted_open_knee_tucks',\n 23: 'side_abs_leg_lift',\n 24: 'weighted_side_abs_leg_lift',\n 25: 'swiss_ball_jackknife',\n 26: 'weighted_swiss_ball_jackknife',\n 27: 'swiss_ball_pike',\n 28: 'weighted_swiss_ball_pike',\n 29: 'swiss_ball_rollout',\n 30: 'weighted_swiss_ball_rollout',\n 31: 'triangle_hip_press',\n 32: 'weighted_triangle_hip_press',\n 33: 'trx_suspended_jackknife',\n 34: 'weighted_trx_suspended_jackknife',\n 35: 'u_boat',\n 36: 'weighted_u_boat',\n 37: 'windmill_switches',\n 38: 'weighted_windmill_switches',\n 39: 'alternating_slide_out',\n 40: 'weighted_alternating_slide_out',\n 41: 'ghd_back_extensions',\n 42: 'weighted_ghd_back_extensions',\n 43: 'overhead_walk',\n 44: 'inchworm',\n 45: 'weighted_modified_front_lever',\n 46: 'russian_twist',\n 47: 'abdominal_leg_rotations',\n 48: 'arm_and_leg_extension_on_knees',\n 49: 'bicycle',\n 50: 'bicep_curl_with_leg_extension',\n 51: 'cat_cow',\n 52: 'corkscrew',\n 53: 'criss_cross',\n 54: 'criss_cross_with_ball',\n 55: 'double_leg_stretch',\n 56: 'knee_folds',\n 57: 'lower_lift',\n 58: 'neck_pull',\n 59: 'pelvic_clocks',\n 60: 'roll_over',\n 61: 'roll_up',\n 62: 'rolling',\n 63: 'rowing_1',\n 64: 'rowing_2',\n 65: 'scissors',\n 66: 'single_leg_circles',\n 67: 'single_leg_stretch',\n 68: 'snake_twist_1_and_2',\n 69: 'swan',\n 70: 'swimming',\n 71: 'teaser',\n 72: 'the_hundred'\n },\n crunch_exercise_name: {\n 0: 'bicycle_crunch',\n 1: 'cable_crunch',\n 2: 'circular_arm_crunch',\n 3: 'crossed_arms_crunch',\n 4: 'weighted_crossed_arms_crunch',\n 5: 'cross_leg_reverse_crunch',\n 6: 'weighted_cross_leg_reverse_crunch',\n 7: 'crunch_chop',\n 8: 'weighted_crunch_chop',\n 9: 'double_crunch',\n 10: 'weighted_double_crunch',\n 11: 'elbow_to_knee_crunch',\n 12: 'weighted_elbow_to_knee_crunch',\n 13: 'flutter_kicks',\n 14: 'weighted_flutter_kicks',\n 15: 'foam_roller_reverse_crunch_on_bench',\n 16: 'weighted_foam_roller_reverse_crunch_on_bench',\n 17: 'foam_roller_reverse_crunch_with_dumbbell',\n 18: 'foam_roller_reverse_crunch_with_medicine_ball',\n 19: 'frog_press',\n 20: 'hanging_knee_raise_oblique_crunch',\n 21: 'weighted_hanging_knee_raise_oblique_crunch',\n 22: 'hip_crossover',\n 23: 'weighted_hip_crossover',\n 24: 'hollow_rock',\n 25: 'weighted_hollow_rock',\n 26: 'incline_reverse_crunch',\n 27: 'weighted_incline_reverse_crunch',\n 28: 'kneeling_cable_crunch',\n 29: 'kneeling_cross_crunch',\n 30: 'weighted_kneeling_cross_crunch',\n 31: 'kneeling_oblique_cable_crunch',\n 32: 'knees_to_elbow',\n 33: 'leg_extensions',\n 34: 'weighted_leg_extensions',\n 35: 'leg_levers',\n 36: 'mcgill_curl_up',\n 37: 'weighted_mcgill_curl_up',\n 38: 'modified_pilates_roll_up_with_ball',\n 39: 'weighted_modified_pilates_roll_up_with_ball',\n 40: 'pilates_crunch',\n 41: 'weighted_pilates_crunch',\n 42: 'pilates_roll_up_with_ball',\n 43: 'weighted_pilates_roll_up_with_ball',\n 44: 'raised_legs_crunch',\n 45: 'weighted_raised_legs_crunch',\n 46: 'reverse_crunch',\n 47: 'weighted_reverse_crunch',\n 48: 'reverse_crunch_on_a_bench',\n 49: 'weighted_reverse_crunch_on_a_bench',\n 50: 'reverse_curl_and_lift',\n 51: 'weighted_reverse_curl_and_lift',\n 52: 'rotational_lift',\n 53: 'weighted_rotational_lift',\n 54: 'seated_alternating_reverse_crunch',\n 55: 'weighted_seated_alternating_reverse_crunch',\n 56: 'seated_leg_u',\n 57: 'weighted_seated_leg_u',\n 58: 'side_to_side_crunch_and_weave',\n 59: 'weighted_side_to_side_crunch_and_weave',\n 60: 'single_leg_reverse_crunch',\n 61: 'weighted_single_leg_reverse_crunch',\n 62: 'skater_crunch_cross',\n 63: 'weighted_skater_crunch_cross',\n 64: 'standing_cable_crunch',\n 65: 'standing_side_crunch',\n 66: 'step_climb',\n 67: 'weighted_step_climb',\n 68: 'swiss_ball_crunch',\n 69: 'swiss_ball_reverse_crunch',\n 70: 'weighted_swiss_ball_reverse_crunch',\n 71: 'swiss_ball_russian_twist',\n 72: 'weighted_swiss_ball_russian_twist',\n 73: 'swiss_ball_side_crunch',\n 74: 'weighted_swiss_ball_side_crunch',\n 75: 'thoracic_crunches_on_foam_roller',\n 76: 'weighted_thoracic_crunches_on_foam_roller',\n 77: 'triceps_crunch',\n 78: 'weighted_bicycle_crunch',\n 79: 'weighted_crunch',\n 80: 'weighted_swiss_ball_crunch',\n 81: 'toes_to_bar',\n 82: 'weighted_toes_to_bar',\n 83: 'crunch',\n 84: 'straight_leg_crunch_with_ball'\n },\n curl_exercise_name: {\n 0: 'alternating_dumbbell_biceps_curl',\n 1: 'alternating_dumbbell_biceps_curl_on_swiss_ball',\n 2: 'alternating_incline_dumbbell_biceps_curl',\n 3: 'barbell_biceps_curl',\n 4: 'barbell_reverse_wrist_curl',\n 5: 'barbell_wrist_curl',\n 6: 'behind_the_back_barbell_reverse_wrist_curl',\n 7: 'behind_the_back_one_arm_cable_curl',\n 8: 'cable_biceps_curl',\n 9: 'cable_hammer_curl',\n 10: 'cheating_barbell_biceps_curl',\n 11: 'close_grip_ez_bar_biceps_curl',\n 12: 'cross_body_dumbbell_hammer_curl',\n 13: 'dead_hang_biceps_curl',\n 14: 'decline_hammer_curl',\n 15: 'dumbbell_biceps_curl_with_static_hold',\n 16: 'dumbbell_hammer_curl',\n 17: 'dumbbell_reverse_wrist_curl',\n 18: 'dumbbell_wrist_curl',\n 19: 'ez_bar_preacher_curl',\n 20: 'forward_bend_biceps_curl',\n 21: 'hammer_curl_to_press',\n 22: 'incline_dumbbell_biceps_curl',\n 23: 'incline_offset_thumb_dumbbell_curl',\n 24: 'kettlebell_biceps_curl',\n 25: 'lying_concentration_cable_curl',\n 26: 'one_arm_preacher_curl',\n 27: 'plate_pinch_curl',\n 28: 'preacher_curl_with_cable',\n 29: 'reverse_ez_bar_curl',\n 30: 'reverse_grip_wrist_curl',\n 31: 'reverse_grip_barbell_biceps_curl',\n 32: 'seated_alternating_dumbbell_biceps_curl',\n 33: 'seated_dumbbell_biceps_curl',\n 34: 'seated_reverse_dumbbell_curl',\n 35: 'split_stance_offset_pinky_dumbbell_curl',\n 36: 'standing_alternating_dumbbell_curls',\n 37: 'standing_dumbbell_biceps_curl',\n 38: 'standing_ez_bar_biceps_curl',\n 39: 'static_curl',\n 40: 'swiss_ball_dumbbell_overhead_triceps_extension',\n 41: 'swiss_ball_ez_bar_preacher_curl',\n 42: 'twisting_standing_dumbbell_biceps_curl',\n 43: 'wide_grip_ez_bar_biceps_curl'\n },\n\n deadlift_exercise_name: {\n 0: 'barbell_deadlift',\n 1: 'barbell_straight_leg_deadlift',\n 2: 'dumbbell_deadlift',\n 3: 'dumbbell_single_leg_deadlift_to_row',\n 4: 'dumbbell_straight_leg_deadlift',\n 5: 'kettlebell_floor_to_shelf',\n 6: 'one_arm_one_leg_deadlift',\n 7: 'rack_pull',\n 8: 'rotational_dumbbell_straight_leg_deadlift',\n 9: 'single_arm_deadlift',\n 10: 'single_leg_barbell_deadlift',\n 11: 'single_leg_barbell_straight_leg_deadlift',\n 12: 'single_leg_deadlift_with_barbell',\n 13: 'single_leg_rdl_circuit',\n 14: 'single_leg_romanian_deadlift_with_dumbbell',\n 15: 'sumo_deadlift',\n 16: 'sumo_deadlift_high_pull',\n 17: 'trap_bar_deadlift',\n 18: 'wide_grip_barbell_deadlift'\n },\n flye_exercise_name: {\n 0: 'cable_crossover',\n 1: 'decline_dumbbell_flye',\n 2: 'dumbbell_flye',\n 3: 'incline_dumbbell_flye',\n 4: 'kettlebell_flye',\n 5: 'kneeling_rear_flye',\n 6: 'single_arm_standing_cable_reverse_flye',\n 7: 'swiss_ball_dumbbell_flye',\n 8: 'arm_rotations',\n 9: 'hug_a_tree'\n },\n hip_raise_exercise_name: {\n 0: 'barbell_hip_thrust_on_floor',\n 1: 'barbell_hip_thrust_with_bench',\n 2: 'bent_knee_swiss_ball_reverse_hip_raise',\n 3: 'weighted_bent_knee_swiss_ball_reverse_hip_raise',\n 4: 'bridge_with_leg_extension',\n 5: 'weighted_bridge_with_leg_extension',\n 6: 'clam_bridge',\n 7: 'front_kick_tabletop',\n 8: 'weighted_front_kick_tabletop',\n 9: 'hip_extension_and_cross',\n 10: 'weighted_hip_extension_and_cross',\n 11: 'hip_raise',\n 12: 'weighted_hip_raise',\n 13: 'hip_raise_with_feet_on_swiss_ball',\n 14: 'weighted_hip_raise_with_feet_on_swiss_ball',\n 15: 'hip_raise_with_head_on_bosu_ball',\n 16: 'weighted_hip_raise_with_head_on_bosu_ball',\n 17: 'hip_raise_with_head_on_swiss_ball',\n 18: 'weighted_hip_raise_with_head_on_swiss_ball',\n 19: 'hip_raise_with_knee_squeeze',\n 20: 'weighted_hip_raise_with_knee_squeeze',\n 21: 'incline_rear_leg_extension',\n 22: 'weighted_incline_rear_leg_extension',\n 23: 'kettlebell_swing',\n 24: 'marching_hip_raise',\n 25: 'weighted_marching_hip_raise',\n 26: 'marching_hip_raise_with_feet_on_a_swiss_ball',\n 27: 'weighted_marching_hip_raise_with_feet_on_a_swiss_ball',\n 28: 'reverse_hip_raise',\n 29: 'weighted_reverse_hip_raise',\n 30: 'single_leg_hip_raise',\n 31: 'weighted_single_leg_hip_raise',\n 32: 'single_leg_hip_raise_with_foot_on_bench',\n 33: 'weighted_single_leg_hip_raise_with_foot_on_bench',\n 34: 'single_leg_hip_raise_with_foot_on_bosu_ball',\n 35: 'weighted_single_leg_hip_raise_with_foot_on_bosu_ball',\n 36: 'single_leg_hip_raise_with_foot_on_foam_roller',\n 37: 'weighted_single_leg_hip_raise_with_foot_on_foam_roller',\n 38: 'single_leg_hip_raise_with_foot_on_medicine_ball',\n 39: 'weighted_single_leg_hip_raise_with_foot_on_medicine_ball',\n 40: 'single_leg_hip_raise_with_head_on_bosu_ball',\n 41: 'weighted_single_leg_hip_raise_with_head_on_bosu_ball',\n 42: 'weighted_clam_bridge',\n 43: 'single_leg_swiss_ball_hip_raise_and_leg_curl',\n 44: 'clams',\n 45: 'inner_thigh_circles',\n 46: 'inner_thigh_side_lift',\n 47: 'leg_circles',\n 48: 'leg_lift',\n 49: 'leg_lift_in_external_rotation'\n },\n hip_stability_exercise_name: {\n 0: 'band_side_lying_leg_raise',\n 1: 'dead_bug',\n 2: 'weighted_dead_bug',\n 3: 'external_hip_raise',\n 4: 'weighted_external_hip_raise',\n 5: 'fire_hydrant_kicks',\n 6: 'weighted_fire_hydrant_kicks',\n 7: 'hip_circles',\n 8: 'weighted_hip_circles',\n 9: 'inner_thigh_lift',\n 10: 'weighted_inner_thigh_lift',\n 11: 'lateral_walks_with_band_at_ankles',\n 12: 'pretzel_side_kick',\n 13: 'weighted_pretzel_side_kick',\n 14: 'prone_hip_internal_rotation',\n 15: 'weighted_prone_hip_internal_rotation',\n 16: 'quadruped',\n 17: 'quadruped_hip_extension',\n 18: 'weighted_quadruped_hip_extension',\n 19: 'quadruped_with_leg_lift',\n 20: 'weighted_quadruped_with_leg_lift',\n 21: 'side_lying_leg_raise',\n 22: 'weighted_side_lying_leg_raise',\n 23: 'sliding_hip_adduction',\n 24: 'weighted_sliding_hip_adduction',\n 25: 'standing_adduction',\n 26: 'weighted_standing_adduction',\n 27: 'standing_cable_hip_abduction',\n 28: 'standing_hip_abduction',\n 29: 'weighted_standing_hip_abduction',\n 30: 'standing_rear_leg_raise',\n 31: 'weighted_standing_rear_leg_raise',\n 32: 'supine_hip_internal_rotation',\n 33: 'weighted_supine_hip_internal_rotation'\n },\n hip_swing_excercise_name: {\n 0: 'single_arm_kettlebell_swing',\n 1: 'single_arm_dumbbell_swing',\n 2: 'step_out_swing'\n },\n hyperextension_exercise_name: {\n 0: 'back_extension_with_opposite_arm_and_leg_reach',\n 1: 'weighted_back_extension_with_opposite_arm_and_leg_reach',\n 2: 'base_rotations',\n 3: 'weighted_base_rotations',\n 4: 'bent_knee_reverse_hyperextension',\n 5: 'weighted_bent_knee_reverse_hyperextension',\n 6: 'hollow_hold_and_roll',\n 7: 'weighted_hollow_hold_and_roll',\n 8: 'kicks',\n 9: 'weighted_kicks',\n 10: 'knee_raises',\n 11: 'weighted_knee_raises',\n 12: 'kneeling_superman',\n 13: 'weighted_kneeling_superman',\n 14: 'lat_pull_down_with_row',\n 15: 'medicine_ball_deadlift_to_reach',\n 16: 'one_arm_one_leg_row',\n 17: 'one_arm_row_with_band',\n 18: 'overhead_lunge_with_medicine_ball',\n 19: 'plank_knee_tucks',\n 20: 'weighted_plank_knee_tucks',\n 21: 'side_step',\n 22: 'weighted_side_step',\n 23: 'single_leg_back_extension',\n 24: 'weighted_single_leg_back_extension',\n 25: 'spine_extension',\n 26: 'weighted_spine_extension',\n 27: 'static_back_extension',\n 28: 'weighted_static_back_extension',\n 29: 'superman_from_floor',\n 30: 'weighted_superman_from_floor',\n 31: 'swiss_ball_back_extension',\n 32: 'weighted_swiss_ball_back_extension',\n 33: 'swiss_ball_hyperextension',\n 34: 'weighted_swiss_ball_hyperextension',\n 35: 'swiss_ball_opposite_arm_and_leg_lift',\n 36: 'weighted_swiss_ball_opposite_arm_and_leg_lift',\n 37: 'superman_on_swiss_ball',\n 38: 'cobra',\n 39: 'supine_floor_barre'\n },\n lateral_raise_exercise_name: {\n 0: '45_degree_cable_external_rotation',\n 1: 'alternating_lateral_raise_with_static_hold',\n 2: 'bar_muscle_up',\n 3: 'bent_over_lateral_raise',\n 4: 'cable_diagonal_raise',\n 5: 'cable_front_raise',\n 6: 'calorie_row',\n 7: 'combo_shoulder_raise',\n 8: 'dumbbell_diagonal_raise',\n 9: 'dumbbell_v_raise',\n 10: 'front_raise',\n 11: 'leaning_dumbbell_lateral_raise',\n 12: 'lying_dumbbell_raise',\n 13: 'muscle_up',\n 14: 'one_arm_cable_lateral_raise',\n 15: 'overhand_grip_rear_lateral_raise',\n 16: 'plate_raises',\n 17: 'ring_dip',\n 18: 'weighted_ring_dip',\n 19: 'ring_muscle_up',\n 20: 'weighted_ring_muscle_up',\n 21: 'rope_climb',\n 22: 'weighted_rope_climb',\n 23: 'scaption',\n 24: 'seated_lateral_raise',\n 25: 'seated_rear_lateral_raise',\n 26: 'side_lying_lateral_raise',\n 27: 'standing_lift',\n 28: 'suspended_row',\n 29: 'underhand_grip_rear_lateral_raise',\n 30: 'wall_slide',\n 31: 'weighted_wall_slide',\n 32: 'arm_circles',\n 33: 'shaving_the_head'\n },\n leg_curl_exercise_name: {\n 0: 'leg_curl',\n 1: 'weighted_leg_curl',\n 2: 'good_morning',\n 3: 'seated_barbell_good_morning',\n 4: 'single_leg_barbell_good_morning',\n 5: 'single_leg_sliding_leg_curl',\n 6: 'sliding_leg_curl',\n 7: 'split_barbell_good_morning',\n 8: 'split_stance_extension',\n 9: 'staggered_stance_good_morning',\n 10: 'swiss_ball_hip_raise_and_leg_curl',\n 11: 'zercher_good_morning'\n },\n leg_raise_exercise_name: {\n 0: 'hanging_knee_raise',\n 1: 'hanging_leg_raise',\n 2: 'weighted_hanging_leg_raise',\n 3: 'hanging_single_leg_raise',\n 4: 'weighted_hanging_single_leg_raise',\n 5: 'kettlebell_leg_raises',\n 6: 'leg_lowering_drill',\n 7: 'weighted_leg_lowering_drill',\n 8: 'lying_straight_leg_raise',\n 9: 'weighted_lying_straight_leg_raise',\n 10: 'medicine_ball_leg_drops',\n 11: 'quadruped_leg_raise',\n 12: 'weighted_quadruped_leg_raise',\n 13: 'reverse_leg_raise',\n 14: 'weighted_reverse_leg_raise',\n 15: 'reverse_leg_raise_on_swiss_ball',\n 16: 'weighted_reverse_leg_raise_on_swiss_ball',\n 17: 'single_leg_lowering_drill',\n 18: 'weighted_single_leg_lowering_drill',\n 19: 'weighted_hanging_knee_raise',\n 20: 'lateral_stepover',\n 21: 'weighted_lateral_stepover'\n },\n lunge_exercise_name: {\n 0: 'overhead_lunge',\n 1: 'lunge_matrix',\n 2: 'weighted_lunge_matrix',\n 3: 'alternating_barbell_forward_lunge',\n 4: 'alternating_dumbbell_lunge_with_reach',\n 5: 'back_foot_elevated_dumbbell_split_squat',\n 6: 'barbell_box_lunge',\n 7: 'barbell_bulgarian_split_squat',\n 8: 'barbell_crossover_lunge',\n 9: 'barbell_front_split_squat',\n 10: 'barbell_lunge',\n 11: 'barbell_reverse_lunge',\n 12: 'barbell_side_lunge',\n 13: 'barbell_split_squat',\n 14: 'core_control_rear_lunge',\n 15: 'diagonal_lunge',\n 16: 'drop_lunge',\n 17: 'dumbbell_box_lunge',\n 18: 'dumbbell_bulgarian_split_squat',\n 19: 'dumbbell_crossover_lunge',\n 20: 'dumbbell_diagonal_lunge',\n 21: 'dumbbell_lunge',\n 22: 'dumbbell_lunge_and_rotation',\n 23: 'dumbbell_overhead_bulgarian_split_squat',\n 24: 'dumbbell_reverse_lunge_to_high_knee_and_press',\n 25: 'dumbbell_side_lunge',\n 26: 'elevated_front_foot_barbell_split_squat',\n 27: 'front_foot_elevated_dumbbell_split_squat',\n 28: 'gunslinger_lunge',\n 29: 'lawnmower_lunge',\n 30: 'low_lunge_with_isometric_adduction',\n 31: 'low_side_to_side_lunge',\n 32: 'lunge',\n 33: 'weighted_lunge',\n 34: 'lunge_with_arm_reach',\n 35: 'lunge_with_diagonal_reach',\n 36: 'lunge_with_side_bend',\n 37: 'offset_dumbbell_lunge',\n 38: 'offset_dumbbell_reverse_lunge',\n 39: 'overhead_bulgarian_split_squat',\n 40: 'overhead_dumbbell_reverse_lunge',\n 41: 'overhead_dumbbell_split_squat',\n 42: 'overhead_lunge_with_rotation',\n 43: 'reverse_barbell_box_lunge',\n 44: 'reverse_box_lunge',\n 45: 'reverse_dumbbell_box_lunge',\n 46: 'reverse_dumbbell_crossover_lunge',\n 47: 'reverse_dumbbell_diagonal_lunge',\n 48: 'reverse_lunge_with_reach_back',\n 49: 'weighted_reverse_lunge_with_reach_back',\n 50: 'reverse_lunge_with_twist_and_overhead_reach',\n 51: 'weighted_reverse_lunge_with_twist_and_overhead_reach',\n 52: 'reverse_sliding_box_lunge',\n 53: 'weighted_reverse_sliding_box_lunge',\n 54: 'reverse_sliding_lunge',\n 55: 'weighted_reverse_sliding_lunge',\n 56: 'runners_lunge_to_balance',\n 57: 'weighted_runners_lunge_to_balance',\n 58: 'shifting_side_lunge',\n 59: 'side_and_crossover_lunge',\n 60: 'weighted_side_and_crossover_lunge',\n 61: 'side_lunge',\n 62: 'weighted_side_lunge',\n 63: 'side_lunge_and_press',\n 64: 'side_lunge_jump_off',\n 65: 'side_lunge_sweep',\n 66: 'weighted_side_lunge_sweep',\n 67: 'side_lunge_to_crossover_tap',\n 68: 'weighted_side_lunge_to_crossover_tap',\n 69: 'side_to_side_lunge_chops',\n 70: 'weighted_side_to_side_lunge_chops',\n 71: 'siff_jump_lunge',\n 72: 'weighted_siff_jump_lunge',\n 73: 'single_arm_reverse_lunge_and_press',\n 74: 'sliding_lateral_lunge',\n 75: 'weighted_sliding_lateral_lunge',\n 76: 'walking_barbell_lunge',\n 77: 'walking_dumbbell_lunge',\n 78: 'walking_lunge',\n 79: 'weighted_walking_lunge',\n 80: 'wide_grip_overhead_barbell_split_squat'\n },\n olympic_lift_exercise_name: {\n 0: 'barbell_hang_power_clean',\n 1: 'barbell_hang_squat_clean',\n 2: 'barbell_power_clean',\n 3: 'barbell_power_snatch',\n 4: 'barbell_squat_clean',\n 5: 'clean_and_jerk',\n 6: 'barbell_hang_power_snatch',\n 7: 'barbell_hang_pull',\n 8: 'barbell_high_pull',\n 9: 'barbell_snatch',\n 10: 'barbell_split_jerk',\n 11: 'clean',\n 12: 'dumbbell_clean',\n 13: 'dumbbell_hang_pull',\n 14: 'one_hand_dumbbell_split_snatch',\n 15: 'push_jerk',\n 16: 'single_arm_dumbbell_snatch',\n 17: 'single_arm_hang_snatch',\n 18: 'single_arm_kettlebell_snatch',\n 19: 'split_jerk',\n 20: 'squat_clean_and_jerk'\n },\n plank_exercise_name: {\n 0: '45_degree_plank',\n 1: 'weighted_45_degree_plank',\n 2: '90_degree_static_hold',\n 3: 'weighted_90_degree_static_hold',\n 4: 'bear_crawl',\n 5: 'weighted_bear_crawl',\n 6: 'cross_body_mountain_climber',\n 7: 'weighted_cross_body_mountain_climber',\n 8: 'elbow_plank_pike_jacks',\n 9: 'weighted_elbow_plank_pike_jacks',\n 10: 'elevated_feet_plank',\n 11: 'weighted_elevated_feet_plank',\n 12: 'elevator_abs',\n 13: 'weighted_elevator_abs',\n 14: 'extended_plank',\n 15: 'weighted_extended_plank',\n 16: 'full_plank_passe_twist',\n 17: 'weighted_full_plank_passe_twist',\n 18: 'inching_elbow_plank',\n 19: 'weighted_inching_elbow_plank',\n 20: 'inchworm_to_side_plank',\n 21: 'weighted_inchworm_to_side_plank',\n 22: 'kneeling_plank',\n 23: 'weighted_kneeling_plank',\n 24: 'kneeling_side_plank_with_leg_lift',\n 25: 'weighted_kneeling_side_plank_with_leg_lift',\n 26: 'lateral_roll',\n 27: 'weighted_lateral_roll',\n 28: 'lying_reverse_plank',\n 29: 'weighted_lying_reverse_plank',\n 30: 'medicine_ball_mountain_climber',\n 31: 'weighted_medicine_ball_mountain_climber',\n 32: 'modified_mountain_climber_and_extension',\n 33: 'weighted_modified_mountain_climber_and_extension',\n 34: 'mountain_climber',\n 35: 'weighted_mountain_climber',\n 36: 'mountain_climber_on_sliding_discs',\n 37: 'weighted_mountain_climber_on_sliding_discs',\n 38: 'mountain_climber_with_feet_on_bosu_ball',\n 39: 'weighted_mountain_climber_with_feet_on_bosu_ball',\n 40: 'mountain_climber_with_hands_on_bench',\n 41: 'mountain_climber_with_hands_on_swiss_ball',\n 42: 'weighted_mountain_climber_with_hands_on_swiss_ball',\n 43: 'plank',\n 44: 'plank_jacks_with_feet_on_sliding_discs',\n 45: 'weighted_plank_jacks_with_feet_on_sliding_discs',\n 46: 'plank_knee_twist',\n 47: 'weighted_plank_knee_twist',\n 48: 'plank_pike_jumps',\n 49: 'weighted_plank_pike_jumps',\n 50: 'plank_pikes',\n 51: 'weighted_plank_pikes',\n 52: 'plank_to_stand_up',\n 53: 'weighted_plank_to_stand_up',\n 54: 'plank_with_arm_raise',\n 55: 'weighted_plank_with_arm_raise',\n 56: 'plank_with_knee_to_elbow',\n 57: 'weighted_plank_with_knee_to_elbow',\n 58: 'plank_with_oblique_crunch',\n 59: 'weighted_plank_with_oblique_crunch',\n 60: 'plyometric_side_plank',\n 61: 'weighted_plyometric_side_plank',\n 62: 'rolling_side_plank',\n 63: 'weighted_rolling_side_plank',\n 64: 'side_kick_plank',\n 65: 'weighted_side_kick_plank',\n 66: 'side_plank',\n 67: 'weighted_side_plank',\n 68: 'side_plank_and_row',\n 69: 'weighted_side_plank_and_row',\n 70: 'side_plank_lift',\n 71: 'weighted_side_plank_lift',\n 72: 'side_plank_with_elbow_on_bosu_ball',\n 73: 'weighted_side_plank_with_elbow_on_bosu_ball',\n 74: 'side_plank_with_feet_on_bench',\n 75: 'weighted_side_plank_with_feet_on_bench',\n 76: 'side_plank_with_knee_circle',\n 77: 'weighted_side_plank_with_knee_circle',\n 78: 'side_plank_with_knee_tuck',\n 79: 'weighted_side_plank_with_knee_tuck',\n 80: 'side_plank_with_leg_lift',\n 81: 'weighted_side_plank_with_leg_lift',\n 82: 'side_plank_with_reach_under',\n 83: 'weighted_side_plank_with_reach_under',\n 84: 'single_leg_elevated_feet_plank',\n 85: 'weighted_single_leg_elevated_feet_plank',\n 86: 'single_leg_flex_and_extend',\n 87: 'weighted_single_leg_flex_and_extend',\n 88: 'single_leg_side_plank',\n 89: 'weighted_single_leg_side_plank',\n 90: 'spiderman_plank',\n 91: 'weighted_spiderman_plank',\n 92: 'straight_arm_plank',\n 93: 'weighted_straight_arm_plank',\n 94: 'straight_arm_plank_with_shoulder_touch',\n 95: 'weighted_straight_arm_plank_with_shoulder_touch',\n 96: 'swiss_ball_plank',\n 97: 'weighted_swiss_ball_plank',\n 98: 'swiss_ball_plank_leg_lift',\n 99: 'weighted_swiss_ball_plank_leg_lift',\n 100: 'swiss_ball_plank_leg_lift_and_hold',\n 101: 'swiss_ball_plank_with_feet_on_bench',\n 102: 'weighted_swiss_ball_plank_with_feet_on_bench',\n 103: 'swiss_ball_prone_jackknife',\n 104: 'weighted_swiss_ball_prone_jackknife',\n 105: 'swiss_ball_side_plank',\n 106: 'weighted_swiss_ball_side_plank',\n 107: 'three_way_plank',\n 108: 'weighted_three_way_plank',\n 109: 'towel_plank_and_knee_in',\n 110: 'weighted_towel_plank_and_knee_in',\n 111: 't_stabilization',\n 112: 'weighted_t_stabilization',\n 113: 'turkish_get_up_to_side_plank',\n 114: 'weighted_turkish_get_up_to_side_plank',\n 115: 'two_point_plank',\n 116: 'weighted_two_point_plank',\n 117: 'weighted_plank',\n 118: 'wide_stance_plank_with_diagonal_arm_lift',\n 119: 'weighted_wide_stance_plank_with_diagonal_arm_lift',\n 120: 'wide_stance_plank_with_diagonal_leg_lift',\n 121: 'weighted_wide_stance_plank_with_diagonal_leg_lift',\n 122: 'wide_stance_plank_with_leg_lift',\n 123: 'weighted_wide_stance_plank_with_leg_lift',\n 124: 'wide_stance_plank_with_opposite_arm_and_leg_lift',\n 125: 'weighted_mountain_climber_with_hands_on_bench',\n 126: 'weighted_swiss_ball_plank_leg_lift_and_hold',\n 127: 'weighted_wide_stance_plank_with_opposite_arm_and_leg_lift',\n 128: 'plank_with_feet_on_swiss_ball',\n 129: 'side_plank_to_plank_with_reach_under',\n 130: 'bridge_with_glute_lower_lift',\n 131: 'bridge_one_leg_bridge',\n 132: 'plank_with_arm_variations',\n 133: 'plank_with_leg_lift',\n 134: 'reverse_plank_with_leg_pull'\n },\n plyo_exercise_name: {\n 0: 'alternating_jump_lunge',\n 1: 'weighted_alternating_jump_lunge',\n 2: 'barbell_jump_squat',\n 3: 'body_weight_jump_squat',\n 4: 'weighted_jump_squat',\n 5: 'cross_knee_strike',\n 6: 'weighted_cross_knee_strike',\n 7: 'depth_jump',\n 8: 'weighted_depth_jump',\n 9: 'dumbbell_jump_squat',\n 10: 'dumbbell_split_jump',\n 11: 'front_knee_strike',\n 12: 'weighted_front_knee_strike',\n 13: 'high_box_jump',\n 14: 'weighted_high_box_jump',\n 15: 'isometric_explosive_body_weight_jump_squat',\n 16: 'weighted_isometric_explosive_jump_squat',\n 17: 'lateral_leap_and_hop',\n 18: 'weighted_lateral_leap_and_hop',\n 19: 'lateral_plyo_squats',\n 20: 'weighted_lateral_plyo_squats',\n 21: 'lateral_slide',\n 22: 'weighted_lateral_slide',\n 23: 'medicine_ball_overhead_throws',\n 24: 'medicine_ball_side_throw',\n 25: 'medicine_ball_slam',\n 26: 'side_to_side_medicine_ball_throws',\n 27: 'side_to_side_shuffle_jump',\n 28: 'weighted_side_to_side_shuffle_jump',\n 29: 'squat_jump_onto_box',\n 30: 'weighted_squat_jump_onto_box',\n 31: 'squat_jumps_in_and_out',\n 32: 'weighted_squat_jumps_in_and_out'\n },\n pull_up_exercise_name: {\n 0: 'banded_pull_ups',\n 1: '30_degree_lat_pulldown',\n 2: 'band_assisted_chin_up',\n 3: 'close_grip_chin_up',\n 4: 'weighted_close_grip_chin_up',\n 5: 'close_grip_lat_pulldown',\n 6: 'crossover_chin_up',\n 7: 'weighted_crossover_chin_up',\n 8: 'ez_bar_pullover',\n 9: 'hanging_hurdle',\n 10: 'weighted_hanging_hurdle',\n 11: 'kneeling_lat_pulldown',\n 12: 'kneeling_underhand_grip_lat_pulldown',\n 13: 'lat_pulldown',\n 14: 'mixed_grip_chin_up',\n 15: 'weighted_mixed_grip_chin_up',\n 16: 'mixed_grip_pull_up',\n 17: 'weighted_mixed_grip_pull_up',\n 18: 'reverse_grip_pulldown',\n 19: 'standing_cable_pullover',\n 20: 'straight_arm_pulldown',\n 21: 'swiss_ball_ez_bar_pullover',\n 22: 'towel_pull_up',\n 23: 'weighted_towel_pull_up',\n 24: 'weighted_pull_up',\n 25: 'wide_grip_lat_pulldown',\n 26: 'wide_grip_pull_up',\n 27: 'weighted_wide_grip_pull_up',\n 28: 'burpee_pull_up',\n 29: 'weighted_burpee_pull_up',\n 30: 'jumping_pull_ups',\n 31: 'weighted_jumping_pull_ups',\n 32: 'kipping_pull_up',\n 33: 'weighted_kipping_pull_up',\n 34: 'l_pull_up',\n 35: 'weighted_l_pull_up',\n 36: 'suspended_chin_up',\n 37: 'weighted_suspended_chin_up',\n 38: 'pull_up'\n },\n push_up_exercise_name: {\n 0: 'chest_press_with_band',\n 1: 'alternating_staggered_push_up',\n 2: 'weighted_alternating_staggered_push_up',\n 3: 'alternating_hands_medicine_ball_push_up',\n 4: 'weighted_alternating_hands_medicine_ball_push_up',\n 5: 'bosu_ball_push_up',\n 6: 'weighted_bosu_ball_push_up',\n 7: 'clapping_push_up',\n 8: 'weighted_clapping_push_up',\n 9: 'close_grip_medicine_ball_push_up',\n 10: 'weighted_close_grip_medicine_ball_push_up',\n 11: 'close_hands_push_up',\n 12: 'weighted_close_hands_push_up',\n 13: 'decline_push_up',\n 14: 'weighted_decline_push_up',\n 15: 'diamond_push_up',\n 16: 'weighted_diamond_push_up',\n 17: 'explosive_crossover_push_up',\n 18: 'weighted_explosive_crossover_push_up',\n 19: 'explosive_push_up',\n 20: 'weighted_explosive_push_up',\n 21: 'feet_elevated_side_to_side_push_up',\n 22: 'weighted_feet_elevated_side_to_side_push_up',\n 23: 'hand_release_push_up',\n 24: 'weighted_hand_release_push_up',\n 25: 'handstand_push_up',\n 26: 'weighted_handstand_push_up',\n 27: 'incline_push_up',\n 28: 'weighted_incline_push_up',\n 29: 'isometric_explosive_push_up',\n 30: 'weighted_isometric_explosive_push_up',\n 31: 'judo_push_up',\n 32: 'weighted_judo_push_up',\n 33: 'kneeling_push_up',\n 34: 'weighted_kneeling_push_up',\n 35: 'medicine_ball_chest_pass',\n 36: 'medicine_ball_push_up',\n 37: 'weighted_medicine_ball_push_up',\n 38: 'one_arm_push_up',\n 39: 'weighted_one_arm_push_up',\n 40: 'weighted_push_up',\n 41: 'push_up_and_row',\n 42: 'weighted_push_up_and_row',\n 43: 'push_up_plus',\n 44: 'weighted_push_up_plus',\n 45: 'push_up_with_feet_on_swiss_ball',\n 46: 'weighted_push_up_with_feet_on_swiss_ball',\n 47: 'push_up_with_one_hand_on_medicine_ball',\n 48: 'weighted_push_up_with_one_hand_on_medicine_ball',\n 49: 'shoulder_push_up',\n 50: 'weighted_shoulder_push_up',\n 51: 'single_arm_medicine_ball_push_up',\n 52: 'weighted_single_arm_medicine_ball_push_up',\n 53: 'spiderman_push_up',\n 54: 'weighted_spiderman_push_up',\n 55: 'stacked_feet_push_up',\n 56: 'weighted_stacked_feet_push_up',\n 57: 'staggered_hands_push_up',\n 58: 'weighted_staggered_hands_push_up',\n 59: 'suspended_push_up',\n 60: 'weighted_suspended_push_up',\n 61: 'swiss_ball_push_up',\n 62: 'weighted_swiss_ball_push_up',\n 63: 'swiss_ball_push_up_plus',\n 64: 'weighted_swiss_ball_push_up_plus',\n 65: 't_push_up',\n 66: 'weighted_t_push_up',\n 67: 'triple_stop_push_up',\n 68: 'weighted_triple_stop_push_up',\n 69: 'wide_hands_push_up',\n 70: 'weighted_wide_hands_push_up',\n 71: 'parallette_handstand_push_up',\n 72: 'weighted_parallette_handstand_push_up',\n 73: 'ring_handstand_push_up',\n 74: 'weighted_ring_handstand_push_up',\n 75: 'ring_push_up',\n 76: 'weighted_ring_push_up',\n 77: 'push_up',\n 78: 'pilates_pushup'\n },\n row_exercise_name: {\n 0: 'barbell_straight_leg_deadlift_to_row',\n 1: 'cable_row_standing',\n 2: 'dumbbell_row',\n 3: 'elevated_feet_inverted_row',\n 4: 'weighted_elevated_feet_inverted_row',\n 5: 'face_pull',\n 6: 'face_pull_with_external_rotation',\n 7: 'inverted_row_with_feet_on_swiss_ball',\n 8: 'weighted_inverted_row_with_feet_on_swiss_ball',\n 9: 'kettlebell_row',\n 10: 'modified_inverted_row',\n 11: 'weighted_modified_inverted_row',\n 12: 'neutral_grip_alternating_dumbbell_row',\n 13: 'one_arm_bent_over_row',\n 14: 'one_legged_dumbbell_row',\n 15: 'renegade_row',\n 16: 'reverse_grip_barbell_row',\n 17: 'rope_handle_cable_row',\n 18: 'seated_cable_row',\n 19: 'seated_dumbbell_row',\n 20: 'single_arm_cable_row',\n 21: 'single_arm_cable_row_and_rotation',\n 22: 'single_arm_inverted_row',\n 23: 'weighted_single_arm_inverted_row',\n 24: 'single_arm_neutral_grip_dumbbell_row',\n 25: 'single_arm_neutral_grip_dumbbell_row_and_rotation',\n 26: 'suspended_inverted_row',\n 27: 'weighted_suspended_inverted_row',\n 28: 't_bar_row',\n 29: 'towel_grip_inverted_row',\n 30: 'weighted_towel_grip_inverted_row',\n 31: 'underhand_grip_cable_row',\n 32: 'v_grip_cable_row',\n 33: 'wide_grip_seated_cable_row'\n },\n shoulder_press_exercise_name: {\n 0: 'alternating_dumbbell_shoulder_press',\n 1: 'arnold_press',\n 2: 'barbell_front_squat_to_push_press',\n 3: 'barbell_push_press',\n 4: 'barbell_shoulder_press',\n 5: 'dead_curl_press',\n 6: 'dumbbell_alternating_shoulder_press_and_twist',\n 7: 'dumbbell_hammer_curl_to_lunge_to_press',\n 8: 'dumbbell_push_press',\n 9: 'floor_inverted_shoulder_press',\n 10: 'weighted_floor_inverted_shoulder_press',\n 11: 'inverted_shoulder_press',\n 12: 'weighted_inverted_shoulder_press',\n 13: 'one_arm_push_press',\n 14: 'overhead_barbell_press',\n 15: 'overhead_dumbbell_press',\n 16: 'seated_barbell_shoulder_press',\n 17: 'seated_dumbbell_shoulder_press',\n 18: 'single_arm_dumbbell_shoulder_press',\n 19: 'single_arm_step_up_and_press',\n 20: 'smith_machine_overhead_press',\n 21: 'split_stance_hammer_curl_to_press',\n 22: 'swiss_ball_dumbbell_shoulder_press',\n 23: 'weight_plate_front_raise'\n },\n shoulder_stability_exercise_name: {\n 0: '90_degree_cable_external_rotation',\n 1: 'band_external_rotation',\n 2: 'band_internal_rotation',\n 3: 'bent_arm_lateral_raise_and_external_rotation',\n 4: 'cable_external_rotation',\n 5: 'dumbbell_face_pull_with_external_rotation',\n 6: 'floor_i_raise',\n 7: 'weighted_floor_i_raise',\n 8: 'floor_t_raise',\n 9: 'weighted_floor_t_raise',\n 10: 'floor_y_raise',\n 11: 'weighted_floor_y_raise',\n 12: 'incline_i_raise',\n 13: 'weighted_incline_i_raise',\n 14: 'incline_l_raise',\n 15: 'weighted_incline_l_raise',\n 16: 'incline_t_raise',\n 17: 'weighted_incline_t_raise',\n 18: 'incline_w_raise',\n 19: 'weighted_incline_w_raise',\n 20: 'incline_y_raise',\n 21: 'weighted_incline_y_raise',\n 22: 'lying_external_rotation',\n 23: 'seated_dumbbell_external_rotation',\n 24: 'standing_l_raise',\n 25: 'swiss_ball_i_raise',\n 26: 'weighted_swiss_ball_i_raise',\n 27: 'swiss_ball_t_raise',\n 28: 'weighted_swiss_ball_t_raise',\n 29: 'swiss_ball_w_raise',\n 30: 'weighted_swiss_ball_w_raise',\n 31: 'swiss_ball_y_raise',\n 32: 'weighted_swiss_ball_y_raise'\n },\n shrug_exercise_name: {\n 0: 'barbell_jump_shrug',\n 1: 'barbell_shrug',\n 2: 'barbell_upright_row',\n 3: 'behind_the_back_smith_machine_shrug',\n 4: 'dumbbell_jump_shrug',\n 5: 'dumbbell_shrug',\n 6: 'dumbbell_upright_row',\n 7: 'incline_dumbbell_shrug',\n 8: 'overhead_barbell_shrug',\n 9: 'overhead_dumbbell_shrug',\n 10: 'scaption_and_shrug',\n 11: 'scapular_retraction',\n 12: 'serratus_chair_shrug',\n 13: 'weighted_serratus_chair_shrug',\n 14: 'serratus_shrug',\n 15: 'weighted_serratus_shrug',\n 16: 'wide_grip_jump_shrug'\n },\n sit_up_exercise_name: {\n 0: 'alternating_sit_up',\n 1: 'weighted_alternating_sit_up',\n 2: 'bent_knee_v_up',\n 3: 'weighted_bent_knee_v_up',\n 4: 'butterfly_sit_up',\n 5: 'weighted_butterfly_situp',\n 6: 'cross_punch_roll_up',\n 7: 'weighted_cross_punch_roll_up',\n 8: 'crossed_arms_sit_up',\n 9: 'weighted_crossed_arms_sit_up',\n 10: 'get_up_sit_up',\n 11: 'weighted_get_up_sit_up',\n 12: 'hovering_sit_up',\n 13: 'weighted_hovering_sit_up',\n 14: 'kettlebell_sit_up',\n 15: 'medicine_ball_alternating_v_up',\n 16: 'medicine_ball_sit_up',\n 17: 'medicine_ball_v_up',\n 18: 'modified_sit_up',\n 19: 'negative_sit_up',\n 20: 'one_arm_full_sit_up',\n 21: 'reclining_circle',\n 22: 'weighted_reclining_circle',\n 23: 'reverse_curl_up',\n 24: 'weighted_reverse_curl_up',\n 25: 'single_leg_swiss_ball_jackknife',\n 26: 'weighted_single_leg_swiss_ball_jackknife',\n 27: 'the_teaser',\n 28: 'the_teaser_weighted',\n 29: 'three_part_roll_down',\n 30: 'weighted_three_part_roll_down',\n 31: 'v_up',\n 32: 'weighted_v_up',\n 33: 'weighted_russian_twist_on_swiss_ball',\n 34: 'weighted_sit_up',\n 35: 'x_abs',\n 36: 'weighted_x_abs',\n 37: 'sit_up'\n },\n squat_exercise_name: {\n 0: 'leg_press',\n 1: 'back_squat_with_body_bar',\n 2: 'back_squats',\n 3: 'weighted_back_squats',\n 4: 'balancing_squat',\n 5: 'weighted_balancing_squat',\n 6: 'barbell_back_squat',\n 7: 'barbell_box_squat',\n 8: 'barbell_front_squat',\n 9: 'barbell_hack_squat',\n 10: 'barbell_hang_squat_snatch',\n 11: 'barbell_lateral_step_up',\n 12: 'barbell_quarter_squat',\n 13: 'barbell_siff_squat',\n 14: 'barbell_squat_snatch',\n 15: 'barbell_squat_with_heels_raised',\n 16: 'barbell_stepover',\n 17: 'barbell_step_up',\n 18: 'bench_squat_with_rotational_chop',\n 19: 'weighted_bench_squat_with_rotational_chop',\n 20: 'body_weight_wall_squat',\n 21: 'weighted_wall_squat',\n 22: 'box_step_squat',\n 23: 'weighted_box_step_squat',\n 24: 'braced_squat',\n 25: 'crossed_arm_barbell_front_squat',\n 26: 'crossover_dumbbell_step_up',\n 27: 'dumbbell_front_squat',\n 28: 'dumbbell_split_squat',\n 29: 'dumbbell_squat',\n 30: 'dumbbell_squat_clean',\n 31: 'dumbbell_stepover',\n 32: 'dumbbell_step_up',\n 33: 'elevated_single_leg_squat',\n 34: 'weighted_elevated_single_leg_squat',\n 35: 'figure_four_squats',\n 36: 'weighted_figure_four_squats',\n 37: 'goblet_squat',\n 38: 'kettlebell_squat',\n 39: 'kettlebell_swing_overhead',\n 40: 'kettlebell_swing_with_flip_to_squat',\n 41: 'lateral_dumbbell_step_up',\n 42: 'one_legged_squat',\n 43: 'overhead_dumbbell_squat',\n 44: 'overhead_squat',\n 45: 'partial_single_leg_squat',\n 46: 'weighted_partial_single_leg_squat',\n 47: 'pistol_squat',\n 48: 'weighted_pistol_squat',\n 49: 'plie_slides',\n 50: 'weighted_plie_slides',\n 51: 'plie_squat',\n 52: 'weighted_plie_squat',\n 53: 'prisoner_squat',\n 54: 'weighted_prisoner_squat',\n 55: 'single_leg_bench_get_up',\n 56: 'weighted_single_leg_bench_get_up',\n 57: 'single_leg_bench_squat',\n 58: 'weighted_single_leg_bench_squat',\n 59: 'single_leg_squat_on_swiss_ball',\n 60: 'weighted_single_leg_squat_on_swiss_ball',\n 61: 'squat',\n 62: 'weighted_squat',\n 63: 'squats_with_band',\n 64: 'staggered_squat',\n 65: 'weighted_staggered_squat',\n 66: 'step_up',\n 67: 'weighted_step_up',\n 68: 'suitcase_squats',\n 69: 'sumo_squat',\n 70: 'sumo_squat_slide_in',\n 71: 'weighted_sumo_squat_slide_in',\n 72: 'sumo_squat_to_high_pull',\n 73: 'sumo_squat_to_stand',\n 74: 'weighted_sumo_squat_to_stand',\n 75: 'sumo_squat_with_rotation',\n 76: 'weighted_sumo_squat_with_rotation',\n 77: 'swiss_ball_body_weight_wall_squat',\n 78: 'weighted_swiss_ball_wall_squat',\n 79: 'thrusters',\n 80: 'uneven_squat',\n 81: 'weighted_uneven_squat',\n 82: 'waist_slimming_squat',\n 83: 'wall_ball',\n 84: 'wide_stance_barbell_squat',\n 85: 'wide_stance_goblet_squat',\n 86: 'zercher_squat',\n 87: 'kbs_overhead',\n 88: 'squat_and_side_kick',\n 89: 'squat_jumps_in_n_out',\n 90: 'pilates_plie_squats_parallel_turned_out_flat_and_heels',\n 91: 'releve_straight_leg_and_knee_bent_with_one_leg_variation'\n },\n total_body_exercise_name: {\n 0: 'burpee',\n 1: 'weighted_burpee',\n 2: 'burpee_box_jump',\n 3: 'weighted_burpee_box_jump',\n 4: 'high_pull_burpee',\n 5: 'man_makers',\n 6: 'one_arm_burpee',\n 7: 'squat_thrusts',\n 8: 'weighted_squat_thrusts',\n 9: 'squat_plank_push_up',\n 10: 'weighted_squat_plank_push_up',\n 11: 'standing_t_rotation_balance',\n 12: 'weighted_standing_t_rotation_balance'\n },\n triceps_extension_exercise_name: {\n 0: 'bench_dip',\n 1: 'weighted_bench_dip',\n 2: 'body_weight_dip',\n 3: 'cable_kickback',\n 4: 'cable_lying_triceps_extension',\n 5: 'cable_overhead_triceps_extension',\n 6: 'dumbbell_kickback',\n 7: 'dumbbell_lying_triceps_extension',\n 8: 'ez_bar_overhead_triceps_extension',\n 9: 'incline_dip',\n 10: 'weighted_incline_dip',\n 11: 'incline_ez_bar_lying_triceps_extension',\n 12: 'lying_dumbbell_pullover_to_extension',\n 13: 'lying_ez_bar_triceps_extension',\n 14: 'lying_triceps_extension_to_close_grip_bench_press',\n 15: 'overhead_dumbbell_triceps_extension',\n 16: 'reclining_triceps_press',\n 17: 'reverse_grip_pressdown',\n 18: 'reverse_grip_triceps_pressdown',\n 19: 'rope_pressdown',\n 20: 'seated_barbell_overhead_triceps_extension',\n 21: 'seated_dumbbell_overhead_triceps_extension',\n 22: 'seated_ez_bar_overhead_triceps_extension',\n 23: 'seated_single_arm_overhead_dumbbell_extension',\n 24: 'single_arm_dumbbell_overhead_triceps_extension',\n 25: 'single_dumbbell_seated_overhead_triceps_extension',\n 26: 'single_leg_bench_dip_and_kick',\n 27: 'weighted_single_leg_bench_dip_and_kick',\n 28: 'single_leg_dip',\n 29: 'weighted_single_leg_dip',\n 30: 'static_lying_triceps_extension',\n 31: 'suspended_dip',\n 32: 'weighted_suspended_dip',\n 33: 'swiss_ball_dumbbell_lying_triceps_extension',\n 34: 'swiss_ball_ez_bar_lying_triceps_extension',\n 35: 'swiss_ball_ez_bar_overhead_triceps_extension',\n 36: 'tabletop_dip',\n 37: 'weighted_tabletop_dip',\n 38: 'triceps_extension_on_floor',\n 39: 'triceps_pressdown',\n 40: 'weighted_dip'\n },\n warm_up_exercise_name: {\n 0: 'quadruped_rocking',\n 1: 'neck_tilts',\n 2: 'ankle_circles',\n 3: 'ankle_dorsiflexion_with_band',\n 4: 'ankle_internal_rotation',\n 5: 'arm_circles',\n 6: 'bent_over_reach_to_sky',\n 7: 'cat_camel',\n 8: 'elbow_to_foot_lunge',\n 9: 'forward_and_backward_leg_swings',\n 10: 'groiners',\n 11: 'inverted_hamstring_stretch',\n 12: 'lateral_duck_under',\n 13: 'neck_rotations',\n 14: 'opposite_arm_and_leg_balance',\n 15: 'reach_roll_and_lift',\n 16: 'scorpion',\n 17: 'shoulder_circles',\n 18: 'side_to_side_leg_swings',\n 19: 'sleeper_stretch',\n 20: 'slide_out',\n 21: 'swiss_ball_hip_crossover',\n 22: 'swiss_ball_reach_roll_and_lift',\n 23: 'swiss_ball_windshield_wipers',\n 24: 'thoracic_rotation',\n 25: 'walking_high_kicks',\n 26: 'walking_high_knees',\n 27: 'walking_knee_hugs',\n 28: 'walking_leg_cradles',\n 29: 'walkout',\n 30: 'walkout_from_push_up_position'\n },\n run_exercise_name: {\n 0: 'run',\n 1: 'walk',\n 2: 'jog',\n 3: 'sprint'\n },\n water_type: {\n 0: 'fresh',\n 1: 'salt',\n 2: 'en13319',\n 3: 'custom'\n },\n tissue_model_type: {\n 0: 'zhl_16c'\n },\n dive_gas_status: {\n 0: 'disabled',\n 1: 'enabled',\n 2: 'backup_only'\n },\n dive_alarm_type: {\n 0: 'depth',\n 1: 'time'\n },\n dive_backlight_mode: {\n 0: 'at_depth',\n 1: 'always_on'\n },\n favero_product: {\n 10: 'assioma_uno',\n 12: 'assioma_duo'\n }\n }\n};\n\nfunction getMessageName(messageNum) {\n var message = FIT.messages[messageNum];\n return message ? message.name : '';\n}\n\nfunction getFieldObject(fieldNum, messageNum) {\n var message = FIT.messages[messageNum];\n if (!message) {\n return '';\n }\n var fieldObj = message[fieldNum];\n return fieldObj ? fieldObj : {};\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFitMessage = getFitMessage;\nexports.getFitMessageBaseType = getFitMessageBaseType;\n\nvar _fit = require('./fit');\n\nfunction getFitMessage(messageNum) {\n return {\n name: (0, _fit.getMessageName)(messageNum),\n getAttributes: function getAttributes(fieldNum) {\n return (0, _fit.getFieldObject)(fieldNum, messageNum);\n }\n };\n}\n\n// TODO\nfunction getFitMessageBaseType(foo) {\n return foo;\n}","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n var version = \"1.9.4\";\n\n /*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n // @function extend(dest: Object, src?: Object): Object\r\n // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n function extend(dest) {\r\n \tvar i, j, len, src;\r\n\r\n \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n \t\tsrc = arguments[j];\r\n \t\tfor (i in src) {\r\n \t\t\tdest[i] = src[i];\r\n \t\t}\r\n \t}\r\n \treturn dest;\r\n }\r\n\r\n // @function create(proto: Object, properties?: Object): Object\r\n // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n var create$2 = Object.create || (function () {\r\n \tfunction F() {}\r\n \treturn function (proto) {\r\n \t\tF.prototype = proto;\r\n \t\treturn new F();\r\n \t};\r\n })();\r\n\r\n // @function bind(fn: Function, ā€¦): Function\r\n // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n // Has a `L.bind()` shortcut.\r\n function bind(fn, obj) {\r\n \tvar slice = Array.prototype.slice;\r\n\r\n \tif (fn.bind) {\r\n \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n \t}\r\n\r\n \tvar args = slice.call(arguments, 2);\r\n\r\n \treturn function () {\r\n \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n \t};\r\n }\r\n\r\n // @property lastId: Number\r\n // Last unique ID used by [`stamp()`](#util-stamp)\r\n var lastId = 0;\r\n\r\n // @function stamp(obj: Object): Number\r\n // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n function stamp(obj) {\r\n \tif (!('_leaflet_id' in obj)) {\r\n \t\tobj['_leaflet_id'] = ++lastId;\r\n \t}\r\n \treturn obj._leaflet_id;\r\n }\r\n\r\n // @function throttle(fn: Function, time: Number, context: Object): Function\r\n // Returns a function which executes function `fn` with the given scope `context`\r\n // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n // received by the bound function will be any arguments passed when binding the\r\n // function, followed by any arguments passed when invoking the bound function.\r\n // Has an `L.throttle` shortcut.\r\n function throttle(fn, time, context) {\r\n \tvar lock, args, wrapperFn, later;\r\n\r\n \tlater = function () {\r\n \t\t// reset lock and call if queued\r\n \t\tlock = false;\r\n \t\tif (args) {\r\n \t\t\twrapperFn.apply(context, args);\r\n \t\t\targs = false;\r\n \t\t}\r\n \t};\r\n\r\n \twrapperFn = function () {\r\n \t\tif (lock) {\r\n \t\t\t// called too soon, queue to call later\r\n \t\t\targs = arguments;\r\n\r\n \t\t} else {\r\n \t\t\t// call and lock until later\r\n \t\t\tfn.apply(context, arguments);\r\n \t\t\tsetTimeout(later, time);\r\n \t\t\tlock = true;\r\n \t\t}\r\n \t};\r\n\r\n \treturn wrapperFn;\r\n }\r\n\r\n // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n // Returns the number `num` modulo `range` in such a way so it lies within\r\n // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n // `range[1]` unless `includeMax` is set to `true`.\r\n function wrapNum(x, range, includeMax) {\r\n \tvar max = range[1],\r\n \t min = range[0],\r\n \t d = max - min;\r\n \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n }\r\n\r\n // @function falseFn(): Function\r\n // Returns a function which always returns `false`.\r\n function falseFn() { return false; }\r\n\r\n // @function formatNum(num: Number, precision?: Number|false): Number\r\n // Returns the number `num` rounded with specified `precision`.\r\n // The default `precision` value is 6 decimal places.\r\n // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n function formatNum(num, precision) {\r\n \tif (precision === false) { return num; }\r\n \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n \treturn Math.round(num * pow) / pow;\r\n }\r\n\r\n // @function trim(str: String): String\r\n // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n function trim(str) {\r\n \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n // @function splitWords(str: String): String[]\r\n // Trims and splits the string on whitespace and returns the array of parts.\r\n function splitWords(str) {\r\n \treturn trim(str).split(/\\s+/);\r\n }\r\n\r\n // @function setOptions(obj: Object, options: Object): Object\r\n // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n function setOptions(obj, options) {\r\n \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n \t}\r\n \tfor (var i in options) {\r\n \t\tobj.options[i] = options[i];\r\n \t}\r\n \treturn obj.options;\r\n }\r\n\r\n // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n function getParamString(obj, existingUrl, uppercase) {\r\n \tvar params = [];\r\n \tfor (var i in obj) {\r\n \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n \t}\r\n \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n }\r\n\r\n var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n // @function template(str: String, data: Object): String\r\n // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n // data values ā€” they will be evaluated passing `data` as an argument.\r\n function template(str, data) {\r\n \treturn str.replace(templateRe, function (str, key) {\r\n \t\tvar value = data[key];\r\n\r\n \t\tif (value === undefined) {\r\n \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n \t\t} else if (typeof value === 'function') {\r\n \t\t\tvalue = value(data);\r\n \t\t}\r\n \t\treturn value;\r\n \t});\r\n }\r\n\r\n // @function isArray(obj): Boolean\r\n // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n var isArray = Array.isArray || function (obj) {\r\n \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n };\r\n\r\n // @function indexOf(array: Array, el: Object): Number\r\n // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n function indexOf(array, el) {\r\n \tfor (var i = 0; i < array.length; i++) {\r\n \t\tif (array[i] === el) { return i; }\r\n \t}\r\n \treturn -1;\r\n }\r\n\r\n // @property emptyImageUrl: String\r\n // Data URI string containing a base64-encoded empty GIF image.\r\n // Used as a hack to free memory from unused images on WebKit-powered\r\n // mobile devices (by setting image `src` to this string).\r\n var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n function getPrefixed(name) {\r\n \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n }\r\n\r\n var lastTime = 0;\r\n\r\n // fallback for IE 7-8\r\n function timeoutDefer(fn) {\r\n \tvar time = +new Date(),\r\n \t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n \tlastTime = time + timeToCall;\r\n \treturn window.setTimeout(fn, timeToCall);\r\n }\r\n\r\n var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n // the browser doesn't have native support for\r\n // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n function requestAnimFrame(fn, context, immediate) {\r\n \tif (immediate && requestFn === timeoutDefer) {\r\n \t\tfn.call(context);\r\n \t} else {\r\n \t\treturn requestFn.call(window, bind(fn, context));\r\n \t}\r\n }\r\n\r\n // @function cancelAnimFrame(id: Number): undefined\r\n // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n function cancelAnimFrame(id) {\r\n \tif (id) {\r\n \t\tcancelFn.call(window, id);\r\n \t}\r\n }\n\n var Util = {\n __proto__: null,\n extend: extend,\n create: create$2,\n bind: bind,\n get lastId () { return lastId; },\n stamp: stamp,\n throttle: throttle,\n wrapNum: wrapNum,\n falseFn: falseFn,\n formatNum: formatNum,\n trim: trim,\n splitWords: splitWords,\n setOptions: setOptions,\n getParamString: getParamString,\n template: template,\n isArray: isArray,\n indexOf: indexOf,\n emptyImageUrl: emptyImageUrl,\n requestFn: requestFn,\n cancelFn: cancelFn,\n requestAnimFrame: requestAnimFrame,\n cancelAnimFrame: cancelAnimFrame\n };\n\n // @class Class\r\n // @aka L.Class\r\n\r\n // @section\r\n // @uninheritable\r\n\r\n // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n function Class() {}\r\n\r\n Class.extend = function (props) {\r\n\r\n \t// @function extend(props: Object): Function\r\n \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n \tvar NewClass = function () {\r\n\r\n \t\tsetOptions(this);\r\n\r\n \t\t// call the constructor\r\n \t\tif (this.initialize) {\r\n \t\t\tthis.initialize.apply(this, arguments);\r\n \t\t}\r\n\r\n \t\t// call all constructor hooks\r\n \t\tthis.callInitHooks();\r\n \t};\r\n\r\n \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n \tvar proto = create$2(parentProto);\r\n \tproto.constructor = NewClass;\r\n\r\n \tNewClass.prototype = proto;\r\n\r\n \t// inherit parent's statics\r\n \tfor (var i in this) {\r\n \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n \t\t\tNewClass[i] = this[i];\r\n \t\t}\r\n \t}\r\n\r\n \t// mix static properties into the class\r\n \tif (props.statics) {\r\n \t\textend(NewClass, props.statics);\r\n \t}\r\n\r\n \t// mix includes into the prototype\r\n \tif (props.includes) {\r\n \t\tcheckDeprecatedMixinEvents(props.includes);\r\n \t\textend.apply(null, [proto].concat(props.includes));\r\n \t}\r\n\r\n \t// mix given properties into the prototype\r\n \textend(proto, props);\r\n \tdelete proto.statics;\r\n \tdelete proto.includes;\r\n\r\n \t// merge options\r\n \tif (proto.options) {\r\n \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n \t\textend(proto.options, props.options);\r\n \t}\r\n\r\n \tproto._initHooks = [];\r\n\r\n \t// add method for calling all hooks\r\n \tproto.callInitHooks = function () {\r\n\r\n \t\tif (this._initHooksCalled) { return; }\r\n\r\n \t\tif (parentProto.callInitHooks) {\r\n \t\t\tparentProto.callInitHooks.call(this);\r\n \t\t}\r\n\r\n \t\tthis._initHooksCalled = true;\r\n\r\n \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n \t\t\tproto._initHooks[i].call(this);\r\n \t\t}\r\n \t};\r\n\r\n \treturn NewClass;\r\n };\r\n\r\n\r\n // @function include(properties: Object): this\r\n // [Includes a mixin](#class-includes) into the current class.\r\n Class.include = function (props) {\r\n \tvar parentOptions = this.prototype.options;\r\n \textend(this.prototype, props);\r\n \tif (props.options) {\r\n \t\tthis.prototype.options = parentOptions;\r\n \t\tthis.mergeOptions(props.options);\r\n \t}\r\n \treturn this;\r\n };\r\n\r\n // @function mergeOptions(options: Object): this\r\n // [Merges `options`](#class-options) into the defaults of the class.\r\n Class.mergeOptions = function (options) {\r\n \textend(this.prototype.options, options);\r\n \treturn this;\r\n };\r\n\r\n // @function addInitHook(fn: Function): this\r\n // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \tvar init = typeof fn === 'function' ? fn : function () {\r\n \t\tthis[fn].apply(this, args);\r\n \t};\r\n\r\n \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n \tthis.prototype._initHooks.push(init);\r\n \treturn this;\r\n };\r\n\r\n function checkDeprecatedMixinEvents(includes) {\r\n \t/* global L: true */\r\n \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n \tfor (var i = 0; i < includes.length; i++) {\r\n \t\tif (includes[i] === L.Mixin.Events) {\r\n \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n \t\t\t\t'this property will be removed in future releases, ' +\r\n \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n \t\t}\r\n \t}\r\n }\n\n /*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\n var Events = {\r\n \t/* @method on(type: String, fn: Function, context?: Object): this\r\n \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n \t *\r\n \t * @alternative\r\n \t * @method on(eventMap: Object): this\r\n \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n \t */\r\n \ton: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n \t *\r\n \t * @alternative\r\n \t * @method off(eventMap: Object): this\r\n \t * Removes a set of type/listener pairs.\r\n \t *\r\n \t * @alternative\r\n \t * @method off: this\r\n \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n \t */\r\n \toff: function (types, fn, context) {\r\n\r\n \t\tif (!arguments.length) {\r\n \t\t\t// clear all listeners if called without arguments\r\n \t\t\tdelete this._events;\r\n\r\n \t\t} else if (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\tthis._off(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tvar removeAll = arguments.length === 1;\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tif (removeAll) {\r\n \t\t\t\t\tthis._off(types[i]);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tthis._off(types[i], fn, context);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// attach listener (without syntactic sugar now)\r\n \t_on: function (type, fn, context, _once) {\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// check if fn already there\r\n \t\tif (this._listens(type, fn, context) !== false) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar newListener = {fn: fn, ctx: context};\r\n \t\tif (_once) {\r\n \t\t\tnewListener.once = true;\r\n \t\t}\r\n\r\n \t\tthis._events = this._events || {};\r\n \t\tthis._events[type] = this._events[type] || [];\r\n \t\tthis._events[type].push(newListener);\r\n \t},\r\n\r\n \t_off: function (type, fn, context) {\r\n \t\tvar listeners,\r\n \t\t i,\r\n \t\t len;\r\n\r\n \t\tif (!this._events) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tlisteners = this._events[type];\r\n \t\tif (!listeners) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (arguments.length === 1) { // remove all\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// Set all removed listeners to noop\r\n \t\t\t\t// so they are not called if remove happens in fire\r\n \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tlisteners[i].fn = falseFn;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\t// clear all listeners for a type if function isn't specified\r\n \t\t\tdelete this._events[type];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// find fn and remove it\r\n \t\tvar index = this._listens(type, fn, context);\r\n \t\tif (index !== false) {\r\n \t\t\tvar listener = listeners[index];\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n \t\t\t\tlistener.fn = falseFn;\r\n\r\n \t\t\t\t/* copy array in case events are being fired */\r\n \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n \t\t\t}\r\n \t\t\tlisteners.splice(index, 1);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n \t// Fires an event of the specified type. You can optionally provide a data\r\n \t// object ā€” the first argument of the listener function will contain its\r\n \t// properties. The event can optionally be propagated to event parents.\r\n \tfire: function (type, data, propagate) {\r\n \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n \t\tvar event = extend({}, data, {\r\n \t\t\ttype: type,\r\n \t\t\ttarget: this,\r\n \t\t\tsourceTarget: data && data.sourceTarget || this\r\n \t\t});\r\n\r\n \t\tif (this._events) {\r\n \t\t\tvar listeners = this._events[type];\r\n \t\t\tif (listeners) {\r\n \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tvar l = listeners[i];\r\n \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n \t\t\t\t\tvar fn = l.fn;\r\n \t\t\t\t\tif (l.once) {\r\n \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfn.call(l.ctx || this, event);\r\n \t\t\t\t}\r\n\r\n \t\t\t\tthis._firingCount--;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// propagate the event to parents (set with addEventParent)\r\n \t\t\tthis._propagateEvent(event);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n \t// Returns `true` if a particular event type has any listeners attached to it.\r\n \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n \tlistens: function (type, fn, context, propagate) {\r\n \t\tif (typeof type !== 'string') {\r\n \t\t\tconsole.warn('\"string\" type argument expected');\r\n \t\t}\r\n\r\n \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n \t\tvar _fn = fn;\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tpropagate = !!fn;\r\n \t\t\t_fn = undefined;\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events && this._events[type];\r\n \t\tif (listeners && listeners.length) {\r\n \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// also check parents for listeners if event propagates\r\n \t\t\tfor (var id in this._eventParents) {\r\n \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n \t},\r\n\r\n \t// returns the index (number) or false\r\n \t_listens: function (type, fn, context) {\r\n \t\tif (!this._events) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events[type] || [];\r\n \t\tif (!fn) {\r\n \t\t\treturn !!listeners.length;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n \t\t\t\treturn i;\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n\r\n \t},\r\n\r\n \t// @method once(ā€¦): this\r\n \t// Behaves as [`on(ā€¦)`](#evented-on), except the listener will only get fired once and then removed.\r\n \tonce: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn, true);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context, true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addEventParent(obj: Evented): this\r\n \t// Adds an event parent - an `Evented` that will receive propagated events\r\n \taddEventParent: function (obj) {\r\n \t\tthis._eventParents = this._eventParents || {};\r\n \t\tthis._eventParents[stamp(obj)] = obj;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeEventParent(obj: Evented): this\r\n \t// Removes an event parent, so it will stop receiving propagated events\r\n \tremoveEventParent: function (obj) {\r\n \t\tif (this._eventParents) {\r\n \t\t\tdelete this._eventParents[stamp(obj)];\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_propagateEvent: function (e) {\r\n \t\tfor (var id in this._eventParents) {\r\n \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n \t\t\t\tlayer: e.target,\r\n \t\t\t\tpropagatedFrom: e.target\r\n \t\t\t}, e), true);\r\n \t\t}\r\n \t}\r\n };\r\n\r\n // aliases; we should ditch those eventually\r\n\r\n // @method addEventListener(ā€¦): this\r\n // Alias to [`on(ā€¦)`](#evented-on)\r\n Events.addEventListener = Events.on;\r\n\r\n // @method removeEventListener(ā€¦): this\r\n // Alias to [`off(ā€¦)`](#evented-off)\r\n\r\n // @method clearAllEventListeners(ā€¦): this\r\n // Alias to [`off()`](#evented-off)\r\n Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n // @method addOneTimeEventListener(ā€¦): this\r\n // Alias to [`once(ā€¦)`](#evented-once)\r\n Events.addOneTimeEventListener = Events.once;\r\n\r\n // @method fireEvent(ā€¦): this\r\n // Alias to [`fire(ā€¦)`](#evented-fire)\r\n Events.fireEvent = Events.fire;\r\n\r\n // @method hasEventListeners(ā€¦): Boolean\r\n // Alias to [`listens(ā€¦)`](#evented-listens)\r\n Events.hasEventListeners = Events.listens;\r\n\r\n var Evented = Class.extend(Events);\n\n /*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Point(x, y, round) {\r\n \t// @property x: Number; The `x` coordinate of the point\r\n \tthis.x = (round ? Math.round(x) : x);\r\n \t// @property y: Number; The `y` coordinate of the point\r\n \tthis.y = (round ? Math.round(y) : y);\r\n }\r\n\r\n var trunc = Math.trunc || function (v) {\r\n \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n };\r\n\r\n Point.prototype = {\r\n\r\n \t// @method clone(): Point\r\n \t// Returns a copy of the current point.\r\n \tclone: function () {\r\n \t\treturn new Point(this.x, this.y);\r\n \t},\r\n\r\n \t// @method add(otherPoint: Point): Point\r\n \t// Returns the result of addition of the current and the given points.\r\n \tadd: function (point) {\r\n \t\t// non-destructive, returns a new point\r\n \t\treturn this.clone()._add(toPoint(point));\r\n \t},\r\n\r\n \t_add: function (point) {\r\n \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n \t\tthis.x += point.x;\r\n \t\tthis.y += point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method subtract(otherPoint: Point): Point\r\n \t// Returns the result of subtraction of the given point from the current.\r\n \tsubtract: function (point) {\r\n \t\treturn this.clone()._subtract(toPoint(point));\r\n \t},\r\n\r\n \t_subtract: function (point) {\r\n \t\tthis.x -= point.x;\r\n \t\tthis.y -= point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method divideBy(num: Number): Point\r\n \t// Returns the result of division of the current point by the given number.\r\n \tdivideBy: function (num) {\r\n \t\treturn this.clone()._divideBy(num);\r\n \t},\r\n\r\n \t_divideBy: function (num) {\r\n \t\tthis.x /= num;\r\n \t\tthis.y /= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method multiplyBy(num: Number): Point\r\n \t// Returns the result of multiplication of the current point by the given number.\r\n \tmultiplyBy: function (num) {\r\n \t\treturn this.clone()._multiplyBy(num);\r\n \t},\r\n\r\n \t_multiplyBy: function (num) {\r\n \t\tthis.x *= num;\r\n \t\tthis.y *= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method scaleBy(scale: Point): Point\r\n \t// Multiply each coordinate of the current point by each coordinate of\r\n \t// `scale`. In linear algebra terms, multiply the point by the\r\n \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n \t// defined by `scale`.\r\n \tscaleBy: function (point) {\r\n \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n \t},\r\n\r\n \t// @method unscaleBy(scale: Point): Point\r\n \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n \t// each coordinate of `scale`.\r\n \tunscaleBy: function (point) {\r\n \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n \t},\r\n\r\n \t// @method round(): Point\r\n \t// Returns a copy of the current point with rounded coordinates.\r\n \tround: function () {\r\n \t\treturn this.clone()._round();\r\n \t},\r\n\r\n \t_round: function () {\r\n \t\tthis.x = Math.round(this.x);\r\n \t\tthis.y = Math.round(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method floor(): Point\r\n \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n \tfloor: function () {\r\n \t\treturn this.clone()._floor();\r\n \t},\r\n\r\n \t_floor: function () {\r\n \t\tthis.x = Math.floor(this.x);\r\n \t\tthis.y = Math.floor(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method ceil(): Point\r\n \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n \tceil: function () {\r\n \t\treturn this.clone()._ceil();\r\n \t},\r\n\r\n \t_ceil: function () {\r\n \t\tthis.x = Math.ceil(this.x);\r\n \t\tthis.y = Math.ceil(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method trunc(): Point\r\n \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n \ttrunc: function () {\r\n \t\treturn this.clone()._trunc();\r\n \t},\r\n\r\n \t_trunc: function () {\r\n \t\tthis.x = trunc(this.x);\r\n \t\tthis.y = trunc(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method distanceTo(otherPoint: Point): Number\r\n \t// Returns the cartesian distance between the current and the given points.\r\n \tdistanceTo: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\tvar x = point.x - this.x,\r\n \t\t y = point.y - this.y;\r\n\r\n \t\treturn Math.sqrt(x * x + y * y);\r\n \t},\r\n\r\n \t// @method equals(otherPoint: Point): Boolean\r\n \t// Returns `true` if the given point has the same coordinates.\r\n \tequals: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn point.x === this.x &&\r\n \t\t point.y === this.y;\r\n \t},\r\n\r\n \t// @method contains(otherPoint: Point): Boolean\r\n \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n \tcontains: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n \t\t Math.abs(point.y) <= Math.abs(this.y);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point for debugging purposes.\r\n \ttoString: function () {\r\n \t\treturn 'Point(' +\r\n \t\t formatNum(this.x) + ', ' +\r\n \t\t formatNum(this.y) + ')';\r\n \t}\r\n };\r\n\r\n // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Number[])\r\n // Expects an array of the form `[x, y]` instead.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Object)\r\n // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n function toPoint(x, y, round) {\r\n \tif (x instanceof Point) {\r\n \t\treturn x;\r\n \t}\r\n \tif (isArray(x)) {\r\n \t\treturn new Point(x[0], x[1]);\r\n \t}\r\n \tif (x === undefined || x === null) {\r\n \t\treturn x;\r\n \t}\r\n \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n \t\treturn new Point(x.x, x.y);\r\n \t}\r\n \treturn new Point(x, y, round);\r\n }\n\n /*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Bounds(a, b) {\r\n \tif (!a) { return; }\r\n\r\n \tvar points = b ? [a, b] : a;\r\n\r\n \tfor (var i = 0, len = points.length; i < len; i++) {\r\n \t\tthis.extend(points[i]);\r\n \t}\r\n }\r\n\r\n Bounds.prototype = {\r\n \t// @method extend(point: Point): this\r\n \t// Extends the bounds to contain the given point.\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: Bounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar min2, max2;\r\n \t\tif (!obj) { return this; }\r\n\r\n \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n \t\t\tmin2 = max2 = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t\tmin2 = obj.min;\r\n \t\t\tmax2 = obj.max;\r\n\r\n \t\t\tif (!min2 || !max2) { return this; }\r\n \t\t}\r\n\r\n \t\t// @property min: Point\r\n \t\t// The top left corner of the rectangle.\r\n \t\t// @property max: Point\r\n \t\t// The bottom right corner of the rectangle.\r\n \t\tif (!this.min && !this.max) {\r\n \t\t\tthis.min = min2.clone();\r\n \t\t\tthis.max = max2.clone();\r\n \t\t} else {\r\n \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getCenter(round?: Boolean): Point\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function (round) {\r\n \t\treturn toPoint(\r\n \t\t (this.min.x + this.max.x) / 2,\r\n \t\t (this.min.y + this.max.y) / 2, round);\r\n \t},\r\n\r\n \t// @method getBottomLeft(): Point\r\n \t// Returns the bottom-left point of the bounds.\r\n \tgetBottomLeft: function () {\r\n \t\treturn toPoint(this.min.x, this.max.y);\r\n \t},\r\n\r\n \t// @method getTopRight(): Point\r\n \t// Returns the top-right point of the bounds.\r\n \tgetTopRight: function () { // -> Point\r\n \t\treturn toPoint(this.max.x, this.min.y);\r\n \t},\r\n\r\n \t// @method getTopLeft(): Point\r\n \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n \tgetTopLeft: function () {\r\n \t\treturn this.min; // left, top\r\n \t},\r\n\r\n \t// @method getBottomRight(): Point\r\n \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n \tgetBottomRight: function () {\r\n \t\treturn this.max; // right, bottom\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the size of the given bounds\r\n \tgetSize: function () {\r\n \t\treturn this.max.subtract(this.min);\r\n \t},\r\n\r\n \t// @method contains(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n \t// @alternative\r\n \t// @method contains(point: Point): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) {\r\n \t\tvar min, max;\r\n\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n \t\t\tobj = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t}\r\n\r\n \t\tif (obj instanceof Bounds) {\r\n \t\t\tmin = obj.min;\r\n \t\t\tmax = obj.max;\r\n \t\t} else {\r\n \t\t\tmin = max = obj;\r\n \t\t}\r\n\r\n \t\treturn (min.x >= this.min.x) &&\r\n \t\t (max.x <= this.max.x) &&\r\n \t\t (min.y >= this.min.y) &&\r\n \t\t (max.y <= this.max.y);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n \t// intersect if they have at least one point in common.\r\n \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n \t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n \t\treturn xIntersects && yIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n \t// overlap if their intersection is an area.\r\n \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n \t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n \t\treturn xOverlaps && yOverlaps;\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this.min && this.max);\r\n \t},\r\n\r\n\r\n \t// @method pad(bufferRatio: Number): Bounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar min = this.min,\r\n \t\tmax = this.max,\r\n \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n \t\treturn toBounds(\r\n \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n \t},\r\n\r\n\r\n \t// @method equals(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n \tequals: function (bounds) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n \t\t\tthis.max.equals(bounds.getBottomRight());\r\n \t},\r\n };\r\n\r\n\r\n // @factory L.bounds(corner1: Point, corner2: Point)\r\n // Creates a Bounds object from two corners coordinate pairs.\r\n // @alternative\r\n // @factory L.bounds(points: Point[])\r\n // Creates a Bounds object from the given array of points.\r\n function toBounds(a, b) {\r\n \tif (!a || a instanceof Bounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new Bounds(a, b);\r\n }\n\n /*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n \tif (!corner1) { return; }\r\n\r\n \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\tthis.extend(latlngs[i]);\r\n \t}\r\n }\r\n\r\n LatLngBounds.prototype = {\r\n\r\n \t// @method extend(latlng: LatLng): this\r\n \t// Extend the bounds to contain the given point\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: LatLngBounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLng) {\r\n \t\t\tsw2 = obj;\r\n \t\t\tne2 = obj;\r\n\r\n \t\t} else if (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj._southWest;\r\n \t\t\tne2 = obj._northEast;\r\n\r\n \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n \t\t} else {\r\n \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n \t\t}\r\n\r\n \t\tif (!sw && !ne) {\r\n \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n \t\t} else {\r\n \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method pad(bufferRatio: Number): LatLngBounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n \t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n \t\treturn new LatLngBounds(\r\n \t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n \t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function () {\r\n \t\treturn new LatLng(\r\n \t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n \t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n \t},\r\n\r\n \t// @method getSouthWest(): LatLng\r\n \t// Returns the south-west point of the bounds.\r\n \tgetSouthWest: function () {\r\n \t\treturn this._southWest;\r\n \t},\r\n\r\n \t// @method getNorthEast(): LatLng\r\n \t// Returns the north-east point of the bounds.\r\n \tgetNorthEast: function () {\r\n \t\treturn this._northEast;\r\n \t},\r\n\r\n \t// @method getNorthWest(): LatLng\r\n \t// Returns the north-west point of the bounds.\r\n \tgetNorthWest: function () {\r\n \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n \t},\r\n\r\n \t// @method getSouthEast(): LatLng\r\n \t// Returns the south-east point of the bounds.\r\n \tgetSouthEast: function () {\r\n \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n \t},\r\n\r\n \t// @method getWest(): Number\r\n \t// Returns the west longitude of the bounds\r\n \tgetWest: function () {\r\n \t\treturn this._southWest.lng;\r\n \t},\r\n\r\n \t// @method getSouth(): Number\r\n \t// Returns the south latitude of the bounds\r\n \tgetSouth: function () {\r\n \t\treturn this._southWest.lat;\r\n \t},\r\n\r\n \t// @method getEast(): Number\r\n \t// Returns the east longitude of the bounds\r\n \tgetEast: function () {\r\n \t\treturn this._northEast.lng;\r\n \t},\r\n\r\n \t// @method getNorth(): Number\r\n \t// Returns the north latitude of the bounds\r\n \tgetNorth: function () {\r\n \t\treturn this._northEast.lat;\r\n \t},\r\n\r\n \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n\r\n \t// @alternative\r\n \t// @method contains (latlng: LatLng): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n \t\t\tobj = toLatLng(obj);\r\n \t\t} else {\r\n \t\t\tobj = toLatLngBounds(obj);\r\n \t\t}\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj.getSouthWest();\r\n \t\t\tne2 = obj.getNorthEast();\r\n \t\t} else {\r\n \t\t\tsw2 = ne2 = obj;\r\n \t\t}\r\n\r\n \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n \t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n \tintersects: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n \t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n \t\treturn latIntersects && lngIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n \toverlaps: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n \t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n \t\treturn latOverlaps && lngOverlaps;\r\n \t},\r\n\r\n \t// @method toBBoxString(): String\r\n \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n \ttoBBoxString: function () {\r\n \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n \t},\r\n\r\n \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (bounds, maxMargin) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n \t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this._southWest && this._northEast);\r\n \t}\r\n };\r\n\r\n // TODO International date line?\r\n\r\n // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n // @alternative\r\n // @factory L.latLngBounds(latlngs: LatLng[])\r\n // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n function toLatLngBounds(a, b) {\r\n \tif (a instanceof LatLngBounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new LatLngBounds(a, b);\r\n }\n\n /* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLng(lat, lng, alt) {\r\n \tif (isNaN(lat) || isNaN(lng)) {\r\n \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n \t}\r\n\r\n \t// @property lat: Number\r\n \t// Latitude in degrees\r\n \tthis.lat = +lat;\r\n\r\n \t// @property lng: Number\r\n \t// Longitude in degrees\r\n \tthis.lng = +lng;\r\n\r\n \t// @property alt: Number\r\n \t// Altitude in meters (optional)\r\n \tif (alt !== undefined) {\r\n \t\tthis.alt = +alt;\r\n \t}\r\n }\r\n\r\n LatLng.prototype = {\r\n \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (obj, maxMargin) {\r\n \t\tif (!obj) { return false; }\r\n\r\n \t\tobj = toLatLng(obj);\r\n\r\n \t\tvar margin = Math.max(\r\n \t\t Math.abs(this.lat - obj.lat),\r\n \t\t Math.abs(this.lng - obj.lng));\r\n\r\n \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point (for debugging purposes).\r\n \ttoString: function (precision) {\r\n \t\treturn 'LatLng(' +\r\n \t\t formatNum(this.lat, precision) + ', ' +\r\n \t\t formatNum(this.lng, precision) + ')';\r\n \t},\r\n\r\n \t// @method distanceTo(otherLatLng: LatLng): Number\r\n \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n \tdistanceTo: function (other) {\r\n \t\treturn Earth.distance(this, toLatLng(other));\r\n \t},\r\n\r\n \t// @method wrap(): LatLng\r\n \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n \twrap: function () {\r\n \t\treturn Earth.wrapLatLng(this);\r\n \t},\r\n\r\n \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n \ttoBounds: function (sizeInMeters) {\r\n \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n \t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n \t\treturn toLatLngBounds(\r\n \t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n \t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n \t},\r\n\r\n \tclone: function () {\r\n \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n \t}\r\n };\r\n\r\n\r\n\r\n // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Array): LatLng\r\n // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Object): LatLng\r\n // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n function toLatLng(a, b, c) {\r\n \tif (a instanceof LatLng) {\r\n \t\treturn a;\r\n \t}\r\n \tif (isArray(a) && typeof a[0] !== 'object') {\r\n \t\tif (a.length === 3) {\r\n \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n \t\t}\r\n \t\tif (a.length === 2) {\r\n \t\t\treturn new LatLng(a[0], a[1]);\r\n \t\t}\r\n \t\treturn null;\r\n \t}\r\n \tif (a === undefined || a === null) {\r\n \t\treturn a;\r\n \t}\r\n \tif (typeof a === 'object' && 'lat' in a) {\r\n \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n \t}\r\n \tif (b === undefined) {\r\n \t\treturn null;\r\n \t}\r\n \treturn new LatLng(a, b, c);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\n var CRS = {\r\n \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n \tlatLngToPoint: function (latlng, zoom) {\r\n \t\tvar projectedPoint = this.projection.project(latlng),\r\n \t\t scale = this.scale(zoom);\r\n\r\n \t\treturn this.transformation._transform(projectedPoint, scale);\r\n \t},\r\n\r\n \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n \t// zoom into geographical coordinates.\r\n \tpointToLatLng: function (point, zoom) {\r\n \t\tvar scale = this.scale(zoom),\r\n \t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n \t\treturn this.projection.unproject(untransformedPoint);\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng): Point\r\n \t// Projects geographical coordinates into coordinates in units accepted for\r\n \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n \tproject: function (latlng) {\r\n \t\treturn this.projection.project(latlng);\r\n \t},\r\n\r\n \t// @method unproject(point: Point): LatLng\r\n \t// Given a projected coordinate returns the corresponding LatLng.\r\n \t// The inverse of `project`.\r\n \tunproject: function (point) {\r\n \t\treturn this.projection.unproject(point);\r\n \t},\r\n\r\n \t// @method scale(zoom: Number): Number\r\n \t// Returns the scale used when transforming projected coordinates into\r\n \t// pixel coordinates for a particular zoom. For example, it returns\r\n \t// `256 * 2^zoom` for Mercator-based CRS.\r\n \tscale: function (zoom) {\r\n \t\treturn 256 * Math.pow(2, zoom);\r\n \t},\r\n\r\n \t// @method zoom(scale: Number): Number\r\n \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n \t// factor of `scale`.\r\n \tzoom: function (scale) {\r\n \t\treturn Math.log(scale / 256) / Math.LN2;\r\n \t},\r\n\r\n \t// @method getProjectedBounds(zoom: Number): Bounds\r\n \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n \tgetProjectedBounds: function (zoom) {\r\n \t\tif (this.infinite) { return null; }\r\n\r\n \t\tvar b = this.projection.bounds,\r\n \t\t s = this.scale(zoom),\r\n \t\t min = this.transformation.transform(b.min, s),\r\n \t\t max = this.transformation.transform(b.max, s);\r\n\r\n \t\treturn new Bounds(min, max);\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates.\r\n\r\n \t// @property code: String\r\n \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n \t//\r\n \t// @property wrapLng: Number[]\r\n \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n \t//\r\n \t// @property wrapLat: Number[]\r\n \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n \t// wrapLng: [min, max],\r\n \t// wrapLat: [min, max],\r\n\r\n \t// @property infinite: Boolean\r\n \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n \tinfinite: false,\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n \twrapLatLng: function (latlng) {\r\n \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n \t\t lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n \t\t alt = latlng.alt;\r\n\r\n \t\treturn new LatLng(lat, lng, alt);\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n \t// that its center is within the CRS's bounds.\r\n \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n \twrapLatLngBounds: function (bounds) {\r\n \t\tvar center = bounds.getCenter(),\r\n \t\t newCenter = this.wrapLatLng(center),\r\n \t\t latShift = center.lat - newCenter.lat,\r\n \t\t lngShift = center.lng - newCenter.lng;\r\n\r\n \t\tif (latShift === 0 && lngShift === 0) {\r\n \t\t\treturn bounds;\r\n \t\t}\r\n\r\n \t\tvar sw = bounds.getSouthWest(),\r\n \t\t ne = bounds.getNorthEast(),\r\n \t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n \t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n \t\treturn new LatLngBounds(newSw, newNe);\r\n \t}\r\n };\n\n /*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\n var Earth = extend({}, CRS, {\n \twrapLng: [-180, 180],\n\n \t// Mean Earth Radius, as recommended for use by\n \t// the International Union of Geodesy and Geophysics,\n \t// see https://rosettacode.org/wiki/Haversine_formula\n \tR: 6371000,\n\n \t// distance between two geographical points using spherical law of cosines approximation\n \tdistance: function (latlng1, latlng2) {\n \t\tvar rad = Math.PI / 180,\n \t\t lat1 = latlng1.lat * rad,\n \t\t lat2 = latlng2.lat * rad,\n \t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n \t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n \t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n \t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n \t\treturn this.R * c;\n \t}\n });\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection ā€” the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\n var earthRadius = 6378137;\r\n\r\n var SphericalMercator = {\r\n\r\n \tR: earthRadius,\r\n \tMAX_LATITUDE: 85.0511287798,\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t max = this.MAX_LATITUDE,\r\n \t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n \t\t sin = Math.sin(lat * d);\r\n\r\n \t\treturn new Point(\r\n \t\t\tthis.R * latlng.lng * d,\r\n \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI;\r\n\r\n \t\treturn new LatLng(\r\n \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n \t\t\tpoint.x * d / this.R);\r\n \t},\r\n\r\n \tbounds: (function () {\r\n \t\tvar d = earthRadius * Math.PI;\r\n \t\treturn new Bounds([-d, -d], [d, d]);\r\n \t})()\r\n };\n\n /*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Creates a `Transformation` object with the given coefficients.\r\n function Transformation(a, b, c, d) {\r\n \tif (isArray(a)) {\r\n \t\t// use array properties\r\n \t\tthis._a = a[0];\r\n \t\tthis._b = a[1];\r\n \t\tthis._c = a[2];\r\n \t\tthis._d = a[3];\r\n \t\treturn;\r\n \t}\r\n \tthis._a = a;\r\n \tthis._b = b;\r\n \tthis._c = c;\r\n \tthis._d = d;\r\n }\r\n\r\n Transformation.prototype = {\r\n \t// @method transform(point: Point, scale?: Number): Point\r\n \t// Returns a transformed point, optionally multiplied by the given scale.\r\n \t// Only accepts actual `L.Point` instances, not arrays.\r\n \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n \t\treturn this._transform(point.clone(), scale);\r\n \t},\r\n\r\n \t// destructive transform (faster)\r\n \t_transform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n \t\treturn point;\r\n \t},\r\n\r\n \t// @method untransform(point: Point, scale?: Number): Point\r\n \t// Returns the reverse transformation of the given point, optionally divided\r\n \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n \tuntransform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\treturn new Point(\r\n \t\t (point.x / scale - this._b) / this._a,\r\n \t\t (point.y / scale - this._d) / this._c);\r\n \t}\r\n };\r\n\r\n // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Instantiates a Transformation object with the given coefficients.\r\n\r\n // @alternative\r\n // @factory L.transformation(coefficients: Array): Transformation\r\n // Expects an coefficients array of the form\r\n // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n function toTransformation(a, b, c, d) {\r\n \treturn new Transformation(a, b, c, d);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\n var EPSG3857 = extend({}, Earth, {\r\n \tcode: 'EPSG:3857',\r\n \tprojection: SphericalMercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\r\n\r\n var EPSG900913 = extend({}, EPSG3857, {\r\n \tcode: 'EPSG:900913'\r\n });\n\n // @namespace SVG; @section\n // There are several static functions which can be called without instantiating L.SVG:\n\n // @function create(name: String): SVGElement\n // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n // corresponding to the class name passed. For example, using 'line' will return\n // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n function svgCreate(name) {\n \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n\n // @function pointsToPath(rings: Point[], closed: Boolean): String\n // Generates a SVG path string for multiple rings, with each ring turning\n // into \"M..L..L..\" instructions\n function pointsToPath(rings, closed) {\n \tvar str = '',\n \ti, j, len, len2, points, p;\n\n \tfor (i = 0, len = rings.length; i < len; i++) {\n \t\tpoints = rings[i];\n\n \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n \t\t\tp = points[j];\n \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n \t\t}\n\n \t\t// closes the ring for polygons; \"x\" is VML syntax\n \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n \t}\n\n \t// SVG complains about empty path strings\n \treturn str || 'M0 0';\n }\n\n /*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\n var style = document.documentElement.style;\r\n\r\n // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n var ie = 'ActiveXObject' in window;\r\n\r\n // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n var ielt9 = ie && !document.addEventListener;\r\n\r\n // @property edge: Boolean; `true` for the Edge web browser.\r\n var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n // @property webkit: Boolean;\r\n // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n var webkit = userAgentContains('webkit');\r\n\r\n // @property android: Boolean\r\n // **Deprecated.** `true` for any browser running on an Android platform.\r\n var android = userAgentContains('android');\r\n\r\n // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n // @property opera: Boolean; `true` for the Opera browser\r\n var opera = !!window.opera;\r\n\r\n // @property chrome: Boolean; `true` for the Chrome browser.\r\n var chrome = !edge && userAgentContains('chrome');\r\n\r\n // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n // @property safari: Boolean; `true` for the Safari browser.\r\n var safari = !chrome && userAgentContains('safari');\r\n\r\n var phantom = userAgentContains('phantom');\r\n\r\n // @property opera12: Boolean\r\n // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n var opera12 = 'OTransition' in style;\r\n\r\n // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n var ie3d = ie && ('transition' in style);\r\n\r\n // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n var gecko3d = 'MozPerspective' in style;\r\n\r\n // @property any3d: Boolean\r\n // `true` for all browsers supporting CSS transforms.\r\n var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n var mobileWebkit = mobile && webkit;\r\n\r\n // @property mobileWebkit3d: Boolean\r\n // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n var mobileWebkit3d = mobile && webkit3d;\r\n\r\n // @property msPointer: Boolean\r\n // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n // @property pointer: Boolean\r\n // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n // @property touchNative: Boolean\r\n // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n // **This does not necessarily mean** that the browser is running in a computer with\r\n // a touchscreen, it only means that the browser is capable of understanding\r\n // touch events.\r\n var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n // @property touch: Boolean\r\n // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n var mobileOpera = mobile && opera;\r\n\r\n // @property mobileGecko: Boolean\r\n // `true` for gecko-based browsers running in a mobile device.\r\n var mobileGecko = mobile && gecko;\r\n\r\n // @property retina: Boolean\r\n // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n // @property passiveEvents: Boolean\r\n // `true` for browsers that support passive events.\r\n var passiveEvents = (function () {\r\n \tvar supportsPassiveOption = false;\r\n \ttry {\r\n \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n \t\t\tget: function () { // eslint-disable-line getter-return\r\n \t\t\t\tsupportsPassiveOption = true;\r\n \t\t\t}\r\n \t\t});\r\n \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t} catch (e) {\r\n \t\t// Errors can safely be ignored since this is only a browser support test.\r\n \t}\r\n \treturn supportsPassiveOption;\r\n }());\r\n\r\n // @property canvas: Boolean\r\n // `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n var canvas$1 = (function () {\r\n \treturn !!document.createElement('canvas').getContext;\r\n }());\r\n\r\n // @property svg: Boolean\r\n // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n var inlineSvg = !!svg$1 && (function () {\r\n \tvar div = document.createElement('div');\r\n \tdiv.innerHTML = '';\r\n \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n })();\r\n\r\n // @property vml: Boolean\r\n // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n var vml = !svg$1 && (function () {\r\n \ttry {\r\n \t\tvar div = document.createElement('div');\r\n \t\tdiv.innerHTML = '';\r\n\r\n \t\tvar shape = div.firstChild;\r\n \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n \t} catch (e) {\r\n \t\treturn false;\r\n \t}\r\n }());\r\n\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n function userAgentContains(str) {\r\n \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n }\r\n\r\n\r\n var Browser = {\r\n \tie: ie,\r\n \tielt9: ielt9,\r\n \tedge: edge,\r\n \twebkit: webkit,\r\n \tandroid: android,\r\n \tandroid23: android23,\r\n \tandroidStock: androidStock,\r\n \topera: opera,\r\n \tchrome: chrome,\r\n \tgecko: gecko,\r\n \tsafari: safari,\r\n \tphantom: phantom,\r\n \topera12: opera12,\r\n \twin: win,\r\n \tie3d: ie3d,\r\n \twebkit3d: webkit3d,\r\n \tgecko3d: gecko3d,\r\n \tany3d: any3d,\r\n \tmobile: mobile,\r\n \tmobileWebkit: mobileWebkit,\r\n \tmobileWebkit3d: mobileWebkit3d,\r\n \tmsPointer: msPointer,\r\n \tpointer: pointer,\r\n \ttouch: touch,\r\n \ttouchNative: touchNative,\r\n \tmobileOpera: mobileOpera,\r\n \tmobileGecko: mobileGecko,\r\n \tretina: retina,\r\n \tpassiveEvents: passiveEvents,\r\n \tcanvas: canvas$1,\r\n \tsvg: svg$1,\r\n \tvml: vml,\r\n \tinlineSvg: inlineSvg,\r\n \tmac: mac,\r\n \tlinux: linux\r\n };\n\n /*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\n var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\n var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\n var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n var pEvent = {\n \ttouchstart : POINTER_DOWN,\n \ttouchmove : POINTER_MOVE,\n \ttouchend : POINTER_UP,\n \ttouchcancel : POINTER_CANCEL\n };\n var handle = {\n \ttouchstart : _onPointerStart,\n \ttouchmove : _handlePointer,\n \ttouchend : _handlePointer,\n \ttouchcancel : _handlePointer\n };\n var _pointers = {};\n var _pointerDocListener = false;\n\n // Provides a touch events wrapper for (ms)pointer events.\n // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n function addPointerListener(obj, type, handler) {\n \tif (type === 'touchstart') {\n \t\t_addPointerDocListener();\n \t}\n \tif (!handle[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn falseFn;\n \t}\n \thandler = handle[type].bind(this, handler);\n \tobj.addEventListener(pEvent[type], handler, false);\n \treturn handler;\n }\n\n function removePointerListener(obj, type, handler) {\n \tif (!pEvent[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn;\n \t}\n \tobj.removeEventListener(pEvent[type], handler, false);\n }\n\n function _globalPointerDown(e) {\n \t_pointers[e.pointerId] = e;\n }\n\n function _globalPointerMove(e) {\n \tif (_pointers[e.pointerId]) {\n \t\t_pointers[e.pointerId] = e;\n \t}\n }\n\n function _globalPointerUp(e) {\n \tdelete _pointers[e.pointerId];\n }\n\n function _addPointerDocListener() {\n \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n \tif (!_pointerDocListener) {\n \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n \t\t_pointerDocListener = true;\n \t}\n }\n\n function _handlePointer(handler, e) {\n \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n \te.touches = [];\n \tfor (var i in _pointers) {\n \t\te.touches.push(_pointers[i]);\n \t}\n \te.changedTouches = [e];\n\n \thandler(e);\n }\n\n function _onPointerStart(handler, e) {\n \t// IE10 specific: MsTouch needs preventDefault. See #2000\n \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n \t\tpreventDefault(e);\n \t}\n \t_handlePointer(handler, e);\n }\n\n /*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\n function makeDblclick(event) {\r\n \t// in modern browsers `type` cannot be just overridden:\r\n \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n \tvar newEvent = {},\r\n \t prop, i;\r\n \tfor (i in event) {\r\n \t\tprop = event[i];\r\n \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n \t}\r\n \tevent = newEvent;\r\n \tnewEvent.type = 'dblclick';\r\n \tnewEvent.detail = 2;\r\n \tnewEvent.isTrusted = false;\r\n \tnewEvent._simulated = true; // for debug purposes\r\n \treturn newEvent;\r\n }\r\n\r\n var delay = 200;\r\n function addDoubleTapListener(obj, handler) {\r\n \t// Most browsers handle double tap natively\r\n \tobj.addEventListener('dblclick', handler);\r\n\r\n \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n \tvar last = 0,\r\n \t detail;\r\n \tfunction simDblclick(e) {\r\n \t\tif (e.detail !== 1) {\r\n \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (e.pointerType === 'mouse' ||\r\n \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// When clicking on an , the browser generates a click on its\r\n \t\t//