-
Notifications
You must be signed in to change notification settings - Fork 0
/
visconnect-bundle.js.map
1 lines (1 loc) · 882 KB
/
visconnect-bundle.js.map
1
{"version":3,"file":"visconnect-bundle.js","sources":["node_modules/tslib/tslib.es6.js","node_modules/peerjs/dist/peerjs.js","node_modules/two-product/two-product.js","node_modules/robust-sum/robust-sum.js","node_modules/two-sum/two-sum.js","node_modules/robust-scale/robust-scale.js","node_modules/robust-subtract/robust-diff.js","node_modules/robust-orientation/orientation.js","node_modules/robust-point-in-polygon/robust-pnp.js","src/util.ts","src/ui.ts","src/listener.ts","src/dom.ts","node_modules/rxjs/src/internal/util/isFunction.ts","node_modules/rxjs/src/internal/config.ts","node_modules/rxjs/src/internal/util/hostReportError.ts","node_modules/rxjs/src/internal/Observer.ts","node_modules/rxjs/src/internal/util/isArray.ts","node_modules/rxjs/src/internal/util/isObject.ts","node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","node_modules/rxjs/src/internal/Subscription.ts","node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","node_modules/rxjs/src/internal/Subscriber.ts","node_modules/rxjs/src/internal/util/canReportError.ts","node_modules/rxjs/src/internal/util/toSubscriber.ts","node_modules/rxjs/src/internal/symbol/observable.ts","node_modules/rxjs/src/internal/util/noop.ts","node_modules/rxjs/src/internal/util/pipe.ts","node_modules/rxjs/src/internal/Observable.ts","node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","node_modules/rxjs/src/internal/SubjectSubscription.ts","node_modules/rxjs/src/internal/Subject.ts","src/peerjs-connection.ts","src/peerjs-network.ts","src/communication.ts","src/protocol.ts","src/lock-service.ts","src/leader-protocol.ts","src/visconnect.ts","src/main.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\nparcelRequire = (function (modules, cache, entry, globalName) {\n // Save the require from previous bundle to this closure if any\n var previousRequire = typeof parcelRequire === 'function' && parcelRequire;\n var nodeRequire = typeof require === 'function' && require;\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire = typeof parcelRequire === 'function' && parcelRequire;\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error('Cannot find module \\'' + name + '\\'');\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = cache[name] = new newRequire.Module(name);\n\n modules[name][0].call(module.exports, localRequire, module, module.exports, this);\n }\n\n return cache[name].exports;\n\n function localRequire(x){\n return newRequire(localRequire.resolve(x));\n }\n\n function resolve(x){\n return modules[name][1][x] || x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.register = function (id, exports) {\n modules[id] = [function (require, module) {\n module.exports = exports;\n }, {}];\n };\n\n var error;\n for (var i = 0; i < entry.length; i++) {\n try {\n newRequire(entry[i]);\n } catch (e) {\n // Save first error but execute all entries\n if (!error) {\n error = e;\n }\n }\n }\n\n if (entry.length) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(entry[entry.length - 1]);\n\n // CommonJS\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === \"function\" && define.amd) {\n define(function () {\n return mainExports;\n });\n\n // <script>\n } else if (globalName) {\n this[globalName] = mainExports;\n }\n }\n\n // Override the current require with this new one\n parcelRequire = newRequire;\n\n if (error) {\n // throw error from earlier, _after updating parcelRequire_\n throw error;\n }\n\n return newRequire;\n})({\"EgBh\":[function(require,module,exports) {\nvar binaryFeatures = {};\r\nbinaryFeatures.useBlobBuilder = (function () {\r\n try {\r\n new Blob([]);\r\n return false;\r\n } catch (e) {\r\n return true;\r\n }\r\n})();\r\n\r\nbinaryFeatures.useArrayBufferView = !binaryFeatures.useBlobBuilder && (function () {\r\n try {\r\n return (new Blob([new Uint8Array([])])).size === 0;\r\n } catch (e) {\r\n return true;\r\n }\r\n})();\r\n\r\nmodule.exports.binaryFeatures = binaryFeatures;\r\nvar BlobBuilder = module.exports.BlobBuilder;\r\nif (typeof window !== 'undefined') {\r\n BlobBuilder = module.exports.BlobBuilder = window.WebKitBlobBuilder ||\r\n window.MozBlobBuilder || window.MSBlobBuilder || window.BlobBuilder;\r\n}\r\n\r\nfunction BufferBuilder () {\r\n this._pieces = [];\r\n this._parts = [];\r\n}\r\n\r\nBufferBuilder.prototype.append = function (data) {\r\n if (typeof data === 'number') {\r\n this._pieces.push(data);\r\n } else {\r\n this.flush();\r\n this._parts.push(data);\r\n }\r\n};\r\n\r\nBufferBuilder.prototype.flush = function () {\r\n if (this._pieces.length > 0) {\r\n var buf = new Uint8Array(this._pieces);\r\n if (!binaryFeatures.useArrayBufferView) {\r\n buf = buf.buffer;\r\n }\r\n this._parts.push(buf);\r\n this._pieces = [];\r\n }\r\n};\r\n\r\nBufferBuilder.prototype.getBuffer = function () {\r\n this.flush();\r\n if (binaryFeatures.useBlobBuilder) {\r\n var builder = new BlobBuilder();\r\n for (var i = 0, ii = this._parts.length; i < ii; i++) {\r\n builder.append(this._parts[i]);\r\n }\r\n return builder.getBlob();\r\n } else {\r\n return new Blob(this._parts);\r\n }\r\n};\r\n\r\nmodule.exports.BufferBuilder = BufferBuilder;\r\n\n},{}],\"kdPp\":[function(require,module,exports) {\nvar BufferBuilder = require('./bufferbuilder').BufferBuilder;\r\nvar binaryFeatures = require('./bufferbuilder').binaryFeatures;\r\n\r\nvar BinaryPack = {\r\n unpack: function (data) {\r\n var unpacker = new Unpacker(data);\r\n return unpacker.unpack();\r\n },\r\n pack: function (data) {\r\n var packer = new Packer();\r\n packer.pack(data);\r\n var buffer = packer.getBuffer();\r\n return buffer;\r\n }\r\n};\r\n\r\nmodule.exports = BinaryPack;\r\n\r\nfunction Unpacker (data) {\r\n // Data is ArrayBuffer\r\n this.index = 0;\r\n this.dataBuffer = data;\r\n this.dataView = new Uint8Array(this.dataBuffer);\r\n this.length = this.dataBuffer.byteLength;\r\n}\r\n\r\nUnpacker.prototype.unpack = function () {\r\n var type = this.unpack_uint8();\r\n if (type < 0x80) {\r\n return type;\r\n } else if ((type ^ 0xe0) < 0x20) {\r\n return (type ^ 0xe0) - 0x20;\r\n }\r\n\r\n var size;\r\n if ((size = type ^ 0xa0) <= 0x0f) {\r\n return this.unpack_raw(size);\r\n } else if ((size = type ^ 0xb0) <= 0x0f) {\r\n return this.unpack_string(size);\r\n } else if ((size = type ^ 0x90) <= 0x0f) {\r\n return this.unpack_array(size);\r\n } else if ((size = type ^ 0x80) <= 0x0f) {\r\n return this.unpack_map(size);\r\n }\r\n\r\n switch (type) {\r\n case 0xc0:\r\n return null;\r\n case 0xc1:\r\n return undefined;\r\n case 0xc2:\r\n return false;\r\n case 0xc3:\r\n return true;\r\n case 0xca:\r\n return this.unpack_float();\r\n case 0xcb:\r\n return this.unpack_double();\r\n case 0xcc:\r\n return this.unpack_uint8();\r\n case 0xcd:\r\n return this.unpack_uint16();\r\n case 0xce:\r\n return this.unpack_uint32();\r\n case 0xcf:\r\n return this.unpack_uint64();\r\n case 0xd0:\r\n return this.unpack_int8();\r\n case 0xd1:\r\n return this.unpack_int16();\r\n case 0xd2:\r\n return this.unpack_int32();\r\n case 0xd3:\r\n return this.unpack_int64();\r\n case 0xd4:\r\n return undefined;\r\n case 0xd5:\r\n return undefined;\r\n case 0xd6:\r\n return undefined;\r\n case 0xd7:\r\n return undefined;\r\n case 0xd8:\r\n size = this.unpack_uint16();\r\n return this.unpack_string(size);\r\n case 0xd9:\r\n size = this.unpack_uint32();\r\n return this.unpack_string(size);\r\n case 0xda:\r\n size = this.unpack_uint16();\r\n return this.unpack_raw(size);\r\n case 0xdb:\r\n size = this.unpack_uint32();\r\n return this.unpack_raw(size);\r\n case 0xdc:\r\n size = this.unpack_uint16();\r\n return this.unpack_array(size);\r\n case 0xdd:\r\n size = this.unpack_uint32();\r\n return this.unpack_array(size);\r\n case 0xde:\r\n size = this.unpack_uint16();\r\n return this.unpack_map(size);\r\n case 0xdf:\r\n size = this.unpack_uint32();\r\n return this.unpack_map(size);\r\n }\r\n};\r\n\r\nUnpacker.prototype.unpack_uint8 = function () {\r\n var byte = this.dataView[this.index] & 0xff;\r\n this.index++;\r\n return byte;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint16 = function () {\r\n var bytes = this.read(2);\r\n var uint16 =\r\n ((bytes[0] & 0xff) * 256) + (bytes[1] & 0xff);\r\n this.index += 2;\r\n return uint16;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint32 = function () {\r\n var bytes = this.read(4);\r\n var uint32 =\r\n ((bytes[0] * 256 +\r\n bytes[1]) * 256 +\r\n bytes[2]) * 256 +\r\n bytes[3];\r\n this.index += 4;\r\n return uint32;\r\n};\r\n\r\nUnpacker.prototype.unpack_uint64 = function () {\r\n var bytes = this.read(8);\r\n var uint64 =\r\n ((((((bytes[0] * 256 +\r\n bytes[1]) * 256 +\r\n bytes[2]) * 256 +\r\n bytes[3]) * 256 +\r\n bytes[4]) * 256 +\r\n bytes[5]) * 256 +\r\n bytes[6]) * 256 +\r\n bytes[7];\r\n this.index += 8;\r\n return uint64;\r\n};\r\n\r\nUnpacker.prototype.unpack_int8 = function () {\r\n var uint8 = this.unpack_uint8();\r\n return (uint8 < 0x80) ? uint8 : uint8 - (1 << 8);\r\n};\r\n\r\nUnpacker.prototype.unpack_int16 = function () {\r\n var uint16 = this.unpack_uint16();\r\n return (uint16 < 0x8000) ? uint16 : uint16 - (1 << 16);\r\n};\r\n\r\nUnpacker.prototype.unpack_int32 = function () {\r\n var uint32 = this.unpack_uint32();\r\n return (uint32 < Math.pow(2, 31)) ? uint32\r\n : uint32 - Math.pow(2, 32);\r\n};\r\n\r\nUnpacker.prototype.unpack_int64 = function () {\r\n var uint64 = this.unpack_uint64();\r\n return (uint64 < Math.pow(2, 63)) ? uint64\r\n : uint64 - Math.pow(2, 64);\r\n};\r\n\r\nUnpacker.prototype.unpack_raw = function (size) {\r\n if (this.length < this.index + size) {\r\n throw new Error('BinaryPackFailure: index is out of range' +\r\n ' ' + this.index + ' ' + size + ' ' + this.length);\r\n }\r\n var buf = this.dataBuffer.slice(this.index, this.index + size);\r\n this.index += size;\r\n\r\n // buf = util.bufferToString(buf);\r\n\r\n return buf;\r\n};\r\n\r\nUnpacker.prototype.unpack_string = function (size) {\r\n var bytes = this.read(size);\r\n var i = 0;\r\n var str = '';\r\n var c;\r\n var code;\r\n\r\n while (i < size) {\r\n c = bytes[i];\r\n if (c < 128) {\r\n str += String.fromCharCode(c);\r\n i++;\r\n } else if ((c ^ 0xc0) < 32) {\r\n code = ((c ^ 0xc0) << 6) | (bytes[i + 1] & 63);\r\n str += String.fromCharCode(code);\r\n i += 2;\r\n } else {\r\n code = ((c & 15) << 12) | ((bytes[i + 1] & 63) << 6) |\r\n (bytes[i + 2] & 63);\r\n str += String.fromCharCode(code);\r\n i += 3;\r\n }\r\n }\r\n\r\n this.index += size;\r\n return str;\r\n};\r\n\r\nUnpacker.prototype.unpack_array = function (size) {\r\n var objects = new Array(size);\r\n for (var i = 0; i < size; i++) {\r\n objects[i] = this.unpack();\r\n }\r\n return objects;\r\n};\r\n\r\nUnpacker.prototype.unpack_map = function (size) {\r\n var map = {};\r\n for (var i = 0; i < size; i++) {\r\n var key = this.unpack();\r\n var value = this.unpack();\r\n map[key] = value;\r\n }\r\n return map;\r\n};\r\n\r\nUnpacker.prototype.unpack_float = function () {\r\n var uint32 = this.unpack_uint32();\r\n var sign = uint32 >> 31;\r\n var exp = ((uint32 >> 23) & 0xff) - 127;\r\n var fraction = (uint32 & 0x7fffff) | 0x800000;\r\n return (sign === 0 ? 1 : -1) *\r\n fraction * Math.pow(2, exp - 23);\r\n};\r\n\r\nUnpacker.prototype.unpack_double = function () {\r\n var h32 = this.unpack_uint32();\r\n var l32 = this.unpack_uint32();\r\n var sign = h32 >> 31;\r\n var exp = ((h32 >> 20) & 0x7ff) - 1023;\r\n var hfrac = (h32 & 0xfffff) | 0x100000;\r\n var frac = hfrac * Math.pow(2, exp - 20) +\r\n l32 * Math.pow(2, exp - 52);\r\n return (sign === 0 ? 1 : -1) * frac;\r\n};\r\n\r\nUnpacker.prototype.read = function (length) {\r\n var j = this.index;\r\n if (j + length <= this.length) {\r\n return this.dataView.subarray(j, j + length);\r\n } else {\r\n throw new Error('BinaryPackFailure: read index out of range');\r\n }\r\n};\r\n\r\nfunction Packer () {\r\n this.bufferBuilder = new BufferBuilder();\r\n}\r\n\r\nPacker.prototype.getBuffer = function () {\r\n return this.bufferBuilder.getBuffer();\r\n};\r\n\r\nPacker.prototype.pack = function (value) {\r\n var type = typeof (value);\r\n if (type === 'string') {\r\n this.pack_string(value);\r\n } else if (type === 'number') {\r\n if (Math.floor(value) === value) {\r\n this.pack_integer(value);\r\n } else {\r\n this.pack_double(value);\r\n }\r\n } else if (type === 'boolean') {\r\n if (value === true) {\r\n this.bufferBuilder.append(0xc3);\r\n } else if (value === false) {\r\n this.bufferBuilder.append(0xc2);\r\n }\r\n } else if (type === 'undefined') {\r\n this.bufferBuilder.append(0xc0);\r\n } else if (type === 'object') {\r\n if (value === null) {\r\n this.bufferBuilder.append(0xc0);\r\n } else {\r\n var constructor = value.constructor;\r\n if (constructor == Array) {\r\n this.pack_array(value);\r\n } else if (constructor == Blob || constructor == File || value instanceof Blob || value instanceof File) {\r\n this.pack_bin(value);\r\n } else if (constructor == ArrayBuffer) {\r\n if (binaryFeatures.useArrayBufferView) {\r\n this.pack_bin(new Uint8Array(value));\r\n } else {\r\n this.pack_bin(value);\r\n }\r\n } else if ('BYTES_PER_ELEMENT' in value) {\r\n if (binaryFeatures.useArrayBufferView) {\r\n this.pack_bin(new Uint8Array(value.buffer));\r\n } else {\r\n this.pack_bin(value.buffer);\r\n }\r\n } else if ((constructor == Object) || (constructor.toString().startsWith('class'))) {\r\n this.pack_object(value);\r\n } else if (constructor == Date) {\r\n this.pack_string(value.toString());\r\n } else if (typeof value.toBinaryPack === 'function') {\r\n this.bufferBuilder.append(value.toBinaryPack());\r\n } else {\r\n throw new Error('Type \"' + constructor.toString() + '\" not yet supported');\r\n }\r\n }\r\n } else {\r\n throw new Error('Type \"' + type + '\" not yet supported');\r\n }\r\n this.bufferBuilder.flush();\r\n};\r\n\r\nPacker.prototype.pack_bin = function (blob) {\r\n var length = blob.length || blob.byteLength || blob.size;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0xa0 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xda);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdb);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n this.bufferBuilder.append(blob);\r\n};\r\n\r\nPacker.prototype.pack_string = function (str) {\r\n var length = utf8Length(str);\r\n\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0xb0 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xd8);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xd9);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n this.bufferBuilder.append(str);\r\n};\r\n\r\nPacker.prototype.pack_array = function (ary) {\r\n var length = ary.length;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0x90 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xdc);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdd);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n for (var i = 0; i < length; i++) {\r\n this.pack(ary[i]);\r\n }\r\n};\r\n\r\nPacker.prototype.pack_integer = function (num) {\r\n if (num >= -0x20 && num <= 0x7f) {\r\n this.bufferBuilder.append(num & 0xff);\r\n } else if (num >= 0x00 && num <= 0xff) {\r\n this.bufferBuilder.append(0xcc);\r\n this.pack_uint8(num);\r\n } else if (num >= -0x80 && num <= 0x7f) {\r\n this.bufferBuilder.append(0xd0);\r\n this.pack_int8(num);\r\n } else if (num >= 0x0000 && num <= 0xffff) {\r\n this.bufferBuilder.append(0xcd);\r\n this.pack_uint16(num);\r\n } else if (num >= -0x8000 && num <= 0x7fff) {\r\n this.bufferBuilder.append(0xd1);\r\n this.pack_int16(num);\r\n } else if (num >= 0x00000000 && num <= 0xffffffff) {\r\n this.bufferBuilder.append(0xce);\r\n this.pack_uint32(num);\r\n } else if (num >= -0x80000000 && num <= 0x7fffffff) {\r\n this.bufferBuilder.append(0xd2);\r\n this.pack_int32(num);\r\n } else if (num >= -0x8000000000000000 && num <= 0x7FFFFFFFFFFFFFFF) {\r\n this.bufferBuilder.append(0xd3);\r\n this.pack_int64(num);\r\n } else if (num >= 0x0000000000000000 && num <= 0xFFFFFFFFFFFFFFFF) {\r\n this.bufferBuilder.append(0xcf);\r\n this.pack_uint64(num);\r\n } else {\r\n throw new Error('Invalid integer');\r\n }\r\n};\r\n\r\nPacker.prototype.pack_double = function (num) {\r\n var sign = 0;\r\n if (num < 0) {\r\n sign = 1;\r\n num = -num;\r\n }\r\n var exp = Math.floor(Math.log(num) / Math.LN2);\r\n var frac0 = num / Math.pow(2, exp) - 1;\r\n var frac1 = Math.floor(frac0 * Math.pow(2, 52));\r\n var b32 = Math.pow(2, 32);\r\n var h32 = (sign << 31) | ((exp + 1023) << 20) |\r\n (frac1 / b32) & 0x0fffff;\r\n var l32 = frac1 % b32;\r\n this.bufferBuilder.append(0xcb);\r\n this.pack_int32(h32);\r\n this.pack_int32(l32);\r\n};\r\n\r\nPacker.prototype.pack_object = function (obj) {\r\n var keys = Object.keys(obj);\r\n var length = keys.length;\r\n if (length <= 0x0f) {\r\n this.pack_uint8(0x80 + length);\r\n } else if (length <= 0xffff) {\r\n this.bufferBuilder.append(0xde);\r\n this.pack_uint16(length);\r\n } else if (length <= 0xffffffff) {\r\n this.bufferBuilder.append(0xdf);\r\n this.pack_uint32(length);\r\n } else {\r\n throw new Error('Invalid length');\r\n }\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n this.pack(prop);\r\n this.pack(obj[prop]);\r\n }\r\n }\r\n};\r\n\r\nPacker.prototype.pack_uint8 = function (num) {\r\n this.bufferBuilder.append(num);\r\n};\r\n\r\nPacker.prototype.pack_uint16 = function (num) {\r\n this.bufferBuilder.append(num >> 8);\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_uint32 = function (num) {\r\n var n = num & 0xffffffff;\r\n this.bufferBuilder.append((n & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((n & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((n & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((n & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_uint64 = function (num) {\r\n var high = num / Math.pow(2, 32);\r\n var low = num % Math.pow(2, 32);\r\n this.bufferBuilder.append((high & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((high & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((high & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((high & 0x000000ff));\r\n this.bufferBuilder.append((low & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((low & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((low & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((low & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_int8 = function (num) {\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_int16 = function (num) {\r\n this.bufferBuilder.append((num & 0xff00) >> 8);\r\n this.bufferBuilder.append(num & 0xff);\r\n};\r\n\r\nPacker.prototype.pack_int32 = function (num) {\r\n this.bufferBuilder.append((num >>> 24) & 0xff);\r\n this.bufferBuilder.append((num & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((num & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((num & 0x000000ff));\r\n};\r\n\r\nPacker.prototype.pack_int64 = function (num) {\r\n var high = Math.floor(num / Math.pow(2, 32));\r\n var low = num % Math.pow(2, 32);\r\n this.bufferBuilder.append((high & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((high & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((high & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((high & 0x000000ff));\r\n this.bufferBuilder.append((low & 0xff000000) >>> 24);\r\n this.bufferBuilder.append((low & 0x00ff0000) >>> 16);\r\n this.bufferBuilder.append((low & 0x0000ff00) >>> 8);\r\n this.bufferBuilder.append((low & 0x000000ff));\r\n};\r\n\r\nfunction _utf8Replace (m) {\r\n var code = m.charCodeAt(0);\r\n\r\n if (code <= 0x7ff) return '00';\r\n if (code <= 0xffff) return '000';\r\n if (code <= 0x1fffff) return '0000';\r\n if (code <= 0x3ffffff) return '00000';\r\n return '000000';\r\n}\r\n\r\nfunction utf8Length (str) {\r\n if (str.length > 600) {\r\n // Blob method faster for large strings\r\n return (new Blob([str])).size;\r\n } else {\r\n return str.replace(/[^\\u0000-\\u007F]/g, _utf8Replace).length;\r\n }\r\n}\r\n\n},{\"./bufferbuilder\":\"EgBh\"}],\"iSxC\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.extractVersion = extractVersion;\nexports.wrapPeerConnectionEvent = wrapPeerConnectionEvent;\nexports.disableLog = disableLog;\nexports.disableWarnings = disableWarnings;\nexports.log = log;\nexports.deprecated = deprecated;\nexports.detectBrowser = detectBrowser;\nexports.compactObject = compactObject;\nexports.walkStats = walkStats;\nexports.filterStats = filterStats;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar logDisabled_ = true;\nvar deprecationWarnings_ = true;\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n\nfunction extractVersion(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n} // Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\n\n\nfunction wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n var proto = window.RTCPeerConnection.prototype;\n var nativeAddEventListener = proto.addEventListener;\n\n proto.addEventListener = function (nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n\n var wrappedCallback = function (e) {\n var modifiedEvent = wrapper(e);\n\n if (modifiedEvent) {\n cb(modifiedEvent);\n }\n };\n\n this._eventMap = this._eventMap || {};\n this._eventMap[cb] = wrappedCallback;\n return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]);\n };\n\n var nativeRemoveEventListener = proto.removeEventListener;\n\n proto.removeEventListener = function (nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[cb]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n\n var unwrappedCb = this._eventMap[cb];\n delete this._eventMap[cb];\n return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get: function () {\n return this['_on' + eventNameToWrap];\n },\n set: function (cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n\n if (cb) {\n this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\nfunction disableLog(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.');\n }\n\n logDisabled_ = bool;\n return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled';\n}\n/**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\n\n\nfunction disableWarnings(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.');\n }\n\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n}\n\nfunction log() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object') {\n if (logDisabled_) {\n return;\n }\n\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n}\n/**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\n\n\nfunction deprecated(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.');\n}\n/**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\n\n\nfunction detectBrowser(window) {\n var {\n navigator: navigator\n } = window; // Returned result object.\n\n var result = {\n browser: null,\n version: null\n }; // Fail early if it's not a browser\n\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n if (navigator.mozGetUserMedia) {\n // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent, /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection && !window.RTCIceGatherer) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n // Chrome 74 removed webkitGetUserMedia on http as well so we need the\n // more complicated fallback to webkitRTCPeerConnection.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (navigator.mediaDevices && navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n // Edge.\n result.browser = 'edge';\n result.version = extractVersion(navigator.userAgent, /Edge\\/(\\d+).(\\d+)$/, 2);\n } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) {\n // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent, /AppleWebKit\\/(\\d+)\\./, 1);\n result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype;\n } else {\n // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n}\n/**\n * Checks if something is an object.\n *\n * @param {*} val The something you want to check.\n * @return true if val is an object, false otherwise.\n */\n\n\nfunction isObject(val) {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n/**\n * Remove all empty objects and undefined values\n * from a nested object -- an enhanced and vanilla version\n * of Lodash's `compact`.\n */\n\n\nfunction compactObject(data) {\n if (!isObject(data)) {\n return data;\n }\n\n return Object.keys(data).reduce(function (accumulator, key) {\n var isObj = isObject(data[key]);\n var value = isObj ? compactObject(data[key]) : data[key];\n var isEmptyObject = isObj && !Object.keys(value).length;\n\n if (value === undefined || isEmptyObject) {\n return accumulator;\n }\n\n return Object.assign(accumulator, _defineProperty({}, key, value));\n }, {});\n}\n/* iterates the stats graph recursively. */\n\n\nfunction walkStats(stats, base, resultSet) {\n if (!base || resultSet.has(base.id)) {\n return;\n }\n\n resultSet.set(base.id, base);\n Object.keys(base).forEach(function (name) {\n if (name.endsWith('Id')) {\n walkStats(stats, stats.get(base[name]), resultSet);\n } else if (name.endsWith('Ids')) {\n base[name].forEach(function (id) {\n walkStats(stats, stats.get(id), resultSet);\n });\n }\n });\n}\n/* filter getStats for a sender/receiver track. */\n\n\nfunction filterStats(result, track, outbound) {\n var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp';\n var filteredResult = new Map();\n\n if (track === null) {\n return filteredResult;\n }\n\n var trackStats = [];\n result.forEach(function (value) {\n if (value.type === 'track' && value.trackIdentifier === track.id) {\n trackStats.push(value);\n }\n });\n trackStats.forEach(function (trackStat) {\n result.forEach(function (stats) {\n if (stats.type === streamStatsType && stats.trackId === trackStat.id) {\n walkStats(result, stats, filteredResult);\n }\n });\n });\n return filteredResult;\n}\n},{}],\"s6SN\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetUserMedia = shimGetUserMedia;\n\nvar utils = _interopRequireWildcard(require(\"../utils.js\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar logging = utils.log;\n\nfunction shimGetUserMedia(window) {\n var navigator = window && window.navigator;\n\n if (!navigator.mediaDevices) {\n return;\n }\n\n var browserDetails = utils.detectBrowser(window);\n\n var constraintsToChrome_ = function (c) {\n if (_typeof(c) !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n\n var cc = {};\n Object.keys(c).forEach(function (key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n\n var r = _typeof(c[key]) === 'object' ? c[key] : {\n ideal: c[key]\n };\n\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n\n var oldname_ = function (prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return name === 'deviceId' ? 'sourceId' : name;\n };\n\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function (mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n\n return cc;\n };\n\n var shimConstraints_ = function (constraints, func) {\n if (browserDetails.version >= 61) {\n return func(constraints);\n }\n\n constraints = JSON.parse(JSON.stringify(constraints));\n\n if (constraints && _typeof(constraints.audio) === 'object') {\n var remap = function (obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n constraints = JSON.parse(JSON.stringify(constraints));\n remap(constraints.audio, 'autoGainControl', 'googAutoGainControl');\n remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression');\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n\n if (constraints && _typeof(constraints.video) === 'object') {\n // Shim facingMode for mobile & surface pro.\n var face = constraints.video.facingMode;\n face = face && (_typeof(face) === 'object' ? face : {\n ideal: face\n });\n var getSupportedFacingModeLies = browserDetails.version < 66;\n\n if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) {\n delete constraints.video.facingMode;\n var matches;\n\n if (face.exact === 'environment' || face.ideal === 'environment') {\n matches = ['back', 'rear'];\n } else if (face.exact === 'user' || face.ideal === 'user') {\n matches = ['front'];\n }\n\n if (matches) {\n // Look for matches in label, or use last cam for back (typical).\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n devices = devices.filter(function (d) {\n return d.kind === 'videoinput';\n });\n var dev = devices.find(function (d) {\n return matches.some(function (match) {\n return d.label.toLowerCase().includes(match);\n });\n });\n\n if (!dev && devices.length && matches.includes('back')) {\n dev = devices[devices.length - 1]; // more likely the back cam\n }\n\n if (dev) {\n constraints.video.deviceId = face.exact ? {\n exact: dev.deviceId\n } : {\n ideal: dev.deviceId\n };\n }\n\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n\n constraints.video = constraintsToChrome_(constraints.video);\n }\n\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n var shimError_ = function (e) {\n if (browserDetails.version >= 64) {\n return e;\n }\n\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n PermissionDismissedError: 'NotAllowedError',\n InvalidStateError: 'NotAllowedError',\n DevicesNotFoundError: 'NotFoundError',\n ConstraintNotSatisfiedError: 'OverconstrainedError',\n TrackStartError: 'NotReadableError',\n MediaDeviceFailedDueToShutdown: 'NotAllowedError',\n MediaDeviceKillSwitchOn: 'NotAllowedError',\n TabCaptureError: 'AbortError',\n ScreenCaptureError: 'AbortError',\n DeviceCaptureError: 'AbortError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint || e.constraintName,\n toString: function () {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n var getUserMedia_ = function (constraints, onSuccess, onError) {\n shimConstraints_(constraints, function (c) {\n navigator.webkitGetUserMedia(c, onSuccess, function (e) {\n if (onError) {\n onError(shimError_(e));\n }\n });\n });\n };\n\n navigator.getUserMedia = getUserMedia_.bind(navigator); // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n\n if (navigator.mediaDevices.getUserMedia) {\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\n\n navigator.mediaDevices.getUserMedia = function (cs) {\n return shimConstraints_(cs, function (c) {\n return origGetUserMedia(c).then(function (stream) {\n if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) {\n stream.getTracks().forEach(function (track) {\n track.stop();\n });\n throw new DOMException('', 'NotFoundError');\n }\n\n return stream;\n }, function (e) {\n return Promise.reject(shimError_(e));\n });\n });\n };\n }\n}\n},{\"../utils.js\":\"iSxC\"}],\"VHa8\":[function(require,module,exports) {\n/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetDisplayMedia = shimGetDisplayMedia;\n\nfunction shimGetDisplayMedia(window, getSourceId) {\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n\n if (!window.navigator.mediaDevices) {\n return;\n } // getSourceId is a function that returns a promise resolving with\n // the sourceId of the screen/window/tab to be shared.\n\n\n if (typeof getSourceId !== 'function') {\n console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function');\n return;\n }\n\n window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) {\n return getSourceId(constraints).then(function (sourceId) {\n var widthSpecified = constraints.video && constraints.video.width;\n var heightSpecified = constraints.video && constraints.video.height;\n var frameRateSpecified = constraints.video && constraints.video.frameRate;\n constraints.video = {\n mandatory: {\n chromeMediaSource: 'desktop',\n chromeMediaSourceId: sourceId,\n maxFrameRate: frameRateSpecified || 3\n }\n };\n\n if (widthSpecified) {\n constraints.video.mandatory.maxWidth = widthSpecified;\n }\n\n if (heightSpecified) {\n constraints.video.mandatory.maxHeight = heightSpecified;\n }\n\n return window.navigator.mediaDevices.getUserMedia(constraints);\n });\n };\n}\n},{}],\"uI5X\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimMediaStream = shimMediaStream;\nexports.shimOnTrack = shimOnTrack;\nexports.shimGetSendersWithDtmf = shimGetSendersWithDtmf;\nexports.shimGetStats = shimGetStats;\nexports.shimSenderReceiverGetStats = shimSenderReceiverGetStats;\nexports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative;\nexports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack;\nexports.shimPeerConnection = shimPeerConnection;\nexports.fixNegotiationNeeded = fixNegotiationNeeded;\nObject.defineProperty(exports, \"shimGetUserMedia\", {\n enumerable: true,\n get: function () {\n return _getusermedia.shimGetUserMedia;\n }\n});\nObject.defineProperty(exports, \"shimGetDisplayMedia\", {\n enumerable: true,\n get: function () {\n return _getdisplaymedia.shimGetDisplayMedia;\n }\n});\n\nvar utils = _interopRequireWildcard(require(\"../utils.js\"));\n\nvar _getusermedia = require(\"./getusermedia\");\n\nvar _getdisplaymedia = require(\"./getdisplaymedia\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shimMediaStream(window) {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n}\n\nfunction shimOnTrack(window) {\n if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function () {\n return this._ontrack;\n },\n set: function (f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n }\n\n this.addEventListener('track', this._ontrack = f);\n },\n enumerable: true,\n configurable: true\n });\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\n\n window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() {\n var _this = this;\n\n if (!this._ontrackpoly) {\n this._ontrackpoly = function (e) {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', function (te) {\n var receiver;\n\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = _this.getReceivers().find(function (r) {\n return r.track && r.track.id === te.track.id;\n });\n } else {\n receiver = {\n track: te.track\n };\n }\n\n var event = new Event('track');\n event.track = te.track;\n event.receiver = receiver;\n event.transceiver = {\n receiver: receiver\n };\n event.streams = [e.stream];\n\n _this.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function (track) {\n var receiver;\n\n if (window.RTCPeerConnection.prototype.getReceivers) {\n receiver = _this.getReceivers().find(function (r) {\n return r.track && r.track.id === track.id;\n });\n } else {\n receiver = {\n track: track\n };\n }\n\n var event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.transceiver = {\n receiver: receiver\n };\n event.streams = [e.stream];\n\n _this.dispatchEvent(event);\n });\n };\n\n this.addEventListener('addstream', this._ontrackpoly);\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n } else {\n // even if RTCRtpTransceiver is in window, it is only used and\n // emitted in unified-plan. Unfortunately this means we need\n // to unconditionally wrap the event.\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\n if (!e.transceiver) {\n Object.defineProperty(e, 'transceiver', {\n value: {\n receiver: e.receiver\n }\n });\n }\n\n return e;\n });\n }\n}\n\nfunction shimGetSendersWithDtmf(window) {\n // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack.\n if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) {\n var shimSenderWithDtmf = function (pc, track) {\n return {\n track: track,\n\n get dtmf() {\n if (this._dtmf === undefined) {\n if (track.kind === 'audio') {\n this._dtmf = pc.createDTMFSender(track);\n } else {\n this._dtmf = null;\n }\n }\n\n return this._dtmf;\n },\n\n _pc: pc\n };\n }; // augment addTrack when getSenders is not available.\n\n\n if (!window.RTCPeerConnection.prototype.getSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n this._senders = this._senders || [];\n return this._senders.slice(); // return a copy of the internal state.\n };\n\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n\n window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) {\n var sender = origAddTrack.apply(this, arguments);\n\n if (!sender) {\n sender = shimSenderWithDtmf(this, track);\n\n this._senders.push(sender);\n }\n\n return sender;\n };\n\n var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n\n window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n origRemoveTrack.apply(this, arguments);\n\n var idx = this._senders.indexOf(sender);\n\n if (idx !== -1) {\n this._senders.splice(idx, 1);\n }\n };\n }\n\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\n\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n var _this2 = this;\n\n this._senders = this._senders || [];\n origAddStream.apply(this, [stream]);\n stream.getTracks().forEach(function (track) {\n _this2._senders.push(shimSenderWithDtmf(_this2, track));\n });\n };\n\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n\n window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) {\n var _this3 = this;\n\n this._senders = this._senders || [];\n origRemoveStream.apply(this, [stream]);\n stream.getTracks().forEach(function (track) {\n var sender = _this3._senders.find(function (s) {\n return s.track === track;\n });\n\n if (sender) {\n // remove sender\n _this3._senders.splice(_this3._senders.indexOf(sender), 1);\n }\n });\n };\n } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n var _this4 = this;\n\n var senders = origGetSenders.apply(this, []);\n senders.forEach(function (sender) {\n return sender._pc = _this4;\n });\n return senders;\n };\n\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get: function () {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = this._pc.createDTMFSender(this.track);\n } else {\n this._dtmf = null;\n }\n }\n\n return this._dtmf;\n }\n });\n }\n}\n\nfunction shimGetStats(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n var origGetStats = window.RTCPeerConnection.prototype.getStats;\n\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n var _this5 = this;\n\n var [selector, onSucc, onErr] = arguments; // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats.apply(this, arguments);\n } // When spec-style getStats is supported, return those when called with\n // either no arguments or the selector argument is null.\n\n\n if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) {\n return origGetStats.apply(this, []);\n }\n\n var fixChromeStats_ = function (response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function (report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: {\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[report.type] || report.type\n };\n report.names().forEach(function (name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n return standardReport;\n }; // shim getStats with maplike support\n\n\n var makeMapStats = function (stats) {\n return new Map(Object.keys(stats).map(function (key) {\n return [key, stats[key]];\n }));\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function (response) {\n onSucc(makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_, selector]);\n } // promise-support\n\n\n return new Promise(function (resolve, reject) {\n origGetStats.apply(_this5, [function (response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n }).then(onSucc, onErr);\n };\n}\n\nfunction shimSenderReceiverGetStats(window) {\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) {\n return;\n } // shim sender stats.\n\n\n if (!('getStats' in window.RTCRtpSender.prototype)) {\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n var _this6 = this;\n\n var senders = origGetSenders.apply(this, []);\n senders.forEach(function (sender) {\n return sender._pc = _this6;\n });\n return senders;\n };\n }\n\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n var sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n\n window.RTCRtpSender.prototype.getStats = function getStats() {\n var sender = this;\n return this._pc.getStats().then(function (result) {\n return (\n /* Note: this will include stats of all senders that\n * send a track with the same id as sender.track as\n * it is not possible to identify the RTCRtpSender.\n */\n utils.filterStats(result, sender.track, true)\n );\n });\n };\n } // shim receiver stats.\n\n\n if (!('getStats' in window.RTCRtpReceiver.prototype)) {\n var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n var _this7 = this;\n\n var receivers = origGetReceivers.apply(this, []);\n receivers.forEach(function (receiver) {\n return receiver._pc = _this7;\n });\n return receivers;\n };\n }\n\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\n e.receiver._pc = e.srcElement;\n return e;\n });\n\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n var receiver = this;\n return this._pc.getStats().then(function (result) {\n return utils.filterStats(result, receiver.track, false);\n });\n };\n }\n\n if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) {\n return;\n } // shim RTCPeerConnection.getStats(track).\n\n\n var origGetStats = window.RTCPeerConnection.prototype.getStats;\n\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) {\n var track = arguments[0];\n var sender;\n var receiver;\n var err;\n this.getSenders().forEach(function (s) {\n if (s.track === track) {\n if (sender) {\n err = true;\n } else {\n sender = s;\n }\n }\n });\n this.getReceivers().forEach(function (r) {\n if (r.track === track) {\n if (receiver) {\n err = true;\n } else {\n receiver = r;\n }\n }\n\n return r.track === track;\n });\n\n if (err || sender && receiver) {\n return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError'));\n } else if (sender) {\n return sender.getStats();\n } else if (receiver) {\n return receiver.getStats();\n }\n\n return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError'));\n }\n\n return origGetStats.apply(this, arguments);\n };\n}\n\nfunction shimAddTrackRemoveTrackWithNative(window) {\n // shim addTrack/removeTrack with native variants in order to make\n // the interactions with legacy getLocalStreams behave as in other browsers.\n // Keeps a mapping stream.id => [stream, rtpsenders...]\n window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() {\n var _this8 = this;\n\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n return Object.keys(this._shimmedLocalStreams).map(function (streamId) {\n return _this8._shimmedLocalStreams[streamId][0];\n });\n };\n\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n\n window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) {\n if (!stream) {\n return origAddTrack.apply(this, arguments);\n }\n\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n var sender = origAddTrack.apply(this, arguments);\n\n if (!this._shimmedLocalStreams[stream.id]) {\n this._shimmedLocalStreams[stream.id] = [stream, sender];\n } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) {\n this._shimmedLocalStreams[stream.id].push(sender);\n }\n\n return sender;\n };\n\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\n\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n var _this9 = this;\n\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n stream.getTracks().forEach(function (track) {\n var alreadyExists = _this9.getSenders().find(function (s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw new DOMException('Track already exists.', 'InvalidAccessError');\n }\n });\n var existingSenders = this.getSenders();\n origAddStream.apply(this, arguments);\n var newSenders = this.getSenders().filter(function (newSender) {\n return existingSenders.indexOf(newSender) === -1;\n });\n this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders);\n };\n\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n\n window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) {\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n delete this._shimmedLocalStreams[stream.id];\n return origRemoveStream.apply(this, arguments);\n };\n\n var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack;\n\n window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n var _this10 = this;\n\n this._shimmedLocalStreams = this._shimmedLocalStreams || {};\n\n if (sender) {\n Object.keys(this._shimmedLocalStreams).forEach(function (streamId) {\n var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender);\n\n if (idx !== -1) {\n _this10._shimmedLocalStreams[streamId].splice(idx, 1);\n }\n\n if (_this10._shimmedLocalStreams[streamId].length === 1) {\n delete _this10._shimmedLocalStreams[streamId];\n }\n });\n }\n\n return origRemoveTrack.apply(this, arguments);\n };\n}\n\nfunction shimAddTrackRemoveTrack(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n var browserDetails = utils.detectBrowser(window); // shim addTrack and removeTrack.\n\n if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) {\n return shimAddTrackRemoveTrackWithNative(window);\n } // also shim pc.getLocalStreams when addTrack is shimmed\n // to return the original streams.\n\n\n var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams;\n\n window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() {\n var _this11 = this;\n\n var nativeStreams = origGetLocalStreams.apply(this);\n this._reverseStreams = this._reverseStreams || {};\n return nativeStreams.map(function (stream) {\n return _this11._reverseStreams[stream.id];\n });\n };\n\n var origAddStream = window.RTCPeerConnection.prototype.addStream;\n\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n var _this12 = this;\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n stream.getTracks().forEach(function (track) {\n var alreadyExists = _this12.getSenders().find(function (s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw new DOMException('Track already exists.', 'InvalidAccessError');\n }\n }); // Add identity mapping for consistency with addTrack.\n // Unless this is being used with a stream from addTrack.\n\n if (!this._reverseStreams[stream.id]) {\n var newStream = new window.MediaStream(stream.getTracks());\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n stream = newStream;\n }\n\n origAddStream.apply(this, [stream]);\n };\n\n var origRemoveStream = window.RTCPeerConnection.prototype.removeStream;\n\n window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) {\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n origRemoveStream.apply(this, [this._streams[stream.id] || stream]);\n delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id];\n delete this._streams[stream.id];\n };\n\n window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) {\n var _this13 = this;\n\n if (this.signalingState === 'closed') {\n throw new DOMException('The RTCPeerConnection\\'s signalingState is \\'closed\\'.', 'InvalidStateError');\n }\n\n var streams = [].slice.call(arguments, 1);\n\n if (streams.length !== 1 || !streams[0].getTracks().find(function (t) {\n return t === track;\n })) {\n // this is not fully correct but all we can manage without\n // [[associated MediaStreams]] internal slot.\n throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError');\n }\n\n var alreadyExists = this.getSenders().find(function (s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw new DOMException('Track already exists.', 'InvalidAccessError');\n }\n\n this._streams = this._streams || {};\n this._reverseStreams = this._reverseStreams || {};\n var oldStream = this._streams[stream.id];\n\n if (oldStream) {\n // this is using odd Chrome behaviour, use with caution:\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815\n // Note: we rely on the high-level addTrack/dtmf shim to\n // create the sender with a dtmf sender.\n oldStream.addTrack(track); // Trigger ONN async.\n\n Promise.resolve().then(function () {\n _this13.dispatchEvent(new Event('negotiationneeded'));\n });\n } else {\n var newStream = new window.MediaStream([track]);\n this._streams[stream.id] = newStream;\n this._reverseStreams[newStream.id] = stream;\n this.addStream(newStream);\n }\n\n return this.getSenders().find(function (s) {\n return s.track === track;\n });\n }; // replace the internal stream id with the external one and\n // vice versa.\n\n\n function replaceInternalStreamId(pc, description) {\n var sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(function (internalId) {\n var externalStream = pc._reverseStreams[internalId];\n var internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp: sdp\n });\n }\n\n function replaceExternalStreamId(pc, description) {\n var sdp = description.sdp;\n Object.keys(pc._reverseStreams || []).forEach(function (internalId) {\n var externalStream = pc._reverseStreams[internalId];\n var internalStream = pc._streams[externalStream.id];\n sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id);\n });\n return new RTCSessionDescription({\n type: description.type,\n sdp: sdp\n });\n }\n\n ['createOffer', 'createAnswer'].forEach(function (method) {\n var nativeMethod = window.RTCPeerConnection.prototype[method];\n\n var methodObj = _defineProperty({}, method, function () {\n var _this14 = this;\n\n var args = arguments;\n var isLegacyCall = arguments.length && typeof arguments[0] === 'function';\n\n if (isLegacyCall) {\n return nativeMethod.apply(this, [function (description) {\n var desc = replaceInternalStreamId(_this14, description);\n args[0].apply(null, [desc]);\n }, function (err) {\n if (args[1]) {\n args[1].apply(null, err);\n }\n }, arguments[2]]);\n }\n\n return nativeMethod.apply(this, arguments).then(function (description) {\n return replaceInternalStreamId(_this14, description);\n });\n });\n\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription;\n\n window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() {\n if (!arguments.length || !arguments[0].type) {\n return origSetLocalDescription.apply(this, arguments);\n }\n\n arguments[0] = replaceExternalStreamId(this, arguments[0]);\n return origSetLocalDescription.apply(this, arguments);\n }; // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier\n\n\n var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription');\n Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', {\n get: function () {\n var description = origLocalDescription.get.apply(this);\n\n if (description.type === '') {\n return description;\n }\n\n return replaceInternalStreamId(this, description);\n }\n });\n\n window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n var _this15 = this;\n\n if (this.signalingState === 'closed') {\n throw new DOMException('The RTCPeerConnection\\'s signalingState is \\'closed\\'.', 'InvalidStateError');\n } // We can not yet check for sender instanceof RTCRtpSender\n // since we shim RTPSender. So we check if sender._pc is set.\n\n\n if (!sender._pc) {\n throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError');\n }\n\n var isLocal = sender._pc === this;\n\n if (!isLocal) {\n throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError');\n } // Search for the native stream the senders track belongs to.\n\n\n this._streams = this._streams || {};\n var stream;\n Object.keys(this._streams).forEach(function (streamid) {\n var hasTrack = _this15._streams[streamid].getTracks().find(function (track) {\n return sender.track === track;\n });\n\n if (hasTrack) {\n stream = _this15._streams[streamid];\n }\n });\n\n if (stream) {\n if (stream.getTracks().length === 1) {\n // if this is the last track of the stream, remove the stream. This\n // takes care of any shimmed _senders.\n this.removeStream(this._reverseStreams[stream.id]);\n } else {\n // relying on the same odd chrome behaviour as above.\n stream.removeTrack(sender.track);\n }\n\n this.dispatchEvent(new Event('negotiationneeded'));\n }\n };\n}\n\nfunction shimPeerConnection(window) {\n var browserDetails = utils.detectBrowser(window);\n\n if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.webkitRTCPeerConnection;\n }\n\n if (!window.RTCPeerConnection) {\n return;\n } // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n\n\n if (browserDetails.version < 53) {\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) {\n var nativeMethod = window.RTCPeerConnection.prototype[method];\n\n var methodObj = _defineProperty({}, method, function () {\n arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n });\n\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n } // support for addIceCandidate(null or undefined)\n\n\n var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate;\n\n window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n\n return Promise.resolve();\n } // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions. Native support planned for Chrome M77.\n\n\n if (browserDetails.version < 78 && arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n\n return nativeAddIceCandidate.apply(this, arguments);\n };\n}\n\nfunction fixNegotiationNeeded(window) {\n utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) {\n var pc = e.target;\n\n if (pc.signalingState !== 'stable') {\n return;\n }\n\n return e;\n });\n}\n},{\"../utils.js\":\"iSxC\",\"./getusermedia\":\"s6SN\",\"./getdisplaymedia\":\"VHa8\"}],\"NZ1C\":[function(require,module,exports) {\n/*\n * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filterIceServers = filterIceServers;\n\nvar utils = _interopRequireWildcard(require(\"../utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n// Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\nfunction filterIceServers(iceServers, edgeVersion) {\n var hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(function (server) {\n if (server && (server.urls || server.url)) {\n var urls = server.urls || server.url;\n\n if (server.url && !server.urls) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n }\n\n var isString = typeof urls === 'string';\n\n if (isString) {\n urls = [urls];\n }\n\n urls = urls.filter(function (url) {\n // filter STUN unconditionally.\n if (url.indexOf('stun:') === 0) {\n return false;\n }\n\n var validTurn = url.startsWith('turn') && !url.startsWith('turn:[') && url.includes('transport=udp');\n\n if (validTurn && !hasTurn) {\n hasTurn = true;\n return true;\n }\n\n return validTurn && !hasTurn;\n });\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n}\n},{\"../utils\":\"iSxC\"}],\"YHvh\":[function(require,module,exports) {\n/* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// returns the session description.\nSDPUtils.getDescription = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parseInt(parts[1], 10),\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compability.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag\n candidate[parts[i]] = parts[i + 1];\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n var channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n if (codec.parameters[param]) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\nSDPUtils.parseSsrcGroup = function(line) {\n var parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(function(ssrc) {\n return parseInt(ssrc, 10);\n })\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\nSDPUtils.parseFingerprint = function(line) {\n var parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1]\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role.\n // Note2: 'algorithm' is not case sensitive except in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint)\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp:<pt> is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n var maxptime = 0;\n caps.codecs.forEach(function(codec) {\n if (codec.maxptime > maxptime) {\n maxptime = codec.maxptime;\n }\n });\n if (maxptime > 0) {\n sdp += 'a=maxptime:' + maxptime + '\\r\\n';\n }\n sdp += 'a=rtcp-mux\\r\\n';\n\n if (caps.headerExtensions) {\n caps.headerExtensions.forEach(function(extension) {\n sdp += SDPUtils.writeExtmap(extension);\n });\n }\n // FIXME: write fecMechanisms.\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.substr(17).split(' ');\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10)\n };\n if (primarySsrc && secondarySsrc) {\n encParam.rtx = {ssrc: secondarySsrc};\n }\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: primarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n // use formula from JSEP to convert b=AS to TIAS value.\n bandwidth = parseInt(bandwidth[0].substr(5), 10) * 1000 * 0.95\n - (50 * 40 * 8);\n } else {\n bandwidth = undefined;\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\n// parses http://draft.ortc.org/#rtcrtcpparameters*\nSDPUtils.parseRtcpParameters = function(mediaSection) {\n var rtcpParameters = {};\n\n // Gets the first SSRC. Note tha with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n rtcpParameters.cname = remoteSsrc.value;\n rtcpParameters.ssrc = remoteSsrc.ssrc;\n }\n\n // Edge uses the compound attribute instead of reducedSize\n // compound is !reducedSize\n var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize');\n rtcpParameters.reducedSize = rsize.length > 0;\n rtcpParameters.compound = rsize.length === 0;\n\n // parses the rtcp-mux attrіbute.\n // Note that Edge does not support unmuxed RTCP.\n var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux');\n rtcpParameters.mux = mux.length > 0;\n\n return rtcpParameters;\n};\n\n// parses either a=msid: or a=ssrc:... msid lines and returns\n// the id of the MediaStream and MediaStreamTrack.\nSDPUtils.parseMsid = function(mediaSection) {\n var parts;\n var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:');\n if (spec.length === 1) {\n parts = spec[0].substr(7).split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(msidParts) {\n return msidParts.attribute === 'msid';\n });\n if (planB.length > 0) {\n parts = planB[0].value.split(' ');\n return {stream: parts[0], track: parts[1]};\n }\n};\n\n// SCTP\n// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back\n// to draft-ietf-mmusic-sctp-sdp-05\nSDPUtils.parseSctpDescription = function(mediaSection) {\n var mline = SDPUtils.parseMLine(mediaSection);\n var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:');\n var maxMessageSize;\n if (maxSizeLine.length > 0) {\n maxMessageSize = parseInt(maxSizeLine[0].substr(19), 10);\n }\n if (isNaN(maxMessageSize)) {\n maxMessageSize = 65536;\n }\n var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:');\n if (sctpPort.length > 0) {\n return {\n port: parseInt(sctpPort[0].substr(12), 10),\n protocol: mline.fmt,\n maxMessageSize: maxMessageSize\n };\n }\n var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:');\n if (sctpMapLines.length > 0) {\n var parts = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:')[0]\n .substr(10)\n .split(' ');\n return {\n port: parseInt(parts[0], 10),\n protocol: parts[1],\n maxMessageSize: maxMessageSize\n };\n }\n};\n\n// SCTP\n// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers\n// support by now receiving in this format, unless we originally parsed\n// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line\n// protocol of DTLS/SCTP -- without UDP/ or TCP/)\nSDPUtils.writeSctpDescription = function(media, sctp) {\n var output = [];\n if (media.protocol !== 'DTLS/SCTP') {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctp-port:' + sctp.port + '\\r\\n'\n ];\n } else {\n output = [\n 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\\r\\n',\n 'c=IN IP4 0.0.0.0\\r\\n',\n 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\\r\\n'\n ];\n }\n if (sctp.maxMessageSize !== undefined) {\n output.push('a=max-message-size:' + sctp.maxMessageSize + '\\r\\n');\n }\n return output.join('');\n};\n\n// Generate a session ID for SDP.\n// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1\n// recommends using a cryptographically random +ve 64-bit value\n// but right now this should be acceptable and within the right range\nSDPUtils.generateSessionId = function() {\n return Math.random().toString().substr(2, 21);\n};\n\n// Write boilder plate for start of SDP\n// sessId argument is optional - if not supplied it will\n// be generated randomly\n// sessVersion is optional and defaults to 2\n// sessUser is optional and defaults to 'thisisadapterortc'\nSDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) {\n var sessionId;\n var version = sessVer !== undefined ? sessVer : 2;\n if (sessId) {\n sessionId = sessId;\n } else {\n sessionId = SDPUtils.generateSessionId();\n }\n var user = sessUser || 'thisisadapterortc';\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=' + user + ' ' + sessionId + ' ' + version +\n ' IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.direction) {\n sdp += 'a=' + transceiver.direction + '\\r\\n';\n } else if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n // spec.\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n\n // for Chrome.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' ' + msid;\n sdp += 'a=ssrc-group:FID ' +\n transceiver.sendEncodingParameters[0].ssrc + ' ' +\n transceiver.sendEncodingParameters[0].rtx.ssrc +\n '\\r\\n';\n }\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\nSDPUtils.getKind = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n return mline[0].substr(2);\n};\n\nSDPUtils.isRejected = function(mediaSection) {\n return mediaSection.split(' ', 2)[1] === '0';\n};\n\nSDPUtils.parseMLine = function(mediaSection) {\n var lines = SDPUtils.splitLines(mediaSection);\n var parts = lines[0].substr(2).split(' ');\n return {\n kind: parts[0],\n port: parseInt(parts[1], 10),\n protocol: parts[2],\n fmt: parts.slice(3).join(' ')\n };\n};\n\nSDPUtils.parseOLine = function(mediaSection) {\n var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0];\n var parts = line.substr(2).split(' ');\n return {\n username: parts[0],\n sessionId: parts[1],\n sessionVersion: parseInt(parts[2], 10),\n netType: parts[3],\n addressType: parts[4],\n address: parts[5]\n };\n};\n\n// a very naive interpretation of a valid SDP.\nSDPUtils.isValidSDP = function(blob) {\n if (typeof blob !== 'string' || blob.length === 0) {\n return false;\n }\n var lines = SDPUtils.splitLines(blob);\n for (var i = 0; i < lines.length; i++) {\n if (lines[i].length < 2 || lines[i].charAt(1) !== '=') {\n return false;\n }\n // TODO: check the modifier a bit more.\n }\n return true;\n};\n\n// Expose public methods.\nif (typeof module === 'object') {\n module.exports = SDPUtils;\n}\n\n},{}],\"NJ2u\":[function(require,module,exports) {\n/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\n\nfunction fixStatsType(stat) {\n return {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n }[stat.type] || stat.type;\n}\n\nfunction writeMediaSection(transceiver, caps, type, stream, dtlsRole) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps); // Map ICE parameters (ufrag, pwd) to SDP.\n\n sdp += SDPUtils.writeIceParameters(transceiver.iceGatherer.getLocalParameters()); // Map DTLS parameters to SDP.\n\n sdp += SDPUtils.writeDtlsParameters(transceiver.dtlsTransport.getLocalParameters(), type === 'offer' ? 'actpass' : dtlsRole || 'active');\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n if (transceiver.rtpSender) {\n var trackId = transceiver.rtpSender._initialTrackId || transceiver.rtpSender.track.id;\n transceiver.rtpSender._initialTrackId = trackId; // spec.\n\n var msid = 'msid:' + (stream ? stream.id : '-') + ' ' + trackId + '\\r\\n';\n sdp += 'a=' + msid; // for Chrome. Legacy should no longer be required.\n\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + ' ' + msid; // RTX\n\n if (transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + ' ' + msid;\n sdp += 'a=ssrc-group:FID ' + transceiver.sendEncodingParameters[0].ssrc + ' ' + transceiver.sendEncodingParameters[0].rtx.ssrc + '\\r\\n';\n }\n } // FIXME: this should be written by writeRtpDescription.\n\n\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + ' cname:' + SDPUtils.localCName + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.sendEncodingParameters[0].rtx) {\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].rtx.ssrc + ' cname:' + SDPUtils.localCName + '\\r\\n';\n }\n\n return sdp;\n} // Edge does not like\n// 1) stun: filtered after 14393 unless ?transport=udp is present\n// 2) turn: that does not have all of turn:host:port?transport=udp\n// 3) turn: with ipv6 addresses\n// 4) turn: occurring muliple times\n\n\nfunction filterIceServers(iceServers, edgeVersion) {\n var hasTurn = false;\n iceServers = JSON.parse(JSON.stringify(iceServers));\n return iceServers.filter(function (server) {\n if (server && (server.urls || server.url)) {\n var urls = server.urls || server.url;\n\n if (server.url && !server.urls) {\n console.warn('RTCIceServer.url is deprecated! Use urls instead.');\n }\n\n var isString = typeof urls === 'string';\n\n if (isString) {\n urls = [urls];\n }\n\n urls = urls.filter(function (url) {\n var validTurn = url.indexOf('turn:') === 0 && url.indexOf('transport=udp') !== -1 && url.indexOf('turn:[') === -1 && !hasTurn;\n\n if (validTurn) {\n hasTurn = true;\n return true;\n }\n\n return url.indexOf('stun:') === 0 && edgeVersion >= 14393 && url.indexOf('?transport=udp') === -1;\n });\n delete server.url;\n server.urls = isString ? urls[0] : urls;\n return !!urls.length;\n }\n });\n} // Determines the intersection of local and remote capabilities.\n\n\nfunction getCommonCapabilities(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n\n var findCodecByPayloadType = function (pt, codecs) {\n pt = parseInt(pt, 10);\n\n for (var i = 0; i < codecs.length; i++) {\n if (codecs[i].payloadType === pt || codecs[i].preferredPayloadType === pt) {\n return codecs[i];\n }\n }\n };\n\n var rtxCapabilityMatches = function (lRtx, rRtx, lCodecs, rCodecs) {\n var lCodec = findCodecByPayloadType(lRtx.parameters.apt, lCodecs);\n var rCodec = findCodecByPayloadType(rRtx.parameters.apt, rCodecs);\n return lCodec && rCodec && lCodec.name.toLowerCase() === rCodec.name.toLowerCase();\n };\n\n localCapabilities.codecs.forEach(function (lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() && lCodec.clockRate === rCodec.clockRate) {\n if (lCodec.name.toLowerCase() === 'rtx' && lCodec.parameters && rCodec.parameters.apt) {\n // for RTX we need to find the local rtx that has a apt\n // which points to the same local codec as the remote one.\n if (!rtxCapabilityMatches(lCodec, rCodec, localCapabilities.codecs, remoteCapabilities.codecs)) {\n continue;\n }\n }\n\n rCodec = JSON.parse(JSON.stringify(rCodec)); // deepcopy\n // number of channels is the highest common number of channels\n\n rCodec.numChannels = Math.min(lCodec.numChannels, rCodec.numChannels); // push rCodec so we reply with offerer payload type\n\n commonCapabilities.codecs.push(rCodec); // determine common feedback mechanisms\n\n rCodec.rtcpFeedback = rCodec.rtcpFeedback.filter(function (fb) {\n for (var j = 0; j < lCodec.rtcpFeedback.length; j++) {\n if (lCodec.rtcpFeedback[j].type === fb.type && lCodec.rtcpFeedback[j].parameter === fb.parameter) {\n return true;\n }\n }\n\n return false;\n }); // FIXME: also need to determine .parameters\n // see https://github.com/openpeer/ortc/issues/569\n\n break;\n }\n }\n });\n localCapabilities.headerExtensions.forEach(function (lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length; i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n }); // FIXME: fecMechanisms\n\n return commonCapabilities;\n} // is action=setLocalDescription with type allowed in signalingState\n\n\nfunction isActionAllowedInSignalingState(action, type, signalingState) {\n return {\n offer: {\n setLocalDescription: ['stable', 'have-local-offer'],\n setRemoteDescription: ['stable', 'have-remote-offer']\n },\n answer: {\n setLocalDescription: ['have-remote-offer', 'have-local-pranswer'],\n setRemoteDescription: ['have-local-offer', 'have-remote-pranswer']\n }\n }[type][action].indexOf(signalingState) !== -1;\n}\n\nfunction maybeAddCandidate(iceTransport, candidate) {\n // Edge's internal representation adds some fields therefore\n // not all fieldѕ are taken into account.\n var alreadyAdded = iceTransport.getRemoteCandidates().find(function (remoteCandidate) {\n return candidate.foundation === remoteCandidate.foundation && candidate.ip === remoteCandidate.ip && candidate.port === remoteCandidate.port && candidate.priority === remoteCandidate.priority && candidate.protocol === remoteCandidate.protocol && candidate.type === remoteCandidate.type;\n });\n\n if (!alreadyAdded) {\n iceTransport.addRemoteCandidate(candidate);\n }\n\n return !alreadyAdded;\n}\n\nfunction makeError(name, description) {\n var e = new Error(description);\n e.name = name; // legacy error codes from https://heycam.github.io/webidl/#idl-DOMException-error-names\n\n e.code = {\n NotSupportedError: 9,\n InvalidStateError: 11,\n InvalidAccessError: 15,\n TypeError: undefined,\n OperationError: undefined\n }[name];\n return e;\n}\n\nmodule.exports = function (window, edgeVersion) {\n // https://w3c.github.io/mediacapture-main/#mediastream\n // Helper function to add the track to the stream and\n // dispatch the event ourselves.\n function addTrackToStreamAndFireEvent(track, stream) {\n stream.addTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('addtrack', {\n track: track\n }));\n }\n\n function removeTrackFromStreamAndFireEvent(track, stream) {\n stream.removeTrack(track);\n stream.dispatchEvent(new window.MediaStreamTrackEvent('removetrack', {\n track: track\n }));\n }\n\n function fireAddTrack(pc, track, receiver, streams) {\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.transceiver = {\n receiver: receiver\n };\n trackEvent.streams = streams;\n window.setTimeout(function () {\n pc._dispatchEvent('track', trackEvent);\n });\n }\n\n var RTCPeerConnection = function (config) {\n var pc = this;\n\n var _eventTarget = document.createDocumentFragment();\n\n ['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach(function (method) {\n pc[method] = _eventTarget[method].bind(_eventTarget);\n });\n this.canTrickleIceCandidates = null;\n this.needNegotiation = false;\n this.localStreams = [];\n this.remoteStreams = [];\n this._localDescription = null;\n this._remoteDescription = null;\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.connectionState = 'new';\n this.iceGatheringState = 'new';\n config = JSON.parse(JSON.stringify(config || {}));\n this.usingBundle = config.bundlePolicy === 'max-bundle';\n\n if (config.rtcpMuxPolicy === 'negotiate') {\n throw makeError('NotSupportedError', 'rtcpMuxPolicy \\'negotiate\\' is not supported');\n } else if (!config.rtcpMuxPolicy) {\n config.rtcpMuxPolicy = 'require';\n }\n\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n break;\n\n default:\n config.iceTransportPolicy = 'all';\n break;\n }\n\n switch (config.bundlePolicy) {\n case 'balanced':\n case 'max-compat':\n case 'max-bundle':\n break;\n\n default:\n config.bundlePolicy = 'balanced';\n break;\n }\n\n config.iceServers = filterIceServers(config.iceServers || [], edgeVersion);\n this._iceGatherers = [];\n\n if (config.iceCandidatePoolSize) {\n for (var i = config.iceCandidatePoolSize; i > 0; i--) {\n this._iceGatherers.push(new window.RTCIceGatherer({\n iceServers: config.iceServers,\n gatherPolicy: config.iceTransportPolicy\n }));\n }\n } else {\n config.iceCandidatePoolSize = 0;\n }\n\n this._config = config; // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n\n this.transceivers = [];\n this._sdpSessionId = SDPUtils.generateSessionId();\n this._sdpSessionVersion = 0;\n this._dtlsRole = undefined; // role for a=setup to use in answers.\n\n this._isClosed = false;\n };\n\n Object.defineProperty(RTCPeerConnection.prototype, 'localDescription', {\n configurable: true,\n get: function () {\n return this._localDescription;\n }\n });\n Object.defineProperty(RTCPeerConnection.prototype, 'remoteDescription', {\n configurable: true,\n get: function () {\n return this._remoteDescription;\n }\n }); // set up event handlers on prototype\n\n RTCPeerConnection.prototype.onicecandidate = null;\n RTCPeerConnection.prototype.onaddstream = null;\n RTCPeerConnection.prototype.ontrack = null;\n RTCPeerConnection.prototype.onremovestream = null;\n RTCPeerConnection.prototype.onsignalingstatechange = null;\n RTCPeerConnection.prototype.oniceconnectionstatechange = null;\n RTCPeerConnection.prototype.onconnectionstatechange = null;\n RTCPeerConnection.prototype.onicegatheringstatechange = null;\n RTCPeerConnection.prototype.onnegotiationneeded = null;\n RTCPeerConnection.prototype.ondatachannel = null;\n\n RTCPeerConnection.prototype._dispatchEvent = function (name, event) {\n if (this._isClosed) {\n return;\n }\n\n this.dispatchEvent(event);\n\n if (typeof this['on' + name] === 'function') {\n this['on' + name](event);\n }\n };\n\n RTCPeerConnection.prototype._emitGatheringStateChange = function () {\n var event = new Event('icegatheringstatechange');\n\n this._dispatchEvent('icegatheringstatechange', event);\n };\n\n RTCPeerConnection.prototype.getConfiguration = function () {\n return this._config;\n };\n\n RTCPeerConnection.prototype.getLocalStreams = function () {\n return this.localStreams;\n };\n\n RTCPeerConnection.prototype.getRemoteStreams = function () {\n return this.remoteStreams;\n }; // internal helper to create a transceiver object.\n // (which is not yet the same as the WebRTC 1.0 transceiver)\n\n\n RTCPeerConnection.prototype._createTransceiver = function (kind, doNotAdd) {\n var hasBundleTransport = this.transceivers.length > 0;\n var transceiver = {\n track: null,\n iceGatherer: null,\n iceTransport: null,\n dtlsTransport: null,\n localCapabilities: null,\n remoteCapabilities: null,\n rtpSender: null,\n rtpReceiver: null,\n kind: kind,\n mid: null,\n sendEncodingParameters: null,\n recvEncodingParameters: null,\n stream: null,\n associatedRemoteMediaStreams: [],\n wantReceive: true\n };\n\n if (this.usingBundle && hasBundleTransport) {\n transceiver.iceTransport = this.transceivers[0].iceTransport;\n transceiver.dtlsTransport = this.transceivers[0].dtlsTransport;\n } else {\n var transports = this._createIceAndDtlsTransports();\n\n transceiver.iceTransport = transports.iceTransport;\n transceiver.dtlsTransport = transports.dtlsTransport;\n }\n\n if (!doNotAdd) {\n this.transceivers.push(transceiver);\n }\n\n return transceiver;\n };\n\n RTCPeerConnection.prototype.addTrack = function (track, stream) {\n if (this._isClosed) {\n throw makeError('InvalidStateError', 'Attempted to call addTrack on a closed peerconnection.');\n }\n\n var alreadyExists = this.transceivers.find(function (s) {\n return s.track === track;\n });\n\n if (alreadyExists) {\n throw makeError('InvalidAccessError', 'Track already exists.');\n }\n\n var transceiver;\n\n for (var i = 0; i < this.transceivers.length; i++) {\n if (!this.transceivers[i].track && this.transceivers[i].kind === track.kind) {\n transceiver = this.transceivers[i];\n }\n }\n\n if (!transceiver) {\n transceiver = this._createTransceiver(track.kind);\n }\n\n this._maybeFireNegotiationNeeded();\n\n if (this.localStreams.indexOf(stream) === -1) {\n this.localStreams.push(stream);\n }\n\n transceiver.track = track;\n transceiver.stream = stream;\n transceiver.rtpSender = new window.RTCRtpSender(track, transceiver.dtlsTransport);\n return transceiver.rtpSender;\n };\n\n RTCPeerConnection.prototype.addStream = function (stream) {\n var pc = this;\n\n if (edgeVersion >= 15025) {\n stream.getTracks().forEach(function (track) {\n pc.addTrack(track, stream);\n });\n } else {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n // Fixed in 15025 (or earlier)\n var clonedStream = stream.clone();\n stream.getTracks().forEach(function (track, idx) {\n var clonedTrack = clonedStream.getTracks()[idx];\n track.addEventListener('enabled', function (event) {\n clonedTrack.enabled = event.enabled;\n });\n });\n clonedStream.getTracks().forEach(function (track) {\n pc.addTrack(track, clonedStream);\n });\n }\n };\n\n RTCPeerConnection.prototype.removeTrack = function (sender) {\n if (this._isClosed) {\n throw makeError('InvalidStateError', 'Attempted to call removeTrack on a closed peerconnection.');\n }\n\n if (!(sender instanceof window.RTCRtpSender)) {\n throw new TypeError('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.');\n }\n\n var transceiver = this.transceivers.find(function (t) {\n return t.rtpSender === sender;\n });\n\n if (!transceiver) {\n throw makeError('InvalidAccessError', 'Sender was not created by this connection.');\n }\n\n var stream = transceiver.stream;\n transceiver.rtpSender.stop();\n transceiver.rtpSender = null;\n transceiver.track = null;\n transceiver.stream = null; // remove the stream from the set of local streams\n\n var localStreams = this.transceivers.map(function (t) {\n return t.stream;\n });\n\n if (localStreams.indexOf(stream) === -1 && this.localStreams.indexOf(stream) > -1) {\n this.localStreams.splice(this.localStreams.indexOf(stream), 1);\n }\n\n this._maybeFireNegotiationNeeded();\n };\n\n RTCPeerConnection.prototype.removeStream = function (stream) {\n var pc = this;\n stream.getTracks().forEach(function (track) {\n var sender = pc.getSenders().find(function (s) {\n return s.track === track;\n });\n\n if (sender) {\n pc.removeTrack(sender);\n }\n });\n };\n\n RTCPeerConnection.prototype.getSenders = function () {\n return this.transceivers.filter(function (transceiver) {\n return !!transceiver.rtpSender;\n }).map(function (transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n RTCPeerConnection.prototype.getReceivers = function () {\n return this.transceivers.filter(function (transceiver) {\n return !!transceiver.rtpReceiver;\n }).map(function (transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n RTCPeerConnection.prototype._createIceGatherer = function (sdpMLineIndex, usingBundle) {\n var pc = this;\n\n if (usingBundle && sdpMLineIndex > 0) {\n return this.transceivers[0].iceGatherer;\n } else if (this._iceGatherers.length) {\n return this._iceGatherers.shift();\n }\n\n var iceGatherer = new window.RTCIceGatherer({\n iceServers: this._config.iceServers,\n gatherPolicy: this._config.iceTransportPolicy\n });\n Object.defineProperty(iceGatherer, 'state', {\n value: 'new',\n writable: true\n });\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = [];\n\n this.transceivers[sdpMLineIndex].bufferCandidates = function (event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0; // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n\n iceGatherer.state = end ? 'completed' : 'gathering';\n\n if (pc.transceivers[sdpMLineIndex].bufferedCandidateEvents !== null) {\n pc.transceivers[sdpMLineIndex].bufferedCandidateEvents.push(event);\n }\n };\n\n iceGatherer.addEventListener('localcandidate', this.transceivers[sdpMLineIndex].bufferCandidates);\n return iceGatherer;\n }; // start gathering from an RTCIceGatherer.\n\n\n RTCPeerConnection.prototype._gather = function (mid, sdpMLineIndex) {\n var pc = this;\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n\n if (iceGatherer.onlocalcandidate) {\n return;\n }\n\n var bufferedCandidateEvents = this.transceivers[sdpMLineIndex].bufferedCandidateEvents;\n this.transceivers[sdpMLineIndex].bufferedCandidateEvents = null;\n iceGatherer.removeEventListener('localcandidate', this.transceivers[sdpMLineIndex].bufferCandidates);\n\n iceGatherer.onlocalcandidate = function (evt) {\n if (pc.usingBundle && sdpMLineIndex > 0) {\n // if we know that we use bundle we can drop candidates with\n // ѕdpMLineIndex > 0. If we don't do this then our state gets\n // confused since we dispose the extra ice gatherer.\n return;\n }\n\n var event = new Event('icecandidate');\n event.candidate = {\n sdpMid: mid,\n sdpMLineIndex: sdpMLineIndex\n };\n var cand = evt.candidate; // Edge emits an empty object for RTCIceCandidateComplete‥\n\n var end = !cand || Object.keys(cand).length === 0;\n\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === 'new' || iceGatherer.state === 'gathering') {\n iceGatherer.state = 'completed';\n }\n } else {\n if (iceGatherer.state === 'new') {\n iceGatherer.state = 'gathering';\n } // RTCIceCandidate doesn't have a component, needs to be added\n\n\n cand.component = 1; // also the usernameFragment. TODO: update SDP to take both variants.\n\n cand.ufrag = iceGatherer.getLocalParameters().usernameFragment;\n var serializedCandidate = SDPUtils.writeCandidate(cand);\n event.candidate = Object.assign(event.candidate, SDPUtils.parseCandidate(serializedCandidate));\n event.candidate.candidate = serializedCandidate;\n\n event.candidate.toJSON = function () {\n return {\n candidate: event.candidate.candidate,\n sdpMid: event.candidate.sdpMid,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n usernameFragment: event.candidate.usernameFragment\n };\n };\n } // update local description.\n\n\n var sections = SDPUtils.getMediaSections(pc._localDescription.sdp);\n\n if (!end) {\n sections[event.candidate.sdpMLineIndex] += 'a=' + event.candidate.candidate + '\\r\\n';\n } else {\n sections[event.candidate.sdpMLineIndex] += 'a=end-of-candidates\\r\\n';\n }\n\n pc._localDescription.sdp = SDPUtils.getDescription(pc._localDescription.sdp) + sections.join('');\n var complete = pc.transceivers.every(function (transceiver) {\n return transceiver.iceGatherer && transceiver.iceGatherer.state === 'completed';\n });\n\n if (pc.iceGatheringState !== 'gathering') {\n pc.iceGatheringState = 'gathering';\n\n pc._emitGatheringStateChange();\n } // Emit candidate. Also emit null candidate when all gatherers are\n // complete.\n\n\n if (!end) {\n pc._dispatchEvent('icecandidate', event);\n }\n\n if (complete) {\n pc._dispatchEvent('icecandidate', new Event('icecandidate'));\n\n pc.iceGatheringState = 'complete';\n\n pc._emitGatheringStateChange();\n }\n }; // emit already gathered candidates.\n\n\n window.setTimeout(function () {\n bufferedCandidateEvents.forEach(function (e) {\n iceGatherer.onlocalcandidate(e);\n });\n }, 0);\n }; // Create ICE transport and DTLS transport.\n\n\n RTCPeerConnection.prototype._createIceAndDtlsTransports = function () {\n var pc = this;\n var iceTransport = new window.RTCIceTransport(null);\n\n iceTransport.onicestatechange = function () {\n pc._updateIceConnectionState();\n\n pc._updateConnectionState();\n };\n\n var dtlsTransport = new window.RTCDtlsTransport(iceTransport);\n\n dtlsTransport.ondtlsstatechange = function () {\n pc._updateConnectionState();\n };\n\n dtlsTransport.onerror = function () {\n // onerror does not set state to failed by itself.\n Object.defineProperty(dtlsTransport, 'state', {\n value: 'failed',\n writable: true\n });\n\n pc._updateConnectionState();\n };\n\n return {\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n }; // Destroy ICE gatherer, ICE transport and DTLS transport.\n // Without triggering the callbacks.\n\n\n RTCPeerConnection.prototype._disposeIceAndDtlsTransports = function (sdpMLineIndex) {\n var iceGatherer = this.transceivers[sdpMLineIndex].iceGatherer;\n\n if (iceGatherer) {\n delete iceGatherer.onlocalcandidate;\n delete this.transceivers[sdpMLineIndex].iceGatherer;\n }\n\n var iceTransport = this.transceivers[sdpMLineIndex].iceTransport;\n\n if (iceTransport) {\n delete iceTransport.onicestatechange;\n delete this.transceivers[sdpMLineIndex].iceTransport;\n }\n\n var dtlsTransport = this.transceivers[sdpMLineIndex].dtlsTransport;\n\n if (dtlsTransport) {\n delete dtlsTransport.ondtlsstatechange;\n delete dtlsTransport.onerror;\n delete this.transceivers[sdpMLineIndex].dtlsTransport;\n }\n }; // Start the RTP Sender and Receiver for a transceiver.\n\n\n RTCPeerConnection.prototype._transceive = function (transceiver, send, recv) {\n var params = getCommonCapabilities(transceiver.localCapabilities, transceiver.remoteCapabilities);\n\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName,\n compound: transceiver.rtcpParameters.compound\n };\n\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n\n transceiver.rtpSender.send(params);\n }\n\n if (recv && transceiver.rtpReceiver && params.codecs.length > 0) {\n // remove RTX field in Edge 14942\n if (transceiver.kind === 'video' && transceiver.recvEncodingParameters && edgeVersion < 15019) {\n transceiver.recvEncodingParameters.forEach(function (p) {\n delete p.rtx;\n });\n }\n\n if (transceiver.recvEncodingParameters.length) {\n params.encodings = transceiver.recvEncodingParameters;\n } else {\n params.encodings = [{}];\n }\n\n params.rtcp = {\n compound: transceiver.rtcpParameters.compound\n };\n\n if (transceiver.rtcpParameters.cname) {\n params.rtcp.cname = transceiver.rtcpParameters.cname;\n }\n\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n RTCPeerConnection.prototype.setLocalDescription = function (description) {\n var pc = this; // Note: pranswer is not supported.\n\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError', 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setLocalDescription', description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError', 'Can not set local ' + description.type + ' in state ' + pc.signalingState));\n }\n\n var sections;\n var sessionpart;\n\n if (description.type === 'offer') {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function (mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n pc.transceivers[sdpMLineIndex].localCapabilities = caps;\n });\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n });\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(pc._remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart, 'a=ice-lite').length > 0;\n sections.forEach(function (mediaSection, sdpMLineIndex) {\n var transceiver = pc.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities; // treat bundle-only as not-rejected.\n\n var rejected = SDPUtils.isRejected(mediaSection) && SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n\n if (!rejected && !transceiver.rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(mediaSection, sessionpart);\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, sessionpart);\n\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n\n if (!pc.usingBundle || sdpMLineIndex === 0) {\n pc._gather(transceiver.mid, sdpMLineIndex);\n\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters, isIceLite ? 'controlling' : 'controlled');\n }\n\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n } // Calculate intersection of capabilities.\n\n\n var params = getCommonCapabilities(localCapabilities, remoteCapabilities); // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n\n pc._transceive(transceiver, params.codecs.length > 0, false);\n }\n });\n }\n\n pc._localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n\n if (description.type === 'offer') {\n pc._updateSignalingState('have-local-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.setRemoteDescription = function (description) {\n var pc = this; // Note: pranswer is not supported.\n\n if (['offer', 'answer'].indexOf(description.type) === -1) {\n return Promise.reject(makeError('TypeError', 'Unsupported type \"' + description.type + '\"'));\n }\n\n if (!isActionAllowedInSignalingState('setRemoteDescription', description.type, pc.signalingState) || pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError', 'Can not set remote ' + description.type + ' in state ' + pc.signalingState));\n }\n\n var streams = {};\n pc.remoteStreams.forEach(function (stream) {\n streams[stream.id] = stream;\n });\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart, 'a=ice-lite').length > 0;\n var usingBundle = SDPUtils.matchPrefix(sessionpart, 'a=group:BUNDLE ').length > 0;\n pc.usingBundle = usingBundle;\n var iceOptions = SDPUtils.matchPrefix(sessionpart, 'a=ice-options:')[0];\n\n if (iceOptions) {\n pc.canTrickleIceCandidates = iceOptions.substr(14).split(' ').indexOf('trickle') >= 0;\n } else {\n pc.canTrickleIceCandidates = false;\n }\n\n sections.forEach(function (mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var kind = SDPUtils.getKind(mediaSection); // treat bundle-only as not-rejected.\n\n var rejected = SDPUtils.isRejected(mediaSection) && SDPUtils.matchPrefix(mediaSection, 'a=bundle-only').length === 0;\n var protocol = lines[0].substr(2).split(' ')[2];\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n var remoteMsid = SDPUtils.parseMsid(mediaSection);\n var mid = SDPUtils.getMid(mediaSection) || SDPUtils.generateIdentifier(); // Reject datachannels which are not implemented yet.\n\n if (rejected || kind === 'application' && (protocol === 'DTLS/SCTP' || protocol === 'UDP/DTLS/SCTP')) {\n // TODO: this is dangerous in the case where a non-rejected m-line\n // becomes rejected.\n pc.transceivers[sdpMLineIndex] = {\n mid: mid,\n kind: kind,\n protocol: protocol,\n rejected: true\n };\n return;\n }\n\n if (!rejected && pc.transceivers[sdpMLineIndex] && pc.transceivers[sdpMLineIndex].rejected) {\n // recycle a rejected transceiver.\n pc.transceivers[sdpMLineIndex] = pc._createTransceiver(kind, true);\n }\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n var track; // FIXME: ensure the mediaSection has rtcp-mux set.\n\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection, sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n\n recvEncodingParameters = SDPUtils.parseRtpEncodingParameters(mediaSection);\n var rtcpParameters = SDPUtils.parseRtcpParameters(mediaSection);\n var isComplete = SDPUtils.matchPrefix(mediaSection, 'a=end-of-candidates', sessionpart).length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:').map(function (cand) {\n return SDPUtils.parseCandidate(cand);\n }).filter(function (cand) {\n return cand.component === 1;\n }); // Check if we can use BUNDLE and dispose transports.\n\n if ((description.type === 'offer' || description.type === 'answer') && !rejected && usingBundle && sdpMLineIndex > 0 && pc.transceivers[sdpMLineIndex]) {\n pc._disposeIceAndDtlsTransports(sdpMLineIndex);\n\n pc.transceivers[sdpMLineIndex].iceGatherer = pc.transceivers[0].iceGatherer;\n pc.transceivers[sdpMLineIndex].iceTransport = pc.transceivers[0].iceTransport;\n pc.transceivers[sdpMLineIndex].dtlsTransport = pc.transceivers[0].dtlsTransport;\n\n if (pc.transceivers[sdpMLineIndex].rtpSender) {\n pc.transceivers[sdpMLineIndex].rtpSender.setTransport(pc.transceivers[0].dtlsTransport);\n }\n\n if (pc.transceivers[sdpMLineIndex].rtpReceiver) {\n pc.transceivers[sdpMLineIndex].rtpReceiver.setTransport(pc.transceivers[0].dtlsTransport);\n }\n }\n\n if (description.type === 'offer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex] || pc._createTransceiver(kind);\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex, usingBundle);\n }\n\n if (cands.length && transceiver.iceTransport.state === 'new') {\n if (isComplete && (!usingBundle || sdpMLineIndex === 0)) {\n transceiver.iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function (candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n localCapabilities = window.RTCRtpReceiver.getCapabilities(kind); // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(function (codec) {\n return codec.name !== 'rtx';\n });\n }\n\n sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }]; // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n\n var isNewTrack = false;\n\n if (direction === 'sendrecv' || direction === 'sendonly') {\n isNewTrack = !transceiver.rtpReceiver;\n rtpReceiver = transceiver.rtpReceiver || new window.RTCRtpReceiver(transceiver.dtlsTransport, kind);\n\n if (isNewTrack) {\n var stream;\n track = rtpReceiver.track; // FIXME: does not work with Plan B.\n\n if (remoteMsid && remoteMsid.stream === '-') {// no-op. a stream id of '-' means: no associated stream.\n } else if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n Object.defineProperty(streams[remoteMsid.stream], 'id', {\n get: function () {\n return remoteMsid.stream;\n }\n });\n }\n\n Object.defineProperty(track, 'id', {\n get: function () {\n return remoteMsid.track;\n }\n });\n stream = streams[remoteMsid.stream];\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n\n stream = streams.default;\n }\n\n if (stream) {\n addTrackToStreamAndFireEvent(track, stream);\n transceiver.associatedRemoteMediaStreams.push(stream);\n }\n\n receiverList.push([track, rtpReceiver, stream]);\n }\n } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track) {\n transceiver.associatedRemoteMediaStreams.forEach(function (s) {\n var nativeTrack = s.getTracks().find(function (t) {\n return t.id === transceiver.rtpReceiver.track.id;\n });\n\n if (nativeTrack) {\n removeTrackFromStreamAndFireEvent(nativeTrack, s);\n }\n });\n transceiver.associatedRemoteMediaStreams = [];\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.remoteCapabilities = remoteCapabilities;\n transceiver.rtpReceiver = rtpReceiver;\n transceiver.rtcpParameters = rtcpParameters;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n transceiver.recvEncodingParameters = recvEncodingParameters; // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n\n pc._transceive(pc.transceivers[sdpMLineIndex], false, isNewTrack);\n } else if (description.type === 'answer' && !rejected) {\n transceiver = pc.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n pc.transceivers[sdpMLineIndex].recvEncodingParameters = recvEncodingParameters;\n pc.transceivers[sdpMLineIndex].remoteCapabilities = remoteCapabilities;\n pc.transceivers[sdpMLineIndex].rtcpParameters = rtcpParameters;\n\n if (cands.length && iceTransport.state === 'new') {\n if ((isIceLite || isComplete) && (!usingBundle || sdpMLineIndex === 0)) {\n iceTransport.setRemoteCandidates(cands);\n } else {\n cands.forEach(function (candidate) {\n maybeAddCandidate(transceiver.iceTransport, candidate);\n });\n }\n }\n\n if (!usingBundle || sdpMLineIndex === 0) {\n if (iceTransport.state === 'new') {\n iceTransport.start(iceGatherer, remoteIceParameters, 'controlling');\n }\n\n if (dtlsTransport.state === 'new') {\n dtlsTransport.start(remoteDtlsParameters);\n }\n } // If the offer contained RTX but the answer did not,\n // remove RTX from sendEncodingParameters.\n\n\n var commonCapabilities = getCommonCapabilities(transceiver.localCapabilities, transceiver.remoteCapabilities);\n var hasRtx = commonCapabilities.codecs.filter(function (c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n pc._transceive(transceiver, direction === 'sendrecv' || direction === 'recvonly', direction === 'sendrecv' || direction === 'sendonly'); // TODO: rewrite to use http://w3c.github.io/webrtc-pc/#set-associated-remote-streams\n\n\n if (rtpReceiver && (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n\n if (remoteMsid) {\n if (!streams[remoteMsid.stream]) {\n streams[remoteMsid.stream] = new window.MediaStream();\n }\n\n addTrackToStreamAndFireEvent(track, streams[remoteMsid.stream]);\n receiverList.push([track, rtpReceiver, streams[remoteMsid.stream]]);\n } else {\n if (!streams.default) {\n streams.default = new window.MediaStream();\n }\n\n addTrackToStreamAndFireEvent(track, streams.default);\n receiverList.push([track, rtpReceiver, streams.default]);\n }\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n if (pc._dtlsRole === undefined) {\n pc._dtlsRole = description.type === 'offer' ? 'active' : 'passive';\n }\n\n pc._remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n\n if (description.type === 'offer') {\n pc._updateSignalingState('have-remote-offer');\n } else {\n pc._updateSignalingState('stable');\n }\n\n Object.keys(streams).forEach(function (sid) {\n var stream = streams[sid];\n\n if (stream.getTracks().length) {\n if (pc.remoteStreams.indexOf(stream) === -1) {\n pc.remoteStreams.push(stream);\n var event = new Event('addstream');\n event.stream = stream;\n window.setTimeout(function () {\n pc._dispatchEvent('addstream', event);\n });\n }\n\n receiverList.forEach(function (item) {\n var track = item[0];\n var receiver = item[1];\n\n if (stream.id !== item[2].id) {\n return;\n }\n\n fireAddTrack(pc, track, receiver, [stream]);\n });\n }\n });\n receiverList.forEach(function (item) {\n if (item[2]) {\n return;\n }\n\n fireAddTrack(pc, item[0], item[1], []);\n }); // check whether addIceCandidate({}) was called within four seconds after\n // setRemoteDescription.\n\n window.setTimeout(function () {\n if (!(pc && pc.transceivers)) {\n return;\n }\n\n pc.transceivers.forEach(function (transceiver) {\n if (transceiver.iceTransport && transceiver.iceTransport.state === 'new' && transceiver.iceTransport.getRemoteCandidates().length > 0) {\n console.warn('Timeout for addRemoteCandidate. Consider sending ' + 'an end-of-candidates notification');\n transceiver.iceTransport.addRemoteCandidate({});\n }\n });\n }, 4000);\n return Promise.resolve();\n };\n\n RTCPeerConnection.prototype.close = function () {\n this.transceivers.forEach(function (transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n }); // FIXME: clean up tracks, local streams, remote streams, etc\n\n this._isClosed = true;\n\n this._updateSignalingState('closed');\n }; // Update the signaling state.\n\n\n RTCPeerConnection.prototype._updateSignalingState = function (newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n\n this._dispatchEvent('signalingstatechange', event);\n }; // Determine whether to fire the negotiationneeded event.\n\n\n RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function () {\n var pc = this;\n\n if (this.signalingState !== 'stable' || this.needNegotiation === true) {\n return;\n }\n\n this.needNegotiation = true;\n window.setTimeout(function () {\n if (pc.needNegotiation) {\n pc.needNegotiation = false;\n var event = new Event('negotiationneeded');\n\n pc._dispatchEvent('negotiationneeded', event);\n }\n }, 0);\n }; // Update the ice connection state.\n\n\n RTCPeerConnection.prototype._updateIceConnectionState = function () {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function (transceiver) {\n if (transceiver.iceTransport && !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n }\n });\n newState = 'new';\n\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.checking > 0) {\n newState = 'checking';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n } else if (states.completed > 0) {\n newState = 'completed';\n }\n\n if (newState !== this.iceConnectionState) {\n this.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n\n this._dispatchEvent('iceconnectionstatechange', event);\n }\n }; // Update the connection state.\n\n\n RTCPeerConnection.prototype._updateConnectionState = function () {\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n connected: 0,\n completed: 0,\n disconnected: 0,\n failed: 0\n };\n this.transceivers.forEach(function (transceiver) {\n if (transceiver.iceTransport && transceiver.dtlsTransport && !transceiver.rejected) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n }\n }); // ICETransport.completed and connected are the same for this purpose.\n\n states.connected += states.completed;\n newState = 'new';\n\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0) {\n newState = 'connected';\n }\n\n if (newState !== this.connectionState) {\n this.connectionState = newState;\n var event = new Event('connectionstatechange');\n\n this._dispatchEvent('connectionstatechange', event);\n }\n };\n\n RTCPeerConnection.prototype.createOffer = function () {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError', 'Can not call createOffer after close'));\n }\n\n var numAudioTracks = pc.transceivers.filter(function (t) {\n return t.kind === 'audio';\n }).length;\n var numVideoTracks = pc.transceivers.filter(function (t) {\n return t.kind === 'video';\n }).length; // Determine number of audio and video tracks we need to send/recv.\n\n var offerOptions = arguments[0];\n\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError('Legacy mandatory/optional constraints not supported.');\n }\n\n if (offerOptions.offerToReceiveAudio !== undefined) {\n if (offerOptions.offerToReceiveAudio === true) {\n numAudioTracks = 1;\n } else if (offerOptions.offerToReceiveAudio === false) {\n numAudioTracks = 0;\n } else {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n }\n\n if (offerOptions.offerToReceiveVideo !== undefined) {\n if (offerOptions.offerToReceiveVideo === true) {\n numVideoTracks = 1;\n } else if (offerOptions.offerToReceiveVideo === false) {\n numVideoTracks = 0;\n } else {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n }\n\n pc.transceivers.forEach(function (transceiver) {\n if (transceiver.kind === 'audio') {\n numAudioTracks--;\n\n if (numAudioTracks < 0) {\n transceiver.wantReceive = false;\n }\n } else if (transceiver.kind === 'video') {\n numVideoTracks--;\n\n if (numVideoTracks < 0) {\n transceiver.wantReceive = false;\n }\n }\n }); // Create M-lines for recvonly streams.\n\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n pc._createTransceiver('audio');\n\n numAudioTracks--;\n }\n\n if (numVideoTracks > 0) {\n pc._createTransceiver('video');\n\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId, pc._sdpSessionVersion++);\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = transceiver.track;\n var kind = transceiver.kind;\n var mid = transceiver.mid || SDPUtils.generateIdentifier();\n transceiver.mid = mid;\n\n if (!transceiver.iceGatherer) {\n transceiver.iceGatherer = pc._createIceGatherer(sdpMLineIndex, pc.usingBundle);\n }\n\n var localCapabilities = window.RTCRtpSender.getCapabilities(kind); // filter RTX until additional stuff needed for RTX is implemented\n // in adapter.js\n\n if (edgeVersion < 15019) {\n localCapabilities.codecs = localCapabilities.codecs.filter(function (codec) {\n return codec.name !== 'rtx';\n });\n }\n\n localCapabilities.codecs.forEach(function (codec) {\n // work around https://bugs.chromium.org/p/webrtc/issues/detail?id=6552\n // by adding level-asymmetry-allowed=1\n if (codec.name === 'H264' && codec.parameters['level-asymmetry-allowed'] === undefined) {\n codec.parameters['level-asymmetry-allowed'] = '1';\n } // for subsequent offers, we might have to re-use the payload\n // type of the last offer.\n\n\n if (transceiver.remoteCapabilities && transceiver.remoteCapabilities.codecs) {\n transceiver.remoteCapabilities.codecs.forEach(function (remoteCodec) {\n if (codec.name.toLowerCase() === remoteCodec.name.toLowerCase() && codec.clockRate === remoteCodec.clockRate) {\n codec.preferredPayloadType = remoteCodec.payloadType;\n }\n });\n }\n });\n localCapabilities.headerExtensions.forEach(function (hdrExt) {\n var remoteExtensions = transceiver.remoteCapabilities && transceiver.remoteCapabilities.headerExtensions || [];\n remoteExtensions.forEach(function (rHdrExt) {\n if (hdrExt.uri === rHdrExt.uri) {\n hdrExt.id = rHdrExt.id;\n }\n });\n }); // generate an ssrc now, to be used later in rtpSender.send\n\n var sendEncodingParameters = transceiver.sendEncodingParameters || [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n\n if (track) {\n // add RTX\n if (edgeVersion >= 15019 && kind === 'video' && !sendEncodingParameters[0].rtx) {\n sendEncodingParameters[0].rtx = {\n ssrc: sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n\n if (transceiver.wantReceive) {\n transceiver.rtpReceiver = new window.RTCRtpReceiver(transceiver.dtlsTransport, kind);\n }\n\n transceiver.localCapabilities = localCapabilities;\n transceiver.sendEncodingParameters = sendEncodingParameters;\n }); // always offer BUNDLE and dispose on return if not supported.\n\n if (pc._config.bundlePolicy !== 'max-compat') {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function (t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n\n sdp += 'a=ice-options:trickle\\r\\n';\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\n sdp += writeMediaSection(transceiver, transceiver.localCapabilities, 'offer', transceiver.stream, pc._dtlsRole);\n sdp += 'a=rtcp-rsize\\r\\n';\n\n if (transceiver.iceGatherer && pc.iceGatheringState !== 'new' && (sdpMLineIndex === 0 || !pc.usingBundle)) {\n transceiver.iceGatherer.getLocalCandidates().forEach(function (cand) {\n cand.component = 1;\n sdp += 'a=' + SDPUtils.writeCandidate(cand) + '\\r\\n';\n });\n\n if (transceiver.iceGatherer.state === 'completed') {\n sdp += 'a=end-of-candidates\\r\\n';\n }\n }\n });\n var desc = new window.RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.createAnswer = function () {\n var pc = this;\n\n if (pc._isClosed) {\n return Promise.reject(makeError('InvalidStateError', 'Can not call createAnswer after close'));\n }\n\n if (!(pc.signalingState === 'have-remote-offer' || pc.signalingState === 'have-local-pranswer')) {\n return Promise.reject(makeError('InvalidStateError', 'Can not call createAnswer in signalingState ' + pc.signalingState));\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate(pc._sdpSessionId, pc._sdpSessionVersion++);\n\n if (pc.usingBundle) {\n sdp += 'a=group:BUNDLE ' + pc.transceivers.map(function (t) {\n return t.mid;\n }).join(' ') + '\\r\\n';\n }\n\n sdp += 'a=ice-options:trickle\\r\\n';\n var mediaSectionsInOffer = SDPUtils.getMediaSections(pc._remoteDescription.sdp).length;\n pc.transceivers.forEach(function (transceiver, sdpMLineIndex) {\n if (sdpMLineIndex + 1 > mediaSectionsInOffer) {\n return;\n }\n\n if (transceiver.rejected) {\n if (transceiver.kind === 'application') {\n if (transceiver.protocol === 'DTLS/SCTP') {\n // legacy fmt\n sdp += 'm=application 0 DTLS/SCTP 5000\\r\\n';\n } else {\n sdp += 'm=application 0 ' + transceiver.protocol + ' webrtc-datachannel\\r\\n';\n }\n } else if (transceiver.kind === 'audio') {\n sdp += 'm=audio 0 UDP/TLS/RTP/SAVPF 0\\r\\n' + 'a=rtpmap:0 PCMU/8000\\r\\n';\n } else if (transceiver.kind === 'video') {\n sdp += 'm=video 0 UDP/TLS/RTP/SAVPF 120\\r\\n' + 'a=rtpmap:120 VP8/90000\\r\\n';\n }\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n' + 'a=inactive\\r\\n' + 'a=mid:' + transceiver.mid + '\\r\\n';\n return;\n } // FIXME: look at direction.\n\n\n if (transceiver.stream) {\n var localTrack;\n\n if (transceiver.kind === 'audio') {\n localTrack = transceiver.stream.getAudioTracks()[0];\n } else if (transceiver.kind === 'video') {\n localTrack = transceiver.stream.getVideoTracks()[0];\n }\n\n if (localTrack) {\n // add RTX\n if (edgeVersion >= 15019 && transceiver.kind === 'video' && !transceiver.sendEncodingParameters[0].rtx) {\n transceiver.sendEncodingParameters[0].rtx = {\n ssrc: transceiver.sendEncodingParameters[0].ssrc + 1\n };\n }\n }\n } // Calculate intersection of capabilities.\n\n\n var commonCapabilities = getCommonCapabilities(transceiver.localCapabilities, transceiver.remoteCapabilities);\n var hasRtx = commonCapabilities.codecs.filter(function (c) {\n return c.name.toLowerCase() === 'rtx';\n }).length;\n\n if (!hasRtx && transceiver.sendEncodingParameters[0].rtx) {\n delete transceiver.sendEncodingParameters[0].rtx;\n }\n\n sdp += writeMediaSection(transceiver, commonCapabilities, 'answer', transceiver.stream, pc._dtlsRole);\n\n if (transceiver.rtcpParameters && transceiver.rtcpParameters.reducedSize) {\n sdp += 'a=rtcp-rsize\\r\\n';\n }\n });\n var desc = new window.RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n return Promise.resolve(desc);\n };\n\n RTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n var pc = this;\n var sections;\n\n if (candidate && !(candidate.sdpMLineIndex !== undefined || candidate.sdpMid)) {\n return Promise.reject(new TypeError('sdpMLineIndex or sdpMid required'));\n } // TODO: needs to go into ops queue.\n\n\n return new Promise(function (resolve, reject) {\n if (!pc._remoteDescription) {\n return reject(makeError('InvalidStateError', 'Can not add ICE candidate without a remote description'));\n } else if (!candidate || candidate.candidate === '') {\n for (var j = 0; j < pc.transceivers.length; j++) {\n if (pc.transceivers[j].rejected) {\n continue;\n }\n\n pc.transceivers[j].iceTransport.addRemoteCandidate({});\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[j] += 'a=end-of-candidates\\r\\n';\n pc._remoteDescription.sdp = SDPUtils.getDescription(pc._remoteDescription.sdp) + sections.join('');\n\n if (pc.usingBundle) {\n break;\n }\n }\n } else {\n var sdpMLineIndex = candidate.sdpMLineIndex;\n\n if (candidate.sdpMid) {\n for (var i = 0; i < pc.transceivers.length; i++) {\n if (pc.transceivers[i].mid === candidate.sdpMid) {\n sdpMLineIndex = i;\n break;\n }\n }\n }\n\n var transceiver = pc.transceivers[sdpMLineIndex];\n\n if (transceiver) {\n if (transceiver.rejected) {\n return resolve();\n }\n\n var cand = Object.keys(candidate.candidate).length > 0 ? SDPUtils.parseCandidate(candidate.candidate) : {}; // Ignore Chrome's invalid candidates since Edge does not like them.\n\n if (cand.protocol === 'tcp' && (cand.port === 0 || cand.port === 9)) {\n return resolve();\n } // Ignore RTCP candidates, we assume RTCP-MUX.\n\n\n if (cand.component && cand.component !== 1) {\n return resolve();\n } // when using bundle, avoid adding candidates to the wrong\n // ice transport. And avoid adding candidates added in the SDP.\n\n\n if (sdpMLineIndex === 0 || sdpMLineIndex > 0 && transceiver.iceTransport !== pc.transceivers[0].iceTransport) {\n if (!maybeAddCandidate(transceiver.iceTransport, cand)) {\n return reject(makeError('OperationError', 'Can not add ICE candidate'));\n }\n } // update the remoteDescription.\n\n\n var candidateString = candidate.candidate.trim();\n\n if (candidateString.indexOf('a=') === 0) {\n candidateString = candidateString.substr(2);\n }\n\n sections = SDPUtils.getMediaSections(pc._remoteDescription.sdp);\n sections[sdpMLineIndex] += 'a=' + (cand.type ? candidateString : 'end-of-candidates') + '\\r\\n';\n pc._remoteDescription.sdp = SDPUtils.getDescription(pc._remoteDescription.sdp) + sections.join('');\n } else {\n return reject(makeError('OperationError', 'Can not add ICE candidate'));\n }\n }\n\n resolve();\n });\n };\n\n RTCPeerConnection.prototype.getStats = function (selector) {\n if (selector && selector instanceof window.MediaStreamTrack) {\n var senderOrReceiver = null;\n this.transceivers.forEach(function (transceiver) {\n if (transceiver.rtpSender && transceiver.rtpSender.track === selector) {\n senderOrReceiver = transceiver.rtpSender;\n } else if (transceiver.rtpReceiver && transceiver.rtpReceiver.track === selector) {\n senderOrReceiver = transceiver.rtpReceiver;\n }\n });\n\n if (!senderOrReceiver) {\n throw makeError('InvalidAccessError', 'Invalid selector.');\n }\n\n return senderOrReceiver.getStats();\n }\n\n var promises = [];\n this.transceivers.forEach(function (transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport', 'dtlsTransport'].forEach(function (method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n return Promise.all(promises).then(function (allStats) {\n var results = new Map();\n allStats.forEach(function (stats) {\n stats.forEach(function (stat) {\n results.set(stat.id, stat);\n });\n });\n return results;\n });\n }; // fix low-level stat names and return Map instead of object.\n\n\n var ortcObjects = ['RTCRtpSender', 'RTCRtpReceiver', 'RTCIceGatherer', 'RTCIceTransport', 'RTCDtlsTransport'];\n ortcObjects.forEach(function (ortcObjectName) {\n var obj = window[ortcObjectName];\n\n if (obj && obj.prototype && obj.prototype.getStats) {\n var nativeGetstats = obj.prototype.getStats;\n\n obj.prototype.getStats = function () {\n return nativeGetstats.apply(this).then(function (nativeStats) {\n var mapStats = new Map();\n Object.keys(nativeStats).forEach(function (id) {\n nativeStats[id].type = fixStatsType(nativeStats[id]);\n mapStats.set(id, nativeStats[id]);\n });\n return mapStats;\n });\n };\n }\n }); // legacy callback shims. Should be moved to adapter.js some days.\n\n var methods = ['createOffer', 'createAnswer'];\n methods.forEach(function (method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n\n RTCPeerConnection.prototype[method] = function () {\n var args = arguments;\n\n if (typeof args[0] === 'function' || typeof args[1] === 'function') {\n // legacy\n return nativeMethod.apply(this, [arguments[2]]).then(function (description) {\n if (typeof args[0] === 'function') {\n args[0].apply(null, [description]);\n }\n }, function (error) {\n if (typeof args[1] === 'function') {\n args[1].apply(null, [error]);\n }\n });\n }\n\n return nativeMethod.apply(this, arguments);\n };\n });\n methods = ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'];\n methods.forEach(function (method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n\n RTCPeerConnection.prototype[method] = function () {\n var args = arguments;\n\n if (typeof args[1] === 'function' || typeof args[2] === 'function') {\n // legacy\n return nativeMethod.apply(this, arguments).then(function () {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n }, function (error) {\n if (typeof args[2] === 'function') {\n args[2].apply(null, [error]);\n }\n });\n }\n\n return nativeMethod.apply(this, arguments);\n };\n }); // getStats is special. It doesn't have a spec legacy method yet we support\n // getStats(something, cb) without error callbacks.\n\n ['getStats'].forEach(function (method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n\n RTCPeerConnection.prototype[method] = function () {\n var args = arguments;\n\n if (typeof args[1] === 'function') {\n return nativeMethod.apply(this, arguments).then(function () {\n if (typeof args[1] === 'function') {\n args[1].apply(null);\n }\n });\n }\n\n return nativeMethod.apply(this, arguments);\n };\n });\n return RTCPeerConnection;\n};\n},{\"sdp\":\"YHvh\"}],\"YdKx\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetUserMedia = shimGetUserMedia;\n\nfunction shimGetUserMedia(window) {\n var navigator = window && window.navigator;\n\n var shimError_ = function (e) {\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString: function () {\n return this.name;\n }\n };\n }; // getUserMedia error shim.\n\n\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\n\n navigator.mediaDevices.getUserMedia = function (c) {\n return origGetUserMedia(c).catch(function (e) {\n return Promise.reject(shimError_(e));\n });\n };\n}\n},{}],\"P3bV\":[function(require,module,exports) {\n/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetDisplayMedia = shimGetDisplayMedia;\n\nfunction shimGetDisplayMedia(window) {\n if (!('getDisplayMedia' in window.navigator)) {\n return;\n }\n\n if (!window.navigator.mediaDevices) {\n return;\n }\n\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n\n window.navigator.mediaDevices.getDisplayMedia = window.navigator.getDisplayMedia.bind(window.navigator);\n}\n},{}],\"XRic\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimPeerConnection = shimPeerConnection;\nexports.shimReplaceTrack = shimReplaceTrack;\nObject.defineProperty(exports, \"shimGetUserMedia\", {\n enumerable: true,\n get: function () {\n return _getusermedia.shimGetUserMedia;\n }\n});\nObject.defineProperty(exports, \"shimGetDisplayMedia\", {\n enumerable: true,\n get: function () {\n return _getdisplaymedia.shimGetDisplayMedia;\n }\n});\n\nvar utils = _interopRequireWildcard(require(\"../utils\"));\n\nvar _filtericeservers = require(\"./filtericeservers\");\n\nvar _rtcpeerconnectionShim = _interopRequireDefault(require(\"rtcpeerconnection-shim\"));\n\nvar _getusermedia = require(\"./getusermedia\");\n\nvar _getdisplaymedia = require(\"./getdisplaymedia\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction shimPeerConnection(window) {\n var browserDetails = utils.detectBrowser(window);\n\n if (window.RTCIceGatherer) {\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n return args;\n };\n }\n\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function RTCSessionDescription(args) {\n return args;\n };\n } // this adds an additional event listener to MediaStrackTrack that signals\n // when a tracks enabled property was changed. Workaround for a bug in\n // addStream, see below. No longer required in 15025+\n\n\n if (browserDetails.version < 15025) {\n var origMSTEnabled = Object.getOwnPropertyDescriptor(window.MediaStreamTrack.prototype, 'enabled');\n Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', {\n set: function (value) {\n origMSTEnabled.set.call(this, value);\n var ev = new Event('enabled');\n ev.enabled = value;\n this.dispatchEvent(ev);\n }\n });\n }\n } // ORTC defines the DTMF sender a bit different.\n // https://github.com/w3c/ortc/issues/714\n\n\n if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {\n Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {\n get: function () {\n if (this._dtmf === undefined) {\n if (this.track.kind === 'audio') {\n this._dtmf = new window.RTCDtmfSender(this);\n } else if (this.track.kind === 'video') {\n this._dtmf = null;\n }\n }\n\n return this._dtmf;\n }\n });\n } // Edge currently only implements the RTCDtmfSender, not the\n // RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*\n\n\n if (window.RTCDtmfSender && !window.RTCDTMFSender) {\n window.RTCDTMFSender = window.RTCDtmfSender;\n }\n\n var RTCPeerConnectionShim = (0, _rtcpeerconnectionShim.default)(window, browserDetails.version);\n\n window.RTCPeerConnection = function RTCPeerConnection(config) {\n if (config && config.iceServers) {\n config.iceServers = (0, _filtericeservers.filterIceServers)(config.iceServers, browserDetails.version);\n utils.log('ICE servers after filtering:', config.iceServers);\n }\n\n return new RTCPeerConnectionShim(config);\n };\n\n window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype;\n}\n\nfunction shimReplaceTrack(window) {\n // ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614\n if (window.RTCRtpSender && !('replaceTrack' in window.RTCRtpSender.prototype)) {\n window.RTCRtpSender.prototype.replaceTrack = window.RTCRtpSender.prototype.setTrack;\n }\n}\n},{\"../utils\":\"iSxC\",\"./filtericeservers\":\"NZ1C\",\"rtcpeerconnection-shim\":\"NJ2u\",\"./getusermedia\":\"YdKx\",\"./getdisplaymedia\":\"P3bV\"}],\"GzSv\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetUserMedia = shimGetUserMedia;\n\nvar utils = _interopRequireWildcard(require(\"../utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shimGetUserMedia(window) {\n var browserDetails = utils.detectBrowser(window);\n var navigator = window && window.navigator;\n var MediaStreamTrack = window && window.MediaStreamTrack;\n\n navigator.getUserMedia = function (constraints, onSuccess, onError) {\n // Replace Firefox 44+'s deprecation warning with unprefixed version.\n utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia');\n navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);\n };\n\n if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {\n var remap = function (obj, a, b) {\n if (a in obj && !(b in obj)) {\n obj[b] = obj[a];\n delete obj[a];\n }\n };\n\n var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);\n\n navigator.mediaDevices.getUserMedia = function (c) {\n if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c.audio, 'autoGainControl', 'mozAutoGainControl');\n remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');\n }\n\n return nativeGetUserMedia(c);\n };\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {\n var nativeGetSettings = MediaStreamTrack.prototype.getSettings;\n\n MediaStreamTrack.prototype.getSettings = function () {\n var obj = nativeGetSettings.apply(this, arguments);\n remap(obj, 'mozAutoGainControl', 'autoGainControl');\n remap(obj, 'mozNoiseSuppression', 'noiseSuppression');\n return obj;\n };\n }\n\n if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {\n var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints;\n\n MediaStreamTrack.prototype.applyConstraints = function (c) {\n if (this.kind === 'audio' && _typeof(c) === 'object') {\n c = JSON.parse(JSON.stringify(c));\n remap(c, 'autoGainControl', 'mozAutoGainControl');\n remap(c, 'noiseSuppression', 'mozNoiseSuppression');\n }\n\n return nativeApplyConstraints.apply(this, [c]);\n };\n }\n }\n}\n},{\"../utils\":\"iSxC\"}],\"UuGU\":[function(require,module,exports) {\n/*\n * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimGetDisplayMedia = shimGetDisplayMedia;\n\nfunction shimGetDisplayMedia(window, preferredMediaSource) {\n if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) {\n return;\n }\n\n if (!window.navigator.mediaDevices) {\n return;\n }\n\n window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) {\n if (!(constraints && constraints.video)) {\n var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined');\n err.name = 'NotFoundError'; // from https://heycam.github.io/webidl/#idl-DOMException-error-names\n\n err.code = 8;\n return Promise.reject(err);\n }\n\n if (constraints.video === true) {\n constraints.video = {\n mediaSource: preferredMediaSource\n };\n } else {\n constraints.video.mediaSource = preferredMediaSource;\n }\n\n return window.navigator.mediaDevices.getUserMedia(constraints);\n };\n}\n},{}],\"Fzdr\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimOnTrack = shimOnTrack;\nexports.shimPeerConnection = shimPeerConnection;\nexports.shimSenderGetStats = shimSenderGetStats;\nexports.shimReceiverGetStats = shimReceiverGetStats;\nexports.shimRemoveStream = shimRemoveStream;\nexports.shimRTCDataChannel = shimRTCDataChannel;\nexports.shimAddTransceiver = shimAddTransceiver;\nexports.shimCreateOffer = shimCreateOffer;\nexports.shimCreateAnswer = shimCreateAnswer;\nObject.defineProperty(exports, \"shimGetUserMedia\", {\n enumerable: true,\n get: function () {\n return _getusermedia.shimGetUserMedia;\n }\n});\nObject.defineProperty(exports, \"shimGetDisplayMedia\", {\n enumerable: true,\n get: function () {\n return _getdisplaymedia.shimGetDisplayMedia;\n }\n});\n\nvar utils = _interopRequireWildcard(require(\"../utils\"));\n\nvar _getusermedia = require(\"./getusermedia\");\n\nvar _getdisplaymedia = require(\"./getdisplaymedia\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shimOnTrack(window) {\n if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get: function () {\n return {\n receiver: this.receiver\n };\n }\n });\n }\n}\n\nfunction shimPeerConnection(window) {\n var browserDetails = utils.detectBrowser(window);\n\n if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n\n if (!window.RTCPeerConnection && window.mozRTCPeerConnection) {\n // very basic support for old versions.\n window.RTCPeerConnection = window.mozRTCPeerConnection;\n }\n\n if (browserDetails.version < 53) {\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) {\n var nativeMethod = window.RTCPeerConnection.prototype[method];\n\n var methodObj = _defineProperty({}, method, function () {\n arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n });\n\n window.RTCPeerConnection.prototype[method] = methodObj[method];\n });\n } // support for addIceCandidate(null or undefined)\n // as well as ignoring {sdpMid, candidate: \"\"}\n\n\n if (browserDetails.version < 68) {\n var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate;\n\n window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() {\n if (!arguments[0]) {\n if (arguments[1]) {\n arguments[1].apply(null);\n }\n\n return Promise.resolve();\n } // Firefox 68+ emits and processes {candidate: \"\", ...}, ignore\n // in older versions.\n\n\n if (arguments[0] && arguments[0].candidate === '') {\n return Promise.resolve();\n }\n\n return nativeAddIceCandidate.apply(this, arguments);\n };\n }\n\n var modernStatsTypes = {\n inboundrtp: 'inbound-rtp',\n outboundrtp: 'outbound-rtp',\n candidatepair: 'candidate-pair',\n localcandidate: 'local-candidate',\n remotecandidate: 'remote-candidate'\n };\n var nativeGetStats = window.RTCPeerConnection.prototype.getStats;\n\n window.RTCPeerConnection.prototype.getStats = function getStats() {\n var [selector, onSucc, onErr] = arguments;\n return nativeGetStats.apply(this, [selector || null]).then(function (stats) {\n if (browserDetails.version < 53 && !onSucc) {\n // Shim only promise getStats with spec-hyphens in type names\n // Leave callback version alone; misc old uses of forEach before Map\n try {\n stats.forEach(function (stat) {\n stat.type = modernStatsTypes[stat.type] || stat.type;\n });\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n } // Avoid TypeError: \"type\" is read-only, in old versions. 34-43ish\n\n\n stats.forEach(function (stat, i) {\n stats.set(i, Object.assign({}, stat, {\n type: modernStatsTypes[stat.type] || stat.type\n }));\n });\n }\n }\n\n return stats;\n }).then(onSucc, onErr);\n };\n}\n\nfunction shimSenderGetStats(window) {\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) {\n return;\n }\n\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) {\n return;\n }\n\n var origGetSenders = window.RTCPeerConnection.prototype.getSenders;\n\n if (origGetSenders) {\n window.RTCPeerConnection.prototype.getSenders = function getSenders() {\n var _this = this;\n\n var senders = origGetSenders.apply(this, []);\n senders.forEach(function (sender) {\n return sender._pc = _this;\n });\n return senders;\n };\n }\n\n var origAddTrack = window.RTCPeerConnection.prototype.addTrack;\n\n if (origAddTrack) {\n window.RTCPeerConnection.prototype.addTrack = function addTrack() {\n var sender = origAddTrack.apply(this, arguments);\n sender._pc = this;\n return sender;\n };\n }\n\n window.RTCRtpSender.prototype.getStats = function getStats() {\n return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map());\n };\n}\n\nfunction shimReceiverGetStats(window) {\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) {\n return;\n }\n\n if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) {\n return;\n }\n\n var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers;\n\n if (origGetReceivers) {\n window.RTCPeerConnection.prototype.getReceivers = function getReceivers() {\n var _this2 = this;\n\n var receivers = origGetReceivers.apply(this, []);\n receivers.forEach(function (receiver) {\n return receiver._pc = _this2;\n });\n return receivers;\n };\n }\n\n utils.wrapPeerConnectionEvent(window, 'track', function (e) {\n e.receiver._pc = e.srcElement;\n return e;\n });\n\n window.RTCRtpReceiver.prototype.getStats = function getStats() {\n return this._pc.getStats(this.track);\n };\n}\n\nfunction shimRemoveStream(window) {\n if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) {\n return;\n }\n\n window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) {\n var _this3 = this;\n\n utils.deprecated('removeStream', 'removeTrack');\n this.getSenders().forEach(function (sender) {\n if (sender.track && stream.getTracks().includes(sender.track)) {\n _this3.removeTrack(sender);\n }\n });\n };\n}\n\nfunction shimRTCDataChannel(window) {\n // rename DataChannel to RTCDataChannel (native fix in FF60):\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851\n if (window.DataChannel && !window.RTCDataChannel) {\n window.RTCDataChannel = window.DataChannel;\n }\n}\n\nfunction shimAddTransceiver(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) {\n return;\n }\n\n var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver;\n\n if (origAddTransceiver) {\n window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() {\n this.setParametersPromises = [];\n var initParameters = arguments[1];\n var shouldPerformCheck = initParameters && 'sendEncodings' in initParameters;\n\n if (shouldPerformCheck) {\n // If sendEncodings params are provided, validate grammar\n initParameters.sendEncodings.forEach(function (encodingParam) {\n if ('rid' in encodingParam) {\n var ridRegex = /^[a-z0-9]{0,16}$/i;\n\n if (!ridRegex.test(encodingParam.rid)) {\n throw new TypeError('Invalid RID value provided.');\n }\n }\n\n if ('scaleResolutionDownBy' in encodingParam) {\n if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) {\n throw new RangeError('scale_resolution_down_by must be >= 1.0');\n }\n }\n\n if ('maxFramerate' in encodingParam) {\n if (!(parseFloat(encodingParam.maxFramerate) >= 0)) {\n throw new RangeError('max_framerate must be >= 0.0');\n }\n }\n });\n }\n\n var transceiver = origAddTransceiver.apply(this, arguments);\n\n if (shouldPerformCheck) {\n // Check if the init options were applied. If not we do this in an\n // asynchronous way and save the promise reference in a global object.\n // This is an ugly hack, but at the same time is way more robust than\n // checking the sender parameters before and after the createOffer\n // Also note that after the createoffer we are not 100% sure that\n // the params were asynchronously applied so we might miss the\n // opportunity to recreate offer.\n var {\n sender: sender\n } = transceiver;\n var params = sender.getParameters();\n\n if (!('encodings' in params)) {\n params.encodings = initParameters.sendEncodings;\n this.setParametersPromises.push(sender.setParameters(params).catch(function () {}));\n }\n }\n\n return transceiver;\n };\n }\n}\n\nfunction shimCreateOffer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) {\n return;\n }\n\n var origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n\n window.RTCPeerConnection.prototype.createOffer = function createOffer() {\n var _arguments = arguments,\n _this4 = this;\n\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises).then(function () {\n return origCreateOffer.apply(_this4, _arguments);\n }).finally(function () {\n _this4.setParametersPromises = [];\n });\n }\n\n return origCreateOffer.apply(this, arguments);\n };\n}\n\nfunction shimCreateAnswer(window) {\n // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647\n // Firefox ignores the init sendEncodings options passed to addTransceiver\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918\n if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) {\n return;\n }\n\n var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer;\n\n window.RTCPeerConnection.prototype.createAnswer = function createAnswer() {\n var _arguments2 = arguments,\n _this5 = this;\n\n if (this.setParametersPromises && this.setParametersPromises.length) {\n return Promise.all(this.setParametersPromises).then(function () {\n return origCreateAnswer.apply(_this5, _arguments2);\n }).finally(function () {\n _this5.setParametersPromises = [];\n });\n }\n\n return origCreateAnswer.apply(this, arguments);\n };\n}\n},{\"../utils\":\"iSxC\",\"./getusermedia\":\"GzSv\",\"./getdisplaymedia\":\"UuGU\"}],\"t1lL\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimLocalStreamsAPI = shimLocalStreamsAPI;\nexports.shimRemoteStreamsAPI = shimRemoteStreamsAPI;\nexports.shimCallbacksAPI = shimCallbacksAPI;\nexports.shimGetUserMedia = shimGetUserMedia;\nexports.shimConstraints = shimConstraints;\nexports.shimRTCIceServerUrls = shimRTCIceServerUrls;\nexports.shimTrackEventTransceiver = shimTrackEventTransceiver;\nexports.shimCreateOfferLegacy = shimCreateOfferLegacy;\n\nvar utils = _interopRequireWildcard(require(\"../utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shimLocalStreamsAPI(window) {\n if (_typeof(window) !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n\n if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() {\n if (!this._localStreams) {\n this._localStreams = [];\n }\n\n return this._localStreams;\n };\n }\n\n if (!('addStream' in window.RTCPeerConnection.prototype)) {\n var _addTrack = window.RTCPeerConnection.prototype.addTrack;\n\n window.RTCPeerConnection.prototype.addStream = function addStream(stream) {\n var _this = this;\n\n if (!this._localStreams) {\n this._localStreams = [];\n }\n\n if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n } // Try to emulate Chrome's behaviour of adding in audio-video order.\n // Safari orders by track id.\n\n\n stream.getAudioTracks().forEach(function (track) {\n return _addTrack.call(_this, track, stream);\n });\n stream.getVideoTracks().forEach(function (track) {\n return _addTrack.call(_this, track, stream);\n });\n };\n\n window.RTCPeerConnection.prototype.addTrack = function addTrack(track) {\n var stream = arguments[1];\n\n if (stream) {\n if (!this._localStreams) {\n this._localStreams = [stream];\n } else if (!this._localStreams.includes(stream)) {\n this._localStreams.push(stream);\n }\n }\n\n return _addTrack.apply(this, arguments);\n };\n }\n\n if (!('removeStream' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) {\n var _this2 = this;\n\n if (!this._localStreams) {\n this._localStreams = [];\n }\n\n var index = this._localStreams.indexOf(stream);\n\n if (index === -1) {\n return;\n }\n\n this._localStreams.splice(index, 1);\n\n var tracks = stream.getTracks();\n this.getSenders().forEach(function (sender) {\n if (tracks.includes(sender.track)) {\n _this2.removeTrack(sender);\n }\n });\n };\n }\n}\n\nfunction shimRemoteStreamsAPI(window) {\n if (_typeof(window) !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n\n if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) {\n window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() {\n return this._remoteStreams ? this._remoteStreams : [];\n };\n }\n\n if (!('onaddstream' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', {\n get: function () {\n return this._onaddstream;\n },\n set: function (f) {\n var _this3 = this;\n\n if (this._onaddstream) {\n this.removeEventListener('addstream', this._onaddstream);\n this.removeEventListener('track', this._onaddstreampoly);\n }\n\n this.addEventListener('addstream', this._onaddstream = f);\n this.addEventListener('track', this._onaddstreampoly = function (e) {\n e.streams.forEach(function (stream) {\n if (!_this3._remoteStreams) {\n _this3._remoteStreams = [];\n }\n\n if (_this3._remoteStreams.includes(stream)) {\n return;\n }\n\n _this3._remoteStreams.push(stream);\n\n var event = new Event('addstream');\n event.stream = stream;\n\n _this3.dispatchEvent(event);\n });\n });\n }\n });\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\n\n window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() {\n var pc = this;\n\n if (!this._onaddstreampoly) {\n this.addEventListener('track', this._onaddstreampoly = function (e) {\n e.streams.forEach(function (stream) {\n if (!pc._remoteStreams) {\n pc._remoteStreams = [];\n }\n\n if (pc._remoteStreams.indexOf(stream) >= 0) {\n return;\n }\n\n pc._remoteStreams.push(stream);\n\n var event = new Event('addstream');\n event.stream = stream;\n pc.dispatchEvent(event);\n });\n });\n }\n\n return origSetRemoteDescription.apply(pc, arguments);\n };\n }\n}\n\nfunction shimCallbacksAPI(window) {\n if (_typeof(window) !== 'object' || !window.RTCPeerConnection) {\n return;\n }\n\n var prototype = window.RTCPeerConnection.prototype;\n var origCreateOffer = prototype.createOffer;\n var origCreateAnswer = prototype.createAnswer;\n var setLocalDescription = prototype.setLocalDescription;\n var setRemoteDescription = prototype.setRemoteDescription;\n var addIceCandidate = prototype.addIceCandidate;\n\n prototype.createOffer = function createOffer(successCallback, failureCallback) {\n var options = arguments.length >= 2 ? arguments[2] : arguments[0];\n var promise = origCreateOffer.apply(this, [options]);\n\n if (!failureCallback) {\n return promise;\n }\n\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.createAnswer = function createAnswer(successCallback, failureCallback) {\n var options = arguments.length >= 2 ? arguments[2] : arguments[0];\n var promise = origCreateAnswer.apply(this, [options]);\n\n if (!failureCallback) {\n return promise;\n }\n\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n var withCallback = function (description, successCallback, failureCallback) {\n var promise = setLocalDescription.apply(this, [description]);\n\n if (!failureCallback) {\n return promise;\n }\n\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.setLocalDescription = withCallback;\n\n withCallback = function (description, successCallback, failureCallback) {\n var promise = setRemoteDescription.apply(this, [description]);\n\n if (!failureCallback) {\n return promise;\n }\n\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.setRemoteDescription = withCallback;\n\n withCallback = function (candidate, successCallback, failureCallback) {\n var promise = addIceCandidate.apply(this, [candidate]);\n\n if (!failureCallback) {\n return promise;\n }\n\n promise.then(successCallback, failureCallback);\n return Promise.resolve();\n };\n\n prototype.addIceCandidate = withCallback;\n}\n\nfunction shimGetUserMedia(window) {\n var navigator = window && window.navigator;\n\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // shim not needed in Safari 12.1\n var mediaDevices = navigator.mediaDevices;\n\n var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n\n navigator.mediaDevices.getUserMedia = function (constraints) {\n return _getUserMedia(shimConstraints(constraints));\n };\n }\n\n if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) {\n navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb);\n }.bind(navigator);\n }\n}\n\nfunction shimConstraints(constraints) {\n if (constraints && constraints.video !== undefined) {\n return Object.assign({}, constraints, {\n video: utils.compactObject(constraints.video)\n });\n }\n\n return constraints;\n}\n\nfunction shimRTCIceServerUrls(window) {\n // migrate from non-spec RTCIceServer.url to RTCIceServer.urls\n var OrigPeerConnection = window.RTCPeerConnection;\n\n window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) {\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n\n if (!server.hasOwnProperty('urls') && server.hasOwnProperty('url')) {\n utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls');\n server = JSON.parse(JSON.stringify(server));\n server.urls = server.url;\n delete server.url;\n newIceServers.push(server);\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n\n pcConfig.iceServers = newIceServers;\n }\n\n return new OrigPeerConnection(pcConfig, pcConstraints);\n };\n\n window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; // wrap static methods. Currently just generateCertificate.\n\n if ('generateCertificate' in window.RTCPeerConnection) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function () {\n return OrigPeerConnection.generateCertificate;\n }\n });\n }\n}\n\nfunction shimTrackEventTransceiver(window) {\n // Add event.transceiver member over deprecated event.receiver\n if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) {\n Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', {\n get: function () {\n return {\n receiver: this.receiver\n };\n }\n });\n }\n}\n\nfunction shimCreateOfferLegacy(window) {\n var origCreateOffer = window.RTCPeerConnection.prototype.createOffer;\n\n window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) {\n if (offerOptions) {\n if (typeof offerOptions.offerToReceiveAudio !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio;\n }\n\n var audioTransceiver = this.getTransceivers().find(function (transceiver) {\n return transceiver.receiver.track.kind === 'audio';\n });\n\n if (offerOptions.offerToReceiveAudio === false && audioTransceiver) {\n if (audioTransceiver.direction === 'sendrecv') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('sendonly');\n } else {\n audioTransceiver.direction = 'sendonly';\n }\n } else if (audioTransceiver.direction === 'recvonly') {\n if (audioTransceiver.setDirection) {\n audioTransceiver.setDirection('inactive');\n } else {\n audioTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) {\n this.addTransceiver('audio');\n }\n\n if (typeof offerOptions.offerToReceiveVideo !== 'undefined') {\n // support bit values\n offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo;\n }\n\n var videoTransceiver = this.getTransceivers().find(function (transceiver) {\n return transceiver.receiver.track.kind === 'video';\n });\n\n if (offerOptions.offerToReceiveVideo === false && videoTransceiver) {\n if (videoTransceiver.direction === 'sendrecv') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('sendonly');\n } else {\n videoTransceiver.direction = 'sendonly';\n }\n } else if (videoTransceiver.direction === 'recvonly') {\n if (videoTransceiver.setDirection) {\n videoTransceiver.setDirection('inactive');\n } else {\n videoTransceiver.direction = 'inactive';\n }\n }\n } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) {\n this.addTransceiver('video');\n }\n }\n\n return origCreateOffer.apply(this, arguments);\n };\n}\n},{\"../utils\":\"iSxC\"}],\"GOQK\":[function(require,module,exports) {\n/*\n * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shimRTCIceCandidate = shimRTCIceCandidate;\nexports.shimMaxMessageSize = shimMaxMessageSize;\nexports.shimSendThrowTypeError = shimSendThrowTypeError;\nexports.shimConnectionState = shimConnectionState;\nexports.removeAllowExtmapMixed = removeAllowExtmapMixed;\n\nvar _sdp = _interopRequireDefault(require(\"sdp\"));\n\nvar utils = _interopRequireWildcard(require(\"./utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction shimRTCIceCandidate(window) {\n // foundation is arbitrarily chosen as an indicator for full support for\n // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface\n if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) {\n return;\n }\n\n var NativeRTCIceCandidate = window.RTCIceCandidate;\n\n window.RTCIceCandidate = function RTCIceCandidate(args) {\n // Remove the a= which shouldn't be part of the candidate string.\n if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) {\n args = JSON.parse(JSON.stringify(args));\n args.candidate = args.candidate.substr(2);\n }\n\n if (args.candidate && args.candidate.length) {\n // Augment the native candidate with the parsed fields.\n var nativeCandidate = new NativeRTCIceCandidate(args);\n\n var parsedCandidate = _sdp.default.parseCandidate(args.candidate);\n\n var augmentedCandidate = Object.assign(nativeCandidate, parsedCandidate); // Add a serializer that does not serialize the extra attributes.\n\n augmentedCandidate.toJSON = function toJSON() {\n return {\n candidate: augmentedCandidate.candidate,\n sdpMid: augmentedCandidate.sdpMid,\n sdpMLineIndex: augmentedCandidate.sdpMLineIndex,\n usernameFragment: augmentedCandidate.usernameFragment\n };\n };\n\n return augmentedCandidate;\n }\n\n return new NativeRTCIceCandidate(args);\n };\n\n window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; // Hook up the augmented candidate in onicecandidate and\n // addEventListener('icecandidate', ...)\n\n utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) {\n if (e.candidate) {\n Object.defineProperty(e, 'candidate', {\n value: new window.RTCIceCandidate(e.candidate),\n writable: 'false'\n });\n }\n\n return e;\n });\n}\n\nfunction shimMaxMessageSize(window) {\n if (!window.RTCPeerConnection) {\n return;\n }\n\n var browserDetails = utils.detectBrowser(window);\n\n if (!('sctp' in window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', {\n get: function () {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n }\n });\n }\n\n var sctpInDescription = function (description) {\n if (!description || !description.sdp) {\n return false;\n }\n\n var sections = _sdp.default.splitSections(description.sdp);\n\n sections.shift();\n return sections.some(function (mediaSection) {\n var mLine = _sdp.default.parseMLine(mediaSection);\n\n return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1;\n });\n };\n\n var getRemoteFirefoxVersion = function (description) {\n // TODO: Is there a better solution for detecting Firefox?\n var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\\d+)/);\n\n if (match === null || match.length < 2) {\n return -1;\n }\n\n var version = parseInt(match[1], 10); // Test for NaN (yes, this is ugly)\n\n return version !== version ? -1 : version;\n };\n\n var getCanSendMaxMessageSize = function (remoteIsFirefox) {\n // Every implementation we know can send at least 64 KiB.\n // Note: Although Chrome is technically able to send up to 256 KiB, the\n // data does not reach the other peer reliably.\n // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419\n var canSendMaxMessageSize = 65536;\n\n if (browserDetails.browser === 'firefox') {\n if (browserDetails.version < 57) {\n if (remoteIsFirefox === -1) {\n // FF < 57 will send in 16 KiB chunks using the deprecated PPID\n // fragmentation.\n canSendMaxMessageSize = 16384;\n } else {\n // However, other FF (and RAWRTC) can reassemble PPID-fragmented\n // messages. Thus, supporting ~2 GiB when sending.\n canSendMaxMessageSize = 2147483637;\n }\n } else if (browserDetails.version < 60) {\n // Currently, all FF >= 57 will reset the remote maximum message size\n // to the default value when a data channel is created at a later\n // stage. :(\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536;\n } else {\n // FF >= 60 supports sending ~2 GiB\n canSendMaxMessageSize = 2147483637;\n }\n }\n\n return canSendMaxMessageSize;\n };\n\n var getMaxMessageSize = function (description, remoteIsFirefox) {\n // Note: 65536 bytes is the default value from the SDP spec. Also,\n // every implementation we know supports receiving 65536 bytes.\n var maxMessageSize = 65536; // FF 57 has a slightly incorrect default remote max message size, so\n // we need to adjust it here to avoid a failure when sending.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697\n\n if (browserDetails.browser === 'firefox' && browserDetails.version === 57) {\n maxMessageSize = 65535;\n }\n\n var match = _sdp.default.matchPrefix(description.sdp, 'a=max-message-size:');\n\n if (match.length > 0) {\n maxMessageSize = parseInt(match[0].substr(19), 10);\n } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) {\n // If the maximum message size is not present in the remote SDP and\n // both local and remote are Firefox, the remote peer can receive\n // ~2 GiB.\n maxMessageSize = 2147483637;\n }\n\n return maxMessageSize;\n };\n\n var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription;\n\n window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() {\n this._sctp = null; // Chrome decided to not expose .sctp in plan-b mode.\n // As usual, adapter.js has to do an 'ugly worakaround'\n // to cover up the mess.\n\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) {\n var {\n sdpSemantics: sdpSemantics\n } = this.getConfiguration();\n\n if (sdpSemantics === 'plan-b') {\n Object.defineProperty(this, 'sctp', {\n get: function () {\n return typeof this._sctp === 'undefined' ? null : this._sctp;\n },\n enumerable: true,\n configurable: true\n });\n }\n }\n\n if (sctpInDescription(arguments[0])) {\n // Check if the remote is FF.\n var isFirefox = getRemoteFirefoxVersion(arguments[0]); // Get the maximum message size the local peer is capable of sending\n\n var canSendMMS = getCanSendMaxMessageSize(isFirefox); // Get the maximum message size of the remote peer.\n\n var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); // Determine final maximum message size\n\n var maxMessageSize;\n\n if (canSendMMS === 0 && remoteMMS === 0) {\n maxMessageSize = Number.POSITIVE_INFINITY;\n } else if (canSendMMS === 0 || remoteMMS === 0) {\n maxMessageSize = Math.max(canSendMMS, remoteMMS);\n } else {\n maxMessageSize = Math.min(canSendMMS, remoteMMS);\n } // Create a dummy RTCSctpTransport object and the 'maxMessageSize'\n // attribute.\n\n\n var sctp = {};\n Object.defineProperty(sctp, 'maxMessageSize', {\n get: function () {\n return maxMessageSize;\n }\n });\n this._sctp = sctp;\n }\n\n return origSetRemoteDescription.apply(this, arguments);\n };\n}\n\nfunction shimSendThrowTypeError(window) {\n if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) {\n return;\n } // Note: Although Firefox >= 57 has a native implementation, the maximum\n // message size can be reset for all data channels at a later stage.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831\n\n\n function wrapDcSend(dc, pc) {\n var origDataChannelSend = dc.send;\n\n dc.send = function send() {\n var data = arguments[0];\n var length = data.length || data.size || data.byteLength;\n\n if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) {\n throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)');\n }\n\n return origDataChannelSend.apply(dc, arguments);\n };\n }\n\n var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel;\n\n window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() {\n var dataChannel = origCreateDataChannel.apply(this, arguments);\n wrapDcSend(dataChannel, this);\n return dataChannel;\n };\n\n utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) {\n wrapDcSend(e.channel, e.target);\n return e;\n });\n}\n/* shims RTCConnectionState by pretending it is the same as iceConnectionState.\n * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12\n * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect\n * since DTLS failures would be hidden. See\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827\n * for the Firefox tracking bug.\n */\n\n\nfunction shimConnectionState(window) {\n if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) {\n return;\n }\n\n var proto = window.RTCPeerConnection.prototype;\n Object.defineProperty(proto, 'connectionState', {\n get: function () {\n return {\n completed: 'connected',\n checking: 'connecting'\n }[this.iceConnectionState] || this.iceConnectionState;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(proto, 'onconnectionstatechange', {\n get: function () {\n return this._onconnectionstatechange || null;\n },\n set: function (cb) {\n if (this._onconnectionstatechange) {\n this.removeEventListener('connectionstatechange', this._onconnectionstatechange);\n delete this._onconnectionstatechange;\n }\n\n if (cb) {\n this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) {\n var origMethod = proto[method];\n\n proto[method] = function () {\n if (!this._connectionstatechangepoly) {\n this._connectionstatechangepoly = function (e) {\n var pc = e.target;\n\n if (pc._lastConnectionState !== pc.connectionState) {\n pc._lastConnectionState = pc.connectionState;\n var newEvent = new Event('connectionstatechange', e);\n pc.dispatchEvent(newEvent);\n }\n\n return e;\n };\n\n this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly);\n }\n\n return origMethod.apply(this, arguments);\n };\n });\n}\n\nfunction removeAllowExtmapMixed(window) {\n /* remove a=extmap-allow-mixed for Chrome < M71 */\n if (!window.RTCPeerConnection) {\n return;\n }\n\n var browserDetails = utils.detectBrowser(window);\n\n if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) {\n return;\n }\n\n var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription;\n\n window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) {\n if (desc && desc.sdp && desc.sdp.indexOf('\\na=extmap-allow-mixed') !== -1) {\n desc.sdp = desc.sdp.split('\\n').filter(function (line) {\n return line.trim() !== 'a=extmap-allow-mixed';\n }).join('\\n');\n }\n\n return nativeSRD.apply(this, arguments);\n };\n}\n},{\"sdp\":\"YHvh\",\"./utils\":\"iSxC\"}],\"KtlG\":[function(require,module,exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.adapterFactory = adapterFactory;\n\nvar utils = _interopRequireWildcard(require(\"./utils\"));\n\nvar chromeShim = _interopRequireWildcard(require(\"./chrome/chrome_shim\"));\n\nvar edgeShim = _interopRequireWildcard(require(\"./edge/edge_shim\"));\n\nvar firefoxShim = _interopRequireWildcard(require(\"./firefox/firefox_shim\"));\n\nvar safariShim = _interopRequireWildcard(require(\"./safari/safari_shim\"));\n\nvar commonShim = _interopRequireWildcard(require(\"./common_shim\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n// Browser shims.\n// Shimming starts here.\nfunction adapterFactory() {\n var {\n window: window\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n shimChrome: true,\n shimFirefox: true,\n shimEdge: true,\n shimSafari: true\n };\n // Utils.\n var logging = utils.log;\n var browserDetails = utils.detectBrowser(window);\n var adapter = {\n browserDetails: browserDetails,\n commonShim: commonShim,\n extractVersion: utils.extractVersion,\n disableLog: utils.disableLog,\n disableWarnings: utils.disableWarnings\n }; // Shim browser if found.\n\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) {\n logging('Chrome shim is not included in this adapter release.');\n return adapter;\n }\n\n logging('adapter.js shimming chrome.'); // Export to the adapter global object visible in the browser.\n\n adapter.browserShim = chromeShim;\n chromeShim.shimGetUserMedia(window);\n chromeShim.shimMediaStream(window);\n chromeShim.shimPeerConnection(window);\n chromeShim.shimOnTrack(window);\n chromeShim.shimAddTrackRemoveTrack(window);\n chromeShim.shimGetSendersWithDtmf(window);\n chromeShim.shimGetStats(window);\n chromeShim.shimSenderReceiverGetStats(window);\n chromeShim.fixNegotiationNeeded(window);\n commonShim.shimRTCIceCandidate(window);\n commonShim.shimConnectionState(window);\n commonShim.shimMaxMessageSize(window);\n commonShim.shimSendThrowTypeError(window);\n commonShim.removeAllowExtmapMixed(window);\n break;\n\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) {\n logging('Firefox shim is not included in this adapter release.');\n return adapter;\n }\n\n logging('adapter.js shimming firefox.'); // Export to the adapter global object visible in the browser.\n\n adapter.browserShim = firefoxShim;\n firefoxShim.shimGetUserMedia(window);\n firefoxShim.shimPeerConnection(window);\n firefoxShim.shimOnTrack(window);\n firefoxShim.shimRemoveStream(window);\n firefoxShim.shimSenderGetStats(window);\n firefoxShim.shimReceiverGetStats(window);\n firefoxShim.shimRTCDataChannel(window);\n firefoxShim.shimAddTransceiver(window);\n firefoxShim.shimCreateOffer(window);\n firefoxShim.shimCreateAnswer(window);\n commonShim.shimRTCIceCandidate(window);\n commonShim.shimConnectionState(window);\n commonShim.shimMaxMessageSize(window);\n commonShim.shimSendThrowTypeError(window);\n break;\n\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection || !options.shimEdge) {\n logging('MS edge shim is not included in this adapter release.');\n return adapter;\n }\n\n logging('adapter.js shimming edge.'); // Export to the adapter global object visible in the browser.\n\n adapter.browserShim = edgeShim;\n edgeShim.shimGetUserMedia(window);\n edgeShim.shimGetDisplayMedia(window);\n edgeShim.shimPeerConnection(window);\n edgeShim.shimReplaceTrack(window); // the edge shim implements the full RTCIceCandidate object.\n\n commonShim.shimMaxMessageSize(window);\n commonShim.shimSendThrowTypeError(window);\n break;\n\n case 'safari':\n if (!safariShim || !options.shimSafari) {\n logging('Safari shim is not included in this adapter release.');\n return adapter;\n }\n\n logging('adapter.js shimming safari.'); // Export to the adapter global object visible in the browser.\n\n adapter.browserShim = safariShim;\n safariShim.shimRTCIceServerUrls(window);\n safariShim.shimCreateOfferLegacy(window);\n safariShim.shimCallbacksAPI(window);\n safariShim.shimLocalStreamsAPI(window);\n safariShim.shimRemoteStreamsAPI(window);\n safariShim.shimTrackEventTransceiver(window);\n safariShim.shimGetUserMedia(window);\n commonShim.shimRTCIceCandidate(window);\n commonShim.shimMaxMessageSize(window);\n commonShim.shimSendThrowTypeError(window);\n commonShim.removeAllowExtmapMixed(window);\n break;\n\n default:\n logging('Unsupported browser!');\n break;\n }\n\n return adapter;\n}\n},{\"./utils\":\"iSxC\",\"./chrome/chrome_shim\":\"uI5X\",\"./edge/edge_shim\":\"XRic\",\"./firefox/firefox_shim\":\"Fzdr\",\"./safari/safari_shim\":\"t1lL\",\"./common_shim\":\"GOQK\"}],\"tI1X\":[function(require,module,exports) {\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n\n/* eslint-env node */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adapter_factory = require(\"./adapter_factory.js\");\n\nvar adapter = (0, _adapter_factory.adapterFactory)({\n window: window\n});\nvar _default = adapter;\nexports.default = _default;\n},{\"./adapter_factory.js\":\"KtlG\"}],\"sXtV\":[function(require,module,exports) {\n\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar webrtc_adapter_1 = __importDefault(require(\"webrtc-adapter\"));\n\nexports.webRTCAdapter = webrtc_adapter_1.default;\n},{\"webrtc-adapter\":\"tI1X\"}],\"I31f\":[function(require,module,exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar adapter_1 = require(\"./adapter\");\n\nexports.Supports = new (\n/** @class */\nfunction () {\n function class_1() {\n this.isIOS = ['iPad', 'iPhone', 'iPod'].includes(navigator.platform);\n this.supportedBrowsers = ['firefox', 'chrome', 'safari'];\n this.minFirefoxVersion = 59;\n this.minChromeVersion = 72;\n this.minSafariVersion = 605;\n }\n\n class_1.prototype.isWebRTCSupported = function () {\n return typeof RTCPeerConnection !== 'undefined';\n };\n\n ;\n\n class_1.prototype.isBrowserSupported = function () {\n var browser = this.getBrowser();\n var version = this.getVersion();\n var validBrowser = this.supportedBrowsers.includes(browser);\n if (!validBrowser) return false;\n if (browser === 'chrome') return version >= this.minChromeVersion;\n if (browser === 'firefox') return version >= this.minFirefoxVersion;\n if (browser === 'safari') return !this.isIOS && version >= this.minSafariVersion;\n return false;\n };\n\n class_1.prototype.getBrowser = function () {\n return adapter_1.webRTCAdapter.browserDetails.browser;\n };\n\n class_1.prototype.getVersion = function () {\n return adapter_1.webRTCAdapter.browserDetails.version || 0;\n };\n\n class_1.prototype.isUnifiedPlanSupported = function () {\n var browser = this.getBrowser();\n var version = adapter_1.webRTCAdapter.browserDetails.version || 0;\n if (browser === 'chrome' && version < 72) return false;\n if (browser === 'firefox' && version >= 59) return true;\n if (!window.RTCRtpTransceiver || !('currentDirection' in RTCRtpTransceiver.prototype)) return false;\n var tempPc;\n var supported = false;\n\n try {\n tempPc = new RTCPeerConnection();\n tempPc.addTransceiver('audio');\n supported = true;\n } catch (e) {} finally {\n if (tempPc) {\n tempPc.close();\n }\n }\n\n return supported;\n };\n\n class_1.prototype.toString = function () {\n return \"Supports: \\n browser:\" + this.getBrowser() + \" \\n version:\" + this.getVersion() + \" \\n isIOS:\" + this.isIOS + \" \\n isWebRTCSupported:\" + this.isWebRTCSupported() + \" \\n isBrowserSupported:\" + this.isBrowserSupported() + \" \\n isUnifiedPlanSupported:\" + this.isUnifiedPlanSupported();\n };\n\n return class_1;\n}())();\n},{\"./adapter\":\"sXtV\"}],\"BHXf\":[function(require,module,exports) {\n\"use strict\";\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }\n result[\"default\"] = mod;\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar BinaryPack = __importStar(require(\"peerjs-js-binarypack\"));\n\nvar supports_1 = require(\"./supports\");\n\nvar DEFAULT_CONFIG = {\n iceServers: [{\n urls: \"stun:stun.l.google.com:19302\"\n }, {\n urls: \"turn:0.peerjs.com:3478\",\n username: \"peerjs\",\n credential: \"peerjsp\"\n }],\n sdpSemantics: \"unified-plan\"\n};\nexports.util = new (\n/** @class */\nfunction () {\n function class_1() {\n this.CLOUD_HOST = \"0.peerjs.com\";\n this.CLOUD_PORT = 443; // Browsers that need chunking:\n\n this.chunkedBrowsers = {\n Chrome: 1,\n chrome: 1\n };\n this.chunkedMTU = 16300; // The original 60000 bytes setting does not work when sending data from Firefox to Chrome, which is \"cut off\" after 16384 bytes and delivered individually.\n // Returns browser-agnostic default config\n\n this.defaultConfig = DEFAULT_CONFIG;\n this.browser = supports_1.Supports.getBrowser();\n this.browserVersion = supports_1.Supports.getVersion(); // Lists which features are supported\n\n this.supports = function () {\n var supported = {\n browser: supports_1.Supports.isBrowserSupported(),\n webRTC: supports_1.Supports.isWebRTCSupported(),\n audioVideo: false,\n data: false,\n binaryBlob: false,\n reliable: false\n };\n if (!supported.webRTC) return supported;\n var pc;\n\n try {\n pc = new RTCPeerConnection(DEFAULT_CONFIG);\n supported.audioVideo = true;\n var dc = void 0;\n\n try {\n dc = pc.createDataChannel(\"_PEERJSTEST\", {\n ordered: true\n });\n supported.data = true;\n supported.reliable = !!dc.ordered; // Binary test\n\n try {\n dc.binaryType = \"blob\";\n supported.binaryBlob = !supports_1.Supports.isIOS;\n } catch (e) {}\n } catch (e) {} finally {\n if (dc) {\n dc.close();\n }\n }\n } catch (e) {} finally {\n if (pc) {\n pc.close();\n }\n }\n\n return supported;\n }();\n\n this.pack = BinaryPack.pack;\n this.unpack = BinaryPack.unpack; // Binary stuff\n\n this._dataCount = 1;\n }\n\n class_1.prototype.noop = function () {}; // Ensure alphanumeric ids\n\n\n class_1.prototype.validateId = function (id) {\n // Allow empty ids\n return !id || /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(id);\n };\n\n class_1.prototype.chunk = function (blob) {\n var chunks = [];\n var size = blob.size;\n var total = Math.ceil(size / exports.util.chunkedMTU);\n var index = 0;\n var start = 0;\n\n while (start < size) {\n var end = Math.min(size, start + exports.util.chunkedMTU);\n var b = blob.slice(start, end);\n var chunk = {\n __peerData: this._dataCount,\n n: index,\n data: b,\n total: total\n };\n chunks.push(chunk);\n start = end;\n index++;\n }\n\n this._dataCount++;\n return chunks;\n };\n\n class_1.prototype.blobToArrayBuffer = function (blob, cb) {\n var fr = new FileReader();\n\n fr.onload = function (evt) {\n if (evt.target) {\n cb(evt.target.result);\n }\n };\n\n fr.readAsArrayBuffer(blob);\n return fr;\n };\n\n class_1.prototype.binaryStringToArrayBuffer = function (binary) {\n var byteArray = new Uint8Array(binary.length);\n\n for (var i = 0; i < binary.length; i++) {\n byteArray[i] = binary.charCodeAt(i) & 0xff;\n }\n\n return byteArray.buffer;\n };\n\n class_1.prototype.randomToken = function () {\n return Math.random().toString(36).substr(2);\n };\n\n class_1.prototype.isSecure = function () {\n return location.protocol === \"https:\";\n };\n\n return class_1;\n}())();\n},{\"peerjs-js-binarypack\":\"kdPp\",\"./supports\":\"I31f\"}],\"JJlS\":[function(require,module,exports) {\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n},{}],\"WOs9\":[function(require,module,exports) {\n\"use strict\";\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar LOG_PREFIX = 'PeerJS: ';\n/*\nPrints log messages depending on the debug level passed in. Defaults to 0.\n0 Prints no logs.\n1 Prints only errors.\n2 Prints errors and warnings.\n3 Prints all logs.\n*/\n\nvar LogLevel;\n\n(function (LogLevel) {\n LogLevel[LogLevel[\"Disabled\"] = 0] = \"Disabled\";\n LogLevel[LogLevel[\"Errors\"] = 1] = \"Errors\";\n LogLevel[LogLevel[\"Warnings\"] = 2] = \"Warnings\";\n LogLevel[LogLevel[\"All\"] = 3] = \"All\";\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\n\nvar Logger =\n/** @class */\nfunction () {\n function Logger() {\n this._logLevel = LogLevel.Disabled;\n }\n\n Object.defineProperty(Logger.prototype, \"logLevel\", {\n get: function get() {\n return this._logLevel;\n },\n set: function set(logLevel) {\n this._logLevel = logLevel;\n },\n enumerable: true,\n configurable: true\n });\n\n Logger.prototype.log = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this._logLevel >= LogLevel.All) {\n this._print.apply(this, __spread([LogLevel.All], args));\n }\n };\n\n Logger.prototype.warn = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this._logLevel >= LogLevel.Warnings) {\n this._print.apply(this, __spread([LogLevel.Warnings], args));\n }\n };\n\n Logger.prototype.error = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this._logLevel >= LogLevel.Errors) {\n this._print.apply(this, __spread([LogLevel.Errors], args));\n }\n };\n\n Logger.prototype.setLogFunction = function (fn) {\n this._print = fn;\n };\n\n Logger.prototype._print = function (logLevel) {\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var copy = __spread([LOG_PREFIX], rest);\n\n for (var i in copy) {\n if (copy[i] instanceof Error) {\n copy[i] = \"(\" + copy[i].name + \") \" + copy[i].message;\n }\n }\n\n if (logLevel >= LogLevel.All) {\n console.log.apply(console, __spread(copy));\n } else if (logLevel >= LogLevel.Warnings) {\n console.warn.apply(console, __spread([\"WARNING\"], copy));\n } else if (logLevel >= LogLevel.Errors) {\n console.error.apply(console, __spread([\"ERROR\"], copy));\n }\n };\n\n return Logger;\n}();\n\nexports.default = new Logger();\n},{}],\"ZRYf\":[function(require,module,exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar ConnectionEventType;\n\n(function (ConnectionEventType) {\n ConnectionEventType[\"Open\"] = \"open\";\n ConnectionEventType[\"Stream\"] = \"stream\";\n ConnectionEventType[\"Data\"] = \"data\";\n ConnectionEventType[\"Close\"] = \"close\";\n ConnectionEventType[\"Error\"] = \"error\";\n ConnectionEventType[\"IceStateChanged\"] = \"iceStateChanged\";\n})(ConnectionEventType = exports.ConnectionEventType || (exports.ConnectionEventType = {}));\n\nvar ConnectionType;\n\n(function (ConnectionType) {\n ConnectionType[\"Data\"] = \"data\";\n ConnectionType[\"Media\"] = \"media\";\n})(ConnectionType = exports.ConnectionType || (exports.ConnectionType = {}));\n\nvar PeerEventType;\n\n(function (PeerEventType) {\n PeerEventType[\"Open\"] = \"open\";\n PeerEventType[\"Close\"] = \"close\";\n PeerEventType[\"Connection\"] = \"connection\";\n PeerEventType[\"Call\"] = \"call\";\n PeerEventType[\"Disconnected\"] = \"disconnected\";\n PeerEventType[\"Error\"] = \"error\";\n})(PeerEventType = exports.PeerEventType || (exports.PeerEventType = {}));\n\nvar PeerErrorType;\n\n(function (PeerErrorType) {\n PeerErrorType[\"BrowserIncompatible\"] = \"browser-incompatible\";\n PeerErrorType[\"Disconnected\"] = \"disconnected\";\n PeerErrorType[\"InvalidID\"] = \"invalid-id\";\n PeerErrorType[\"InvalidKey\"] = \"invalid-key\";\n PeerErrorType[\"Network\"] = \"network\";\n PeerErrorType[\"PeerUnavailable\"] = \"peer-unavailable\";\n PeerErrorType[\"SslUnavailable\"] = \"ssl-unavailable\";\n PeerErrorType[\"ServerError\"] = \"server-error\";\n PeerErrorType[\"SocketError\"] = \"socket-error\";\n PeerErrorType[\"SocketClosed\"] = \"socket-closed\";\n PeerErrorType[\"UnavailableID\"] = \"unavailable-id\";\n PeerErrorType[\"WebRTC\"] = \"webrtc\";\n})(PeerErrorType = exports.PeerErrorType || (exports.PeerErrorType = {}));\n\nvar SerializationType;\n\n(function (SerializationType) {\n SerializationType[\"Binary\"] = \"binary\";\n SerializationType[\"BinaryUTF8\"] = \"binary-utf8\";\n SerializationType[\"JSON\"] = \"json\";\n})(SerializationType = exports.SerializationType || (exports.SerializationType = {}));\n\nvar SocketEventType;\n\n(function (SocketEventType) {\n SocketEventType[\"Message\"] = \"message\";\n SocketEventType[\"Disconnected\"] = \"disconnected\";\n SocketEventType[\"Error\"] = \"error\";\n SocketEventType[\"Close\"] = \"close\";\n})(SocketEventType = exports.SocketEventType || (exports.SocketEventType = {}));\n\nvar ServerMessageType;\n\n(function (ServerMessageType) {\n ServerMessageType[\"Heartbeat\"] = \"HEARTBEAT\";\n ServerMessageType[\"Candidate\"] = \"CANDIDATE\";\n ServerMessageType[\"Offer\"] = \"OFFER\";\n ServerMessageType[\"Answer\"] = \"ANSWER\";\n ServerMessageType[\"Open\"] = \"OPEN\";\n ServerMessageType[\"Error\"] = \"ERROR\";\n ServerMessageType[\"IdTaken\"] = \"ID-TAKEN\";\n ServerMessageType[\"InvalidKey\"] = \"INVALID-KEY\";\n ServerMessageType[\"Leave\"] = \"LEAVE\";\n ServerMessageType[\"Expire\"] = \"EXPIRE\"; // The offer sent to a peer has expired without response.\n})(ServerMessageType = exports.ServerMessageType || (exports.ServerMessageType = {}));\n},{}],\"wJlv\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar eventemitter3_1 = require(\"eventemitter3\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar enums_1 = require(\"./enums\");\n/**\n * An abstraction on top of WebSockets to provide fastest\n * possible connection for peers.\n */\n\n\nvar Socket =\n/** @class */\nfunction (_super) {\n __extends(Socket, _super);\n\n function Socket(secure, host, port, path, key, pingInterval) {\n if (pingInterval === void 0) {\n pingInterval = 5000;\n }\n\n var _this = _super.call(this) || this;\n\n _this.pingInterval = pingInterval;\n _this._disconnected = true;\n _this._messagesQueue = [];\n var wsProtocol = secure ? \"wss://\" : \"ws://\";\n _this._baseUrl = wsProtocol + host + \":\" + port + path + \"peerjs?key=\" + key;\n return _this;\n }\n\n Socket.prototype.start = function (id, token) {\n var _this = this;\n\n this._id = id;\n var wsUrl = this._baseUrl + \"&id=\" + id + \"&token=\" + token;\n\n if (!!this._socket || !this._disconnected) {\n return;\n }\n\n this._socket = new WebSocket(wsUrl);\n this._disconnected = false;\n\n this._socket.onmessage = function (event) {\n var data;\n\n try {\n data = JSON.parse(event.data);\n logger_1.default.log(\"Server message received:\", data);\n } catch (e) {\n logger_1.default.log(\"Invalid server message\", event.data);\n return;\n }\n\n _this.emit(enums_1.SocketEventType.Message, data);\n };\n\n this._socket.onclose = function (event) {\n if (_this._disconnected) {\n return;\n }\n\n logger_1.default.log(\"Socket closed.\", event);\n\n _this._cleanup();\n\n _this._disconnected = true;\n\n _this.emit(enums_1.SocketEventType.Disconnected);\n }; // Take care of the queue of connections if necessary and make sure Peer knows\n // socket is open.\n\n\n this._socket.onopen = function () {\n if (_this._disconnected) {\n return;\n }\n\n _this._sendQueuedMessages();\n\n logger_1.default.log(\"Socket open\");\n\n _this._scheduleHeartbeat();\n };\n };\n\n Socket.prototype._scheduleHeartbeat = function () {\n var _this = this;\n\n this._wsPingTimer = setTimeout(function () {\n _this._sendHeartbeat();\n }, this.pingInterval);\n };\n\n Socket.prototype._sendHeartbeat = function () {\n if (!this._wsOpen()) {\n logger_1.default.log(\"Cannot send heartbeat, because socket closed\");\n return;\n }\n\n var message = JSON.stringify({\n type: enums_1.ServerMessageType.Heartbeat\n });\n\n this._socket.send(message);\n\n this._scheduleHeartbeat();\n };\n /** Is the websocket currently open? */\n\n\n Socket.prototype._wsOpen = function () {\n return !!this._socket && this._socket.readyState === 1;\n };\n /** Send queued messages. */\n\n\n Socket.prototype._sendQueuedMessages = function () {\n var e_1, _a; //Create copy of queue and clear it,\n //because send method push the message back to queue if smth will go wrong\n\n\n var copiedQueue = __spread(this._messagesQueue);\n\n this._messagesQueue = [];\n\n try {\n for (var copiedQueue_1 = __values(copiedQueue), copiedQueue_1_1 = copiedQueue_1.next(); !copiedQueue_1_1.done; copiedQueue_1_1 = copiedQueue_1.next()) {\n var message = copiedQueue_1_1.value;\n this.send(message);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (copiedQueue_1_1 && !copiedQueue_1_1.done && (_a = copiedQueue_1.return)) _a.call(copiedQueue_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n /** Exposed send for DC & Peer. */\n\n\n Socket.prototype.send = function (data) {\n if (this._disconnected) {\n return;\n } // If we didn't get an ID yet, we can't yet send anything so we should queue\n // up these messages.\n\n\n if (!this._id) {\n this._messagesQueue.push(data);\n\n return;\n }\n\n if (!data.type) {\n this.emit(enums_1.SocketEventType.Error, \"Invalid message\");\n return;\n }\n\n if (!this._wsOpen()) {\n return;\n }\n\n var message = JSON.stringify(data);\n\n this._socket.send(message);\n };\n\n Socket.prototype.close = function () {\n if (this._disconnected) {\n return;\n }\n\n this._cleanup();\n\n this._disconnected = true;\n };\n\n Socket.prototype._cleanup = function () {\n if (!!this._socket) {\n this._socket.onopen = this._socket.onmessage = this._socket.onclose = null;\n\n this._socket.close();\n\n this._socket = undefined;\n }\n\n clearTimeout(this._wsPingTimer);\n };\n\n return Socket;\n}(eventemitter3_1.EventEmitter);\n\nexports.Socket = Socket;\n},{\"eventemitter3\":\"JJlS\",\"./logger\":\"WOs9\",\"./enums\":\"ZRYf\"}],\"HCdX\":[function(require,module,exports) {\n\"use strict\";\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar util_1 = require(\"./util\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar enums_1 = require(\"./enums\");\n/**\n * Manages all negotiations between Peers.\n */\n\n\nvar Negotiator =\n/** @class */\nfunction () {\n function Negotiator(connection) {\n this.connection = connection;\n }\n /** Returns a PeerConnection object set up correctly (for data, media). */\n\n\n Negotiator.prototype.startConnection = function (options) {\n var peerConnection = this._startPeerConnection(); // Set the connection's PC.\n\n\n this.connection.peerConnection = peerConnection;\n\n if (this.connection.type === enums_1.ConnectionType.Media && options._stream) {\n this._addTracksToConnection(options._stream, peerConnection);\n } // What do we need to do now?\n\n\n if (options.originator) {\n if (this.connection.type === enums_1.ConnectionType.Data) {\n var dataConnection = this.connection;\n var config = {\n ordered: !!options.reliable\n };\n var dataChannel = peerConnection.createDataChannel(dataConnection.label, config);\n dataConnection.initialize(dataChannel);\n }\n\n this._makeOffer();\n } else {\n this.handleSDP(\"OFFER\", options.sdp);\n }\n };\n /** Start a PC. */\n\n\n Negotiator.prototype._startPeerConnection = function () {\n logger_1.default.log(\"Creating RTCPeerConnection.\");\n var peerConnection = new RTCPeerConnection(this.connection.provider.options.config);\n\n this._setupListeners(peerConnection);\n\n return peerConnection;\n };\n /** Set up various WebRTC listeners. */\n\n\n Negotiator.prototype._setupListeners = function (peerConnection) {\n var _this = this;\n\n var peerId = this.connection.peer;\n var connectionId = this.connection.connectionId;\n var connectionType = this.connection.type;\n var provider = this.connection.provider; // ICE CANDIDATES.\n\n logger_1.default.log(\"Listening for ICE candidates.\");\n\n peerConnection.onicecandidate = function (evt) {\n if (!evt.candidate || !evt.candidate.candidate) return;\n logger_1.default.log(\"Received ICE candidates for \" + peerId + \":\", evt.candidate);\n provider.socket.send({\n type: enums_1.ServerMessageType.Candidate,\n payload: {\n candidate: evt.candidate,\n type: connectionType,\n connectionId: connectionId\n },\n dst: peerId\n });\n };\n\n peerConnection.oniceconnectionstatechange = function () {\n switch (peerConnection.iceConnectionState) {\n case \"failed\":\n logger_1.default.log(\"iceConnectionState is failed, closing connections to \" + peerId);\n\n _this.connection.emit(enums_1.ConnectionEventType.Error, new Error(\"Negotiation of connection to \" + peerId + \" failed.\"));\n\n _this.connection.close();\n\n break;\n\n case \"closed\":\n logger_1.default.log(\"iceConnectionState is closed, closing connections to \" + peerId);\n\n _this.connection.emit(enums_1.ConnectionEventType.Error, new Error(\"Connection to \" + peerId + \" closed.\"));\n\n _this.connection.close();\n\n break;\n\n case \"disconnected\":\n logger_1.default.log(\"iceConnectionState changed to disconnected on the connection with \" + peerId);\n break;\n\n case \"completed\":\n peerConnection.onicecandidate = util_1.util.noop;\n break;\n }\n\n _this.connection.emit(enums_1.ConnectionEventType.IceStateChanged, peerConnection.iceConnectionState);\n }; // DATACONNECTION.\n\n\n logger_1.default.log(\"Listening for data channel\"); // Fired between offer and answer, so options should already be saved\n // in the options hash.\n\n peerConnection.ondatachannel = function (evt) {\n logger_1.default.log(\"Received data channel\");\n var dataChannel = evt.channel;\n var connection = provider.getConnection(peerId, connectionId);\n connection.initialize(dataChannel);\n }; // MEDIACONNECTION.\n\n\n logger_1.default.log(\"Listening for remote stream\");\n\n peerConnection.ontrack = function (evt) {\n logger_1.default.log(\"Received remote stream\");\n var stream = evt.streams[0];\n var connection = provider.getConnection(peerId, connectionId);\n\n if (connection.type === enums_1.ConnectionType.Media) {\n var mediaConnection = connection;\n\n _this._addStreamToMediaConnection(stream, mediaConnection);\n }\n };\n };\n\n Negotiator.prototype.cleanup = function () {\n logger_1.default.log(\"Cleaning up PeerConnection to \" + this.connection.peer);\n var peerConnection = this.connection.peerConnection;\n\n if (!peerConnection) {\n return;\n }\n\n this.connection.peerConnection = null; //unsubscribe from all PeerConnection's events\n\n peerConnection.onicecandidate = peerConnection.oniceconnectionstatechange = peerConnection.ondatachannel = peerConnection.ontrack = function () {};\n\n var peerConnectionNotClosed = peerConnection.signalingState !== \"closed\";\n var dataChannelNotClosed = false;\n\n if (this.connection.type === enums_1.ConnectionType.Data) {\n var dataConnection = this.connection;\n var dataChannel = dataConnection.dataChannel;\n\n if (dataChannel) {\n dataChannelNotClosed = !!dataChannel.readyState && dataChannel.readyState !== \"closed\";\n }\n }\n\n if (peerConnectionNotClosed || dataChannelNotClosed) {\n peerConnection.close();\n }\n };\n\n Negotiator.prototype._makeOffer = function () {\n return __awaiter(this, void 0, Promise, function () {\n var peerConnection, provider, offer, payload, dataConnection, err_2, err_1_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n peerConnection = this.connection.peerConnection;\n provider = this.connection.provider;\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 7,, 8]);\n\n return [4\n /*yield*/\n , peerConnection.createOffer(this.connection.options.constraints)];\n\n case 2:\n offer = _a.sent();\n logger_1.default.log(\"Created offer.\");\n\n if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {\n offer.sdp = this.connection.options.sdpTransform(offer.sdp) || offer.sdp;\n }\n\n _a.label = 3;\n\n case 3:\n _a.trys.push([3, 5,, 6]);\n\n return [4\n /*yield*/\n , peerConnection.setLocalDescription(offer)];\n\n case 4:\n _a.sent();\n\n logger_1.default.log(\"Set localDescription:\", offer, \"for:\" + this.connection.peer);\n payload = {\n sdp: offer,\n type: this.connection.type,\n connectionId: this.connection.connectionId,\n metadata: this.connection.metadata,\n browser: util_1.util.browser\n };\n\n if (this.connection.type === enums_1.ConnectionType.Data) {\n dataConnection = this.connection;\n payload = __assign(__assign({}, payload), {\n label: dataConnection.label,\n reliable: dataConnection.reliable,\n serialization: dataConnection.serialization\n });\n }\n\n provider.socket.send({\n type: enums_1.ServerMessageType.Offer,\n payload: payload,\n dst: this.connection.peer\n });\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_2 = _a.sent(); // TODO: investigate why _makeOffer is being called from the answer\n\n if (err_2 != \"OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer\") {\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_2);\n logger_1.default.log(\"Failed to setLocalDescription, \", err_2);\n }\n\n return [3\n /*break*/\n , 6];\n\n case 6:\n return [3\n /*break*/\n , 8];\n\n case 7:\n err_1_1 = _a.sent();\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_1_1);\n logger_1.default.log(\"Failed to createOffer, \", err_1_1);\n return [3\n /*break*/\n , 8];\n\n case 8:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Negotiator.prototype._makeAnswer = function () {\n return __awaiter(this, void 0, Promise, function () {\n var peerConnection, provider, answer, err_3, err_1_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n peerConnection = this.connection.peerConnection;\n provider = this.connection.provider;\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 7,, 8]);\n\n return [4\n /*yield*/\n , peerConnection.createAnswer()];\n\n case 2:\n answer = _a.sent();\n logger_1.default.log(\"Created answer.\");\n\n if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === 'function') {\n answer.sdp = this.connection.options.sdpTransform(answer.sdp) || answer.sdp;\n }\n\n _a.label = 3;\n\n case 3:\n _a.trys.push([3, 5,, 6]);\n\n return [4\n /*yield*/\n , peerConnection.setLocalDescription(answer)];\n\n case 4:\n _a.sent();\n\n logger_1.default.log(\"Set localDescription:\", answer, \"for:\" + this.connection.peer);\n provider.socket.send({\n type: enums_1.ServerMessageType.Answer,\n payload: {\n sdp: answer,\n type: this.connection.type,\n connectionId: this.connection.connectionId,\n browser: util_1.util.browser\n },\n dst: this.connection.peer\n });\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_3 = _a.sent();\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_3);\n logger_1.default.log(\"Failed to setLocalDescription, \", err_3);\n return [3\n /*break*/\n , 6];\n\n case 6:\n return [3\n /*break*/\n , 8];\n\n case 7:\n err_1_2 = _a.sent();\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_1_2);\n logger_1.default.log(\"Failed to create answer, \", err_1_2);\n return [3\n /*break*/\n , 8];\n\n case 8:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /** Handle an SDP. */\n\n\n Negotiator.prototype.handleSDP = function (type, sdp) {\n return __awaiter(this, void 0, Promise, function () {\n var peerConnection, provider, self, err_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n sdp = new RTCSessionDescription(sdp);\n peerConnection = this.connection.peerConnection;\n provider = this.connection.provider;\n logger_1.default.log(\"Setting remote description\", sdp);\n self = this;\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 5,, 6]);\n\n return [4\n /*yield*/\n , peerConnection.setRemoteDescription(sdp)];\n\n case 2:\n _a.sent();\n\n logger_1.default.log(\"Set remoteDescription:\" + type + \" for:\" + this.connection.peer);\n if (!(type === \"OFFER\")) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , self._makeAnswer()];\n\n case 3:\n _a.sent();\n\n _a.label = 4;\n\n case 4:\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_4 = _a.sent();\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_4);\n logger_1.default.log(\"Failed to setRemoteDescription, \", err_4);\n return [3\n /*break*/\n , 6];\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /** Handle a candidate. */\n\n\n Negotiator.prototype.handleCandidate = function (ice) {\n return __awaiter(this, void 0, Promise, function () {\n var candidate, sdpMLineIndex, sdpMid, peerConnection, provider, err_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger_1.default.log(\"handleCandidate:\", ice);\n candidate = ice.candidate;\n sdpMLineIndex = ice.sdpMLineIndex;\n sdpMid = ice.sdpMid;\n peerConnection = this.connection.peerConnection;\n provider = this.connection.provider;\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , peerConnection.addIceCandidate(new RTCIceCandidate({\n sdpMid: sdpMid,\n sdpMLineIndex: sdpMLineIndex,\n candidate: candidate\n }))];\n\n case 2:\n _a.sent();\n\n logger_1.default.log(\"Added ICE candidate for:\" + this.connection.peer);\n return [3\n /*break*/\n , 4];\n\n case 3:\n err_5 = _a.sent();\n provider.emitError(enums_1.PeerErrorType.WebRTC, err_5);\n logger_1.default.log(\"Failed to handleCandidate, \", err_5);\n return [3\n /*break*/\n , 4];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Negotiator.prototype._addTracksToConnection = function (stream, peerConnection) {\n logger_1.default.log(\"add tracks from stream \" + stream.id + \" to peer connection\");\n\n if (!peerConnection.addTrack) {\n return logger_1.default.error(\"Your browser does't support RTCPeerConnection#addTrack. Ignored.\");\n }\n\n stream.getTracks().forEach(function (track) {\n peerConnection.addTrack(track, stream);\n });\n };\n\n Negotiator.prototype._addStreamToMediaConnection = function (stream, mediaConnection) {\n logger_1.default.log(\"add stream \" + stream.id + \" to media connection \" + mediaConnection.connectionId);\n mediaConnection.addStream(stream);\n };\n\n return Negotiator;\n}();\n\nexports.Negotiator = Negotiator;\n},{\"./util\":\"BHXf\",\"./logger\":\"WOs9\",\"./enums\":\"ZRYf\"}],\"tQFK\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar eventemitter3_1 = require(\"eventemitter3\");\n\nvar BaseConnection =\n/** @class */\nfunction (_super) {\n __extends(BaseConnection, _super);\n\n function BaseConnection(peer, provider, options) {\n var _this = _super.call(this) || this;\n\n _this.peer = peer;\n _this.provider = provider;\n _this.options = options;\n _this._open = false;\n _this.metadata = options.metadata;\n return _this;\n }\n\n Object.defineProperty(BaseConnection.prototype, \"open\", {\n get: function get() {\n return this._open;\n },\n enumerable: true,\n configurable: true\n });\n return BaseConnection;\n}(eventemitter3_1.EventEmitter);\n\nexports.BaseConnection = BaseConnection;\n},{\"eventemitter3\":\"JJlS\"}],\"dbHP\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar util_1 = require(\"./util\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar negotiator_1 = require(\"./negotiator\");\n\nvar enums_1 = require(\"./enums\");\n\nvar baseconnection_1 = require(\"./baseconnection\");\n/**\n * Wraps the streaming interface between two Peers.\n */\n\n\nvar MediaConnection =\n/** @class */\nfunction (_super) {\n __extends(MediaConnection, _super);\n\n function MediaConnection(peerId, provider, options) {\n var _this = _super.call(this, peerId, provider, options) || this;\n\n _this._localStream = _this.options._stream;\n _this.connectionId = _this.options.connectionId || MediaConnection.ID_PREFIX + util_1.util.randomToken();\n _this._negotiator = new negotiator_1.Negotiator(_this);\n\n if (_this._localStream) {\n _this._negotiator.startConnection({\n _stream: _this._localStream,\n originator: true\n });\n }\n\n return _this;\n }\n\n Object.defineProperty(MediaConnection.prototype, \"type\", {\n get: function get() {\n return enums_1.ConnectionType.Media;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MediaConnection.prototype, \"localStream\", {\n get: function get() {\n return this._localStream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MediaConnection.prototype, \"remoteStream\", {\n get: function get() {\n return this._remoteStream;\n },\n enumerable: true,\n configurable: true\n });\n\n MediaConnection.prototype.addStream = function (remoteStream) {\n logger_1.default.log(\"Receiving stream\", remoteStream);\n this._remoteStream = remoteStream;\n\n _super.prototype.emit.call(this, enums_1.ConnectionEventType.Stream, remoteStream); // Should we call this `open`?\n\n };\n\n MediaConnection.prototype.handleMessage = function (message) {\n var type = message.type;\n var payload = message.payload;\n\n switch (message.type) {\n case enums_1.ServerMessageType.Answer:\n // Forward to negotiator\n this._negotiator.handleSDP(type, payload.sdp);\n\n this._open = true;\n break;\n\n case enums_1.ServerMessageType.Candidate:\n this._negotiator.handleCandidate(payload.candidate);\n\n break;\n\n default:\n logger_1.default.warn(\"Unrecognized message type:\" + type + \" from peer:\" + this.peer);\n break;\n }\n };\n\n MediaConnection.prototype.answer = function (stream, options) {\n var e_1, _a;\n\n if (options === void 0) {\n options = {};\n }\n\n if (this._localStream) {\n logger_1.default.warn(\"Local stream already exists on this MediaConnection. Are you answering a call twice?\");\n return;\n }\n\n this._localStream = stream;\n\n if (options && options.sdpTransform) {\n this.options.sdpTransform = options.sdpTransform;\n }\n\n this._negotiator.startConnection(__assign(__assign({}, this.options._payload), {\n _stream: stream\n })); // Retrieve lost messages stored because PeerConnection not set up.\n\n\n var messages = this.provider._getMessages(this.connectionId);\n\n try {\n for (var messages_1 = __values(messages), messages_1_1 = messages_1.next(); !messages_1_1.done; messages_1_1 = messages_1.next()) {\n var message = messages_1_1.value;\n this.handleMessage(message);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (messages_1_1 && !messages_1_1.done && (_a = messages_1.return)) _a.call(messages_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n this._open = true;\n };\n /**\n * Exposed functionality for users.\n */\n\n /** Allows user to close connection. */\n\n\n MediaConnection.prototype.close = function () {\n if (this._negotiator) {\n this._negotiator.cleanup();\n\n this._negotiator = null;\n }\n\n this._localStream = null;\n this._remoteStream = null;\n\n if (this.provider) {\n this.provider._removeConnection(this);\n\n this.provider = null;\n }\n\n if (this.options && this.options._stream) {\n this.options._stream = null;\n }\n\n if (!this.open) {\n return;\n }\n\n this._open = false;\n\n _super.prototype.emit.call(this, enums_1.ConnectionEventType.Close);\n };\n\n MediaConnection.ID_PREFIX = \"mc_\";\n return MediaConnection;\n}(baseconnection_1.BaseConnection);\n\nexports.MediaConnection = MediaConnection;\n},{\"./util\":\"BHXf\",\"./logger\":\"WOs9\",\"./negotiator\":\"HCdX\",\"./enums\":\"ZRYf\",\"./baseconnection\":\"tQFK\"}],\"GGp6\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar eventemitter3_1 = require(\"eventemitter3\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar EncodingQueue =\n/** @class */\nfunction (_super) {\n __extends(EncodingQueue, _super);\n\n function EncodingQueue() {\n var _this = _super.call(this) || this;\n\n _this.fileReader = new FileReader();\n _this._queue = [];\n _this._processing = false;\n\n _this.fileReader.onload = function (evt) {\n _this._processing = false;\n\n if (evt.target) {\n _this.emit('done', evt.target.result);\n }\n\n _this.doNextTask();\n };\n\n _this.fileReader.onerror = function (evt) {\n logger_1.default.error(\"EncodingQueue error:\", evt);\n _this._processing = false;\n\n _this.destroy();\n\n _this.emit('error', evt);\n };\n\n return _this;\n }\n\n Object.defineProperty(EncodingQueue.prototype, \"queue\", {\n get: function get() {\n return this._queue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EncodingQueue.prototype, \"size\", {\n get: function get() {\n return this.queue.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EncodingQueue.prototype, \"processing\", {\n get: function get() {\n return this._processing;\n },\n enumerable: true,\n configurable: true\n });\n\n EncodingQueue.prototype.enque = function (blob) {\n this.queue.push(blob);\n if (this.processing) return;\n this.doNextTask();\n };\n\n EncodingQueue.prototype.destroy = function () {\n this.fileReader.abort();\n this._queue = [];\n };\n\n EncodingQueue.prototype.doNextTask = function () {\n if (this.size === 0) return;\n if (this.processing) return;\n this._processing = true;\n this.fileReader.readAsArrayBuffer(this.queue.shift());\n };\n\n return EncodingQueue;\n}(eventemitter3_1.EventEmitter);\n\nexports.EncodingQueue = EncodingQueue;\n},{\"eventemitter3\":\"JJlS\",\"./logger\":\"WOs9\"}],\"GBTQ\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar util_1 = require(\"./util\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar negotiator_1 = require(\"./negotiator\");\n\nvar enums_1 = require(\"./enums\");\n\nvar baseconnection_1 = require(\"./baseconnection\");\n\nvar encodingQueue_1 = require(\"./encodingQueue\");\n/**\n * Wraps a DataChannel between two Peers.\n */\n\n\nvar DataConnection =\n/** @class */\nfunction (_super) {\n __extends(DataConnection, _super);\n\n function DataConnection(peerId, provider, options) {\n var _this = _super.call(this, peerId, provider, options) || this;\n\n _this.stringify = JSON.stringify;\n _this.parse = JSON.parse;\n _this._buffer = [];\n _this._bufferSize = 0;\n _this._buffering = false;\n _this._chunkedData = {};\n _this._encodingQueue = new encodingQueue_1.EncodingQueue();\n _this.connectionId = _this.options.connectionId || DataConnection.ID_PREFIX + util_1.util.randomToken();\n _this.label = _this.options.label || _this.connectionId;\n _this.serialization = _this.options.serialization || enums_1.SerializationType.Binary;\n _this.reliable = !!_this.options.reliable;\n\n _this._encodingQueue.on('done', function (ab) {\n _this._bufferedSend(ab);\n });\n\n _this._encodingQueue.on('error', function () {\n logger_1.default.error(\"DC#\" + _this.connectionId + \": Error occured in encoding from blob to arraybuffer, close DC\");\n\n _this.close();\n });\n\n _this._negotiator = new negotiator_1.Negotiator(_this);\n\n _this._negotiator.startConnection(_this.options._payload || {\n originator: true\n });\n\n return _this;\n }\n\n Object.defineProperty(DataConnection.prototype, \"type\", {\n get: function get() {\n return enums_1.ConnectionType.Data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataConnection.prototype, \"dataChannel\", {\n get: function get() {\n return this._dc;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataConnection.prototype, \"bufferSize\", {\n get: function get() {\n return this._bufferSize;\n },\n enumerable: true,\n configurable: true\n });\n /** Called by the Negotiator when the DataChannel is ready. */\n\n DataConnection.prototype.initialize = function (dc) {\n this._dc = dc;\n\n this._configureDataChannel();\n };\n\n DataConnection.prototype._configureDataChannel = function () {\n var _this = this;\n\n if (!util_1.util.supports.binaryBlob || util_1.util.supports.reliable) {\n this.dataChannel.binaryType = \"arraybuffer\";\n }\n\n this.dataChannel.onopen = function () {\n logger_1.default.log(\"DC#\" + _this.connectionId + \" dc connection success\");\n _this._open = true;\n\n _this.emit(enums_1.ConnectionEventType.Open);\n };\n\n this.dataChannel.onmessage = function (e) {\n logger_1.default.log(\"DC#\" + _this.connectionId + \" dc onmessage:\", e.data);\n\n _this._handleDataMessage(e);\n };\n\n this.dataChannel.onclose = function () {\n logger_1.default.log(\"DC#\" + _this.connectionId + \" dc closed for:\", _this.peer);\n\n _this.close();\n };\n }; // Handles a DataChannel message.\n\n\n DataConnection.prototype._handleDataMessage = function (_a) {\n var _this = this;\n\n var data = _a.data;\n var datatype = data.constructor;\n var isBinarySerialization = this.serialization === enums_1.SerializationType.Binary || this.serialization === enums_1.SerializationType.BinaryUTF8;\n var deserializedData = data;\n\n if (isBinarySerialization) {\n if (datatype === Blob) {\n // Datatype should never be blob\n util_1.util.blobToArrayBuffer(data, function (ab) {\n var unpackedData = util_1.util.unpack(ab);\n\n _this.emit(enums_1.ConnectionEventType.Data, unpackedData);\n });\n return;\n } else if (datatype === ArrayBuffer) {\n deserializedData = util_1.util.unpack(data);\n } else if (datatype === String) {\n // String fallback for binary data for browsers that don't support binary yet\n var ab = util_1.util.binaryStringToArrayBuffer(data);\n deserializedData = util_1.util.unpack(ab);\n }\n } else if (this.serialization === enums_1.SerializationType.JSON) {\n deserializedData = this.parse(data);\n } // Check if we've chunked--if so, piece things back together.\n // We're guaranteed that this isn't 0.\n\n\n if (deserializedData.__peerData) {\n this._handleChunk(deserializedData);\n\n return;\n }\n\n _super.prototype.emit.call(this, enums_1.ConnectionEventType.Data, deserializedData);\n };\n\n DataConnection.prototype._handleChunk = function (data) {\n var id = data.__peerData;\n var chunkInfo = this._chunkedData[id] || {\n data: [],\n count: 0,\n total: data.total\n };\n chunkInfo.data[data.n] = data.data;\n chunkInfo.count++;\n this._chunkedData[id] = chunkInfo;\n\n if (chunkInfo.total === chunkInfo.count) {\n // Clean up before making the recursive call to `_handleDataMessage`.\n delete this._chunkedData[id]; // We've received all the chunks--time to construct the complete data.\n\n var data_1 = new Blob(chunkInfo.data);\n\n this._handleDataMessage({\n data: data_1\n });\n }\n };\n /**\n * Exposed functionality for users.\n */\n\n /** Allows user to close connection. */\n\n\n DataConnection.prototype.close = function () {\n this._buffer = [];\n this._bufferSize = 0;\n this._chunkedData = {};\n\n if (this._negotiator) {\n this._negotiator.cleanup();\n\n this._negotiator = null;\n }\n\n if (this.provider) {\n this.provider._removeConnection(this);\n\n this.provider = null;\n }\n\n if (this.dataChannel) {\n this.dataChannel.onopen = null;\n this.dataChannel.onmessage = null;\n this.dataChannel.onclose = null;\n this._dc = null;\n }\n\n if (this._encodingQueue) {\n this._encodingQueue.destroy();\n\n this._encodingQueue.removeAllListeners();\n\n this._encodingQueue = null;\n }\n\n if (!this.open) {\n return;\n }\n\n this._open = false;\n\n _super.prototype.emit.call(this, enums_1.ConnectionEventType.Close);\n };\n /** Allows user to send data. */\n\n\n DataConnection.prototype.send = function (data, chunked) {\n if (!this.open) {\n _super.prototype.emit.call(this, enums_1.ConnectionEventType.Error, new Error(\"Connection is not open. You should listen for the `open` event before sending messages.\"));\n\n return;\n }\n\n if (this.serialization === enums_1.SerializationType.JSON) {\n this._bufferedSend(this.stringify(data));\n } else if (this.serialization === enums_1.SerializationType.Binary || this.serialization === enums_1.SerializationType.BinaryUTF8) {\n var blob = util_1.util.pack(data);\n\n if (!chunked && blob.size > util_1.util.chunkedMTU) {\n this._sendChunks(blob);\n\n return;\n }\n\n if (!util_1.util.supports.binaryBlob) {\n // We only do this if we really need to (e.g. blobs are not supported),\n // because this conversion is costly.\n this._encodingQueue.enque(blob);\n } else {\n this._bufferedSend(blob);\n }\n } else {\n this._bufferedSend(data);\n }\n };\n\n DataConnection.prototype._bufferedSend = function (msg) {\n if (this._buffering || !this._trySend(msg)) {\n this._buffer.push(msg);\n\n this._bufferSize = this._buffer.length;\n }\n }; // Returns true if the send succeeds.\n\n\n DataConnection.prototype._trySend = function (msg) {\n var _this = this;\n\n if (!this.open) {\n return false;\n }\n\n if (this.dataChannel.bufferedAmount > DataConnection.MAX_BUFFERED_AMOUNT) {\n this._buffering = true;\n setTimeout(function () {\n _this._buffering = false;\n\n _this._tryBuffer();\n }, 50);\n return false;\n }\n\n try {\n this.dataChannel.send(msg);\n } catch (e) {\n logger_1.default.error(\"DC#:\" + this.connectionId + \" Error when sending:\", e);\n this._buffering = true;\n this.close();\n return false;\n }\n\n return true;\n }; // Try to send the first message in the buffer.\n\n\n DataConnection.prototype._tryBuffer = function () {\n if (!this.open) {\n return;\n }\n\n if (this._buffer.length === 0) {\n return;\n }\n\n var msg = this._buffer[0];\n\n if (this._trySend(msg)) {\n this._buffer.shift();\n\n this._bufferSize = this._buffer.length;\n\n this._tryBuffer();\n }\n };\n\n DataConnection.prototype._sendChunks = function (blob) {\n var e_1, _a;\n\n var blobs = util_1.util.chunk(blob);\n logger_1.default.log(\"DC#\" + this.connectionId + \" Try to send \" + blobs.length + \" chunks...\");\n\n try {\n for (var blobs_1 = __values(blobs), blobs_1_1 = blobs_1.next(); !blobs_1_1.done; blobs_1_1 = blobs_1.next()) {\n var blob_1 = blobs_1_1.value;\n this.send(blob_1, true);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (blobs_1_1 && !blobs_1_1.done && (_a = blobs_1.return)) _a.call(blobs_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n DataConnection.prototype.handleMessage = function (message) {\n var payload = message.payload;\n\n switch (message.type) {\n case enums_1.ServerMessageType.Answer:\n this._negotiator.handleSDP(message.type, payload.sdp);\n\n break;\n\n case enums_1.ServerMessageType.Candidate:\n this._negotiator.handleCandidate(payload.candidate);\n\n break;\n\n default:\n logger_1.default.warn(\"Unrecognized message type:\", message.type, \"from peer:\", this.peer);\n break;\n }\n };\n\n DataConnection.ID_PREFIX = \"dc_\";\n DataConnection.MAX_BUFFERED_AMOUNT = 8 * 1024 * 1024;\n return DataConnection;\n}(baseconnection_1.BaseConnection);\n\nexports.DataConnection = DataConnection;\n},{\"./util\":\"BHXf\",\"./logger\":\"WOs9\",\"./negotiator\":\"HCdX\",\"./enums\":\"ZRYf\",\"./baseconnection\":\"tQFK\",\"./encodingQueue\":\"GGp6\"}],\"in7L\":[function(require,module,exports) {\n\"use strict\";\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar util_1 = require(\"./util\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar API =\n/** @class */\nfunction () {\n function API(_options) {\n this._options = _options;\n }\n\n API.prototype._buildUrl = function (method) {\n var protocol = this._options.secure ? \"https://\" : \"http://\";\n var url = protocol + this._options.host + \":\" + this._options.port + this._options.path + this._options.key + \"/\" + method;\n var queryString = \"?ts=\" + new Date().getTime() + \"\" + Math.random();\n url += queryString;\n return url;\n };\n /** Get a unique ID from the server via XHR and initialize with it. */\n\n\n API.prototype.retrieveId = function () {\n return __awaiter(this, void 0, Promise, function () {\n var url, response, error_1, pathError;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = this._buildUrl(\"id\");\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , fetch(url)];\n\n case 2:\n response = _a.sent();\n\n if (response.status !== 200) {\n throw new Error(\"Error. Status:\" + response.status);\n }\n\n return [2\n /*return*/\n , response.text()];\n\n case 3:\n error_1 = _a.sent();\n logger_1.default.error(\"Error retrieving ID\", error_1);\n pathError = \"\";\n\n if (this._options.path === \"/\" && this._options.host !== util_1.util.CLOUD_HOST) {\n pathError = \" If you passed in a `path` to your self-hosted PeerServer, \" + \"you'll also need to pass in that same path when creating a new \" + \"Peer.\";\n }\n\n throw new Error(\"Could not get an ID from the server.\" + pathError);\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /** @deprecated */\n\n\n API.prototype.listAllPeers = function () {\n return __awaiter(this, void 0, Promise, function () {\n var url, response, helpfulError, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = this._buildUrl(\"peers\");\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , fetch(url)];\n\n case 2:\n response = _a.sent();\n\n if (response.status !== 200) {\n if (response.status === 401) {\n helpfulError = \"\";\n\n if (this._options.host === util_1.util.CLOUD_HOST) {\n helpfulError = \"It looks like you're using the cloud server. You can email \" + \"[email protected] to enable peer listing for your API key.\";\n } else {\n helpfulError = \"You need to enable `allow_discovery` on your self-hosted \" + \"PeerServer to use this feature.\";\n }\n\n throw new Error(\"It doesn't look like you have permission to list peers IDs. \" + helpfulError);\n }\n\n throw new Error(\"Error. Status:\" + response.status);\n }\n\n return [2\n /*return*/\n , response.json()];\n\n case 3:\n error_2 = _a.sent();\n logger_1.default.error(\"Error retrieving list peers\", error_2);\n throw new Error(\"Could not get list peers from the server.\" + error_2);\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n return API;\n}();\n\nexports.API = API;\n},{\"./util\":\"BHXf\",\"./logger\":\"WOs9\"}],\"Hxpd\":[function(require,module,exports) {\n\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar eventemitter3_1 = require(\"eventemitter3\");\n\nvar util_1 = require(\"./util\");\n\nvar logger_1 = __importDefault(require(\"./logger\"));\n\nvar socket_1 = require(\"./socket\");\n\nvar mediaconnection_1 = require(\"./mediaconnection\");\n\nvar dataconnection_1 = require(\"./dataconnection\");\n\nvar enums_1 = require(\"./enums\");\n\nvar api_1 = require(\"./api\");\n\nvar PeerOptions =\n/** @class */\nfunction () {\n function PeerOptions() {}\n\n return PeerOptions;\n}();\n/**\n * A peer who can initiate connections with other peers.\n */\n\n\nvar Peer =\n/** @class */\nfunction (_super) {\n __extends(Peer, _super);\n\n function Peer(id, options) {\n var _this = _super.call(this) || this;\n\n _this._id = null;\n _this._lastServerId = null; // States.\n\n _this._destroyed = false; // Connections have been killed\n\n _this._disconnected = false; // Connection to PeerServer killed but P2P connections still active\n\n _this._open = false; // Sockets and such are not yet open.\n\n _this._connections = new Map(); // All connections for this peer.\n\n _this._lostMessages = new Map(); // src => [list of messages]\n\n var userId; // Deal with overloading\n\n if (id && id.constructor == Object) {\n options = id;\n } else if (id) {\n userId = id.toString();\n } // Configurize options\n\n\n options = __assign({\n debug: 0,\n host: util_1.util.CLOUD_HOST,\n port: util_1.util.CLOUD_PORT,\n path: \"/\",\n key: Peer.DEFAULT_KEY,\n token: util_1.util.randomToken(),\n config: util_1.util.defaultConfig\n }, options);\n _this._options = options; // Detect relative URL host.\n\n if (_this._options.host === \"/\") {\n _this._options.host = window.location.hostname;\n } // Set path correctly.\n\n\n if (_this._options.path) {\n if (_this._options.path[0] !== \"/\") {\n _this._options.path = \"/\" + _this._options.path;\n }\n\n if (_this._options.path[_this._options.path.length - 1] !== \"/\") {\n _this._options.path += \"/\";\n }\n } // Set whether we use SSL to same as current host\n\n\n if (_this._options.secure === undefined && _this._options.host !== util_1.util.CLOUD_HOST) {\n _this._options.secure = util_1.util.isSecure();\n } else if (_this._options.host == util_1.util.CLOUD_HOST) {\n _this._options.secure = true;\n } // Set a custom log function if present\n\n\n if (_this._options.logFunction) {\n logger_1.default.setLogFunction(_this._options.logFunction);\n }\n\n logger_1.default.logLevel = _this._options.debug || 0;\n _this._api = new api_1.API(options);\n _this._socket = _this._createServerConnection(); // Sanity checks\n // Ensure WebRTC supported\n\n if (!util_1.util.supports.audioVideo && !util_1.util.supports.data) {\n _this._delayedAbort(enums_1.PeerErrorType.BrowserIncompatible, \"The current browser does not support WebRTC\");\n\n return _this;\n } // Ensure alphanumeric id\n\n\n if (!!userId && !util_1.util.validateId(userId)) {\n _this._delayedAbort(enums_1.PeerErrorType.InvalidID, \"ID \\\"\" + userId + \"\\\" is invalid\");\n\n return _this;\n }\n\n if (userId) {\n _this._initialize(userId);\n } else {\n _this._api.retrieveId().then(function (id) {\n return _this._initialize(id);\n }).catch(function (error) {\n return _this._abort(enums_1.PeerErrorType.ServerError, error);\n });\n }\n\n return _this;\n }\n\n Object.defineProperty(Peer.prototype, \"id\", {\n get: function get() {\n return this._id;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"options\", {\n get: function get() {\n return this._options;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"open\", {\n get: function get() {\n return this._open;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"socket\", {\n get: function get() {\n return this._socket;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"connections\", {\n /**\n * @deprecated\n * Return type will change from Object to Map<string,[]>\n */\n get: function get() {\n var e_1, _a;\n\n var plainConnections = Object.create(null);\n\n try {\n for (var _b = __values(this._connections), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2),\n k = _d[0],\n v = _d[1];\n\n plainConnections[k] = v;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return plainConnections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"destroyed\", {\n get: function get() {\n return this._destroyed;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Peer.prototype, \"disconnected\", {\n get: function get() {\n return this._disconnected;\n },\n enumerable: true,\n configurable: true\n });\n\n Peer.prototype._createServerConnection = function () {\n var _this = this;\n\n var socket = new socket_1.Socket(this._options.secure, this._options.host, this._options.port, this._options.path, this._options.key, this._options.pingInterval);\n socket.on(enums_1.SocketEventType.Message, function (data) {\n _this._handleMessage(data);\n });\n socket.on(enums_1.SocketEventType.Error, function (error) {\n _this._abort(enums_1.PeerErrorType.SocketError, error);\n });\n socket.on(enums_1.SocketEventType.Disconnected, function () {\n if (_this.disconnected) {\n return;\n }\n\n _this.emitError(enums_1.PeerErrorType.Network, \"Lost connection to server.\");\n\n _this.disconnect();\n });\n socket.on(enums_1.SocketEventType.Close, function () {\n if (_this.disconnected) {\n return;\n }\n\n _this._abort(enums_1.PeerErrorType.SocketClosed, \"Underlying socket is already closed.\");\n });\n return socket;\n };\n /** Initialize a connection with the server. */\n\n\n Peer.prototype._initialize = function (id) {\n this._id = id;\n this.socket.start(id, this._options.token);\n };\n /** Handles messages from the server. */\n\n\n Peer.prototype._handleMessage = function (message) {\n var e_2, _a;\n\n var type = message.type;\n var payload = message.payload;\n var peerId = message.src;\n\n switch (type) {\n case enums_1.ServerMessageType.Open:\n // The connection to the server is open.\n this._lastServerId = this.id;\n this._open = true;\n this.emit(enums_1.PeerEventType.Open, this.id);\n break;\n\n case enums_1.ServerMessageType.Error:\n // Server error.\n this._abort(enums_1.PeerErrorType.ServerError, payload.msg);\n\n break;\n\n case enums_1.ServerMessageType.IdTaken:\n // The selected ID is taken.\n this._abort(enums_1.PeerErrorType.UnavailableID, \"ID \\\"\" + this.id + \"\\\" is taken\");\n\n break;\n\n case enums_1.ServerMessageType.InvalidKey:\n // The given API key cannot be found.\n this._abort(enums_1.PeerErrorType.InvalidKey, \"API KEY \\\"\" + this._options.key + \"\\\" is invalid\");\n\n break;\n\n case enums_1.ServerMessageType.Leave:\n // Another peer has closed its connection to this peer.\n logger_1.default.log(\"Received leave message from \" + peerId);\n\n this._cleanupPeer(peerId);\n\n this._connections.delete(peerId);\n\n break;\n\n case enums_1.ServerMessageType.Expire:\n // The offer sent to a peer has expired without response.\n this.emitError(enums_1.PeerErrorType.PeerUnavailable, \"Could not connect to peer \" + peerId);\n break;\n\n case enums_1.ServerMessageType.Offer:\n {\n // we should consider switching this to CALL/CONNECT, but this is the least breaking option.\n var connectionId = payload.connectionId;\n var connection = this.getConnection(peerId, connectionId);\n\n if (connection) {\n connection.close();\n logger_1.default.warn(\"Offer received for existing Connection ID:\" + connectionId);\n } // Create a new connection.\n\n\n if (payload.type === enums_1.ConnectionType.Media) {\n connection = new mediaconnection_1.MediaConnection(peerId, this, {\n connectionId: connectionId,\n _payload: payload,\n metadata: payload.metadata\n });\n\n this._addConnection(peerId, connection);\n\n this.emit(enums_1.PeerEventType.Call, connection);\n } else if (payload.type === enums_1.ConnectionType.Data) {\n connection = new dataconnection_1.DataConnection(peerId, this, {\n connectionId: connectionId,\n _payload: payload,\n metadata: payload.metadata,\n label: payload.label,\n serialization: payload.serialization,\n reliable: payload.reliable\n });\n\n this._addConnection(peerId, connection);\n\n this.emit(enums_1.PeerEventType.Connection, connection);\n } else {\n logger_1.default.warn(\"Received malformed connection type:\" + payload.type);\n return;\n } // Find messages.\n\n\n var messages = this._getMessages(connectionId);\n\n try {\n for (var messages_1 = __values(messages), messages_1_1 = messages_1.next(); !messages_1_1.done; messages_1_1 = messages_1.next()) {\n var message_1 = messages_1_1.value;\n connection.handleMessage(message_1);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (messages_1_1 && !messages_1_1.done && (_a = messages_1.return)) _a.call(messages_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n\n break;\n }\n\n default:\n {\n if (!payload) {\n logger_1.default.warn(\"You received a malformed message from \" + peerId + \" of type \" + type);\n return;\n }\n\n var connectionId = payload.connectionId;\n var connection = this.getConnection(peerId, connectionId);\n\n if (connection && connection.peerConnection) {\n // Pass it on.\n connection.handleMessage(message);\n } else if (connectionId) {\n // Store for possible later use\n this._storeMessage(connectionId, message);\n } else {\n logger_1.default.warn(\"You received an unrecognized message:\", message);\n }\n\n break;\n }\n }\n };\n /** Stores messages without a set up connection, to be claimed later. */\n\n\n Peer.prototype._storeMessage = function (connectionId, message) {\n if (!this._lostMessages.has(connectionId)) {\n this._lostMessages.set(connectionId, []);\n }\n\n this._lostMessages.get(connectionId).push(message);\n };\n /** Retrieve messages from lost message store */\n //TODO Change it to private\n\n\n Peer.prototype._getMessages = function (connectionId) {\n var messages = this._lostMessages.get(connectionId);\n\n if (messages) {\n this._lostMessages.delete(connectionId);\n\n return messages;\n }\n\n return [];\n };\n /**\n * Returns a DataConnection to the specified peer. See documentation for a\n * complete list of options.\n */\n\n\n Peer.prototype.connect = function (peer, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (this.disconnected) {\n logger_1.default.warn(\"You cannot connect to a new Peer because you called \" + \".disconnect() on this Peer and ended your connection with the \" + \"server. You can create a new Peer to reconnect, or call reconnect \" + \"on this peer if you believe its ID to still be available.\");\n this.emitError(enums_1.PeerErrorType.Disconnected, \"Cannot connect to new Peer after disconnecting from server.\");\n return;\n }\n\n var dataConnection = new dataconnection_1.DataConnection(peer, this, options);\n\n this._addConnection(peer, dataConnection);\n\n return dataConnection;\n };\n /**\n * Returns a MediaConnection to the specified peer. See documentation for a\n * complete list of options.\n */\n\n\n Peer.prototype.call = function (peer, stream, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (this.disconnected) {\n logger_1.default.warn(\"You cannot connect to a new Peer because you called \" + \".disconnect() on this Peer and ended your connection with the \" + \"server. You can create a new Peer to reconnect.\");\n this.emitError(enums_1.PeerErrorType.Disconnected, \"Cannot connect to new Peer after disconnecting from server.\");\n return;\n }\n\n if (!stream) {\n logger_1.default.error(\"To call a peer, you must provide a stream from your browser's `getUserMedia`.\");\n return;\n }\n\n options._stream = stream;\n var mediaConnection = new mediaconnection_1.MediaConnection(peer, this, options);\n\n this._addConnection(peer, mediaConnection);\n\n return mediaConnection;\n };\n /** Add a data/media connection to this peer. */\n\n\n Peer.prototype._addConnection = function (peerId, connection) {\n logger_1.default.log(\"add connection \" + connection.type + \":\" + connection.connectionId + \" to peerId:\" + peerId);\n\n if (!this._connections.has(peerId)) {\n this._connections.set(peerId, []);\n }\n\n this._connections.get(peerId).push(connection);\n }; //TODO should be private\n\n\n Peer.prototype._removeConnection = function (connection) {\n var connections = this._connections.get(connection.peer);\n\n if (connections) {\n var index = connections.indexOf(connection);\n\n if (index !== -1) {\n connections.splice(index, 1);\n }\n } //remove from lost messages\n\n\n this._lostMessages.delete(connection.connectionId);\n };\n /** Retrieve a data/media connection for this peer. */\n\n\n Peer.prototype.getConnection = function (peerId, connectionId) {\n var e_3, _a;\n\n var connections = this._connections.get(peerId);\n\n if (!connections) {\n return null;\n }\n\n try {\n for (var connections_1 = __values(connections), connections_1_1 = connections_1.next(); !connections_1_1.done; connections_1_1 = connections_1.next()) {\n var connection = connections_1_1.value;\n\n if (connection.connectionId === connectionId) {\n return connection;\n }\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (connections_1_1 && !connections_1_1.done && (_a = connections_1.return)) _a.call(connections_1);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n return null;\n };\n\n Peer.prototype._delayedAbort = function (type, message) {\n var _this = this;\n\n setTimeout(function () {\n _this._abort(type, message);\n }, 0);\n };\n /**\n * Emits an error message and destroys the Peer.\n * The Peer is not destroyed if it's in a disconnected state, in which case\n * it retains its disconnected state and its existing connections.\n */\n\n\n Peer.prototype._abort = function (type, message) {\n logger_1.default.error(\"Aborting!\");\n this.emitError(type, message);\n\n if (!this._lastServerId) {\n this.destroy();\n } else {\n this.disconnect();\n }\n };\n /** Emits a typed error message. */\n\n\n Peer.prototype.emitError = function (type, err) {\n logger_1.default.error(\"Error:\", err);\n var error;\n\n if (typeof err === \"string\") {\n error = new Error(err);\n } else {\n error = err;\n }\n\n error.type = type;\n this.emit(enums_1.PeerEventType.Error, error);\n };\n /**\n * Destroys the Peer: closes all active connections as well as the connection\n * to the server.\n * Warning: The peer can no longer create or accept connections after being\n * destroyed.\n */\n\n\n Peer.prototype.destroy = function () {\n if (this.destroyed) {\n return;\n }\n\n logger_1.default.log(\"Destroy peer with ID:\" + this.id);\n this.disconnect();\n\n this._cleanup();\n\n this._destroyed = true;\n this.emit(enums_1.PeerEventType.Close);\n };\n /** Disconnects every connection on this peer. */\n\n\n Peer.prototype._cleanup = function () {\n var e_4, _a;\n\n try {\n for (var _b = __values(this._connections.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var peerId = _c.value;\n\n this._cleanupPeer(peerId);\n\n this._connections.delete(peerId);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n\n this.socket.removeAllListeners();\n };\n /** Closes all connections to this peer. */\n\n\n Peer.prototype._cleanupPeer = function (peerId) {\n var e_5, _a;\n\n var connections = this._connections.get(peerId);\n\n if (!connections) return;\n\n try {\n for (var connections_2 = __values(connections), connections_2_1 = connections_2.next(); !connections_2_1.done; connections_2_1 = connections_2.next()) {\n var connection = connections_2_1.value;\n connection.close();\n }\n } catch (e_5_1) {\n e_5 = {\n error: e_5_1\n };\n } finally {\n try {\n if (connections_2_1 && !connections_2_1.done && (_a = connections_2.return)) _a.call(connections_2);\n } finally {\n if (e_5) throw e_5.error;\n }\n }\n };\n /**\n * Disconnects the Peer's connection to the PeerServer. Does not close any\n * active connections.\n * Warning: The peer can no longer create or accept connections after being\n * disconnected. It also cannot reconnect to the server.\n */\n\n\n Peer.prototype.disconnect = function () {\n if (this.disconnected) {\n return;\n }\n\n var currentId = this.id;\n logger_1.default.log(\"Disconnect peer with ID:\" + currentId);\n this._disconnected = true;\n this._open = false;\n this.socket.close();\n this._lastServerId = currentId;\n this._id = null;\n this.emit(enums_1.PeerEventType.Disconnected, currentId);\n };\n /** Attempts to reconnect with the same ID. */\n\n\n Peer.prototype.reconnect = function () {\n if (this.disconnected && !this.destroyed) {\n logger_1.default.log(\"Attempting reconnection to server with ID \" + this._lastServerId);\n this._disconnected = false;\n\n this._initialize(this._lastServerId);\n } else if (this.destroyed) {\n throw new Error(\"This peer cannot reconnect to the server. It has already been destroyed.\");\n } else if (!this.disconnected && !this.open) {\n // Do nothing. We're still connecting the first time.\n logger_1.default.error(\"In a hurry? We're still trying to make the initial connection!\");\n } else {\n throw new Error(\"Peer \" + this.id + \" cannot reconnect because it is not disconnected from the server!\");\n }\n };\n /**\n * Get a list of available peer IDs. If you're running your own server, you'll\n * want to set allow_discovery: true in the PeerServer options. If you're using\n * the cloud server, email [email protected] to get the functionality enabled for\n * your key.\n */\n\n\n Peer.prototype.listAllPeers = function (cb) {\n var _this = this;\n\n if (cb === void 0) {\n cb = function cb(_) {};\n }\n\n this._api.listAllPeers().then(function (peers) {\n return cb(peers);\n }).catch(function (error) {\n return _this._abort(enums_1.PeerErrorType.ServerError, error);\n });\n };\n\n Peer.DEFAULT_KEY = \"peerjs\";\n return Peer;\n}(eventemitter3_1.EventEmitter);\n\nexports.Peer = Peer;\n},{\"eventemitter3\":\"JJlS\",\"./util\":\"BHXf\",\"./logger\":\"WOs9\",\"./socket\":\"wJlv\",\"./mediaconnection\":\"dbHP\",\"./dataconnection\":\"GBTQ\",\"./enums\":\"ZRYf\",\"./api\":\"in7L\"}],\"iTK6\":[function(require,module,exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar util_1 = require(\"./util\");\n\nvar peer_1 = require(\"./peer\");\n\nexports.peerjs = {\n Peer: peer_1.Peer,\n util: util_1.util\n};\nexports.default = peer_1.Peer;\nwindow.peerjs = exports.peerjs;\n/** @deprecated Should use peerjs namespace */\n\nwindow.Peer = peer_1.Peer;\n},{\"./util\":\"BHXf\",\"./peer\":\"Hxpd\"}]},{},[\"iTK6\"], null)\n//# sourceMappingURL=/peerjs.js.map","\"use strict\"\n\nmodule.exports = twoProduct\n\nvar SPLITTER = +(Math.pow(2, 27) + 1.0)\n\nfunction twoProduct(a, b, result) {\n var x = a * b\n\n var c = SPLITTER * a\n var abig = c - a\n var ahi = c - abig\n var alo = a - ahi\n\n var d = SPLITTER * b\n var bbig = d - b\n var bhi = d - bbig\n var blo = b - bhi\n\n var err1 = x - (ahi * bhi)\n var err2 = err1 - (alo * bhi)\n var err3 = err2 - (ahi * blo)\n\n var y = alo * blo - err3\n\n if(result) {\n result[0] = y\n result[1] = x\n return result\n }\n\n return [ y, x ]\n}","\"use strict\"\n\nmodule.exports = linearExpansionSum\n\n//Easy case: Add two scalars\nfunction scalarScalar(a, b) {\n var x = a + b\n var bv = x - a\n var av = x - bv\n var br = b - bv\n var ar = a - av\n var y = ar + br\n if(y) {\n return [y, x]\n }\n return [x]\n}\n\nfunction linearExpansionSum(e, f) {\n var ne = e.length|0\n var nf = f.length|0\n if(ne === 1 && nf === 1) {\n return scalarScalar(e[0], f[0])\n }\n var n = ne + nf\n var g = new Array(n)\n var count = 0\n var eptr = 0\n var fptr = 0\n var abs = Math.abs\n var ei = e[eptr]\n var ea = abs(ei)\n var fi = f[fptr]\n var fa = abs(fi)\n var a, b\n if(ea < fa) {\n b = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n b = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n if((eptr < ne && ea < fa) || (fptr >= nf)) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n var x = a + b\n var bv = x - a\n var y = b - bv\n var q0 = y\n var q1 = x\n var _x, _bv, _av, _br, _ar\n while(eptr < ne && fptr < nf) {\n if(ea < fa) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n fa = abs(fi)\n }\n }\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n }\n while(eptr < ne) {\n a = ei\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n }\n }\n while(fptr < nf) {\n a = fi\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n } \n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n fptr += 1\n if(fptr < nf) {\n fi = f[fptr]\n }\n }\n if(q0) {\n g[count++] = q0\n }\n if(q1) {\n g[count++] = q1\n }\n if(!count) {\n g[count++] = 0.0 \n }\n g.length = count\n return g\n}","\"use strict\"\n\nmodule.exports = fastTwoSum\n\nfunction fastTwoSum(a, b, result) {\n\tvar x = a + b\n\tvar bv = x - a\n\tvar av = x - bv\n\tvar br = b - bv\n\tvar ar = a - av\n\tif(result) {\n\t\tresult[0] = ar + br\n\t\tresult[1] = x\n\t\treturn result\n\t}\n\treturn [ar+br, x]\n}","\"use strict\"\n\nvar twoProduct = require(\"two-product\")\nvar twoSum = require(\"two-sum\")\n\nmodule.exports = scaleLinearExpansion\n\nfunction scaleLinearExpansion(e, scale) {\n var n = e.length\n if(n === 1) {\n var ts = twoProduct(e[0], scale)\n if(ts[0]) {\n return ts\n }\n return [ ts[1] ]\n }\n var g = new Array(2 * n)\n var q = [0.1, 0.1]\n var t = [0.1, 0.1]\n var count = 0\n twoProduct(e[0], scale, q)\n if(q[0]) {\n g[count++] = q[0]\n }\n for(var i=1; i<n; ++i) {\n twoProduct(e[i], scale, t)\n var pq = q[1]\n twoSum(pq, t[0], q)\n if(q[0]) {\n g[count++] = q[0]\n }\n var a = t[1]\n var b = q[1]\n var x = a + b\n var bv = x - a\n var y = b - bv\n q[1] = x\n if(y) {\n g[count++] = y\n }\n }\n if(q[1]) {\n g[count++] = q[1]\n }\n if(count === 0) {\n g[count++] = 0.0\n }\n g.length = count\n return g\n}","\"use strict\"\n\nmodule.exports = robustSubtract\n\n//Easy case: Add two scalars\nfunction scalarScalar(a, b) {\n var x = a + b\n var bv = x - a\n var av = x - bv\n var br = b - bv\n var ar = a - av\n var y = ar + br\n if(y) {\n return [y, x]\n }\n return [x]\n}\n\nfunction robustSubtract(e, f) {\n var ne = e.length|0\n var nf = f.length|0\n if(ne === 1 && nf === 1) {\n return scalarScalar(e[0], -f[0])\n }\n var n = ne + nf\n var g = new Array(n)\n var count = 0\n var eptr = 0\n var fptr = 0\n var abs = Math.abs\n var ei = e[eptr]\n var ea = abs(ei)\n var fi = -f[fptr]\n var fa = abs(fi)\n var a, b\n if(ea < fa) {\n b = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n b = fi\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n fa = abs(fi)\n }\n }\n if((eptr < ne && ea < fa) || (fptr >= nf)) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n fa = abs(fi)\n }\n }\n var x = a + b\n var bv = x - a\n var y = b - bv\n var q0 = y\n var q1 = x\n var _x, _bv, _av, _br, _ar\n while(eptr < ne && fptr < nf) {\n if(ea < fa) {\n a = ei\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n ea = abs(ei)\n }\n } else {\n a = fi\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n fa = abs(fi)\n }\n }\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n }\n while(eptr < ne) {\n a = ei\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n }\n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n eptr += 1\n if(eptr < ne) {\n ei = e[eptr]\n }\n }\n while(fptr < nf) {\n a = fi\n b = q0\n x = a + b\n bv = x - a\n y = b - bv\n if(y) {\n g[count++] = y\n } \n _x = q1 + x\n _bv = _x - q1\n _av = _x - _bv\n _br = x - _bv\n _ar = q1 - _av\n q0 = _ar + _br\n q1 = _x\n fptr += 1\n if(fptr < nf) {\n fi = -f[fptr]\n }\n }\n if(q0) {\n g[count++] = q0\n }\n if(q1) {\n g[count++] = q1\n }\n if(!count) {\n g[count++] = 0.0 \n }\n g.length = count\n return g\n}","\"use strict\"\n\nvar twoProduct = require(\"two-product\")\nvar robustSum = require(\"robust-sum\")\nvar robustScale = require(\"robust-scale\")\nvar robustSubtract = require(\"robust-subtract\")\n\nvar NUM_EXPAND = 5\n\nvar EPSILON = 1.1102230246251565e-16\nvar ERRBOUND3 = (3.0 + 16.0 * EPSILON) * EPSILON\nvar ERRBOUND4 = (7.0 + 56.0 * EPSILON) * EPSILON\n\nfunction cofactor(m, c) {\n var result = new Array(m.length-1)\n for(var i=1; i<m.length; ++i) {\n var r = result[i-1] = new Array(m.length-1)\n for(var j=0,k=0; j<m.length; ++j) {\n if(j === c) {\n continue\n }\n r[k++] = m[i][j]\n }\n }\n return result\n}\n\nfunction matrix(n) {\n var result = new Array(n)\n for(var i=0; i<n; ++i) {\n result[i] = new Array(n)\n for(var j=0; j<n; ++j) {\n result[i][j] = [\"m\", j, \"[\", (n-i-1), \"]\"].join(\"\")\n }\n }\n return result\n}\n\nfunction sign(n) {\n if(n & 1) {\n return \"-\"\n }\n return \"\"\n}\n\nfunction generateSum(expr) {\n if(expr.length === 1) {\n return expr[0]\n } else if(expr.length === 2) {\n return [\"sum(\", expr[0], \",\", expr[1], \")\"].join(\"\")\n } else {\n var m = expr.length>>1\n return [\"sum(\", generateSum(expr.slice(0, m)), \",\", generateSum(expr.slice(m)), \")\"].join(\"\")\n }\n}\n\nfunction determinant(m) {\n if(m.length === 2) {\n return [[\"sum(prod(\", m[0][0], \",\", m[1][1], \"),prod(-\", m[0][1], \",\", m[1][0], \"))\"].join(\"\")]\n } else {\n var expr = []\n for(var i=0; i<m.length; ++i) {\n expr.push([\"scale(\", generateSum(determinant(cofactor(m, i))), \",\", sign(i), m[0][i], \")\"].join(\"\"))\n }\n return expr\n }\n}\n\nfunction orientation(n) {\n var pos = []\n var neg = []\n var m = matrix(n)\n var args = []\n for(var i=0; i<n; ++i) {\n if((i&1)===0) {\n pos.push.apply(pos, determinant(cofactor(m, i)))\n } else {\n neg.push.apply(neg, determinant(cofactor(m, i)))\n }\n args.push(\"m\" + i)\n }\n var posExpr = generateSum(pos)\n var negExpr = generateSum(neg)\n var funcName = \"orientation\" + n + \"Exact\"\n var code = [\"function \", funcName, \"(\", args.join(), \"){var p=\", posExpr, \",n=\", negExpr, \",d=sub(p,n);\\\nreturn d[d.length-1];};return \", funcName].join(\"\")\n var proc = new Function(\"sum\", \"prod\", \"scale\", \"sub\", code)\n return proc(robustSum, twoProduct, robustScale, robustSubtract)\n}\n\nvar orientation3Exact = orientation(3)\nvar orientation4Exact = orientation(4)\n\nvar CACHED = [\n function orientation0() { return 0 },\n function orientation1() { return 0 },\n function orientation2(a, b) { \n return b[0] - a[0]\n },\n function orientation3(a, b, c) {\n var l = (a[1] - c[1]) * (b[0] - c[0])\n var r = (a[0] - c[0]) * (b[1] - c[1])\n var det = l - r\n var s\n if(l > 0) {\n if(r <= 0) {\n return det\n } else {\n s = l + r\n }\n } else if(l < 0) {\n if(r >= 0) {\n return det\n } else {\n s = -(l + r)\n }\n } else {\n return det\n }\n var tol = ERRBOUND3 * s\n if(det >= tol || det <= -tol) {\n return det\n }\n return orientation3Exact(a, b, c)\n },\n function orientation4(a,b,c,d) {\n var adx = a[0] - d[0]\n var bdx = b[0] - d[0]\n var cdx = c[0] - d[0]\n var ady = a[1] - d[1]\n var bdy = b[1] - d[1]\n var cdy = c[1] - d[1]\n var adz = a[2] - d[2]\n var bdz = b[2] - d[2]\n var cdz = c[2] - d[2]\n var bdxcdy = bdx * cdy\n var cdxbdy = cdx * bdy\n var cdxady = cdx * ady\n var adxcdy = adx * cdy\n var adxbdy = adx * bdy\n var bdxady = bdx * ady\n var det = adz * (bdxcdy - cdxbdy) \n + bdz * (cdxady - adxcdy)\n + cdz * (adxbdy - bdxady)\n var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz)\n + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz)\n + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz)\n var tol = ERRBOUND4 * permanent\n if ((det > tol) || (-det > tol)) {\n return det\n }\n return orientation4Exact(a,b,c,d)\n }\n]\n\nfunction slowOrient(args) {\n var proc = CACHED[args.length]\n if(!proc) {\n proc = CACHED[args.length] = orientation(args.length)\n }\n return proc.apply(undefined, args)\n}\n\nfunction generateOrientationProc() {\n while(CACHED.length <= NUM_EXPAND) {\n CACHED.push(orientation(CACHED.length))\n }\n var args = []\n var procArgs = [\"slow\"]\n for(var i=0; i<=NUM_EXPAND; ++i) {\n args.push(\"a\" + i)\n procArgs.push(\"o\" + i)\n }\n var code = [\n \"function getOrientation(\", args.join(), \"){switch(arguments.length){case 0:case 1:return 0;\"\n ]\n for(var i=2; i<=NUM_EXPAND; ++i) {\n code.push(\"case \", i, \":return o\", i, \"(\", args.slice(0, i).join(), \");\")\n }\n code.push(\"}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return getOrientation\")\n procArgs.push(code.join(\"\"))\n\n var proc = Function.apply(undefined, procArgs)\n module.exports = proc.apply(undefined, [slowOrient].concat(CACHED))\n for(var i=0; i<=NUM_EXPAND; ++i) {\n module.exports[i] = CACHED[i]\n }\n}\n\ngenerateOrientationProc()","module.exports = robustPointInPolygon\n\nvar orient = require('robust-orientation')\n\nfunction robustPointInPolygon(vs, point) {\n var x = point[0]\n var y = point[1]\n var n = vs.length\n var inside = 1\n var lim = n\n for(var i = 0, j = n-1; i<lim; j=i++) {\n var a = vs[i]\n var b = vs[j]\n var yi = a[1]\n var yj = b[1]\n if(yj < yi) {\n if(yj < y && y < yi) {\n var s = orient(a, b, point)\n if(s === 0) {\n return 0\n } else {\n inside ^= (0 < s)|0\n }\n } else if(y === yi) {\n var c = vs[(i+1)%n]\n var yk = c[1]\n if(yi < yk) {\n var s = orient(a, b, point)\n if(s === 0) {\n return 0\n } else {\n inside ^= (0 < s)|0\n }\n }\n }\n } else if(yi < yj) {\n if(yi < y && y < yj) {\n var s = orient(a, b, point)\n if(s === 0) {\n return 0\n } else {\n inside ^= (s < 0)|0\n }\n } else if(y === yi) {\n var c = vs[(i+1)%n]\n var yk = c[1]\n if(yk < yi) {\n var s = orient(a, b, point)\n if(s === 0) {\n return 0\n } else {\n inside ^= (s < 0)|0\n }\n }\n }\n } else if(y === yi) {\n var x0 = Math.min(a[0], b[0])\n var x1 = Math.max(a[0], b[0])\n if(i === 0) {\n while(j>0) {\n var k = (j+n-1)%n\n var p = vs[k]\n if(p[1] !== y) {\n break\n }\n var px = p[0]\n x0 = Math.min(x0, px)\n x1 = Math.max(x1, px)\n j = k\n }\n if(j === 0) {\n if(x0 <= x && x <= x1) {\n return 0\n }\n return 1 \n }\n lim = j+1\n }\n var y0 = vs[(j+n-1)%n][1]\n while(i+1<lim) {\n var p = vs[i+1]\n if(p[1] !== y) {\n break\n }\n var px = p[0]\n x0 = Math.min(x0, px)\n x1 = Math.max(x1, px)\n i += 1\n }\n if(x0 <= x && x <= x1) {\n return 0\n }\n var y1 = vs[(i+1)%n][1]\n if(x < x0 && (y0 < y !== y1 < y)) {\n inside ^= 1\n }\n }\n }\n return 2 * inside - 1\n}","// @ts-ignore\nimport classifyPoint from 'robust-point-in-polygon';\n\ntype D3Element = HTMLElement & {__data__: any};\ntype VcPointerEvent = (MouseEvent | TouchEvent) & {collaboratorId: string; isLocalEvent: boolean};\n\nexport class VisConnectUtil {\n static drag() {\n const data = {\n elements: null as D3Element[] | null,\n draggingElements: {} as {[collaborator: string]: D3Element},\n offset: {} as {[collaborator: string]: [number, number]},\n onStart: (data: any) => {},\n onEnd: (data: any) => {},\n onDrag: (data: any) => {},\n };\n\n const dragStart = (element: D3Element) => {\n return (event: VcPointerEvent) => {\n if (!VisConnectUtil.setCustomEvent(event)) {\n return;\n }\n\n const mousePos = (window as any)['d3'].mouse(event.target);\n const dataX = element.__data__ && 'x' in element.__data__ ? element.__data__.x : 0;\n const dataY = element.__data__ && 'y' in element.__data__ ? element.__data__.y : 0;\n if (dataX || dataY) {\n data.offset[event.collaboratorId] = [mousePos[0] - dataX, mousePos[1] - dataY];\n } else {\n data.offset[event.collaboratorId] = [window.scrollX, window.scrollY];\n }\n\n data.draggingElements[event.collaboratorId] = element;\n data.onStart.call(element, element.__data__);\n };\n };\n\n const dragMove = (event: VcPointerEvent) => {\n let d3Event;\n if (!(d3Event = VisConnectUtil.setCustomEvent(event))) {\n return;\n }\n const element = data.draggingElements[event.collaboratorId];\n if (!element) {\n return;\n }\n\n d3Event.x -= data.offset[event.collaboratorId][0];\n d3Event.y -= data.offset[event.collaboratorId][1];\n\n data.onDrag.call(element, element.__data__);\n };\n\n const dragEnd = (event: VcPointerEvent) => {\n if (!VisConnectUtil.setCustomEvent(event)) {\n return;\n }\n const element = data.draggingElements[event.collaboratorId];\n if (element) {\n delete data.draggingElements[event.collaboratorId];\n data.onEnd.call(element, element.__data__);\n }\n };\n\n const drag = function (selection: {_groups: [[D3Element]]}) {\n const elements = selection._groups[0].filter((element: any) => element);\n if (!elements.length) {\n return;\n }\n\n data.elements = elements;\n\n for (const element of data.elements) {\n element.addEventListener('mousedown', (e) =>\n dragStart(element)(e as VcPointerEvent)\n );\n element.addEventListener('touchstart', (e) =>\n dragStart(element)(e as VcPointerEvent)\n );\n }\n\n window.addEventListener('mousemove', (e) => dragMove(e as VcPointerEvent));\n window.addEventListener('touchmove', (e) => dragMove(e as VcPointerEvent));\n window.addEventListener('mouseup', (e) => dragEnd(e as VcPointerEvent));\n window.addEventListener('touchend', (e) => dragEnd(e as VcPointerEvent));\n };\n\n drag.on = (type: string, callback: (data: any) => void) => {\n if (type === 'start') {\n data.onStart = callback;\n } else if (type === 'drag') {\n data.onDrag = callback;\n } else if (type === 'end') {\n data.onEnd = callback;\n } else {\n console.error('Drag type ', type, ' not defined.');\n }\n return drag;\n };\n\n return drag;\n }\n\n static setCustomEvent(event: VcPointerEvent) {\n const pos = point(event);\n if (!pos) {\n return null;\n }\n const newEvent = {sourceEvent: event, x: pos.x, y: pos.y};\n (window as any)['d3'].event = newEvent;\n\n return newEvent;\n }\n\n static brush() {\n const data = {\n svg: {} as D3Selection,\n onStart: (() => {}) as (data?: any) => void,\n onBrush: (() => {}) as (data?: any) => void,\n onEnd: (() => {}) as (data?: any) => void,\n };\n const collaboratorBrushes: {[collaboratorId: string]: any} = {};\n\n document.body.addEventListener('brush-message', (e) => {\n const event = e as Event & {\n detail: {event: any};\n collaboratorId: string;\n collaboratorColor: string;\n type: string;\n };\n\n if (event.type === 'brush') {\n if (!collaboratorBrushes[event.collaboratorId]) {\n collaboratorBrushes[event.collaboratorId] = data.svg\n .append('rect')\n .attr('fill', event.collaboratorColor)\n .attr('opacity', '0.4')\n .style('pointer-events', 'none');\n }\n const rect = collaboratorBrushes[event.collaboratorId];\n const [[x0, y0], [x1, y1]] = event.detail.event;\n\n rect.attr('x', x0)\n .attr('y', y0)\n .attr('width', `${x1 - x0}`)\n .attr('height', `${y1 - y0}`);\n }\n });\n\n const brush = function (svg: any) {\n data.svg = svg;\n return d3b.call(d3b, svg);\n };\n\n brush.extent = () => {\n d3b.extent.apply(d3b, arguments);\n return brush;\n };\n brush.start = function (this: HTMLElement, p: any) {\n const evtData = {\n detail: {\n event: d3.event.selection,\n collaboratorId: d3.event.collaboratorId,\n type: 'start',\n },\n };\n document.body.dispatchEvent(new CustomEvent('brush-message', evtData));\n data.onStart.call(this, p);\n };\n brush.move = function (this: HTMLElement, p: any, t?: any) {\n if (this === null) {\n d3b.move.call(null, p);\n }\n const evtData = {\n detail: {\n event: d3.event.selection,\n collaboratorId: d3.event.collaboratorId,\n type: 'brush',\n },\n };\n document.body.dispatchEvent(new CustomEvent('brush-message', evtData));\n data.onBrush.call(this, p);\n };\n brush.end = function (this: HTMLElement, p: any) {\n const evtData = {\n detail: {\n event: d3.event.selection,\n collaboratorId: d3.event.collaboratorId,\n type: 'end',\n },\n };\n document.body.dispatchEvent(new CustomEvent('brush-message', evtData));\n data.onEnd.call(this, p);\n };\n\n brush.on = (type: string, callback: () => void) => {\n if (type === 'start') {\n data.onStart = callback;\n } else if (type === 'brush') {\n data.onBrush = callback;\n } else if (type === 'end') {\n data.onEnd = callback;\n } else {\n console.error('Drag type ', type, ' not defined.');\n }\n return brush;\n };\n\n const d3b = d3\n .brush()\n .on('start', brush.start)\n .on('brush', brush.move)\n .on('end', brush.end);\n\n return brush;\n }\n\n static lasso() {\n const data = {\n svg: {} as D3Selection,\n lassoGs: {} as {[collId: string]: D3Selection},\n drawing: {} as {[collId: string]: boolean},\n start: {} as {[collId: string]: [number, number]},\n positions: {} as {[collId: string]: [number, number][]},\n items: null as D3Selection | null,\n mode: 'divide' as 'divide' | 'join',\n getItemPos: (() => [0, 0]) as (item: D3Selection) => [number, number],\n possibleItems: [] as any[],\n notPossibleItems: [] as any[],\n onStart: () => {},\n onDraw: () => {},\n onEnd: () => {},\n };\n\n const lasso = (svg: D3Selection) => {\n data.svg = svg;\n\n const drag = vc.drag();\n\n drag.on('start', () => {\n const collId = d3.event.sourceEvent.collaboratorId;\n\n data.drawing[collId] = true;\n data.start[collId] = [d3.event.x, d3.event.y];\n data.positions[collId] = [];\n\n let lassoG = data.lassoGs[collId];\n if (!lassoG) {\n lassoG = svg.append('g');\n data.lassoGs[collId] = lassoG;\n }\n\n lassoG.selectAll('path').remove();\n lassoG\n .append('path')\n .attr('stroke', 'grey')\n .attr('opacity', '0.5')\n .style('pointer-events', 'none')\n .attr('fill', d3.event.sourceEvent.collaboratorColor);\n\n lassoG.selectAll('circle').remove();\n lassoG\n .append('circle')\n .attr('r', 4)\n .attr('cx', data.start[collId][0])\n .attr('cy', data.start[collId][1])\n .style('pointer-events', 'none')\n .attr('fill', d3.event.sourceEvent.collaboratorColor);\n\n if (collId === vc.ownId || data.mode === 'join') {\n data.onStart();\n }\n });\n\n drag.on('drag', () => {\n const collId = d3.event.sourceEvent.collaboratorId;\n\n if (data.drawing[collId]) {\n data.positions[collId].push([d3.event.x, d3.event.y]);\n\n const lassoG = data.lassoGs[collId];\n lassoG\n .select('path')\n .attr(\n 'd',\n () =>\n 'M' +\n data.positions[collId]\n .map((pos) => `${pos[0]},${pos[1]}`)\n .reduce((a, b) => `${a} L${b}`) +\n 'Z'\n );\n\n if (collId === vc.ownId || data.mode === 'join') {\n data.onDraw();\n }\n }\n });\n\n drag.on('end', () => {\n const collId = d3.event.sourceEvent.collaboratorId;\n\n data.drawing[collId] = false;\n data.start[collId] = [0, 0];\n\n //const lassoG = data.lassoGs[collId];\n //lassoG.selectAll('path').remove();\n //lassoG.selectAll('circle').remove();\n\n if (collId === vc.ownId || data.mode === 'join') {\n data.onEnd();\n }\n });\n\n svg.call(drag);\n };\n\n lasso.items = (items?: D3Selection) => {\n if (items) {\n data.items = items;\n return lasso;\n }\n return data.items;\n };\n\n const getItemScore = (d: any) => {\n if (!data.positions[vc.ownId]) {\n return 1;\n }\n const pos = data.getItemPos(d);\n const collIds = Object.keys(data.positions);\n\n if (data.mode === 'divide') {\n return classifyPoint(data.positions[vc.ownId], pos);\n } else {\n return Math.min(\n ...collIds.map((collId) => classifyPoint(data.positions[collId], pos))\n );\n }\n };\n\n const getInside = () => {\n if (!data.items) {\n return null;\n }\n return data.items.filter(function (d) {\n return getItemScore(d) <= 0;\n });\n };\n\n const getOutside = () => {\n if (!data.items) {\n return null;\n }\n return data.items.filter(function (d) {\n return getItemScore(d) > 0;\n });\n };\n\n lasso.selectedItems = getInside;\n lasso.notSelectedItems = getOutside;\n lasso.possibleItems = getInside;\n lasso.notPossibleItems = getOutside;\n lasso.collaborationMode = (mode?: 'divide' | 'join') => {\n if (mode) {\n data.mode = mode;\n return lasso;\n } else {\n return data.mode;\n }\n };\n\n lasso.getItemPos = (cb: (item: D3Selection) => [number, number]) => {\n data.getItemPos = cb;\n return lasso;\n };\n\n lasso.on = (type: string, callback: () => void) => {\n if (type === 'start') {\n data.onStart = callback;\n } else if (type === 'draw') {\n data.onDraw = callback;\n } else if (type === 'end') {\n data.onEnd = callback;\n } else {\n console.error('Lasso type ', type, ' not defined.');\n }\n return lasso;\n };\n\n return lasso;\n }\n\n static mouse(node: HTMLElement): [number, number] {\n const coords = (window as any)['d3'].mouse(node);\n return [coords[0] - window.scrollX, coords[1] - window.scrollY];\n }\n\n static random(leaderId: string) {\n // string to int hash from https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0.\n let seed = Array.from(leaderId).reduce(\n (s, c) => (Math.imul(31, s) + c.charCodeAt(0)) | 0,\n 0\n );\n return () => {\n // Bad but seeded random function\n const x = Math.sin(seed++) * 10000;\n return x - Math.floor(x);\n };\n }\n\n // From https://gist.github.com/0x263b/2bdd90886c2036a1ad5bcf06d6e6fb37\n static stringToHex(string: string) {\n let hash = 0;\n if (string.length === 0) return '#000000';\n for (let i = 0; i < string.length; i++) {\n hash = string.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n let color = '#';\n for (let i = 0; i < 3; i++) {\n const value = (hash >> (i * 8)) & 255;\n color += ('00' + value.toString(16)).substr(-2);\n }\n return color;\n }\n}\n\n// Adapted from D3.js\nfunction point(event: MouseEvent | TouchEvent) {\n const node = event.target as SVGElement;\n const svg = node.ownerSVGElement || node;\n\n const position = event instanceof MouseEvent ? event : event.touches[0];\n if (!position) {\n console.warn(event);\n return null;\n }\n\n if ((svg as any).createSVGPoint) {\n let point = (svg as any).createSVGPoint();\n point.x = position.clientX;\n point.y = position.clientY;\n point = point.matrixTransform((node as any).getScreenCTM().inverse());\n return {x: point.x, y: point.y};\n }\n\n const rect = node.getBoundingClientRect();\n return {\n x: position.clientX - rect.left - node.clientLeft,\n y: position.clientY - rect.top - node.clientTop,\n };\n}\n\ninterface D3Selection {\n append: (elementType: string) => D3Selection;\n attr: (name: string, value?: string | number | ((d: any) => string | number)) => D3Selection;\n call: (fct: () => void) => D3Selection;\n each: (fct: (d: any) => void) => D3Selection;\n filter: (fct: (d: any) => boolean) => D3Selection;\n nodes: () => Element[];\n on: (name: string, callback?: (event: any) => void) => D3Selection;\n select: (name: string) => D3Selection;\n selectAll: (name: string) => D3Selection;\n style: (name: string, value?: string) => D3Selection;\n remove: () => void;\n}\n\nfunction wrapFct(wrap: any, inner: any, fctName: string) {\n wrap[fctName] = () => {\n inner[fctName].apply(inner, arguments as any);\n return wrap;\n };\n}\n","import {Visconnect} from './visconnect';\nimport {VisConnectUtil} from './util';\nimport {StrippedEvent} from './listener';\n\nexport class VisConnectUi {\n private cursorResetTimeout = 0;\n\n constructor(private visconnect: Visconnect, private element: Element) {\n this.addTemplate();\n this.initiateCursors();\n\n const protocol = this.visconnect.protocol;\n protocol.communication.onConnectionCallback = this.updateConnections.bind(this);\n protocol.onLoading = this.showLoadingScreen.bind(this);\n protocol.onDoneLoading = this.hideLoadingScreen.bind(this);\n protocol.communication.onLoading = this.showLoadingScreen.bind(this);\n protocol.communication.onDoneLoading = this.hideLoadingScreen.bind(this);\n protocol.communication.onFailure = this.onFailure.bind(this);\n\n this.showLoadingScreen('Setting up..');\n this.updateConnections();\n }\n\n initiateCursors() {\n this.element.addEventListener('mousemove', this.mouseMoved.bind(this));\n\n const container = document.createElement('div');\n container.id = 'visconnect-cursors';\n document.body.appendChild(container);\n }\n\n getCursor(participant: string) {\n const elementId = `visconnect-cursor-${participant}`;\n let cursor = document.getElementById(elementId);\n if (!cursor) {\n const cursors = document.getElementById('visconnect-cursors')!;\n cursor = document.createElement('div');\n cursor.style.background = VisConnectUtil.stringToHex(participant);\n cursor.style.width = '5px';\n cursor.style.height = '5px';\n cursor.style.position = 'absolute';\n cursor.style.borderRadius = '3px';\n cursor.style.pointerEvents = 'none';\n cursor.id = elementId;\n cursors.appendChild(cursor);\n }\n return cursor;\n }\n\n mouseMoved(originalEvent: Event) {\n const event = originalEvent as MouseEvent & {collaboratorId: string};\n const ownId = this.visconnect.protocol.communication.id;\n const collaborator = event['collaboratorId'];\n if (!collaborator || !ownId || ownId === collaborator) {\n return;\n }\n const cursor = this.getCursor(collaborator);\n cursor.style.left = `${event.clientX - 2}px`;\n cursor.style.top = `${event.clientY - 2}px`;\n }\n\n eventCancelled(event: StrippedEvent) {\n clearTimeout(this.cursorResetTimeout);\n let target: HTMLElement = document.querySelector(event.target) || document.body;\n target.style.setProperty('cursor', 'not-allowed', 'important');\n this.cursorResetTimeout = window.setTimeout(() => {\n target.style.removeProperty('cursor');\n }, 50);\n }\n\n updateConnections() {\n const connections = this.visconnect.protocol.communication.getNumberOfConnections();\n const collaborators = connections - 1;\n\n if (collaborators > 0) {\n document.getElementById('visconnect-container')!.style.height = '70px';\n document.getElementById('visconnect-collab-notice')!.style.display = 'inline';\n document.getElementById('visconnect-collab-count')!.innerText = String(collaborators);\n } else {\n document.getElementById('visconnect-container')!.style.height = '50px';\n document.getElementById('visconnect-collab-notice')!.style.display = 'none';\n }\n }\n\n invite() {\n const communication = this.visconnect.protocol.communication;\n const leaderId = communication.leaderId;\n const logo = document.getElementById('visconnect-logo')!;\n const collabNotice = document.getElementById('visconnect-collab-notice')!;\n\n if (!leaderId) {\n const errorElement = document.getElementById('visconnect-not-ready')!;\n logo.style.display = 'none';\n errorElement.style.display = 'inline';\n\n setTimeout(() => {\n logo.style.display = 'block';\n errorElement.style.display = 'none';\n }, 1000);\n return;\n }\n\n let url = location.href.replace(/visconnectownid=[a-z0-9]+/gi, '');\n if (leaderId === communication.id) {\n url += '?visconnectid=' + leaderId;\n }\n\n copyToClipboard(url);\n\n const inviteLinkCopied = document.getElementById('visconnect-link-copied')!;\n\n const collabNoticeDisplay = collabNotice.style.display;\n logo.style.display = 'none';\n collabNotice.style.display = 'none';\n inviteLinkCopied.style.display = 'inline';\n\n setTimeout(() => {\n logo.style.display = 'block';\n inviteLinkCopied.style.display = 'none';\n collabNotice.style.display = collabNoticeDisplay;\n }, 1400);\n }\n\n onFailure(message: string) {\n console.log('Connection Failed.');\n this.showLoadingScreen(message);\n document.getElementById('visconnect-container')!.style.display = 'none';\n this.visconnect.stop();\n }\n\n showLoadingScreen(message: string) {\n this.hideLoadingScreen();\n\n const container = document.createElement('div');\n container.id = 'visconnect-loadingscreen';\n document.body.appendChild(container);\n\n container.innerHTML = `\n<style>\n#background {\n background: #f5f5f5;\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\np {\n text-align: center;\n position: fixed;\n top: 40%;\n width: 100%;\n left: 0;\n}\n</style>\n<div id=\"background\">\n <p>\n <b>VisConnect Loading:</b>\n <br /><br />\n ${message}\n </p>\n</div>\n `;\n }\n\n hideLoadingScreen() {\n const loadingscreen = document.getElementById('visconnect-loadingscreen');\n if (!loadingscreen) {\n return;\n }\n loadingscreen.parentNode!.removeChild(loadingscreen);\n }\n\n addTemplate() {\n const container = document.createElement('div');\n container.id = 'visconnect-container';\n\n container.innerHTML = `\n<a id=\"visconnect-invite\">\n <!--<svg id=\"visconnect-logo\" width=\"50\" aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"link\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-link fa-w-16 fa-2x\"><path fill=\"#fff\" d=\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\" class=\"\"></path></svg>-->\n <svg id=\"visconnect-logo\" width=\"50\" version=\"1.1\" viewBox=\"0 0 55.55724 55.55724\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <g transform=\"translate(-15.5 -20.905)\">\n <path d=\"m49.236 53.67s-6.0878-19.94-22.215-6.3478c-10.3 8.6812-12.464 16.499-6.203 23.516 7.1388 8.0014 16.301 3.8953 25.966-10.387\" fill=\"none\" stroke=\"#36b\" stroke-width=\"3\"/>\n <path d=\"m36.975 38.666s14.57-21.929 26.543-12.407c11.973 9.5217 1.9956 17.866-2.3081 22.362-6.4915 6.7806-14.408 11.996-20.629 5.0494-3.8794-4.3324-4.3277-7.6462-4.3277-7.6462\" fill=\"none\" stroke=\"#36b\" stroke-width=\"3\"/>\n <path d=\"m61.313 40.246h-3.6787l1.936 4.6647c0.13471 0.32337-0.01958 0.68598-0.32747 0.82317l-1.7049 0.73499c-0.31772 0.13713-0.67422-0.01936-0.80906-0.33321l-1.8397-4.4295-3.0052 3.0575c-0.40047 0.40736-1.05 0.09324-1.05-0.44098v-14.738c0-0.56252 0.69082-0.83679 1.0499-0.44098l9.8624 10.034c0.39783 0.38345 0.10406 1.0682-0.43342 1.0682z\" fill=\"#fff\" stroke=\"#000\"/>\n <path d=\"m37.341 62.869h-3.6787l1.936 4.6647c0.13472 0.32337-0.01958 0.68598-0.32747 0.82317l-1.7049 0.73499c-0.31772 0.13713-0.67422-0.01936-0.80906-0.33321l-1.8397-4.4295-3.0052 3.0575c-0.40047 0.40736-1.05 0.09324-1.05-0.44098v-14.738c0-0.56253 0.69082-0.83679 1.0499-0.44098l9.8624 10.034c0.39783 0.38345 0.10406 1.0682-0.43342 1.0682z\" fill=\"#fff\" stroke=\"#000\"/>\n </g>\n </svg>\n</a>\n<span id=\"visconnect-link-copied\">Invite Link Copied.</span>\n<span id=\"visconnect-not-ready\">Not yet ready...</span>\n<span id=\"visconnect-collab-notice\"><span id=\"visconnect-collab-count\"></span> connected</span>\n\n<style>\n#visconnect-container {\n position: fixed;\n right: 10px;\n bottom: 100px;\n background: rgba(120,120,120,0.5);\n border: 1px solid #ccc;\n border-radius: 10px;\n width: 80px;\n height: 50px;\n padding: 10px;\n transition: height 500ms;\n color: #fff;\n font-family: 'Times New Roman',Times,serif;\n}\n#visconnect-container, #visconnect-container * {\n box-sizing: content-box;\n}\n#visconnect-logo {\n padding-left: 15px;\n display: block;\n background: transparent;\n}\n#visconnect-invite:hover {\n cursor: pointer;\n}\n#visconnect-invite:hover #visconnect-logo path {\n stroke: #000;\n} \n#visconnect-link-copied, #visconnect-collab-notice, #visconnect-not-ready {\n display: none;\n}\n#visconnect-collab-notice {\n font-size: 11pt;\n position: relative;\n top: 5px;\n display: inline-block;\n width: 100px;\n}\n</style>`;\n document.body.appendChild(container);\n document.getElementById('visconnect-invite')!.onclick = this.invite.bind(this);\n }\n}\n\n// From https://hackernoon.com/copying-text-to-clipboard-with-javascript-df4d4988697f\nconst copyToClipboard = (str: string) => {\n const el = document.createElement('textarea');\n el.value = str;\n //console.log(str);\n el.setAttribute('readonly', '');\n el.style.position = 'absolute';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n const selection = document.getSelection();\n const selected = selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : false;\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n if (selected && selection) {\n selection.removeAllRanges();\n selection.addRange(selected);\n }\n};\n","export interface StrippedEvent {\n type: string;\n target: string;\n targetType: string;\n timeStamp: number;\n touches: {clientX: number; clientY: number}[];\n collaboratorId: string;\n [key: string]: string | number | {clientX: number; clientY: number}[];\n}\n\nexport class VcListener {\n private registeredElements: Element[] = [];\n constructor(\n private svg: Element,\n private hearEvent: (e: StrippedEvent, event: Event) => void,\n private customEvents?: string[],\n private ignoreEvents?: string[]\n ) {\n this.addListenersToElementAndChildren(this.svg);\n }\n\n stop() {\n for (const element of this.registeredElements) {\n const listener = (element as any)['visconnect-listener'];\n const eventTypes = this.getRelevantEventTypes();\n for (const type of eventTypes) {\n element.removeEventListener(type, listener);\n }\n }\n }\n\n addListenersToElementAndChildren(element: Element) {\n this.addListenersToElement(element);\n for (const child of element.children) {\n this.addListenersToElementAndChildren(child);\n }\n }\n\n addListenersToElement(element: Element) {\n const boundCapture = this.captureEvent(element).bind(this);\n const eventTypes = this.getRelevantEventTypes();\n\n this.registeredElements.push(element);\n (element as any)['visconnect-listener'] = boundCapture;\n for (const type of eventTypes) {\n element.addEventListener(type, boundCapture);\n }\n\n // Add listeners to future child elements.\n const appendBackup = element.appendChild;\n const insertBeforeBackup = element.insertBefore;\n const that = this;\n\n element.appendChild = function <T extends Node>(newChild: T) {\n that.addListenersToElement((newChild as unknown) as Element);\n return appendBackup.call(this, newChild) as T;\n };\n\n element.insertBefore = function <T extends Node>(newChild: T, nextChild: Node | null) {\n that.addListenersToElement((newChild as unknown) as Element);\n return insertBeforeBackup.call(this, newChild, nextChild) as T;\n };\n }\n\n getRelevantEventTypes() {\n const custom = this.customEvents ? this.customEvents : [];\n return [\n 'mousemove',\n 'mouseup',\n 'mousedown',\n 'touchmove',\n 'mouseenter',\n 'mouseout',\n 'mouseover',\n 'mouseleave',\n 'click',\n 'dblclick',\n 'touchstart',\n 'touchend',\n 'selectstart',\n 'dragstart',\n ]\n .filter(\n (type) =>\n !this.ignoreEvents ||\n (this.ignoreEvents[0] !== 'all' && !this.ignoreEvents.includes(type))\n )\n .concat(custom)\n .concat(['brush-message']);\n }\n\n captureEvent(element: Element) {\n return (e: MouseEvent | TouchEvent | DragEvent | Event) => {\n if (e.target !== element) {\n // Only capture for the correct target.\n return;\n }\n if ((e as any)['visconnect-received']) {\n // Don't broadcast events that have been received from other clients.\n return;\n }\n const eventObj = this.getStrippedEvent(e);\n //this.connection.broadcastEvent(eventObj);\n this.hearEvent(eventObj, e);\n };\n }\n\n getStrippedEvent(e: MouseEvent | TouchEvent | Event | CustomEvent) {\n let obj: StrippedEvent = {\n type: '',\n target: '',\n targetType: '',\n touches: [],\n timeStamp: -1,\n collaboratorId: '',\n };\n for (const key in e) {\n const val = (e as any)[key];\n if (typeof val !== 'object' && typeof val !== 'function') {\n obj[key] = val;\n }\n }\n if (obj.clientX) {\n obj.clientX = (obj.clientX as number) + window.scrollX;\n }\n if (obj.x) {\n obj.x = (obj.x as number) + window.scrollX;\n }\n if (obj.clientY) {\n obj.clientY = (obj.clientY as number) + window.scrollY;\n }\n if (obj.y) {\n obj.y = (obj.y as number) + window.scrollY;\n }\n\n if (window.TouchEvent && e instanceof TouchEvent && e.touches && e.touches.length) {\n for (const touch of e.touches) {\n obj.touches.push({\n clientX: touch.clientX + window.scrollX,\n clientY: touch.clientY + window.scrollX,\n });\n }\n }\n if ((e as CustomEvent).detail) {\n obj.detail = (e as CustomEvent).detail;\n }\n const target = this.getElementSelector(e.target as Element);\n if (target) {\n obj.target = target;\n obj.targetType = (e.target as Element).tagName.toLowerCase();\n }\n return obj;\n }\n\n getElementSelector(element: Element | null): string | null {\n if (!element) {\n return null;\n }\n if (element === document.body) {\n return 'body';\n }\n const parent = element.parentNode;\n if (!parent) {\n return null;\n }\n\n const index = Array.from(parent.children).indexOf(element);\n const type = element.tagName;\n\n return this.getElementSelector(parent as Element) + ` > ${type}:nth-child(${index + 1})`;\n }\n}\n","import {StrippedEvent} from './listener';\n\nexport function delayAddEventListener() {\n // The visualization's event listeners need to be called after VisConnect's event listeners.\n // For this reason, we delay calling event listeners that are added before VisConnect is started.\n (Element as any).prototype['addEventListenerBackup'] = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function (\n this: Element,\n eventName: string,\n callback: () => void\n ) {\n //console.log('doing a delayed execution on ', eventName, this);\n const that = this;\n setTimeout(function () {\n (Element as any).prototype['addEventListenerBackup'].call(that, eventName, callback);\n }, 110);\n } as any;\n\n // After the visualization code is run, reset the addEventListener function to its normal functionality, and start\n // VisConnect.\n return new Promise<void>((resolve) => {\n window.setTimeout(() => {\n Element.prototype.addEventListener = (Element as any).prototype[\n 'addEventListenerBackup'\n ];\n resolve();\n }, 100);\n });\n}\n\nexport function disableStopPropagation() {\n // Prevent d3 from blocking VisConnect and other code to have access to events.\n (Event as any).prototype['stopImmediatePropagationBackup'] =\n Event.prototype.stopImmediatePropagation;\n Event.prototype.stopImmediatePropagation = () => {};\n}\n\nexport function stopPropagation(event: Event) {\n (event as Event & {stopImmediatePropagationBackup: () => void})[\n 'stopImmediatePropagationBackup'\n ]();\n event.stopPropagation();\n}\n\nexport function recreateEvent(eventObject: StrippedEvent, target: Element): Event {\n const targetSelector = eventObject.target;\n let e: Event;\n if (eventObject.type.substr(0, 5) === 'touch') {\n try {\n e = document.createEvent('TouchEvent');\n e.initEvent(eventObject.type, true, false);\n for (const prop in eventObject) {\n if (prop !== 'isTrusted' && eventObject.hasOwnProperty(prop)) {\n Object.defineProperty(e, prop, {\n writable: true,\n value: eventObject[prop],\n });\n }\n }\n } catch (error) {\n // Touch probably not supported.\n let newType = 'mousemove';\n if (eventObject.type === 'touchstart') {\n newType = 'mousedown';\n } else if (eventObject.type === 'touchend') {\n newType = 'mouseup';\n }\n eventObject.type = newType;\n if (eventObject.touches[0]) {\n eventObject.clientX = eventObject.touches[0].clientX;\n eventObject.clientY = eventObject.touches[0].clientY;\n }\n\n e = new MouseEvent(eventObject.type, eventObject as any);\n }\n //e = new TouchEvent(eventObject.type, eventObject as any);\n } else if (eventObject.type.substr(0, 5) === 'mouse' || eventObject.type === 'click') {\n e = new MouseEvent(eventObject.type, eventObject as any);\n } else if (eventObject.type.substr(0, 4) === 'drag') {\n e = new DragEvent(eventObject.type, eventObject as any);\n } else {\n e = new Event(eventObject.type, eventObject as any);\n }\n if (eventObject.detail) {\n Object.defineProperty(e, 'detail', {\n writable: true,\n value: eventObject.detail,\n });\n }\n\n if (targetSelector) {\n let newTarget: Element | null = document.querySelector(targetSelector);\n if (!newTarget) {\n console.error('element not found', targetSelector);\n //throw new Error('element not found');\n newTarget = document.body;\n }\n target = newTarget;\n }\n Object.defineProperty(e, 'target', {\n writable: true,\n value: target,\n });\n Object.defineProperty(e, 'view', {\n writable: true,\n value: window,\n });\n return e;\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer<any> = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","export const isArray = (() => Array.isArray || (<T>(x: any): x is T[] => x && typeof x.length === 'number'))();\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (<any> this)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _unsubscribe, _subscriptions } = (<any> this);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (<Subscription>teardown);\n\n if (!(<any>teardown)) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create<T>(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber<T> {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver<any> | Subscriber<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver<any> | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber<T>(this, <PartialObserver<any>> destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber<T>(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber<T> {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber<T> extends Subscriber<T> {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber<T>,\n observerOrNext?: PartialObserver<T> | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (<PartialObserver<T>> observerOrNext).next;\n error = (<PartialObserver<T>> observerOrNext).error;\n complete = (<PartialObserver<T>> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber<T>, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber<any> | Subject<any>): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber<T>(\n nextOrObserver?: PartialObserver<T> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber<T> {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (<Subscriber<T>> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","/** Symbol.observable addition */\n/* Note: This will add Symbol.observable globally for all TypeScript users,\n however, we are no longer polyfilling Symbol.observable */\ndeclare global {\n interface SymbolConstructor {\n readonly observable: symbol;\n }\n}\n\n/** Symbol.observable or a string \"@@observable\". Used for interop */\nexport const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { noop } from './noop';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe<T>(): UnaryFunction<T, T>;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>, fn6: UnaryFunction<E, F>): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>, fn6: UnaryFunction<E, F>, fn7: UnaryFunction<F, G>): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>, fn6: UnaryFunction<E, F>, fn7: UnaryFunction<F, G>, fn8: UnaryFunction<G, H>): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>, fn6: UnaryFunction<E, F>, fn7: UnaryFunction<F, G>, fn8: UnaryFunction<G, H>, fn9: UnaryFunction<H, I>): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>, fn4: UnaryFunction<C, D>, fn5: UnaryFunction<D, E>, fn6: UnaryFunction<E, F>, fn7: UnaryFunction<F, G>, fn8: UnaryFunction<G, H>, fn9: UnaryFunction<H, I>, ...fns: UnaryFunction<any, any>[]): UnaryFunction<T, {}>;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (!fns) {\n return noop as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable<any>;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator<any, T>;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver<T>): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver<T> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise<void>;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, ...operations: OperatorFunction<any, any>[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise<T>(this: Observable<T>): Promise<T>;\n toPromise<T>(this: Observable<T>, PromiseCtor: typeof Promise): Promise<T>;\n toPromise<T>(this: Observable<T>, PromiseCtor: PromiseConstructorLike): Promise<T>;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise<T>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription<T> extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject<T>, public subscriber: Observer<T>) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber<T>\n */\nexport class SubjectSubscriber<T> extends Subscriber<T> {\n constructor(protected destination: Subject<T>) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject<T>\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer<T>[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n }\n\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = <any>operator;\n return <any>subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber<T>): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable<T> {\n const observable = new Observable<T>();\n (<any>observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(protected destination?: Observer<T>, source?: Observable<T>) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber<T>): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import {Subject} from 'rxjs';\nimport {VcMessage} from './communication';\n\nexport interface PeerjsConnectionI {\n on: (id: string, callback: (data: any) => void) => void;\n peer: string;\n send: (msg: {}) => void;\n}\n\nexport interface VcConnection {\n send(message: {}): void;\n getPeer(): string;\n messages: Subject<any>;\n open(): Promise<void>;\n}\n\nexport class PeerjsConnection implements VcConnection {\n messages = new Subject<VcMessage>();\n\n constructor(private connection: PeerjsConnectionI) {\n this.connection.on('data', (message) => {\n this.receiveMessage(message);\n });\n }\n\n send(message: VcMessage) {\n // The testdelay URL flag can be used to test bad network conditions.\n if (location.href.includes('testdelay')) {\n setTimeout(() => this.connection.send(message), Math.round(Math.random() * 100));\n } else {\n this.connection.send(message);\n }\n }\n\n getPeer() {\n return this.connection.peer;\n }\n\n private receiveMessage(message: VcMessage) {\n this.messages.next(message);\n }\n\n open() {\n return new Promise<void>((resolve) => {\n this.connection.on('open', resolve);\n });\n }\n}\n","import {PeerjsConnection, PeerjsConnectionI} from './peerjs-connection';\n\ndeclare var Peer: any;\n\nexport interface VcNetwork {\n init(\n id: string,\n onOpen: () => void,\n onConnection: (connection: PeerjsConnection) => void,\n onDisconnection: () => void\n ): void;\n getId(): string;\n connect(peerId: string): Promise<PeerjsConnection>;\n}\n\nexport class PeerjsNetwork implements VcNetwork {\n private peer: any;\n private onOpen: () => void = () => 0;\n\n init(\n id: string,\n onOpen: () => void,\n onConnection: (connection: PeerjsConnection) => void,\n onDisconnection: () => void\n ) {\n this.onOpen = onOpen;\n\n this.peer = new Peer(id, {\n host: 'michaschwab.de',\n port: 9099,\n secure: true,\n path: '/visconnect',\n config: {\n iceServers: [\n {urls: 'stun:stun.l.google.com:19302'},\n {\n urls: 'turn:numb.viagenie.ca',\n credential: \"a/j'/9CmxTCa\",\n username: '[email protected]',\n },\n ],\n },\n });\n\n if (this.peer._open) {\n this.onOpen(); // In case it was done too fast.\n } else {\n this.peer.on('open', this.onOpen);\n }\n\n this.peer.on('connection', (connection: PeerjsConnectionI) => {\n //console.log('new connection', connection);\n onConnection(new PeerjsConnection(connection));\n });\n\n this.peer.on('disconnected', () => {\n onDisconnection();\n });\n\n window.addEventListener('beforeunload', () => onDisconnection());\n }\n\n getId(): string {\n return this.peer.id;\n }\n\n connect(peerId: string): Promise<PeerjsConnection> {\n return new Promise<PeerjsConnection>(async (resolve) => {\n const conn: PeerjsConnectionI = this.peer.connect(peerId);\n const connection = new PeerjsConnection(conn);\n\n await connection.open();\n resolve(connection);\n });\n }\n}\n","import {VcEvent} from './visconnect';\nimport {VcNetwork, PeerjsNetwork} from './peerjs-network';\nimport {VcConnection} from './peerjs-connection';\n\n// This file should know all the message types and create the messages\nexport interface VcCommunicationI {\n id: string;\n getId: () => string;\n broadcastEvent: (e: VcEvent) => void;\n requestLock: (selector: string) => boolean;\n changeLockOwner: (selector: string, owner: string, seqNum: number) => void;\n getNumberOfConnections: () => number;\n leaderId: string;\n onConnectionCallback: () => void;\n init: () => void;\n onLoading?: (message: string) => void;\n onFailure?: (message: string) => void;\n onDoneLoading?: () => void;\n}\n\nexport interface VcCommunicationConstructorData {\n leaderId: string;\n ownId: string;\n onEventReceived: (e: VcEvent[], sender: string, catchup?: boolean) => void;\n onNewLockOwner: (selector: string, owner: string, seqNum: number) => void;\n getPastEvents: () => VcEvent[];\n onLockRequested: (selector: string, requester: string) => void;\n onOpenCallback: () => void;\n}\n\nexport interface VcCommunicationConstructor {\n new (data: VcCommunicationConstructorData): VcCommunicationI;\n}\n\nexport class VcCommunication implements VcCommunicationI {\n private peer: VcNetwork;\n private connections: VcConnection[] = [];\n private leaderConnection?: VcConnection;\n private peers: string[] = [];\n onConnectionCallback = () => {};\n public id = '';\n\n private eventsMsg?: VcEventsMessage;\n private lastEventsMessageTime = -1;\n private throttleTimeout = -1;\n private opened = false;\n\n public leaderId: string;\n private readonly onEventReceived: (e: VcEvent[], sender: string, catchup?: boolean) => void;\n private readonly onNewLockOwner: (selector: string, owner: string, seqNum: number) => void;\n private readonly getPastEvents: () => VcEvent[];\n private readonly onLockRequested: (selector: string, requester: string) => void;\n private readonly onOpenCallback: () => void;\n onLoading?: (message: string) => void;\n onFailure?: (message: string) => void;\n onDoneLoading?: () => void;\n\n constructor(data: VcCommunicationConstructorData) {\n this.leaderId = data.leaderId;\n this.id = data.ownId;\n this.onEventReceived = data.onEventReceived;\n this.onNewLockOwner = data.onNewLockOwner;\n this.getPastEvents = data.getPastEvents;\n this.onLockRequested = data.onLockRequested;\n this.onOpenCallback = data.onOpenCallback;\n\n this.peer = new PeerjsNetwork();\n }\n\n init() {\n setTimeout(() => this.onOpenFailed(), 3000);\n\n this.peer.init(\n this.id,\n this.onOpen.bind(this),\n this.onConnected.bind(this),\n this.onDisconnected.bind(this)\n );\n }\n\n /**\n * Requests all clients to vote to agree that this client gets the lock on the element.\n */\n requestLock(targetSelector: string) {\n if (!this.id) {\n return false;\n }\n if (!this.leaderConnection && this.id !== this.leaderId) {\n return false;\n }\n\n const msg: LockRequestMessage = {\n type: VC_MESSAGE_TYPE.LOCK_REQUESTED,\n targetSelector,\n requester: this.id,\n sender: this.id,\n };\n\n if (this.id === this.leaderId) {\n // Ask itself, the leader, for permission.\n this.receiveMessage(msg);\n } else {\n // Ask the leader for permission.\n this.leaderConnection!.send(msg);\n }\n return true;\n }\n\n /**\n * This message is sent by the leader to inform clients that an element's lock owner has changed.\n */\n changeLockOwner(targetSelector: string, owner: string, seqNum: number) {\n const msg: LockOwnerChangedMessage = {\n type: VC_MESSAGE_TYPE.LOCK_OWNER_CHANGED,\n targetSelector,\n owner,\n sender: this.id,\n seqNum,\n };\n\n for (const conn of this.connections) {\n conn.send(msg);\n }\n this.receiveMessage(msg); // Tell itself that the lock owner has changed.\n }\n\n getId() {\n return this.peer.getId();\n }\n\n onOpen() {\n this.opened = true;\n this.id = this.getId();\n console.log('VisConnect connection established.');\n\n if (!this.leaderId) {\n this.leaderId = this.id;\n }\n\n this.connectToPeer(this.id);\n\n if (this.leaderId && this.leaderId !== this.id) {\n this.connectToPeer(this.leaderId);\n }\n this.onOpenCallback();\n this.onConnectionCallback();\n }\n\n onOpenFailed() {\n if (!this.opened && this.onFailure) {\n this.onFailure('Connection Failed');\n\n setTimeout(() => {\n if (this.onDoneLoading) {\n this.onDoneLoading();\n }\n }, 2000);\n }\n }\n\n getNumberOfConnections() {\n return this.connections.length;\n }\n\n async onConnected(connection: VcConnection) {\n // Incoming connection: Leader or client receives connection from client.\n const peer = connection.getPeer();\n\n this.peers.push(peer);\n this.connections.push(connection);\n //console.log(\"New incoming connection\", this.peers, this.connections.length);\n\n this.onConnectionCallback();\n\n if (peer === this.leaderId) {\n // This is in case the incoming connection is the leader.\n this.leaderConnection = connection;\n if (this.onDoneLoading) {\n this.onDoneLoading();\n }\n }\n\n await connection.open();\n connection.messages.subscribe(this.receiveMessage.bind(this));\n\n if (this.leaderId === this.id) {\n this.sendNewConnection(connection);\n }\n }\n\n async onDisconnected() {\n this.sendDisconnectMessage();\n }\n\n async connectToPeer(id: string) {\n // Outgoing connection: Client connects to leader or other client.\n const connection: VcConnection = await this.peer.connect(id);\n\n this.connections.push(connection);\n this.peers.push(id);\n //console.log(\"New outgoing connection\", this.peers, this.connections.length);\n\n this.onConnectionCallback();\n\n const peer = connection.getPeer();\n\n if (peer === this.leaderId) {\n this.leaderConnection = connection;\n }\n\n connection.messages.subscribe(this.receiveMessage.bind(this));\n }\n\n receiveMessage(data: VcMessage) {\n if (data.type === VC_MESSAGE_TYPE.NEW_CONNECTION) {\n this.receiveNewConnection(data as InitMessage);\n } else if (data.type === VC_MESSAGE_TYPE.EVENT) {\n const msg = data as VcEventsMessage;\n this.onEventReceived(msg.data, msg.sender);\n } else if (data.type === VC_MESSAGE_TYPE.LOCK_REQUESTED) {\n const msg = data as LockRequestMessage;\n this.onLockRequested(msg.targetSelector, msg.requester);\n } else if (data.type === VC_MESSAGE_TYPE.LOCK_OWNER_CHANGED) {\n const msg = data as LockOwnerChangedMessage;\n this.onNewLockOwner(msg.targetSelector, msg.owner, msg.seqNum);\n } else if (data.type === VC_MESSAGE_TYPE.DISCONNECTION) {\n const msg = data as DisconnectMessage;\n this.recieveDisconnectMessage(msg);\n }\n }\n\n broadcastEvent(e: VcEvent) {\n if (!this.eventsMsg) {\n this.eventsMsg = {\n type: VC_MESSAGE_TYPE.EVENT,\n sender: this.id,\n data: [],\n };\n }\n this.eventsMsg.data.push(e);\n\n this.throttledSendEvents();\n }\n\n throttledSendEvents() {\n if (!this.eventsMsg) {\n return;\n }\n\n const onSend = () => {\n if (!this.eventsMsg) {\n return;\n }\n for (const conn of this.connections) {\n conn.send(this.eventsMsg);\n }\n this.lastEventsMessageTime = Date.now();\n this.eventsMsg = undefined;\n this.throttleTimeout = -1;\n };\n\n window.requestAnimationFrame(onSend);\n }\n\n sendNewConnection(conn: VcConnection) {\n const decoratedMessage: InitMessage = {\n type: VC_MESSAGE_TYPE.NEW_CONNECTION,\n sender: this.id,\n peers: this.peers as string[],\n eventsLedger: this.getPastEvents(),\n };\n\n this.loadTask(() => conn.send(decoratedMessage), 'Updating newly joined collaborators..');\n }\n\n receiveNewConnection(data: InitMessage) {\n //console.log(\"New connection message\", data);\n for (let i = 0; i < data.peers.length; i++) {\n if (this.peers.indexOf(data.peers[i]) === -1) {\n console.log('connecting to new peer', data.peers[i]);\n this.connectToPeer(data.peers[i]);\n }\n }\n\n if (this.onDoneLoading) {\n this.onDoneLoading();\n }\n this.onEventReceived(data.eventsLedger, data.sender, true);\n }\n\n sendDisconnectMessage() {\n const decoratedMessage: DisconnectMessage = {\n type: VC_MESSAGE_TYPE.DISCONNECTION,\n sender: this.id,\n };\n\n for (const conn of this.connections) {\n conn.send(decoratedMessage);\n }\n }\n\n recieveDisconnectMessage(msg: DisconnectMessage) {\n console.log('Peer', msg.sender, 'is disconnecting');\n\n for (const conn of this.connections) {\n //console.log('Requesting lock', msg);\n if (conn.getPeer() === msg.sender) {\n console.log('Removing peer and connection');\n this.peers.splice(this.peers.indexOf(msg.sender), 1);\n this.connections.splice(this.connections.indexOf(conn), 1);\n }\n }\n this.onConnectionCallback();\n }\n\n private loadTask(task: () => void, loadMessage: string) {\n if (this.onLoading) {\n this.onLoading(loadMessage);\n window.setTimeout(() => {\n task();\n if (this.onDoneLoading) {\n this.onDoneLoading();\n }\n }, 10);\n } else {\n task();\n }\n }\n}\n\nexport enum VC_MESSAGE_TYPE {\n NEW_CONNECTION,\n EVENT,\n LOCK_REQUESTED,\n LOCK_VOTE,\n LOCK_OWNER_CHANGED,\n DISCONNECTION,\n}\n\nexport interface VcMessage {\n peers?: string[];\n type: VC_MESSAGE_TYPE;\n sender: string;\n data?: any;\n}\n\nexport interface VcEventsMessage extends VcMessage {\n type: VC_MESSAGE_TYPE.EVENT;\n data: VcEvent[];\n}\n\nexport interface InitMessage extends VcMessage {\n type: VC_MESSAGE_TYPE.NEW_CONNECTION;\n peers: string[];\n eventsLedger: VcEvent[];\n}\n\nexport interface DisconnectMessage extends VcMessage {\n type: VC_MESSAGE_TYPE.DISCONNECTION;\n}\n\nexport interface LockRequestMessage extends VcMessage {\n type: VC_MESSAGE_TYPE.LOCK_REQUESTED;\n targetSelector: string;\n requester: string;\n}\n\nexport interface LockOwnerChangedMessage extends VcMessage {\n type: VC_MESSAGE_TYPE.LOCK_OWNER_CHANGED;\n targetSelector: string;\n owner: string;\n seqNum: number;\n}\n","import {StrippedEvent} from './listener';\nimport {VcCommunication, VcCommunicationConstructor, VcCommunicationI} from './communication';\nimport {VcEvent} from './visconnect';\n\nexport class VcProtocol {\n ledgers = new Map<string, VcEvent[]>();\n protected lockOwners = new Map<string, string>();\n protected requestedLocks = new Set<string>();\n protected heldEvents = new Map<string, StrippedEvent[]>();\n protected heldRemoteEvents = new Map<string, VcEvent[]>();\n communication: VcCommunicationI;\n protected collaboratorId = '';\n onLoading?: (message: string) => void;\n onDoneLoading?: () => void;\n\n constructor(\n protected leaderId: string,\n protected ownId: string,\n protected executeEvent: (e: StrippedEvent) => void,\n protected cancelEvent: (e: StrippedEvent) => void,\n protected unsafeElements: string[],\n MockCommunication?: VcCommunicationConstructor\n ) {\n const Communication = MockCommunication ? MockCommunication : VcCommunication;\n this.communication = new Communication({\n leaderId: leaderId,\n ownId: ownId,\n onEventReceived: this.receiveRemoteEvents.bind(this),\n onNewLockOwner: this.lockOwnerChanged.bind(this),\n getPastEvents: this.getPastEvents.bind(this),\n onLockRequested: this.receiveLockRequest.bind(this),\n onOpenCallback: this.init.bind(this),\n });\n\n this.communication.init();\n }\n\n init() {\n this.collaboratorId = this.communication.getId();\n }\n\n getPastEvents() {\n const events = Array.from(this.ledgers.values()).reduce((a, b) => a.concat(b), []);\n return events.sort((a, b) => a.event.timeStamp - b.event.timeStamp);\n }\n\n localEvent(stripped: StrippedEvent) {\n const selector = stripped.target;\n stripped.collaboratorId = this.communication.getId();\n //console.log('local event on ', selector, this.lockOwners.get(selector), this.collaboratorId);\n\n // All clients are allowed to interact with the unsafe elements.\n const allAllowed =\n this.unsafeElements.includes(stripped.targetType) || this.unsafeElements.includes('*');\n const lockOwner = this.lockOwners.get(selector);\n\n if (allAllowed || (lockOwner && lockOwner === this.collaboratorId)) {\n const vcEvent = this.makeVcEvent(stripped);\n const success = this.addEventToLedger(vcEvent, this.collaboratorId);\n if (success) {\n this.communication.broadcastEvent(vcEvent);\n }\n } else if (lockOwner && lockOwner !== this.collaboratorId) {\n // Do nothing - do not execute the event.\n this.cancelEvent(stripped);\n } else {\n if (!this.heldEvents.has(selector)) {\n this.heldEvents.set(selector, []);\n }\n this.heldEvents.get(selector)!.push(stripped);\n //console.log('held', this.heldEvents.get(selector));\n\n this.requestLock(selector);\n }\n }\n\n receiveRemoteEvents(events: VcEvent[], sender: string, catchup = false) {\n if (events.length > 100 && this.onLoading) {\n this.onLoading(`Catching up to collaborators by re-playing ${events.length} events..`);\n\n // Wait one frame to give the browser time to display a loading screen.\n setTimeout(async () => {\n await this.replayEvents(events, sender, catchup);\n\n if (this.onDoneLoading) {\n this.onDoneLoading();\n }\n }, 10);\n } else {\n this.replayEvents(events, sender, catchup);\n }\n }\n\n private replayEvents(events: VcEvent[], sender: string, catchup = false) {\n return new Promise<void>((resolve, reject) => {\n const EVENTS_PER_FRAME = 200;\n\n const replayEvent = (event: VcEvent) => {\n const ledger = this.ledgers.get(event.event.target);\n let lastSeqNum = ledger && ledger.length ? ledger[ledger.length - 1].seqNum : -1;\n this.playHeldRemoteEvents(event.event.target, lastSeqNum, true);\n lastSeqNum = ledger && ledger.length ? ledger[ledger.length - 1].seqNum : -1;\n\n if (event.seqNum !== lastSeqNum + 1) {\n this.holdRemoteEvent(event);\n } else {\n const success = this.addEventToLedger(event, sender, catchup);\n if (!success && !this.lockOwners.has(event.event.target)) {\n this.holdRemoteEvent(event);\n } else if (success) {\n this.playHeldRemoteEvents(event.event.target, lastSeqNum + 1, true);\n }\n }\n };\n\n let i = 0;\n const raf = () => {\n const currentMax = i + EVENTS_PER_FRAME;\n for (; i < currentMax; i++) {\n if (events[i]) {\n replayEvent(events[i]);\n }\n }\n if (events[i]) {\n requestAnimationFrame(raf);\n } else {\n resolve();\n }\n };\n raf();\n });\n }\n\n protected holdRemoteEvent(event: VcEvent) {\n if (!this.heldRemoteEvents.has(event.event.target)) {\n this.heldRemoteEvents.set(event.event.target, []);\n }\n this.heldRemoteEvents.get(event.event.target)!.push(event);\n //console.log('adding event to held remote events on ', this.collaboratorId);\n }\n\n receiveLockRequest(selector: string, requester: string) {\n console.error('Clients are not supposed to receive lock requests.');\n }\n\n lockOwnerChanged(selector: string, owner: string, seqNum: number) {\n //console.log('Lock owner changed', selector, owner, this.collaboratorId, this.heldEvents.has(selector), this.heldEvents.get(selector));\n this.requestedLocks.delete(selector);\n\n if (!owner) {\n this.lockOwners.delete(selector);\n this.heldEvents.delete(selector);\n return;\n }\n this.lockOwners.set(selector, owner);\n\n if (owner === this.collaboratorId && this.heldEvents.has(selector)) {\n // Finally, trigger these held up events.\n const events = this.heldEvents.get(selector)!;\n //console.log('Triggering some held up events', events);\n for (const stripped of events) {\n if (this.canExecuteEvent(stripped, this.collaboratorId)) {\n const vcEvent = this.makeVcEvent(stripped);\n const success = this.addEventToLedger(vcEvent, this.collaboratorId);\n if (success) {\n this.communication.broadcastEvent(vcEvent);\n }\n }\n }\n this.heldEvents.delete(selector);\n } else if (this.heldRemoteEvents.has(selector)) {\n this.playHeldRemoteEvents(selector, seqNum);\n }\n }\n\n protected playHeldRemoteEvents(selector: string, seqNum: number, catchup = false) {\n const held = this.heldRemoteEvents.get(selector);\n if (!held) {\n return;\n }\n const filtered = held.filter((e) => e.seqNum >= seqNum).sort((a, b) => a.seqNum - b.seqNum);\n\n for (const event of filtered) {\n this.addEventToLedger(event, event.sender, catchup);\n }\n //this.heldRemoteEvents.delete(selector);\n }\n\n protected requestLock(selector: string) {\n if (this.requestedLocks.has(selector)) {\n return;\n }\n //console.log('Requesting lock on ', selector);\n\n const success = this.communication.requestLock(selector);\n if (success) {\n this.requestedLocks.add(selector);\n }\n }\n\n protected canExecuteEvent(stripped: StrippedEvent, sender: string, catchup = false) {\n const selector = stripped.target;\n const allAllowed =\n this.unsafeElements.includes(stripped.targetType) || this.unsafeElements.includes('*');\n\n // Skip ownership check for catchup events, and for background events.\n if (!catchup && !allAllowed) {\n const lockOwner = this.lockOwners.get(selector);\n if (!lockOwner) {\n return false;\n } else if (lockOwner !== sender) {\n console.error(\n 'Trying to execute event on element with different lock owner',\n selector,\n lockOwner,\n sender\n );\n return false;\n }\n }\n return true;\n }\n\n protected makeVcEvent(stripped: StrippedEvent): VcEvent {\n const ledger = this.ledgers.get(stripped.target);\n let seqNum = 0;\n if (ledger && ledger.length) {\n const lastEvent = ledger[ledger.length - 1];\n seqNum = lastEvent.seqNum + 1;\n }\n\n return {\n seqNum,\n event: stripped,\n sender: this.collaboratorId,\n };\n }\n\n protected addEventToLedger(event: VcEvent, sender: string, catchup = false) {\n const stripped = event.event;\n const selector = stripped.target;\n\n if (!this.canExecuteEvent(stripped, sender, catchup)) {\n return false;\n }\n\n if (!this.ledgers.has(selector)) {\n this.ledgers.set(selector, []);\n }\n const ledger = this.ledgers.get(selector)!;\n let seqNum = 0;\n if (ledger.length) {\n const lastEvent = ledger[ledger.length - 1];\n seqNum = lastEvent.seqNum + 1;\n }\n\n if (event.seqNum === seqNum) {\n ledger.push(event);\n //console.log(seqNum, stripped.type);\n this.executeEvent(stripped);\n return true;\n } else {\n // The order is not right.\n //safeErrorLog('cant execute event with wrong sequence number', event.seqNum, event);\n return false;\n }\n }\n}\n\nlet safeLogCount = 0;\n\nfunction safeLog(...logContents: any) {\n if (safeLogCount < 100) {\n safeLogCount++;\n console.log(...logContents);\n }\n}\nfunction safeErrorLog(...logContents: any) {\n if (safeLogCount < 100) {\n safeLogCount++;\n console.error(...logContents);\n }\n}\n","import {VcCommunicationI} from './communication';\n\nexport class LockService {\n protected lockOwners = new Map<string, string>();\n protected lockTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n public expireTimeoutMs = 1000;\n\n constructor(protected communication: VcCommunicationI) {}\n\n requestLock(selector: string, client: string, seqNum: number) {\n if (this.lockOwners.has(selector)) {\n return;\n }\n\n this.lockOwners.set(selector, client);\n this.communication.changeLockOwner(selector, client, seqNum);\n this.extendLock(selector);\n }\n\n extendLock(selector: string) {\n // Delete any previous timeouts\n const prevTimeout = this.lockTimeouts.get(selector);\n if (prevTimeout) {\n clearTimeout(prevTimeout);\n }\n const timeout = setTimeout(this.expireLock(selector), this.expireTimeoutMs);\n this.lockTimeouts.set(selector, timeout);\n }\n\n private expireLock(selector: string) {\n return () => {\n this.lockTimeouts.delete(selector);\n this.lockOwners.delete(selector);\n this.communication.changeLockOwner(selector, '', -1);\n };\n }\n}\n","import {VcProtocol} from './protocol';\nimport {StrippedEvent} from './listener';\nimport {VcCommunicationConstructor} from './communication';\nimport {LockService} from './lock-service';\nimport {VcEvent} from './visconnect';\n\nexport class VcLeaderProtocol extends VcProtocol {\n lockService: LockService;\n\n constructor(\n protected leaderId: string,\n protected ownId: string,\n protected executeEvent: (e: StrippedEvent) => void,\n protected cancelEvent: (e: StrippedEvent) => void,\n protected unsafeElements: string[],\n mockCommunication?: VcCommunicationConstructor\n ) {\n super(leaderId, ownId, executeEvent, cancelEvent, unsafeElements, mockCommunication);\n\n this.lockService = new LockService(this.communication);\n }\n\n receiveLockRequest(selector: string, requester: string) {\n const ledger = this.ledgers.get(selector);\n const seqNum = !ledger ? 0 : ledger[ledger.length - 1].seqNum + 1;\n this.lockService.requestLock(selector, requester, seqNum);\n }\n\n protected addEventToLedger(event: VcEvent, sender: string) {\n const success = super.addEventToLedger(event, sender);\n\n if (success) {\n this.lockService.extendLock(event.event.target);\n }\n\n return success;\n }\n}\n","import {VcListener, StrippedEvent} from './listener';\nimport {recreateEvent, stopPropagation} from './dom';\nimport {VcProtocol} from './protocol';\nimport {VcLeaderProtocol} from './leader-protocol';\nimport {VisConnectUtil} from './util';\n\nexport interface VcEvent {\n seqNum: number;\n event: StrippedEvent;\n sender: string;\n}\n\nexport class Visconnect {\n private listener: VcListener;\n protocol: VcProtocol;\n onEventCancelled: (event: StrippedEvent) => void = () => {};\n\n constructor(\n private svg: Element,\n ownId: string,\n leaderId: string,\n private safeMode = true,\n customEvents?: string[],\n ignoreEvents?: string[]\n ) {\n const isLeader = leaderId === ownId;\n const Protocol = isLeader ? VcLeaderProtocol : VcProtocol;\n\n const unsafeElements = safeMode ? ['body', 'svg', 'g'] : ['*'];\n\n this.protocol = new Protocol(\n leaderId,\n ownId,\n this.executeEvent.bind(this),\n this.cancelEvent.bind(this),\n unsafeElements\n );\n this.listener = new VcListener(\n this.svg,\n this.localEvent.bind(this),\n customEvents,\n ignoreEvents\n );\n }\n\n localEvent(stripped: StrippedEvent, event: Event) {\n stopPropagation(event);\n event.preventDefault();\n const debugDelay = (window as any)['visconnect-event-delay'];\n const handleLocalEvent = () => this.protocol.localEvent(stripped);\n debugDelay ? setTimeout(handleLocalEvent, debugDelay) : handleLocalEvent();\n }\n\n cancelEvent(event: StrippedEvent) {\n this.onEventCancelled(event);\n }\n\n executeEvent(stripped: StrippedEvent) {\n const event = recreateEvent(stripped, this.svg);\n //console.log('executing event', stripped, event);\n\n (event as any)['visconnect-received'] = true;\n (event as any)['collaboratorId'] = stripped.collaboratorId;\n (event as any)['collaboratorColor'] = VisConnectUtil.stringToHex(stripped.collaboratorId);\n (event as any)['isLocalEvent'] =\n stripped.collaboratorId === this.protocol.communication.getId();\n if (event.target) {\n event.target.dispatchEvent(event);\n\n if (event.type === 'click') {\n (event.target as HTMLElement).focus();\n }\n }\n }\n\n stop() {\n this.listener.stop();\n }\n}\n","import 'peerjs/dist/peerjs';\nimport {VisConnectUi} from './ui';\nimport {Visconnect} from './visconnect';\nimport {VisConnectUtil} from './util';\nimport {delayAddEventListener, disableStopPropagation} from './dom';\n\nvar visconnect;\nvar visconnectUi;\n\nlet parts = window.location.href.match(/\\?visconnectid=([a-z0-9\\-]+)/);\nlet ownParts = window.location.href.match(/\\?visconnectownid=([a-z0-9\\-]+)/);\nconst randomId = [...Array(10)].map((i) => (~~(Math.random() * 36)).toString(36)).join('');\nconst ownId = ownParts ? ownParts[1] : randomId;\nconst leaderId = parts ? parts[1] : ownId;\n\n(window as any).vc = {\n drag: VisConnectUtil.drag,\n brush: VisConnectUtil.brush,\n mouse: VisConnectUtil.mouse,\n lasso: VisConnectUtil.lasso,\n random: VisConnectUtil.random(leaderId),\n leaderId: leaderId,\n ownId: ownId,\n};\n\ndisableStopPropagation();\ndelayAddEventListener().then(() => {\n let el: Element;\n\n const elsWithAttribute = document.querySelectorAll('[collaboration]');\n const svg = document.getElementsByTagName('svg')[0];\n let safeMode = true;\n let customEvents: string[] | undefined = undefined;\n let ignoreEvents: string[] | undefined = undefined;\n\n if (elsWithAttribute.length) {\n el = elsWithAttribute[0];\n const val = el.getAttribute('collaboration');\n if (val && val === 'live') {\n safeMode = false;\n }\n const customEventsVal = el.getAttribute('custom-events');\n if (customEventsVal) {\n customEvents = customEventsVal.replace(/ /g, '').split(',');\n }\n const ignoreEventsVal = el.getAttribute('ignore-events');\n if (ignoreEventsVal) {\n ignoreEvents = ignoreEventsVal.replace(/ /g, '').split(',');\n }\n } else if (svg) {\n el = svg;\n } else {\n el = document.body;\n }\n\n console.log('Initializing VisConnect...');\n visconnect = new Visconnect(el, ownId, leaderId, safeMode, customEvents, ignoreEvents);\n\n visconnectUi = new VisConnectUi(visconnect, el);\n visconnect.onEventCancelled = visconnectUi.eventCancelled.bind(visconnectUi);\n});\n"],"names":["require","twoProduct","scalarScalar","robustSubtract","orient","classifyPoint","tslib_1.__extends"],"mappings":"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"}