{"version":3,"file":"pusher-C852wbdT.js","sources":["../../../node_modules/.pnpm/pusher-js@8.4.0/node_modules/pusher-js/dist/web/pusher.js"],"sourcesContent":["/*!\n * Pusher JavaScript Library v8.4.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n    // TODO(dchest): methods to encode chunk-by-chunk.\n    function Coder(_paddingCharacter) {\n        if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n        this._paddingCharacter = _paddingCharacter;\n    }\n    Coder.prototype.encodedLength = function (length) {\n        if (!this._paddingCharacter) {\n            return (length * 8 + 5) / 6 | 0;\n        }\n        return (length + 2) / 3 * 4 | 0;\n    };\n    Coder.prototype.encode = function (data) {\n        var out = \"\";\n        var i = 0;\n        for (; i < data.length - 2; i += 3) {\n            var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n            out += this._encodeByte((c >>> 3 * 6) & 63);\n            out += this._encodeByte((c >>> 2 * 6) & 63);\n            out += this._encodeByte((c >>> 1 * 6) & 63);\n            out += this._encodeByte((c >>> 0 * 6) & 63);\n        }\n        var left = data.length - i;\n        if (left > 0) {\n            var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n            out += this._encodeByte((c >>> 3 * 6) & 63);\n            out += this._encodeByte((c >>> 2 * 6) & 63);\n            if (left === 2) {\n                out += this._encodeByte((c >>> 1 * 6) & 63);\n            }\n            else {\n                out += this._paddingCharacter || \"\";\n            }\n            out += this._paddingCharacter || \"\";\n        }\n        return out;\n    };\n    Coder.prototype.maxDecodedLength = function (length) {\n        if (!this._paddingCharacter) {\n            return (length * 6 + 7) / 8 | 0;\n        }\n        return length / 4 * 3 | 0;\n    };\n    Coder.prototype.decodedLength = function (s) {\n        return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n    };\n    Coder.prototype.decode = function (s) {\n        if (s.length === 0) {\n            return new Uint8Array(0);\n        }\n        var paddingLength = this._getPaddingLength(s);\n        var length = s.length - paddingLength;\n        var out = new Uint8Array(this.maxDecodedLength(length));\n        var op = 0;\n        var i = 0;\n        var haveBad = 0;\n        var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n        for (; i < length - 4; i += 4) {\n            v0 = this._decodeChar(s.charCodeAt(i + 0));\n            v1 = this._decodeChar(s.charCodeAt(i + 1));\n            v2 = this._decodeChar(s.charCodeAt(i + 2));\n            v3 = this._decodeChar(s.charCodeAt(i + 3));\n            out[op++] = (v0 << 2) | (v1 >>> 4);\n            out[op++] = (v1 << 4) | (v2 >>> 2);\n            out[op++] = (v2 << 6) | v3;\n            haveBad |= v0 & INVALID_BYTE;\n            haveBad |= v1 & INVALID_BYTE;\n            haveBad |= v2 & INVALID_BYTE;\n            haveBad |= v3 & INVALID_BYTE;\n        }\n        if (i < length - 1) {\n            v0 = this._decodeChar(s.charCodeAt(i));\n            v1 = this._decodeChar(s.charCodeAt(i + 1));\n            out[op++] = (v0 << 2) | (v1 >>> 4);\n            haveBad |= v0 & INVALID_BYTE;\n            haveBad |= v1 & INVALID_BYTE;\n        }\n        if (i < length - 2) {\n            v2 = this._decodeChar(s.charCodeAt(i + 2));\n            out[op++] = (v1 << 4) | (v2 >>> 2);\n            haveBad |= v2 & INVALID_BYTE;\n        }\n        if (i < length - 3) {\n            v3 = this._decodeChar(s.charCodeAt(i + 3));\n            out[op++] = (v2 << 6) | v3;\n            haveBad |= v3 & INVALID_BYTE;\n        }\n        if (haveBad !== 0) {\n            throw new Error(\"Base64Coder: incorrect characters for decoding\");\n        }\n        return out;\n    };\n    // Standard encoding have the following encoded/decoded ranges,\n    // which we need to convert between.\n    //\n    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  +   /\n    // Index:   0 - 25                    26 - 51              52 - 61   62  63\n    // ASCII:  65 - 90                    97 - 122             48 - 57   43  47\n    //\n    // Encode 6 bits in b into a new character.\n    Coder.prototype._encodeByte = function (b) {\n        // Encoding uses constant time operations as follows:\n        //\n        // 1. Define comparison of A with B using (A - B) >>> 8:\n        //          if A > B, then result is positive integer\n        //          if A <= B, then result is 0\n        //\n        // 2. Define selection of C or 0 using bitwise AND: X & C:\n        //          if X == 0, then result is 0\n        //          if X != 0, then result is C\n        //\n        // 3. Start with the smallest comparison (b >= 0), which is always\n        //    true, so set the result to the starting ASCII value (65).\n        //\n        // 4. Continue comparing b to higher ASCII values, and selecting\n        //    zero if comparison isn't true, otherwise selecting a value\n        //    to add to result, which:\n        //\n        //          a) undoes the previous addition\n        //          b) provides new value to add\n        //\n        var result = b;\n        // b >= 0\n        result += 65;\n        // b > 25\n        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n        // b > 51\n        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n        // b > 61\n        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n        // b > 62\n        result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n        return String.fromCharCode(result);\n    };\n    // Decode a character code into a byte.\n    // Must return 256 if character is out of alphabet range.\n    Coder.prototype._decodeChar = function (c) {\n        // Decoding works similar to encoding: using the same comparison\n        // function, but now it works on ranges: result is always incremented\n        // by value, but this value becomes zero if the range is not\n        // satisfied.\n        //\n        // Decoding starts with invalid value, 256, which is then\n        // subtracted when the range is satisfied. If none of the ranges\n        // apply, the function returns 256, which is then checked by\n        // the caller to throw error.\n        var result = INVALID_BYTE; // start with invalid character\n        // c == 43 (c > 42 and c < 44)\n        result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n        // c == 47 (c > 46 and c < 48)\n        result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n        // c > 47 and c < 58\n        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n        // c > 64 and c < 91\n        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n        // c > 96 and c < 123\n        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n        return result;\n    };\n    Coder.prototype._getPaddingLength = function (s) {\n        var paddingLength = 0;\n        if (this._paddingCharacter) {\n            for (var i = s.length - 1; i >= 0; i--) {\n                if (s[i] !== this._paddingCharacter) {\n                    break;\n                }\n                paddingLength++;\n            }\n            if (s.length < 4 || paddingLength > 2) {\n                throw new Error(\"Base64Coder: incorrect padding\");\n            }\n        }\n        return paddingLength;\n    };\n    return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n    return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n    return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n    __extends(URLSafeCoder, _super);\n    function URLSafeCoder() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    // URL-safe encoding have the following encoded/decoded ranges:\n    //\n    // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789  -   _\n    // Index:   0 - 25                    26 - 51              52 - 61   62  63\n    // ASCII:  65 - 90                    97 - 122             48 - 57   45  95\n    //\n    URLSafeCoder.prototype._encodeByte = function (b) {\n        var result = b;\n        // b >= 0\n        result += 65;\n        // b > 25\n        result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n        // b > 51\n        result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n        // b > 61\n        result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n        // b > 62\n        result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n        return String.fromCharCode(result);\n    };\n    URLSafeCoder.prototype._decodeChar = function (c) {\n        var result = INVALID_BYTE;\n        // c == 45 (c > 44 and c < 46)\n        result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n        // c == 95 (c > 94 and c < 96)\n        result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n        // c > 47 and c < 58\n        result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n        // c > 64 and c < 91\n        result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n        // c > 96 and c < 123\n        result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n        return result;\n    };\n    return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n    return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n    return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n    return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n    return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n    return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n    // Calculate result length and allocate output array.\n    // encodedLength() also validates string and throws errors,\n    // so we don't need repeat validation here.\n    var arr = new Uint8Array(encodedLength(s));\n    var pos = 0;\n    for (var i = 0; i < s.length; i++) {\n        var c = s.charCodeAt(i);\n        if (c < 0x80) {\n            arr[pos++] = c;\n        }\n        else if (c < 0x800) {\n            arr[pos++] = 0xc0 | c >> 6;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n        else if (c < 0xd800) {\n            arr[pos++] = 0xe0 | c >> 12;\n            arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n        else {\n            i++; // get one more character\n            c = (c & 0x3ff) << 10;\n            c |= s.charCodeAt(i) & 0x3ff;\n            c += 0x10000;\n            arr[pos++] = 0xf0 | c >> 18;\n            arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n            arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n            arr[pos++] = 0x80 | c & 0x3f;\n        }\n    }\n    return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n    var result = 0;\n    for (var i = 0; i < s.length; i++) {\n        var c = s.charCodeAt(i);\n        if (c < 0x80) {\n            result += 1;\n        }\n        else if (c < 0x800) {\n            result += 2;\n        }\n        else if (c < 0xd800) {\n            result += 3;\n        }\n        else if (c <= 0xdfff) {\n            if (i >= s.length - 1) {\n                throw new Error(INVALID_UTF16);\n            }\n            i++; // \"eat\" next character\n            result += 4;\n        }\n        else {\n            throw new Error(INVALID_UTF16);\n        }\n    }\n    return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n    var chars = [];\n    for (var i = 0; i < arr.length; i++) {\n        var b = arr[i];\n        if (b & 0x80) {\n            var min = void 0;\n            if (b < 0xe0) {\n                // Need 1 more byte.\n                if (i >= arr.length) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x1f) << 6 | (n1 & 0x3f);\n                min = 0x80;\n            }\n            else if (b < 0xf0) {\n                // Need 2 more bytes.\n                if (i >= arr.length - 1) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                var n2 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n                min = 0x800;\n            }\n            else if (b < 0xf8) {\n                // Need 3 more bytes.\n                if (i >= arr.length - 2) {\n                    throw new Error(INVALID_UTF8);\n                }\n                var n1 = arr[++i];\n                var n2 = arr[++i];\n                var n3 = arr[++i];\n                if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n                min = 0x10000;\n            }\n            else {\n                throw new Error(INVALID_UTF8);\n            }\n            if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n                throw new Error(INVALID_UTF8);\n            }\n            if (b >= 0x10000) {\n                // Surrogate pair.\n                if (b > 0x10ffff) {\n                    throw new Error(INVALID_UTF8);\n                }\n                b -= 0x10000;\n                chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n                b = 0xdc00 | (b & 0x3ff);\n            }\n        }\n        chars.push(String.fromCharCode(b));\n    }\n    return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nclass ScriptReceiverFactory {\n    constructor(prefix, name) {\n        this.lastId = 0;\n        this.prefix = prefix;\n        this.name = name;\n    }\n    create(callback) {\n        this.lastId++;\n        var number = this.lastId;\n        var id = this.prefix + number;\n        var name = this.name + '[' + number + ']';\n        var called = false;\n        var callbackWrapper = function () {\n            if (!called) {\n                callback.apply(null, arguments);\n                called = true;\n            }\n        };\n        this[number] = callbackWrapper;\n        return { number: number, id: id, name: name, callback: callbackWrapper };\n    }\n    remove(receiver) {\n        delete this[receiver.number];\n    }\n}\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n    VERSION: \"8.4.0\",\n    PROTOCOL: 7,\n    wsPort: 80,\n    wssPort: 443,\n    wsPath: '',\n    httpHost: 'sockjs.pusher.com',\n    httpPort: 80,\n    httpsPort: 443,\n    httpPath: '/pusher',\n    stats_host: 'stats.pusher.com',\n    authEndpoint: '/pusher/auth',\n    authTransport: 'ajax',\n    activityTimeout: 120000,\n    pongTimeout: 30000,\n    unavailableTimeout: 10000,\n    userAuthentication: {\n        endpoint: '/pusher/user-auth',\n        transport: 'ajax',\n    },\n    channelAuthorization: {\n        endpoint: '/pusher/auth',\n        transport: 'ajax',\n    },\n    cdn_http: \"http://js.pusher.com\",\n    cdn_https: \"https://js.pusher.com\",\n    dependency_suffix: \"\",\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nclass dependency_loader_DependencyLoader {\n    constructor(options) {\n        this.options = options;\n        this.receivers = options.receivers || ScriptReceivers;\n        this.loading = {};\n    }\n    load(name, options, callback) {\n        var self = this;\n        if (self.loading[name] && self.loading[name].length > 0) {\n            self.loading[name].push(callback);\n        }\n        else {\n            self.loading[name] = [callback];\n            var request = runtime.createScriptRequest(self.getPath(name, options));\n            var receiver = self.receivers.create(function (error) {\n                self.receivers.remove(receiver);\n                if (self.loading[name]) {\n                    var callbacks = self.loading[name];\n                    delete self.loading[name];\n                    var successCallback = function (wasSuccessful) {\n                        if (!wasSuccessful) {\n                            request.cleanup();\n                        }\n                    };\n                    for (var i = 0; i < callbacks.length; i++) {\n                        callbacks[i](error, successCallback);\n                    }\n                }\n            });\n            request.send(receiver);\n        }\n    }\n    getRoot(options) {\n        var cdn;\n        var protocol = runtime.getDocument().location.protocol;\n        if ((options && options.useTLS) || protocol === 'https:') {\n            cdn = this.options.cdn_https;\n        }\n        else {\n            cdn = this.options.cdn_http;\n        }\n        return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n    }\n    getPath(name, options) {\n        return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader_DependencyLoader({\n    cdn_http: defaults.cdn_http,\n    cdn_https: defaults.cdn_https,\n    version: defaults.VERSION,\n    suffix: defaults.dependency_suffix,\n    receivers: DependenciesReceivers,\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nconst urlStore = {\n    baseUrl: 'https://pusher.com',\n    urls: {\n        authenticationEndpoint: {\n            path: '/docs/channels/server_api/authenticating_users',\n        },\n        authorizationEndpoint: {\n            path: '/docs/channels/server_api/authorizing-users/',\n        },\n        javascriptQuickStart: {\n            path: '/docs/javascript_quick_start',\n        },\n        triggeringClientEvents: {\n            path: '/docs/client_api_guide/client_events#trigger-events',\n        },\n        encryptedChannelSupport: {\n            fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support',\n        },\n    },\n};\nconst buildLogSuffix = function (key) {\n    const urlPrefix = 'See:';\n    const urlObj = urlStore.urls[key];\n    if (!urlObj)\n        return '';\n    let url;\n    if (urlObj.fullUrl) {\n        url = urlObj.fullUrl;\n    }\n    else if (urlObj.path) {\n        url = urlStore.baseUrl + urlObj.path;\n    }\n    if (!url)\n        return '';\n    return `${urlPrefix} ${url}`;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n    AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n    AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nclass BadEventName extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass BadChannelName extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass RequestTimedOut extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass TransportPriorityTooLow extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass TransportClosed extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedFeature extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedTransport extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass UnsupportedStrategy extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\nclass HTTPAuthError extends Error {\n    constructor(status, msg) {\n        super(msg);\n        this.status = status;\n        Object.setPrototypeOf(this, new.target.prototype);\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nconst ajax = function (context, query, authOptions, authRequestType, callback) {\n    const xhr = runtime.createXHR();\n    xhr.open('POST', authOptions.endpoint, true);\n    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    for (var headerName in authOptions.headers) {\n        xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n    }\n    if (authOptions.headersProvider != null) {\n        let dynamicHeaders = authOptions.headersProvider();\n        for (var headerName in dynamicHeaders) {\n            xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n        }\n    }\n    xhr.onreadystatechange = function () {\n        if (xhr.readyState === 4) {\n            if (xhr.status === 200) {\n                let data;\n                let parsed = false;\n                try {\n                    data = JSON.parse(xhr.responseText);\n                    parsed = true;\n                }\n                catch (e) {\n                    callback(new HTTPAuthError(200, `JSON returned from ${authRequestType.toString()} endpoint was invalid, yet status code was 200. Data was: ${xhr.responseText}`), null);\n                }\n                if (parsed) {\n                    callback(null, data);\n                }\n            }\n            else {\n                let suffix = '';\n                switch (authRequestType) {\n                    case AuthRequestType.UserAuthentication:\n                        suffix = url_store.buildLogSuffix('authenticationEndpoint');\n                        break;\n                    case AuthRequestType.ChannelAuthorization:\n                        suffix = `Clients must be authorized to join private or presence channels. ${url_store.buildLogSuffix('authorizationEndpoint')}`;\n                        break;\n                }\n                callback(new HTTPAuthError(xhr.status, `Unable to retrieve auth string from ${authRequestType.toString()} endpoint - ` +\n                    `received status: ${xhr.status} from ${authOptions.endpoint}. ${suffix}`), null);\n            }\n        }\n    };\n    xhr.send(query);\n    return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n    return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n    b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n    var cc = c.charCodeAt(0);\n    return cc < 0x80\n        ? c\n        : cc < 0x800\n            ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n            : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n                fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n                fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n    return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n    var padlen = [0, 2, 1][ccc.length % 3];\n    var ord = (ccc.charCodeAt(0) << 16) |\n        ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n        (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n    var chars = [\n        b64chars.charAt(ord >>> 18),\n        b64chars.charAt((ord >>> 12) & 63),\n        padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n        padlen >= 1 ? '=' : b64chars.charAt(ord & 63),\n    ];\n    return chars.join('');\n};\nvar btoa = window.btoa ||\n    function (b) {\n        return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n    };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nclass Timer {\n    constructor(set, clear, delay, callback) {\n        this.clear = clear;\n        this.timer = set(() => {\n            if (this.timer) {\n                this.timer = callback(this.timer);\n            }\n        }, delay);\n    }\n    isRunning() {\n        return this.timer !== null;\n    }\n    ensureAborted() {\n        if (this.timer) {\n            this.clear(this.timer);\n            this.timer = null;\n        }\n    }\n}\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\n\nfunction timers_clearTimeout(timer) {\n    window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n    window.clearInterval(timer);\n}\nclass timers_OneOffTimer extends abstract_timer {\n    constructor(delay, callback) {\n        super(setTimeout, timers_clearTimeout, delay, function (timer) {\n            callback();\n            return null;\n        });\n    }\n}\nclass timers_PeriodicTimer extends abstract_timer {\n    constructor(delay, callback) {\n        super(setInterval, timers_clearInterval, delay, function (timer) {\n            callback();\n            return timer;\n        });\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n    now() {\n        if (Date.now) {\n            return Date.now();\n        }\n        else {\n            return new Date().valueOf();\n        }\n    },\n    defer(callback) {\n        return new timers_OneOffTimer(0, callback);\n    },\n    method(name, ...args) {\n        var boundArguments = Array.prototype.slice.call(arguments, 1);\n        return function (object) {\n            return object[name].apply(object, boundArguments.concat(arguments));\n        };\n    },\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target, ...sources) {\n    for (var i = 0; i < sources.length; i++) {\n        var extensions = sources[i];\n        for (var property in extensions) {\n            if (extensions[property] &&\n                extensions[property].constructor &&\n                extensions[property].constructor === Object) {\n                target[property] = extend(target[property] || {}, extensions[property]);\n            }\n            else {\n                target[property] = extensions[property];\n            }\n        }\n    }\n    return target;\n}\nfunction stringify() {\n    var m = ['Pusher'];\n    for (var i = 0; i < arguments.length; i++) {\n        if (typeof arguments[i] === 'string') {\n            m.push(arguments[i]);\n        }\n        else {\n            m.push(safeJSONStringify(arguments[i]));\n        }\n    }\n    return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n    var nativeIndexOf = Array.prototype.indexOf;\n    if (array === null) {\n        return -1;\n    }\n    if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n        return array.indexOf(item);\n    }\n    for (var i = 0, l = array.length; i < l; i++) {\n        if (array[i] === item) {\n            return i;\n        }\n    }\n    return -1;\n}\nfunction objectApply(object, f) {\n    for (var key in object) {\n        if (Object.prototype.hasOwnProperty.call(object, key)) {\n            f(object[key], key, object);\n        }\n    }\n}\nfunction keys(object) {\n    var keys = [];\n    objectApply(object, function (_, key) {\n        keys.push(key);\n    });\n    return keys;\n}\nfunction values(object) {\n    var values = [];\n    objectApply(object, function (value) {\n        values.push(value);\n    });\n    return values;\n}\nfunction apply(array, f, context) {\n    for (var i = 0; i < array.length; i++) {\n        f.call(context || window, array[i], i, array);\n    }\n}\nfunction map(array, f) {\n    var result = [];\n    for (var i = 0; i < array.length; i++) {\n        result.push(f(array[i], i, array, result));\n    }\n    return result;\n}\nfunction mapObject(object, f) {\n    var result = {};\n    objectApply(object, function (value, key) {\n        result[key] = f(value);\n    });\n    return result;\n}\nfunction filter(array, test) {\n    test =\n        test ||\n            function (value) {\n                return !!value;\n            };\n    var result = [];\n    for (var i = 0; i < array.length; i++) {\n        if (test(array[i], i, array, result)) {\n            result.push(array[i]);\n        }\n    }\n    return result;\n}\nfunction filterObject(object, test) {\n    var result = {};\n    objectApply(object, function (value, key) {\n        if ((test && test(value, key, object, result)) || Boolean(value)) {\n            result[key] = value;\n        }\n    });\n    return result;\n}\nfunction flatten(object) {\n    var result = [];\n    objectApply(object, function (value, key) {\n        result.push([key, value]);\n    });\n    return result;\n}\nfunction any(array, test) {\n    for (var i = 0; i < array.length; i++) {\n        if (test(array[i], i, array)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction collections_all(array, test) {\n    for (var i = 0; i < array.length; i++) {\n        if (!test(array[i], i, array)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction encodeParamsObject(data) {\n    return mapObject(data, function (value) {\n        if (typeof value === 'object') {\n            value = safeJSONStringify(value);\n        }\n        return encodeURIComponent(encode(value.toString()));\n    });\n}\nfunction buildQueryString(data) {\n    var params = filterObject(data, function (value) {\n        return value !== undefined;\n    });\n    var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n    return query;\n}\nfunction decycleObject(object) {\n    var objects = [], paths = [];\n    return (function derez(value, path) {\n        var i, name, nu;\n        switch (typeof value) {\n            case 'object':\n                if (!value) {\n                    return null;\n                }\n                for (i = 0; i < objects.length; i += 1) {\n                    if (objects[i] === value) {\n                        return { $ref: paths[i] };\n                    }\n                }\n                objects.push(value);\n                paths.push(path);\n                if (Object.prototype.toString.apply(value) === '[object Array]') {\n                    nu = [];\n                    for (i = 0; i < value.length; i += 1) {\n                        nu[i] = derez(value[i], path + '[' + i + ']');\n                    }\n                }\n                else {\n                    nu = {};\n                    for (name in value) {\n                        if (Object.prototype.hasOwnProperty.call(value, name)) {\n                            nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n                        }\n                    }\n                }\n                return nu;\n            case 'number':\n            case 'string':\n            case 'boolean':\n                return value;\n        }\n    })(object, '$');\n}\nfunction safeJSONStringify(source) {\n    try {\n        return JSON.stringify(source);\n    }\n    catch (e) {\n        return JSON.stringify(decycleObject(source));\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nclass logger_Logger {\n    constructor() {\n        this.globalLog = (message) => {\n            if (window.console && window.console.log) {\n                window.console.log(message);\n            }\n        };\n    }\n    debug(...args) {\n        this.log(this.globalLog, args);\n    }\n    warn(...args) {\n        this.log(this.globalLogWarn, args);\n    }\n    error(...args) {\n        this.log(this.globalLogError, args);\n    }\n    globalLogWarn(message) {\n        if (window.console && window.console.warn) {\n            window.console.warn(message);\n        }\n        else {\n            this.globalLog(message);\n        }\n    }\n    globalLogError(message) {\n        if (window.console && window.console.error) {\n            window.console.error(message);\n        }\n        else {\n            this.globalLogWarn(message);\n        }\n    }\n    log(defaultLoggingFunction, ...args) {\n        var message = stringify.apply(this, arguments);\n        if (core_pusher.log) {\n            core_pusher.log(message);\n        }\n        else if (core_pusher.logToConsole) {\n            const log = defaultLoggingFunction.bind(this);\n            log(message);\n        }\n    }\n}\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n    if (authOptions.headers !== undefined ||\n        authOptions.headersProvider != null) {\n        logger.warn(`To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`);\n    }\n    var callbackName = context.nextAuthCallbackID.toString();\n    context.nextAuthCallbackID++;\n    var document = context.getDocument();\n    var script = document.createElement('script');\n    context.auth_callbacks[callbackName] = function (data) {\n        callback(null, data);\n    };\n    var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n    script.src =\n        authOptions.endpoint +\n            '?callback=' +\n            encodeURIComponent(callback_name) +\n            '&' +\n            query;\n    var head = document.getElementsByTagName('head')[0] || document.documentElement;\n    head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nclass ScriptRequest {\n    constructor(src) {\n        this.src = src;\n    }\n    send(receiver) {\n        var self = this;\n        var errorString = 'Error loading ' + self.src;\n        self.script = document.createElement('script');\n        self.script.id = receiver.id;\n        self.script.src = self.src;\n        self.script.type = 'text/javascript';\n        self.script.charset = 'UTF-8';\n        if (self.script.addEventListener) {\n            self.script.onerror = function () {\n                receiver.callback(errorString);\n            };\n            self.script.onload = function () {\n                receiver.callback(null);\n            };\n        }\n        else {\n            self.script.onreadystatechange = function () {\n                if (self.script.readyState === 'loaded' ||\n                    self.script.readyState === 'complete') {\n                    receiver.callback(null);\n                }\n            };\n        }\n        if (self.script.async === undefined &&\n            document.attachEvent &&\n            /opera/i.test(navigator.userAgent)) {\n            self.errorScript = document.createElement('script');\n            self.errorScript.id = receiver.id + '_error';\n            self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n            self.script.async = self.errorScript.async = false;\n        }\n        else {\n            self.script.async = true;\n        }\n        var head = document.getElementsByTagName('head')[0];\n        head.insertBefore(self.script, head.firstChild);\n        if (self.errorScript) {\n            head.insertBefore(self.errorScript, self.script.nextSibling);\n        }\n    }\n    cleanup() {\n        if (this.script) {\n            this.script.onload = this.script.onerror = null;\n            this.script.onreadystatechange = null;\n        }\n        if (this.script && this.script.parentNode) {\n            this.script.parentNode.removeChild(this.script);\n        }\n        if (this.errorScript && this.errorScript.parentNode) {\n            this.errorScript.parentNode.removeChild(this.errorScript);\n        }\n        this.script = null;\n        this.errorScript = null;\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nclass jsonp_request_JSONPRequest {\n    constructor(url, data) {\n        this.url = url;\n        this.data = data;\n    }\n    send(receiver) {\n        if (this.request) {\n            return;\n        }\n        var query = buildQueryString(this.data);\n        var url = this.url + '/' + receiver.number + '?' + query;\n        this.request = runtime.createScriptRequest(url);\n        this.request.send(receiver);\n    }\n    cleanup() {\n        if (this.request) {\n            this.request.cleanup();\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n    return function (data, callback) {\n        var scheme = 'http' + (useTLS ? 's' : '') + '://';\n        var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n        var request = runtime.createJSONPRequest(url, data);\n        var receiver = runtime.ScriptReceivers.create(function (error, result) {\n            ScriptReceivers.remove(receiver);\n            request.cleanup();\n            if (result && result.host) {\n                sender.host = result.host;\n            }\n            if (callback) {\n                callback(error, result);\n            }\n        });\n        request.send(receiver);\n    };\n};\nvar jsonp_timeline_jsonp = {\n    name: 'jsonp',\n    getAgent,\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n    var scheme = baseScheme + (params.useTLS ? 's' : '');\n    var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n    return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n    var path = '/app/' + key;\n    var query = '?protocol=' +\n        defaults.PROTOCOL +\n        '&client=js' +\n        '&version=' +\n        defaults.VERSION +\n        (queryString ? '&' + queryString : '');\n    return path + query;\n}\nvar ws = {\n    getInitial: function (key, params) {\n        var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n        return getGenericURL('ws', params, path);\n    },\n};\nvar http = {\n    getInitial: function (key, params) {\n        var path = (params.httpPath || '/pusher') + getGenericPath(key);\n        return getGenericURL('http', params, path);\n    },\n};\nvar sockjs = {\n    getInitial: function (key, params) {\n        return getGenericURL('http', params, params.httpPath || '/pusher');\n    },\n    getPath: function (key, params) {\n        return getGenericPath(key);\n    },\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nclass callback_registry_CallbackRegistry {\n    constructor() {\n        this._callbacks = {};\n    }\n    get(name) {\n        return this._callbacks[prefix(name)];\n    }\n    add(name, callback, context) {\n        var prefixedEventName = prefix(name);\n        this._callbacks[prefixedEventName] =\n            this._callbacks[prefixedEventName] || [];\n        this._callbacks[prefixedEventName].push({\n            fn: callback,\n            context: context,\n        });\n    }\n    remove(name, callback, context) {\n        if (!name && !callback && !context) {\n            this._callbacks = {};\n            return;\n        }\n        var names = name ? [prefix(name)] : keys(this._callbacks);\n        if (callback || context) {\n            this.removeCallback(names, callback, context);\n        }\n        else {\n            this.removeAllCallbacks(names);\n        }\n    }\n    removeCallback(names, callback, context) {\n        apply(names, function (name) {\n            this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n                return ((callback && callback !== binding.fn) ||\n                    (context && context !== binding.context));\n            });\n            if (this._callbacks[name].length === 0) {\n                delete this._callbacks[name];\n            }\n        }, this);\n    }\n    removeAllCallbacks(names) {\n        apply(names, function (name) {\n            delete this._callbacks[name];\n        }, this);\n    }\n}\nfunction prefix(name) {\n    return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nclass dispatcher_Dispatcher {\n    constructor(failThrough) {\n        this.callbacks = new callback_registry_CallbackRegistry();\n        this.global_callbacks = [];\n        this.failThrough = failThrough;\n    }\n    bind(eventName, callback, context) {\n        this.callbacks.add(eventName, callback, context);\n        return this;\n    }\n    bind_global(callback) {\n        this.global_callbacks.push(callback);\n        return this;\n    }\n    unbind(eventName, callback, context) {\n        this.callbacks.remove(eventName, callback, context);\n        return this;\n    }\n    unbind_global(callback) {\n        if (!callback) {\n            this.global_callbacks = [];\n            return this;\n        }\n        this.global_callbacks = filter(this.global_callbacks || [], (c) => c !== callback);\n        return this;\n    }\n    unbind_all() {\n        this.unbind();\n        this.unbind_global();\n        return this;\n    }\n    emit(eventName, data, metadata) {\n        for (var i = 0; i < this.global_callbacks.length; i++) {\n            this.global_callbacks[i](eventName, data);\n        }\n        var callbacks = this.callbacks.get(eventName);\n        var args = [];\n        if (metadata) {\n            args.push(data, metadata);\n        }\n        else if (data) {\n            args.push(data);\n        }\n        if (callbacks && callbacks.length > 0) {\n            for (var i = 0; i < callbacks.length; i++) {\n                callbacks[i].fn.apply(callbacks[i].context || window, args);\n            }\n        }\n        else if (this.failThrough) {\n            this.failThrough(eventName, data);\n        }\n        return this;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\n\n\n\n\n\nclass transport_connection_TransportConnection extends dispatcher_Dispatcher {\n    constructor(hooks, name, priority, key, options) {\n        super();\n        this.initialize = runtime.transportConnectionInitializer;\n        this.hooks = hooks;\n        this.name = name;\n        this.priority = priority;\n        this.key = key;\n        this.options = options;\n        this.state = 'new';\n        this.timeline = options.timeline;\n        this.activityTimeout = options.activityTimeout;\n        this.id = this.timeline.generateUniqueID();\n    }\n    handlesActivityChecks() {\n        return Boolean(this.hooks.handlesActivityChecks);\n    }\n    supportsPing() {\n        return Boolean(this.hooks.supportsPing);\n    }\n    connect() {\n        if (this.socket || this.state !== 'initialized') {\n            return false;\n        }\n        var url = this.hooks.urls.getInitial(this.key, this.options);\n        try {\n            this.socket = this.hooks.getSocket(url, this.options);\n        }\n        catch (e) {\n            util.defer(() => {\n                this.onError(e);\n                this.changeState('closed');\n            });\n            return false;\n        }\n        this.bindListeners();\n        logger.debug('Connecting', { transport: this.name, url });\n        this.changeState('connecting');\n        return true;\n    }\n    close() {\n        if (this.socket) {\n            this.socket.close();\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    send(data) {\n        if (this.state === 'open') {\n            util.defer(() => {\n                if (this.socket) {\n                    this.socket.send(data);\n                }\n            });\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    ping() {\n        if (this.state === 'open' && this.supportsPing()) {\n            this.socket.ping();\n        }\n    }\n    onOpen() {\n        if (this.hooks.beforeOpen) {\n            this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n        }\n        this.changeState('open');\n        this.socket.onopen = undefined;\n    }\n    onError(error) {\n        this.emit('error', { type: 'WebSocketError', error: error });\n        this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n    }\n    onClose(closeEvent) {\n        if (closeEvent) {\n            this.changeState('closed', {\n                code: closeEvent.code,\n                reason: closeEvent.reason,\n                wasClean: closeEvent.wasClean,\n            });\n        }\n        else {\n            this.changeState('closed');\n        }\n        this.unbindListeners();\n        this.socket = undefined;\n    }\n    onMessage(message) {\n        this.emit('message', message);\n    }\n    onActivity() {\n        this.emit('activity');\n    }\n    bindListeners() {\n        this.socket.onopen = () => {\n            this.onOpen();\n        };\n        this.socket.onerror = (error) => {\n            this.onError(error);\n        };\n        this.socket.onclose = (closeEvent) => {\n            this.onClose(closeEvent);\n        };\n        this.socket.onmessage = (message) => {\n            this.onMessage(message);\n        };\n        if (this.supportsPing()) {\n            this.socket.onactivity = () => {\n                this.onActivity();\n            };\n        }\n    }\n    unbindListeners() {\n        if (this.socket) {\n            this.socket.onopen = undefined;\n            this.socket.onerror = undefined;\n            this.socket.onclose = undefined;\n            this.socket.onmessage = undefined;\n            if (this.supportsPing()) {\n                this.socket.onactivity = undefined;\n            }\n        }\n    }\n    changeState(state, params) {\n        this.state = state;\n        this.timeline.info(this.buildTimelineMessage({\n            state: state,\n            params: params,\n        }));\n        this.emit(state, params);\n    }\n    buildTimelineMessage(message) {\n        return extend({ cid: this.id }, message);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nclass transport_Transport {\n    constructor(hooks) {\n        this.hooks = hooks;\n    }\n    isSupported(environment) {\n        return this.hooks.isSupported(environment);\n    }\n    createConnection(name, priority, key, options) {\n        return new transport_connection_TransportConnection(this.hooks, name, priority, key, options);\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transport_Transport({\n    urls: ws,\n    handlesActivityChecks: false,\n    supportsPing: false,\n    isInitialized: function () {\n        return Boolean(runtime.getWebSocketAPI());\n    },\n    isSupported: function () {\n        return Boolean(runtime.getWebSocketAPI());\n    },\n    getSocket: function (url) {\n        return runtime.createWebSocket(url);\n    },\n});\nvar httpConfiguration = {\n    urls: http,\n    handlesActivityChecks: false,\n    supportsPing: true,\n    isInitialized: function () {\n        return true;\n    },\n};\nvar streamingConfiguration = extend({\n    getSocket: function (url) {\n        return runtime.HTTPFactory.createStreamingSocket(url);\n    },\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n    getSocket: function (url) {\n        return runtime.HTTPFactory.createPollingSocket(url);\n    },\n}, httpConfiguration);\nvar xhrConfiguration = {\n    isSupported: function () {\n        return runtime.isXHRSupported();\n    },\n};\nvar XHRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transport_Transport((extend({}, pollingConfiguration, xhrConfiguration)));\nvar Transports = {\n    ws: WSTransport,\n    xhr_streaming: XHRStreamingTransport,\n    xhr_polling: XHRPollingTransport,\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transport_Transport({\n    file: 'sockjs',\n    urls: sockjs,\n    handlesActivityChecks: true,\n    supportsPing: false,\n    isSupported: function () {\n        return true;\n    },\n    isInitialized: function () {\n        return window.SockJS !== undefined;\n    },\n    getSocket: function (url, options) {\n        return new window.SockJS(url, null, {\n            js_path: Dependencies.getPath('sockjs', {\n                useTLS: options.useTLS,\n            }),\n            ignore_null_origin: options.ignoreNullOrigin,\n        });\n    },\n    beforeOpen: function (socket, path) {\n        socket.send(JSON.stringify({\n            path: path,\n        }));\n    },\n});\nvar xdrConfiguration = {\n    isSupported: function (environment) {\n        var yes = runtime.isXDRSupported(environment.useTLS);\n        return yes;\n    },\n};\nvar XDRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transport_Transport((extend({}, pollingConfiguration, xdrConfiguration)));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\n\nclass net_info_NetInfo extends dispatcher_Dispatcher {\n    constructor() {\n        super();\n        var self = this;\n        if (window.addEventListener !== undefined) {\n            window.addEventListener('online', function () {\n                self.emit('online');\n            }, false);\n            window.addEventListener('offline', function () {\n                self.emit('offline');\n            }, false);\n        }\n    }\n    isOnline() {\n        if (window.navigator.onLine === undefined) {\n            return true;\n        }\n        else {\n            return window.navigator.onLine;\n        }\n    }\n}\nvar net_info_Network = new net_info_NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nclass assistant_to_the_transport_manager_AssistantToTheTransportManager {\n    constructor(manager, transport, options) {\n        this.manager = manager;\n        this.transport = transport;\n        this.minPingDelay = options.minPingDelay;\n        this.maxPingDelay = options.maxPingDelay;\n        this.pingDelay = undefined;\n    }\n    createConnection(name, priority, key, options) {\n        options = extend({}, options, {\n            activityTimeout: this.pingDelay,\n        });\n        var connection = this.transport.createConnection(name, priority, key, options);\n        var openTimestamp = null;\n        var onOpen = function () {\n            connection.unbind('open', onOpen);\n            connection.bind('closed', onClosed);\n            openTimestamp = util.now();\n        };\n        var onClosed = (closeEvent) => {\n            connection.unbind('closed', onClosed);\n            if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n                this.manager.reportDeath();\n            }\n            else if (!closeEvent.wasClean && openTimestamp) {\n                var lifespan = util.now() - openTimestamp;\n                if (lifespan < 2 * this.maxPingDelay) {\n                    this.manager.reportDeath();\n                    this.pingDelay = Math.max(lifespan / 2, this.minPingDelay);\n                }\n            }\n        };\n        connection.bind('open', onOpen);\n        return connection;\n    }\n    isSupported(environment) {\n        return this.manager.isAlive() && this.transport.isSupported(environment);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nconst Protocol = {\n    decodeMessage: function (messageEvent) {\n        try {\n            var messageData = JSON.parse(messageEvent.data);\n            var pusherEventData = messageData.data;\n            if (typeof pusherEventData === 'string') {\n                try {\n                    pusherEventData = JSON.parse(messageData.data);\n                }\n                catch (e) { }\n            }\n            var pusherEvent = {\n                event: messageData.event,\n                channel: messageData.channel,\n                data: pusherEventData,\n            };\n            if (messageData.user_id) {\n                pusherEvent.user_id = messageData.user_id;\n            }\n            return pusherEvent;\n        }\n        catch (e) {\n            throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n        }\n    },\n    encodeMessage: function (event) {\n        return JSON.stringify(event);\n    },\n    processHandshake: function (messageEvent) {\n        var message = Protocol.decodeMessage(messageEvent);\n        if (message.event === 'pusher:connection_established') {\n            if (!message.data.activity_timeout) {\n                throw 'No activity timeout specified in handshake';\n            }\n            return {\n                action: 'connected',\n                id: message.data.socket_id,\n                activityTimeout: message.data.activity_timeout * 1000,\n            };\n        }\n        else if (message.event === 'pusher:error') {\n            return {\n                action: this.getCloseAction(message.data),\n                error: this.getCloseError(message.data),\n            };\n        }\n        else {\n            throw 'Invalid handshake';\n        }\n    },\n    getCloseAction: function (closeEvent) {\n        if (closeEvent.code < 4000) {\n            if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n                return 'backoff';\n            }\n            else {\n                return null;\n            }\n        }\n        else if (closeEvent.code === 4000) {\n            return 'tls_only';\n        }\n        else if (closeEvent.code < 4100) {\n            return 'refused';\n        }\n        else if (closeEvent.code < 4200) {\n            return 'backoff';\n        }\n        else if (closeEvent.code < 4300) {\n            return 'retry';\n        }\n        else {\n            return 'refused';\n        }\n    },\n    getCloseError: function (closeEvent) {\n        if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n            return {\n                type: 'PusherError',\n                data: {\n                    code: closeEvent.code,\n                    message: closeEvent.reason || closeEvent.message,\n                },\n            };\n        }\n        else {\n            return null;\n        }\n    },\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\n\n\n\n\nclass connection_Connection extends dispatcher_Dispatcher {\n    constructor(id, transport) {\n        super();\n        this.id = id;\n        this.transport = transport;\n        this.activityTimeout = transport.activityTimeout;\n        this.bindListeners();\n    }\n    handlesActivityChecks() {\n        return this.transport.handlesActivityChecks();\n    }\n    send(data) {\n        return this.transport.send(data);\n    }\n    send_event(name, data, channel) {\n        var event = { event: name, data: data };\n        if (channel) {\n            event.channel = channel;\n        }\n        logger.debug('Event sent', event);\n        return this.send(protocol_protocol.encodeMessage(event));\n    }\n    ping() {\n        if (this.transport.supportsPing()) {\n            this.transport.ping();\n        }\n        else {\n            this.send_event('pusher:ping', {});\n        }\n    }\n    close() {\n        this.transport.close();\n    }\n    bindListeners() {\n        var listeners = {\n            message: (messageEvent) => {\n                var pusherEvent;\n                try {\n                    pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n                }\n                catch (e) {\n                    this.emit('error', {\n                        type: 'MessageParseError',\n                        error: e,\n                        data: messageEvent.data,\n                    });\n                }\n                if (pusherEvent !== undefined) {\n                    logger.debug('Event recd', pusherEvent);\n                    switch (pusherEvent.event) {\n                        case 'pusher:error':\n                            this.emit('error', {\n                                type: 'PusherError',\n                                data: pusherEvent.data,\n                            });\n                            break;\n                        case 'pusher:ping':\n                            this.emit('ping');\n                            break;\n                        case 'pusher:pong':\n                            this.emit('pong');\n                            break;\n                    }\n                    this.emit('message', pusherEvent);\n                }\n            },\n            activity: () => {\n                this.emit('activity');\n            },\n            error: (error) => {\n                this.emit('error', error);\n            },\n            closed: (closeEvent) => {\n                unbindListeners();\n                if (closeEvent && closeEvent.code) {\n                    this.handleCloseEvent(closeEvent);\n                }\n                this.transport = null;\n                this.emit('closed');\n            },\n        };\n        var unbindListeners = () => {\n            objectApply(listeners, (listener, event) => {\n                this.transport.unbind(event, listener);\n            });\n        };\n        objectApply(listeners, (listener, event) => {\n            this.transport.bind(event, listener);\n        });\n    }\n    handleCloseEvent(closeEvent) {\n        var action = protocol_protocol.getCloseAction(closeEvent);\n        var error = protocol_protocol.getCloseError(closeEvent);\n        if (error) {\n            this.emit('error', error);\n        }\n        if (action) {\n            this.emit(action, { action: action, error: error });\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nclass handshake_Handshake {\n    constructor(transport, callback) {\n        this.transport = transport;\n        this.callback = callback;\n        this.bindListeners();\n    }\n    close() {\n        this.unbindListeners();\n        this.transport.close();\n    }\n    bindListeners() {\n        this.onMessage = (m) => {\n            this.unbindListeners();\n            var result;\n            try {\n                result = protocol_protocol.processHandshake(m);\n            }\n            catch (e) {\n                this.finish('error', { error: e });\n                this.transport.close();\n                return;\n            }\n            if (result.action === 'connected') {\n                this.finish('connected', {\n                    connection: new connection_Connection(result.id, this.transport),\n                    activityTimeout: result.activityTimeout,\n                });\n            }\n            else {\n                this.finish(result.action, { error: result.error });\n                this.transport.close();\n            }\n        };\n        this.onClosed = (closeEvent) => {\n            this.unbindListeners();\n            var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n            var error = protocol_protocol.getCloseError(closeEvent);\n            this.finish(action, { error: error });\n        };\n        this.transport.bind('message', this.onMessage);\n        this.transport.bind('closed', this.onClosed);\n    }\n    unbindListeners() {\n        this.transport.unbind('message', this.onMessage);\n        this.transport.unbind('closed', this.onClosed);\n    }\n    finish(action, params) {\n        this.callback(extend({ transport: this.transport, action: action }, params));\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nclass timeline_sender_TimelineSender {\n    constructor(timeline, options) {\n        this.timeline = timeline;\n        this.options = options || {};\n    }\n    send(useTLS, callback) {\n        if (this.timeline.isEmpty()) {\n            return;\n        }\n        this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\n\n\n\n\n\nclass channel_Channel extends dispatcher_Dispatcher {\n    constructor(name, pusher) {\n        super(function (event, data) {\n            logger.debug('No callbacks on ' + name + ' for ' + event);\n        });\n        this.name = name;\n        this.pusher = pusher;\n        this.subscribed = false;\n        this.subscriptionPending = false;\n        this.subscriptionCancelled = false;\n    }\n    authorize(socketId, callback) {\n        return callback(null, { auth: '' });\n    }\n    trigger(event, data) {\n        if (event.indexOf('client-') !== 0) {\n            throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n        }\n        if (!this.subscribed) {\n            var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n            logger.warn(`Client event triggered before channel 'subscription_succeeded' event . ${suffix}`);\n        }\n        return this.pusher.send_event(event, data, this.name);\n    }\n    disconnect() {\n        this.subscribed = false;\n        this.subscriptionPending = false;\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        if (eventName === 'pusher_internal:subscription_succeeded') {\n            this.handleSubscriptionSucceededEvent(event);\n        }\n        else if (eventName === 'pusher_internal:subscription_count') {\n            this.handleSubscriptionCountEvent(event);\n        }\n        else if (eventName.indexOf('pusher_internal:') !== 0) {\n            var metadata = {};\n            this.emit(eventName, data, metadata);\n        }\n    }\n    handleSubscriptionSucceededEvent(event) {\n        this.subscriptionPending = false;\n        this.subscribed = true;\n        if (this.subscriptionCancelled) {\n            this.pusher.unsubscribe(this.name);\n        }\n        else {\n            this.emit('pusher:subscription_succeeded', event.data);\n        }\n    }\n    handleSubscriptionCountEvent(event) {\n        if (event.data.subscription_count) {\n            this.subscriptionCount = event.data.subscription_count;\n        }\n        this.emit('pusher:subscription_count', event.data);\n    }\n    subscribe() {\n        if (this.subscribed) {\n            return;\n        }\n        this.subscriptionPending = true;\n        this.subscriptionCancelled = false;\n        this.authorize(this.pusher.connection.socket_id, (error, data) => {\n            if (error) {\n                this.subscriptionPending = false;\n                logger.error(error.toString());\n                this.emit('pusher:subscription_error', Object.assign({}, {\n                    type: 'AuthError',\n                    error: error.message,\n                }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n            }\n            else {\n                this.pusher.send_event('pusher:subscribe', {\n                    auth: data.auth,\n                    channel_data: data.channel_data,\n                    channel: this.name,\n                });\n            }\n        });\n    }\n    unsubscribe() {\n        this.subscribed = false;\n        this.pusher.send_event('pusher:unsubscribe', {\n            channel: this.name,\n        });\n    }\n    cancelSubscription() {\n        this.subscriptionCancelled = true;\n    }\n    reinstateSubscription() {\n        this.subscriptionCancelled = false;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\n\nclass private_channel_PrivateChannel extends channel_Channel {\n    authorize(socketId, callback) {\n        return this.pusher.config.channelAuthorizer({\n            channelName: this.name,\n            socketId: socketId,\n        }, callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nclass members_Members {\n    constructor() {\n        this.reset();\n    }\n    get(id) {\n        if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n            return {\n                id: id,\n                info: this.members[id],\n            };\n        }\n        else {\n            return null;\n        }\n    }\n    each(callback) {\n        objectApply(this.members, (member, id) => {\n            callback(this.get(id));\n        });\n    }\n    setMyID(id) {\n        this.myID = id;\n    }\n    onSubscription(subscriptionData) {\n        this.members = subscriptionData.presence.hash;\n        this.count = subscriptionData.presence.count;\n        this.me = this.get(this.myID);\n    }\n    addMember(memberData) {\n        if (this.get(memberData.user_id) === null) {\n            this.count++;\n        }\n        this.members[memberData.user_id] = memberData.user_info;\n        return this.get(memberData.user_id);\n    }\n    removeMember(memberData) {\n        var member = this.get(memberData.user_id);\n        if (member) {\n            delete this.members[memberData.user_id];\n            this.count--;\n        }\n        return member;\n    }\n    reset() {\n        this.members = {};\n        this.count = 0;\n        this.myID = null;\n        this.me = null;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\n\n\n\n\nclass presence_channel_PresenceChannel extends private_channel_PrivateChannel {\n    constructor(name, pusher) {\n        super(name, pusher);\n        this.members = new members_Members();\n    }\n    authorize(socketId, callback) {\n        super.authorize(socketId, (error, authData) => __awaiter(this, void 0, void 0, function* () {\n            if (!error) {\n                authData = authData;\n                if (authData.channel_data != null) {\n                    var channelData = JSON.parse(authData.channel_data);\n                    this.members.setMyID(channelData.user_id);\n                }\n                else {\n                    yield this.pusher.user.signinDonePromise;\n                    if (this.pusher.user.user_data != null) {\n                        this.members.setMyID(this.pusher.user.user_data.id);\n                    }\n                    else {\n                        let suffix = url_store.buildLogSuffix('authorizationEndpoint');\n                        logger.error(`Invalid auth response for channel '${this.name}', ` +\n                            `expected 'channel_data' field. ${suffix}, ` +\n                            `or the user should be signed in.`);\n                        callback('Invalid auth response');\n                        return;\n                    }\n                }\n            }\n            callback(error, authData);\n        }));\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        if (eventName.indexOf('pusher_internal:') === 0) {\n            this.handleInternalEvent(event);\n        }\n        else {\n            var data = event.data;\n            var metadata = {};\n            if (event.user_id) {\n                metadata.user_id = event.user_id;\n            }\n            this.emit(eventName, data, metadata);\n        }\n    }\n    handleInternalEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        switch (eventName) {\n            case 'pusher_internal:subscription_succeeded':\n                this.handleSubscriptionSucceededEvent(event);\n                break;\n            case 'pusher_internal:subscription_count':\n                this.handleSubscriptionCountEvent(event);\n                break;\n            case 'pusher_internal:member_added':\n                var addedMember = this.members.addMember(data);\n                this.emit('pusher:member_added', addedMember);\n                break;\n            case 'pusher_internal:member_removed':\n                var removedMember = this.members.removeMember(data);\n                if (removedMember) {\n                    this.emit('pusher:member_removed', removedMember);\n                }\n                break;\n        }\n    }\n    handleSubscriptionSucceededEvent(event) {\n        this.subscriptionPending = false;\n        this.subscribed = true;\n        if (this.subscriptionCancelled) {\n            this.pusher.unsubscribe(this.name);\n        }\n        else {\n            this.members.onSubscription(event.data);\n            this.emit('pusher:subscription_succeeded', this.members);\n        }\n    }\n    disconnect() {\n        this.members.reset();\n        super.disconnect();\n    }\n}\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\n\n\n\n\n\nclass encrypted_channel_EncryptedChannel extends private_channel_PrivateChannel {\n    constructor(name, pusher, nacl) {\n        super(name, pusher);\n        this.key = null;\n        this.nacl = nacl;\n    }\n    authorize(socketId, callback) {\n        super.authorize(socketId, (error, authData) => {\n            if (error) {\n                callback(error, authData);\n                return;\n            }\n            let sharedSecret = authData['shared_secret'];\n            if (!sharedSecret) {\n                callback(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`), null);\n                return;\n            }\n            this.key = Object(base64[\"decode\"])(sharedSecret);\n            delete authData['shared_secret'];\n            callback(null, authData);\n        });\n    }\n    trigger(event, data) {\n        throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n    }\n    handleEvent(event) {\n        var eventName = event.event;\n        var data = event.data;\n        if (eventName.indexOf('pusher_internal:') === 0 ||\n            eventName.indexOf('pusher:') === 0) {\n            super.handleEvent(event);\n            return;\n        }\n        this.handleEncryptedEvent(eventName, data);\n    }\n    handleEncryptedEvent(event, data) {\n        if (!this.key) {\n            logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n            return;\n        }\n        if (!data.ciphertext || !data.nonce) {\n            logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n                data);\n            return;\n        }\n        let cipherText = Object(base64[\"decode\"])(data.ciphertext);\n        if (cipherText.length < this.nacl.secretbox.overheadLength) {\n            logger.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${cipherText.length}`);\n            return;\n        }\n        let nonce = Object(base64[\"decode\"])(data.nonce);\n        if (nonce.length < this.nacl.secretbox.nonceLength) {\n            logger.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${nonce.length}`);\n            return;\n        }\n        let bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n        if (bytes === null) {\n            logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n            this.authorize(this.pusher.connection.socket_id, (error, authData) => {\n                if (error) {\n                    logger.error(`Failed to make a request to the authEndpoint: ${authData}. Unable to fetch new key, so dropping encrypted event`);\n                    return;\n                }\n                bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n                if (bytes === null) {\n                    logger.error(`Failed to decrypt event with new key. Dropping encrypted event`);\n                    return;\n                }\n                this.emit(event, this.getDataToEmit(bytes));\n                return;\n            });\n            return;\n        }\n        this.emit(event, this.getDataToEmit(bytes));\n    }\n    getDataToEmit(bytes) {\n        let raw = Object(utf8[\"decode\"])(bytes);\n        try {\n            return JSON.parse(raw);\n        }\n        catch (_a) {\n            return raw;\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\n\n\n\n\n\nclass connection_manager_ConnectionManager extends dispatcher_Dispatcher {\n    constructor(key, options) {\n        super();\n        this.state = 'initialized';\n        this.connection = null;\n        this.key = key;\n        this.options = options;\n        this.timeline = this.options.timeline;\n        this.usingTLS = this.options.useTLS;\n        this.errorCallbacks = this.buildErrorCallbacks();\n        this.connectionCallbacks = this.buildConnectionCallbacks(this.errorCallbacks);\n        this.handshakeCallbacks = this.buildHandshakeCallbacks(this.errorCallbacks);\n        var Network = runtime.getNetwork();\n        Network.bind('online', () => {\n            this.timeline.info({ netinfo: 'online' });\n            if (this.state === 'connecting' || this.state === 'unavailable') {\n                this.retryIn(0);\n            }\n        });\n        Network.bind('offline', () => {\n            this.timeline.info({ netinfo: 'offline' });\n            if (this.connection) {\n                this.sendActivityCheck();\n            }\n        });\n        this.updateStrategy();\n    }\n    connect() {\n        if (this.connection || this.runner) {\n            return;\n        }\n        if (!this.strategy.isSupported()) {\n            this.updateState('failed');\n            return;\n        }\n        this.updateState('connecting');\n        this.startConnecting();\n        this.setUnavailableTimer();\n    }\n    send(data) {\n        if (this.connection) {\n            return this.connection.send(data);\n        }\n        else {\n            return false;\n        }\n    }\n    send_event(name, data, channel) {\n        if (this.connection) {\n            return this.connection.send_event(name, data, channel);\n        }\n        else {\n            return false;\n        }\n    }\n    disconnect() {\n        this.disconnectInternally();\n        this.updateState('disconnected');\n    }\n    isUsingTLS() {\n        return this.usingTLS;\n    }\n    startConnecting() {\n        var callback = (error, handshake) => {\n            if (error) {\n                this.runner = this.strategy.connect(0, callback);\n            }\n            else {\n                if (handshake.action === 'error') {\n                    this.emit('error', {\n                        type: 'HandshakeError',\n                        error: handshake.error,\n                    });\n                    this.timeline.error({ handshakeError: handshake.error });\n                }\n                else {\n                    this.abortConnecting();\n                    this.handshakeCallbacks[handshake.action](handshake);\n                }\n            }\n        };\n        this.runner = this.strategy.connect(0, callback);\n    }\n    abortConnecting() {\n        if (this.runner) {\n            this.runner.abort();\n            this.runner = null;\n        }\n    }\n    disconnectInternally() {\n        this.abortConnecting();\n        this.clearRetryTimer();\n        this.clearUnavailableTimer();\n        if (this.connection) {\n            var connection = this.abandonConnection();\n            connection.close();\n        }\n    }\n    updateStrategy() {\n        this.strategy = this.options.getStrategy({\n            key: this.key,\n            timeline: this.timeline,\n            useTLS: this.usingTLS,\n        });\n    }\n    retryIn(delay) {\n        this.timeline.info({ action: 'retry', delay: delay });\n        if (delay > 0) {\n            this.emit('connecting_in', Math.round(delay / 1000));\n        }\n        this.retryTimer = new timers_OneOffTimer(delay || 0, () => {\n            this.disconnectInternally();\n            this.connect();\n        });\n    }\n    clearRetryTimer() {\n        if (this.retryTimer) {\n            this.retryTimer.ensureAborted();\n            this.retryTimer = null;\n        }\n    }\n    setUnavailableTimer() {\n        this.unavailableTimer = new timers_OneOffTimer(this.options.unavailableTimeout, () => {\n            this.updateState('unavailable');\n        });\n    }\n    clearUnavailableTimer() {\n        if (this.unavailableTimer) {\n            this.unavailableTimer.ensureAborted();\n        }\n    }\n    sendActivityCheck() {\n        this.stopActivityCheck();\n        this.connection.ping();\n        this.activityTimer = new timers_OneOffTimer(this.options.pongTimeout, () => {\n            this.timeline.error({ pong_timed_out: this.options.pongTimeout });\n            this.retryIn(0);\n        });\n    }\n    resetActivityCheck() {\n        this.stopActivityCheck();\n        if (this.connection && !this.connection.handlesActivityChecks()) {\n            this.activityTimer = new timers_OneOffTimer(this.activityTimeout, () => {\n                this.sendActivityCheck();\n            });\n        }\n    }\n    stopActivityCheck() {\n        if (this.activityTimer) {\n            this.activityTimer.ensureAborted();\n        }\n    }\n    buildConnectionCallbacks(errorCallbacks) {\n        return extend({}, errorCallbacks, {\n            message: (message) => {\n                this.resetActivityCheck();\n                this.emit('message', message);\n            },\n            ping: () => {\n                this.send_event('pusher:pong', {});\n            },\n            activity: () => {\n                this.resetActivityCheck();\n            },\n            error: (error) => {\n                this.emit('error', error);\n            },\n            closed: () => {\n                this.abandonConnection();\n                if (this.shouldRetry()) {\n                    this.retryIn(1000);\n                }\n            },\n        });\n    }\n    buildHandshakeCallbacks(errorCallbacks) {\n        return extend({}, errorCallbacks, {\n            connected: (handshake) => {\n                this.activityTimeout = Math.min(this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n                this.clearUnavailableTimer();\n                this.setConnection(handshake.connection);\n                this.socket_id = this.connection.id;\n                this.updateState('connected', { socket_id: this.socket_id });\n            },\n        });\n    }\n    buildErrorCallbacks() {\n        let withErrorEmitted = (callback) => {\n            return (result) => {\n                if (result.error) {\n                    this.emit('error', { type: 'WebSocketError', error: result.error });\n                }\n                callback(result);\n            };\n        };\n        return {\n            tls_only: withErrorEmitted(() => {\n                this.usingTLS = true;\n                this.updateStrategy();\n                this.retryIn(0);\n            }),\n            refused: withErrorEmitted(() => {\n                this.disconnect();\n            }),\n            backoff: withErrorEmitted(() => {\n                this.retryIn(1000);\n            }),\n            retry: withErrorEmitted(() => {\n                this.retryIn(0);\n            }),\n        };\n    }\n    setConnection(connection) {\n        this.connection = connection;\n        for (var event in this.connectionCallbacks) {\n            this.connection.bind(event, this.connectionCallbacks[event]);\n        }\n        this.resetActivityCheck();\n    }\n    abandonConnection() {\n        if (!this.connection) {\n            return;\n        }\n        this.stopActivityCheck();\n        for (var event in this.connectionCallbacks) {\n            this.connection.unbind(event, this.connectionCallbacks[event]);\n        }\n        var connection = this.connection;\n        this.connection = null;\n        return connection;\n    }\n    updateState(newState, data) {\n        var previousState = this.state;\n        this.state = newState;\n        if (previousState !== newState) {\n            var newStateDescription = newState;\n            if (newStateDescription === 'connected') {\n                newStateDescription += ' with new socket ID ' + data.socket_id;\n            }\n            logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n            this.timeline.info({ state: newState, params: data });\n            this.emit('state_change', { previous: previousState, current: newState });\n            this.emit(newState, data);\n        }\n    }\n    shouldRetry() {\n        return this.state === 'connecting' || this.state === 'connected';\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nclass channels_Channels {\n    constructor() {\n        this.channels = {};\n    }\n    add(name, pusher) {\n        if (!this.channels[name]) {\n            this.channels[name] = createChannel(name, pusher);\n        }\n        return this.channels[name];\n    }\n    all() {\n        return values(this.channels);\n    }\n    find(name) {\n        return this.channels[name];\n    }\n    remove(name) {\n        var channel = this.channels[name];\n        delete this.channels[name];\n        return channel;\n    }\n    disconnect() {\n        objectApply(this.channels, function (channel) {\n            channel.disconnect();\n        });\n    }\n}\nfunction createChannel(name, pusher) {\n    if (name.indexOf('private-encrypted-') === 0) {\n        if (pusher.config.nacl) {\n            return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n        }\n        let errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n        let suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n        throw new UnsupportedFeature(`${errMsg}. ${suffix}`);\n    }\n    else if (name.indexOf('private-') === 0) {\n        return factory.createPrivateChannel(name, pusher);\n    }\n    else if (name.indexOf('presence-') === 0) {\n        return factory.createPresenceChannel(name, pusher);\n    }\n    else if (name.indexOf('#') === 0) {\n        throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n    }\n    else {\n        return factory.createChannel(name, pusher);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n    createChannels() {\n        return new channels_Channels();\n    },\n    createConnectionManager(key, options) {\n        return new connection_manager_ConnectionManager(key, options);\n    },\n    createChannel(name, pusher) {\n        return new channel_Channel(name, pusher);\n    },\n    createPrivateChannel(name, pusher) {\n        return new private_channel_PrivateChannel(name, pusher);\n    },\n    createPresenceChannel(name, pusher) {\n        return new presence_channel_PresenceChannel(name, pusher);\n    },\n    createEncryptedChannel(name, pusher, nacl) {\n        return new encrypted_channel_EncryptedChannel(name, pusher, nacl);\n    },\n    createTimelineSender(timeline, options) {\n        return new timeline_sender_TimelineSender(timeline, options);\n    },\n    createHandshake(transport, callback) {\n        return new handshake_Handshake(transport, callback);\n    },\n    createAssistantToTheTransportManager(manager, transport, options) {\n        return new assistant_to_the_transport_manager_AssistantToTheTransportManager(manager, transport, options);\n    },\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nclass transport_manager_TransportManager {\n    constructor(options) {\n        this.options = options || {};\n        this.livesLeft = this.options.lives || Infinity;\n    }\n    getAssistant(transport) {\n        return factory.createAssistantToTheTransportManager(this, transport, {\n            minPingDelay: this.options.minPingDelay,\n            maxPingDelay: this.options.maxPingDelay,\n        });\n    }\n    isAlive() {\n        return this.livesLeft > 0;\n    }\n    reportDeath() {\n        this.livesLeft -= 1;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nclass sequential_strategy_SequentialStrategy {\n    constructor(strategies, options) {\n        this.strategies = strategies;\n        this.loop = Boolean(options.loop);\n        this.failFast = Boolean(options.failFast);\n        this.timeout = options.timeout;\n        this.timeoutLimit = options.timeoutLimit;\n    }\n    isSupported() {\n        return any(this.strategies, util.method('isSupported'));\n    }\n    connect(minPriority, callback) {\n        var strategies = this.strategies;\n        var current = 0;\n        var timeout = this.timeout;\n        var runner = null;\n        var tryNextStrategy = (error, handshake) => {\n            if (handshake) {\n                callback(null, handshake);\n            }\n            else {\n                current = current + 1;\n                if (this.loop) {\n                    current = current % strategies.length;\n                }\n                if (current < strategies.length) {\n                    if (timeout) {\n                        timeout = timeout * 2;\n                        if (this.timeoutLimit) {\n                            timeout = Math.min(timeout, this.timeoutLimit);\n                        }\n                    }\n                    runner = this.tryStrategy(strategies[current], minPriority, { timeout, failFast: this.failFast }, tryNextStrategy);\n                }\n                else {\n                    callback(true);\n                }\n            }\n        };\n        runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n        return {\n            abort: function () {\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            },\n        };\n    }\n    tryStrategy(strategy, minPriority, options, callback) {\n        var timer = null;\n        var runner = null;\n        if (options.timeout > 0) {\n            timer = new timers_OneOffTimer(options.timeout, function () {\n                runner.abort();\n                callback(true);\n            });\n        }\n        runner = strategy.connect(minPriority, function (error, handshake) {\n            if (error && timer && timer.isRunning() && !options.failFast) {\n                return;\n            }\n            if (timer) {\n                timer.ensureAborted();\n            }\n            callback(error, handshake);\n        });\n        return {\n            abort: function () {\n                if (timer) {\n                    timer.ensureAborted();\n                }\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                runner.forceMinPriority(p);\n            },\n        };\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nclass best_connected_ever_strategy_BestConnectedEverStrategy {\n    constructor(strategies) {\n        this.strategies = strategies;\n    }\n    isSupported() {\n        return any(this.strategies, util.method('isSupported'));\n    }\n    connect(minPriority, callback) {\n        return connect(this.strategies, minPriority, function (i, runners) {\n            return function (error, handshake) {\n                runners[i].error = error;\n                if (error) {\n                    if (allRunnersFailed(runners)) {\n                        callback(true);\n                    }\n                    return;\n                }\n                apply(runners, function (runner) {\n                    runner.forceMinPriority(handshake.transport.priority);\n                });\n                callback(null, handshake);\n            };\n        });\n    }\n}\nfunction connect(strategies, minPriority, callbackBuilder) {\n    var runners = map(strategies, function (strategy, i, _, rs) {\n        return strategy.connect(minPriority, callbackBuilder(i, rs));\n    });\n    return {\n        abort: function () {\n            apply(runners, abortRunner);\n        },\n        forceMinPriority: function (p) {\n            apply(runners, function (runner) {\n                runner.forceMinPriority(p);\n            });\n        },\n    };\n}\nfunction allRunnersFailed(runners) {\n    return collections_all(runners, function (runner) {\n        return Boolean(runner.error);\n    });\n}\nfunction abortRunner(runner) {\n    if (!runner.error && !runner.aborted) {\n        runner.abort();\n        runner.aborted = true;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/websocket_prioritized_cached_strategy.ts\n\n\n\n\nclass websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy {\n    constructor(strategy, transports, options) {\n        this.strategy = strategy;\n        this.transports = transports;\n        this.ttl = options.ttl || 1800 * 1000;\n        this.usingTLS = options.useTLS;\n        this.timeline = options.timeline;\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var usingTLS = this.usingTLS;\n        var info = fetchTransportCache(usingTLS);\n        var cacheSkipCount = info && info.cacheSkipCount ? info.cacheSkipCount : 0;\n        var strategies = [this.strategy];\n        if (info && info.timestamp + this.ttl >= util.now()) {\n            var transport = this.transports[info.transport];\n            if (transport) {\n                if (['ws', 'wss'].includes(info.transport) || cacheSkipCount > 3) {\n                    this.timeline.info({\n                        cached: true,\n                        transport: info.transport,\n                        latency: info.latency,\n                    });\n                    strategies.push(new sequential_strategy_SequentialStrategy([transport], {\n                        timeout: info.latency * 2 + 1000,\n                        failFast: true,\n                    }));\n                }\n                else {\n                    cacheSkipCount++;\n                }\n            }\n        }\n        var startTimestamp = util.now();\n        var runner = strategies\n            .pop()\n            .connect(minPriority, function cb(error, handshake) {\n            if (error) {\n                flushTransportCache(usingTLS);\n                if (strategies.length > 0) {\n                    startTimestamp = util.now();\n                    runner = strategies.pop().connect(minPriority, cb);\n                }\n                else {\n                    callback(error);\n                }\n            }\n            else {\n                storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp, cacheSkipCount);\n                callback(null, handshake);\n            }\n        });\n        return {\n            abort: function () {\n                runner.abort();\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            },\n        };\n    }\n}\nfunction getTransportCacheKey(usingTLS) {\n    return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            var serializedCache = storage[getTransportCacheKey(usingTLS)];\n            if (serializedCache) {\n                return JSON.parse(serializedCache);\n            }\n        }\n        catch (e) {\n            flushTransportCache(usingTLS);\n        }\n    }\n    return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency, cacheSkipCount) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n                timestamp: util.now(),\n                transport: transport,\n                latency: latency,\n                cacheSkipCount: cacheSkipCount,\n            });\n        }\n        catch (e) {\n        }\n    }\n}\nfunction flushTransportCache(usingTLS) {\n    var storage = runtime.getLocalStorage();\n    if (storage) {\n        try {\n            delete storage[getTransportCacheKey(usingTLS)];\n        }\n        catch (e) {\n        }\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nclass delayed_strategy_DelayedStrategy {\n    constructor(strategy, { delay: number }) {\n        this.strategy = strategy;\n        this.options = { delay: number };\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var strategy = this.strategy;\n        var runner;\n        var timer = new timers_OneOffTimer(this.options.delay, function () {\n            runner = strategy.connect(minPriority, callback);\n        });\n        return {\n            abort: function () {\n                timer.ensureAborted();\n                if (runner) {\n                    runner.abort();\n                }\n            },\n            forceMinPriority: function (p) {\n                minPriority = p;\n                if (runner) {\n                    runner.forceMinPriority(p);\n                }\n            },\n        };\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nclass IfStrategy {\n    constructor(test, trueBranch, falseBranch) {\n        this.test = test;\n        this.trueBranch = trueBranch;\n        this.falseBranch = falseBranch;\n    }\n    isSupported() {\n        var branch = this.test() ? this.trueBranch : this.falseBranch;\n        return branch.isSupported();\n    }\n    connect(minPriority, callback) {\n        var branch = this.test() ? this.trueBranch : this.falseBranch;\n        return branch.connect(minPriority, callback);\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nclass FirstConnectedStrategy {\n    constructor(strategy) {\n        this.strategy = strategy;\n    }\n    isSupported() {\n        return this.strategy.isSupported();\n    }\n    connect(minPriority, callback) {\n        var runner = this.strategy.connect(minPriority, function (error, handshake) {\n            if (handshake) {\n                runner.abort();\n            }\n            callback(error, handshake);\n        });\n        return runner;\n    }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n    return function () {\n        return strategy.isSupported();\n    };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n    var definedTransports = {};\n    function defineTransportStrategy(name, type, priority, options, manager) {\n        var transport = defineTransport(config, name, type, priority, options, manager);\n        definedTransports[name] = transport;\n        return transport;\n    }\n    var ws_options = Object.assign({}, baseOptions, {\n        hostNonTLS: config.wsHost + ':' + config.wsPort,\n        hostTLS: config.wsHost + ':' + config.wssPort,\n        httpPath: config.wsPath,\n    });\n    var wss_options = Object.assign({}, ws_options, {\n        useTLS: true,\n    });\n    var sockjs_options = Object.assign({}, baseOptions, {\n        hostNonTLS: config.httpHost + ':' + config.httpPort,\n        hostTLS: config.httpHost + ':' + config.httpsPort,\n        httpPath: config.httpPath,\n    });\n    var timeouts = {\n        loop: true,\n        timeout: 15000,\n        timeoutLimit: 60000,\n    };\n    var ws_manager = new transport_manager_TransportManager({\n        minPingDelay: 10000,\n        maxPingDelay: config.activityTimeout,\n    });\n    var streaming_manager = new transport_manager_TransportManager({\n        lives: 2,\n        minPingDelay: 10000,\n        maxPingDelay: config.activityTimeout,\n    });\n    var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n    var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n    var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n    var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n    var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n    var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n    var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n    var ws_loop = new sequential_strategy_SequentialStrategy([ws_transport], timeouts);\n    var wss_loop = new sequential_strategy_SequentialStrategy([wss_transport], timeouts);\n    var sockjs_loop = new sequential_strategy_SequentialStrategy([sockjs_transport], timeouts);\n    var streaming_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport),\n    ], timeouts);\n    var polling_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport),\n    ], timeouts);\n    var http_loop = new sequential_strategy_SequentialStrategy([\n        new IfStrategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy_BestConnectedEverStrategy([\n            streaming_loop,\n            new delayed_strategy_DelayedStrategy(polling_loop, { delay: 4000 }),\n        ]), polling_loop),\n    ], timeouts);\n    var http_fallback_loop = new IfStrategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n    var wsStrategy;\n    if (baseOptions.useTLS) {\n        wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n            ws_loop,\n            new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 2000 }),\n        ]);\n    }\n    else {\n        wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n            ws_loop,\n            new delayed_strategy_DelayedStrategy(wss_loop, { delay: 2000 }),\n            new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 5000 }),\n        ]);\n    }\n    return new websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy(new FirstConnectedStrategy(new IfStrategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n        ttl: 1800000,\n        timeline: baseOptions.timeline,\n        useTLS: baseOptions.useTLS,\n    });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n    var self = this;\n    self.timeline.info(self.buildTimelineMessage({\n        transport: self.name + (self.options.useTLS ? 's' : ''),\n    }));\n    if (self.hooks.isInitialized()) {\n        self.changeState('initialized');\n    }\n    else if (self.hooks.file) {\n        self.changeState('initializing');\n        Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n            if (self.hooks.isInitialized()) {\n                self.changeState('initialized');\n                callback(true);\n            }\n            else {\n                if (error) {\n                    self.onError(error);\n                }\n                self.onClose();\n                callback(false);\n            }\n        });\n    }\n    else {\n        self.onClose();\n    }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n    getRequest: function (socket) {\n        var xdr = new window.XDomainRequest();\n        xdr.ontimeout = function () {\n            socket.emit('error', new RequestTimedOut());\n            socket.close();\n        };\n        xdr.onerror = function (e) {\n            socket.emit('error', e);\n            socket.close();\n        };\n        xdr.onprogress = function () {\n            if (xdr.responseText && xdr.responseText.length > 0) {\n                socket.onChunk(200, xdr.responseText);\n            }\n        };\n        xdr.onload = function () {\n            if (xdr.responseText && xdr.responseText.length > 0) {\n                socket.onChunk(200, xdr.responseText);\n            }\n            socket.emit('finished', 200);\n            socket.close();\n        };\n        return xdr;\n    },\n    abortRequest: function (xdr) {\n        xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n        xdr.abort();\n    },\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\n\n\nconst MAX_BUFFER_LENGTH = 256 * 1024;\nclass http_request_HTTPRequest extends dispatcher_Dispatcher {\n    constructor(hooks, method, url) {\n        super();\n        this.hooks = hooks;\n        this.method = method;\n        this.url = url;\n    }\n    start(payload) {\n        this.position = 0;\n        this.xhr = this.hooks.getRequest(this);\n        this.unloader = () => {\n            this.close();\n        };\n        runtime.addUnloadListener(this.unloader);\n        this.xhr.open(this.method, this.url, true);\n        if (this.xhr.setRequestHeader) {\n            this.xhr.setRequestHeader('Content-Type', 'application/json');\n        }\n        this.xhr.send(payload);\n    }\n    close() {\n        if (this.unloader) {\n            runtime.removeUnloadListener(this.unloader);\n            this.unloader = null;\n        }\n        if (this.xhr) {\n            this.hooks.abortRequest(this.xhr);\n            this.xhr = null;\n        }\n    }\n    onChunk(status, data) {\n        while (true) {\n            var chunk = this.advanceBuffer(data);\n            if (chunk) {\n                this.emit('chunk', { status: status, data: chunk });\n            }\n            else {\n                break;\n            }\n        }\n        if (this.isBufferTooLong(data)) {\n            this.emit('buffer_too_long');\n        }\n    }\n    advanceBuffer(buffer) {\n        var unreadData = buffer.slice(this.position);\n        var endOfLinePosition = unreadData.indexOf('\\n');\n        if (endOfLinePosition !== -1) {\n            this.position += endOfLinePosition + 1;\n            return unreadData.slice(0, endOfLinePosition);\n        }\n        else {\n            return null;\n        }\n    }\n    isBufferTooLong(buffer) {\n        return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n    State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n    State[State[\"OPEN\"] = 1] = \"OPEN\";\n    State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nclass http_socket_HTTPSocket {\n    constructor(hooks, url) {\n        this.hooks = hooks;\n        this.session = randomNumber(1000) + '/' + randomString(8);\n        this.location = getLocation(url);\n        this.readyState = state.CONNECTING;\n        this.openStream();\n    }\n    send(payload) {\n        return this.sendRaw(JSON.stringify([payload]));\n    }\n    ping() {\n        this.hooks.sendHeartbeat(this);\n    }\n    close(code, reason) {\n        this.onClose(code, reason, true);\n    }\n    sendRaw(payload) {\n        if (this.readyState === state.OPEN) {\n            try {\n                runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n                return true;\n            }\n            catch (e) {\n                return false;\n            }\n        }\n        else {\n            return false;\n        }\n    }\n    reconnect() {\n        this.closeStream();\n        this.openStream();\n    }\n    onClose(code, reason, wasClean) {\n        this.closeStream();\n        this.readyState = state.CLOSED;\n        if (this.onclose) {\n            this.onclose({\n                code: code,\n                reason: reason,\n                wasClean: wasClean,\n            });\n        }\n    }\n    onChunk(chunk) {\n        if (chunk.status !== 200) {\n            return;\n        }\n        if (this.readyState === state.OPEN) {\n            this.onActivity();\n        }\n        var payload;\n        var type = chunk.data.slice(0, 1);\n        switch (type) {\n            case 'o':\n                payload = JSON.parse(chunk.data.slice(1) || '{}');\n                this.onOpen(payload);\n                break;\n            case 'a':\n                payload = JSON.parse(chunk.data.slice(1) || '[]');\n                for (var i = 0; i < payload.length; i++) {\n                    this.onEvent(payload[i]);\n                }\n                break;\n            case 'm':\n                payload = JSON.parse(chunk.data.slice(1) || 'null');\n                this.onEvent(payload);\n                break;\n            case 'h':\n                this.hooks.onHeartbeat(this);\n                break;\n            case 'c':\n                payload = JSON.parse(chunk.data.slice(1) || '[]');\n                this.onClose(payload[0], payload[1], true);\n                break;\n        }\n    }\n    onOpen(options) {\n        if (this.readyState === state.CONNECTING) {\n            if (options && options.hostname) {\n                this.location.base = replaceHost(this.location.base, options.hostname);\n            }\n            this.readyState = state.OPEN;\n            if (this.onopen) {\n                this.onopen();\n            }\n        }\n        else {\n            this.onClose(1006, 'Server lost session', true);\n        }\n    }\n    onEvent(event) {\n        if (this.readyState === state.OPEN && this.onmessage) {\n            this.onmessage({ data: event });\n        }\n    }\n    onActivity() {\n        if (this.onactivity) {\n            this.onactivity();\n        }\n    }\n    onError(error) {\n        if (this.onerror) {\n            this.onerror(error);\n        }\n    }\n    openStream() {\n        this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n        this.stream.bind('chunk', (chunk) => {\n            this.onChunk(chunk);\n        });\n        this.stream.bind('finished', (status) => {\n            this.hooks.onFinished(this, status);\n        });\n        this.stream.bind('buffer_too_long', () => {\n            this.reconnect();\n        });\n        try {\n            this.stream.start();\n        }\n        catch (error) {\n            util.defer(() => {\n                this.onError(error);\n                this.onClose(1006, 'Could not start streaming', false);\n            });\n        }\n    }\n    closeStream() {\n        if (this.stream) {\n            this.stream.unbind_all();\n            this.stream.close();\n            this.stream = null;\n        }\n    }\n}\nfunction getLocation(url) {\n    var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n    return {\n        base: parts[1],\n        queryString: parts[2],\n    };\n}\nfunction getSendURL(url, session) {\n    return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n    var separator = url.indexOf('?') === -1 ? '?' : '&';\n    return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n    var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n    return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n    return runtime.randomInt(max);\n}\nfunction randomString(length) {\n    var result = [];\n    for (var i = 0; i < length; i++) {\n        result.push(randomNumber(32).toString(32));\n    }\n    return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n    getReceiveURL: function (url, session) {\n        return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n    },\n    onHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    sendHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    onFinished: function (socket, status) {\n        socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n    },\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n    getReceiveURL: function (url, session) {\n        return url.base + '/' + session + '/xhr' + url.queryString;\n    },\n    onHeartbeat: function () {\n    },\n    sendHeartbeat: function (socket) {\n        socket.sendRaw('[]');\n    },\n    onFinished: function (socket, status) {\n        if (status === 200) {\n            socket.reconnect();\n        }\n        else {\n            socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n        }\n    },\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n    getRequest: function (socket) {\n        var Constructor = runtime.getXHRAPI();\n        var xhr = new Constructor();\n        xhr.onreadystatechange = xhr.onprogress = function () {\n            switch (xhr.readyState) {\n                case 3:\n                    if (xhr.responseText && xhr.responseText.length > 0) {\n                        socket.onChunk(xhr.status, xhr.responseText);\n                    }\n                    break;\n                case 4:\n                    if (xhr.responseText && xhr.responseText.length > 0) {\n                        socket.onChunk(xhr.status, xhr.responseText);\n                    }\n                    socket.emit('finished', xhr.status);\n                    socket.close();\n                    break;\n            }\n        };\n        return xhr;\n    },\n    abortRequest: function (xhr) {\n        xhr.onreadystatechange = null;\n        xhr.abort();\n    },\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n    createStreamingSocket(url) {\n        return this.createSocket(http_streaming_socket, url);\n    },\n    createPollingSocket(url) {\n        return this.createSocket(http_polling_socket, url);\n    },\n    createSocket(hooks, url) {\n        return new http_socket(hooks, url);\n    },\n    createXHR(method, url) {\n        return this.createRequest(http_xhr_request, method, url);\n    },\n    createRequest(hooks, method, url) {\n        return new http_request_HTTPRequest(hooks, method, url);\n    },\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n    return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n    nextAuthCallbackID: 1,\n    auth_callbacks: {},\n    ScriptReceivers: ScriptReceivers,\n    DependenciesReceivers: DependenciesReceivers,\n    getDefaultStrategy: default_strategy,\n    Transports: transports_transports,\n    transportConnectionInitializer: transport_connection_initializer,\n    HTTPFactory: web_http_http,\n    TimelineTransport: jsonp_timeline,\n    getXHRAPI() {\n        return window.XMLHttpRequest;\n    },\n    getWebSocketAPI() {\n        return window.WebSocket || window.MozWebSocket;\n    },\n    setup(PusherClass) {\n        window.Pusher = PusherClass;\n        var initializeOnDocumentBody = () => {\n            this.onDocumentBody(PusherClass.ready);\n        };\n        if (!window.JSON) {\n            Dependencies.load('json2', {}, initializeOnDocumentBody);\n        }\n        else {\n            initializeOnDocumentBody();\n        }\n    },\n    getDocument() {\n        return document;\n    },\n    getProtocol() {\n        return this.getDocument().location.protocol;\n    },\n    getAuthorizers() {\n        return { ajax: xhr_auth, jsonp: jsonp_auth };\n    },\n    onDocumentBody(callback) {\n        if (document.body) {\n            callback();\n        }\n        else {\n            setTimeout(() => {\n                this.onDocumentBody(callback);\n            }, 0);\n        }\n    },\n    createJSONPRequest(url, data) {\n        return new jsonp_request_JSONPRequest(url, data);\n    },\n    createScriptRequest(src) {\n        return new ScriptRequest(src);\n    },\n    getLocalStorage() {\n        try {\n            return window.localStorage;\n        }\n        catch (e) {\n            return undefined;\n        }\n    },\n    createXHR() {\n        if (this.getXHRAPI()) {\n            return this.createXMLHttpRequest();\n        }\n        else {\n            return this.createMicrosoftXHR();\n        }\n    },\n    createXMLHttpRequest() {\n        var Constructor = this.getXHRAPI();\n        return new Constructor();\n    },\n    createMicrosoftXHR() {\n        return new ActiveXObject('Microsoft.XMLHTTP');\n    },\n    getNetwork() {\n        return net_info_Network;\n    },\n    createWebSocket(url) {\n        var Constructor = this.getWebSocketAPI();\n        return new Constructor(url);\n    },\n    createSocketRequest(method, url) {\n        if (this.isXHRSupported()) {\n            return this.HTTPFactory.createXHR(method, url);\n        }\n        else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n            return this.HTTPFactory.createXDR(method, url);\n        }\n        else {\n            throw 'Cross-origin HTTP requests are not supported';\n        }\n    },\n    isXHRSupported() {\n        var Constructor = this.getXHRAPI();\n        return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n    },\n    isXDRSupported(useTLS) {\n        var protocol = useTLS ? 'https:' : 'http:';\n        var documentProtocol = this.getProtocol();\n        return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n    },\n    addUnloadListener(listener) {\n        if (window.addEventListener !== undefined) {\n            window.addEventListener('unload', listener, false);\n        }\n        else if (window.attachEvent !== undefined) {\n            window.attachEvent('onunload', listener);\n        }\n    },\n    removeUnloadListener(listener) {\n        if (window.addEventListener !== undefined) {\n            window.removeEventListener('unload', listener, false);\n        }\n        else if (window.detachEvent !== undefined) {\n            window.detachEvent('onunload', listener);\n        }\n    },\n    randomInt(max) {\n        const random = function () {\n            const crypto = window.crypto || window['msCrypto'];\n            const random = crypto.getRandomValues(new Uint32Array(1))[0];\n            return random / Math.pow(2, 32);\n        };\n        return Math.floor(random() * max);\n    },\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n    TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n    TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n    TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nclass timeline_Timeline {\n    constructor(key, session, options) {\n        this.key = key;\n        this.session = session;\n        this.events = [];\n        this.options = options || {};\n        this.sent = 0;\n        this.uniqueID = 0;\n    }\n    log(level, event) {\n        if (level <= this.options.level) {\n            this.events.push(extend({}, event, { timestamp: util.now() }));\n            if (this.options.limit && this.events.length > this.options.limit) {\n                this.events.shift();\n            }\n        }\n    }\n    error(event) {\n        this.log(timeline_level.ERROR, event);\n    }\n    info(event) {\n        this.log(timeline_level.INFO, event);\n    }\n    debug(event) {\n        this.log(timeline_level.DEBUG, event);\n    }\n    isEmpty() {\n        return this.events.length === 0;\n    }\n    send(sendfn, callback) {\n        var data = extend({\n            session: this.session,\n            bundle: this.sent + 1,\n            key: this.key,\n            lib: 'js',\n            version: this.options.version,\n            cluster: this.options.cluster,\n            features: this.options.features,\n            timeline: this.events,\n        }, this.options.params);\n        this.events = [];\n        sendfn(data, (error, result) => {\n            if (!error) {\n                this.sent++;\n            }\n            if (callback) {\n                callback(error, result);\n            }\n        });\n        return true;\n    }\n    generateUniqueID() {\n        this.uniqueID++;\n        return this.uniqueID;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nclass transport_strategy_TransportStrategy {\n    constructor(name, priority, transport, options) {\n        this.name = name;\n        this.priority = priority;\n        this.transport = transport;\n        this.options = options || {};\n    }\n    isSupported() {\n        return this.transport.isSupported({\n            useTLS: this.options.useTLS,\n        });\n    }\n    connect(minPriority, callback) {\n        if (!this.isSupported()) {\n            return failAttempt(new UnsupportedStrategy(), callback);\n        }\n        else if (this.priority < minPriority) {\n            return failAttempt(new TransportPriorityTooLow(), callback);\n        }\n        var connected = false;\n        var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n        var handshake = null;\n        var onInitialized = function () {\n            transport.unbind('initialized', onInitialized);\n            transport.connect();\n        };\n        var onOpen = function () {\n            handshake = factory.createHandshake(transport, function (result) {\n                connected = true;\n                unbindListeners();\n                callback(null, result);\n            });\n        };\n        var onError = function (error) {\n            unbindListeners();\n            callback(error);\n        };\n        var onClosed = function () {\n            unbindListeners();\n            var serializedTransport;\n            serializedTransport = safeJSONStringify(transport);\n            callback(new TransportClosed(serializedTransport));\n        };\n        var unbindListeners = function () {\n            transport.unbind('initialized', onInitialized);\n            transport.unbind('open', onOpen);\n            transport.unbind('error', onError);\n            transport.unbind('closed', onClosed);\n        };\n        transport.bind('initialized', onInitialized);\n        transport.bind('open', onOpen);\n        transport.bind('error', onError);\n        transport.bind('closed', onClosed);\n        transport.initialize();\n        return {\n            abort: () => {\n                if (connected) {\n                    return;\n                }\n                unbindListeners();\n                if (handshake) {\n                    handshake.close();\n                }\n                else {\n                    transport.close();\n                }\n            },\n            forceMinPriority: (p) => {\n                if (connected) {\n                    return;\n                }\n                if (this.priority < p) {\n                    if (handshake) {\n                        handshake.close();\n                    }\n                    else {\n                        transport.close();\n                    }\n                }\n            },\n        };\n    }\n}\nfunction failAttempt(error, callback) {\n    util.defer(function () {\n        callback(error);\n    });\n    return {\n        abort: function () { },\n        forceMinPriority: function () { },\n    };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nconst { Transports: strategy_builder_Transports } = runtime;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n    var transportClass = strategy_builder_Transports[type];\n    if (!transportClass) {\n        throw new UnsupportedTransport(type);\n    }\n    var enabled = (!config.enabledTransports ||\n        arrayIndexOf(config.enabledTransports, name) !== -1) &&\n        (!config.disabledTransports ||\n            arrayIndexOf(config.disabledTransports, name) === -1);\n    var transport;\n    if (enabled) {\n        options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n        transport = new transport_strategy_TransportStrategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n    }\n    else {\n        transport = strategy_builder_UnsupportedStrategy;\n    }\n    return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n    isSupported: function () {\n        return false;\n    },\n    connect: function (_, callback) {\n        var deferred = util.defer(function () {\n            callback(new UnsupportedStrategy());\n        });\n        return {\n            abort: function () {\n                deferred.ensureAborted();\n            },\n            forceMinPriority: function () { },\n        };\n    },\n};\n\n// CONCATENATED MODULE: ./src/core/options.ts\n\nfunction validateOptions(options) {\n    if (options == null) {\n        throw 'You must pass an options object';\n    }\n    if (options.cluster == null) {\n        throw 'Options object must provide a cluster';\n    }\n    if ('disableStats' in options) {\n        logger.warn('The disableStats option is deprecated in favor of enableStats');\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nconst composeChannelQuery = (params, authOptions) => {\n    var query = 'socket_id=' + encodeURIComponent(params.socketId);\n    for (var key in authOptions.params) {\n        query +=\n            '&' +\n                encodeURIComponent(key) +\n                '=' +\n                encodeURIComponent(authOptions.params[key]);\n    }\n    if (authOptions.paramsProvider != null) {\n        let dynamicParams = authOptions.paramsProvider();\n        for (var key in dynamicParams) {\n            query +=\n                '&' +\n                    encodeURIComponent(key) +\n                    '=' +\n                    encodeURIComponent(dynamicParams[key]);\n        }\n    }\n    return query;\n};\nconst UserAuthenticator = (authOptions) => {\n    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n        throw `'${authOptions.transport}' is not a recognized auth transport`;\n    }\n    return (params, callback) => {\n        const query = composeChannelQuery(params, authOptions);\n        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n    };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nconst channel_authorizer_composeChannelQuery = (params, authOptions) => {\n    var query = 'socket_id=' + encodeURIComponent(params.socketId);\n    query += '&channel_name=' + encodeURIComponent(params.channelName);\n    for (var key in authOptions.params) {\n        query +=\n            '&' +\n                encodeURIComponent(key) +\n                '=' +\n                encodeURIComponent(authOptions.params[key]);\n    }\n    if (authOptions.paramsProvider != null) {\n        let dynamicParams = authOptions.paramsProvider();\n        for (var key in dynamicParams) {\n            query +=\n                '&' +\n                    encodeURIComponent(key) +\n                    '=' +\n                    encodeURIComponent(dynamicParams[key]);\n        }\n    }\n    return query;\n};\nconst ChannelAuthorizer = (authOptions) => {\n    if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n        throw `'${authOptions.transport}' is not a recognized auth transport`;\n    }\n    return (params, callback) => {\n        const query = channel_authorizer_composeChannelQuery(params, authOptions);\n        runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n    };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nconst ChannelAuthorizerProxy = (pusher, authOptions, channelAuthorizerGenerator) => {\n    const deprecatedAuthorizerOptions = {\n        authTransport: authOptions.transport,\n        authEndpoint: authOptions.endpoint,\n        auth: {\n            params: authOptions.params,\n            headers: authOptions.headers,\n        },\n    };\n    return (params, callback) => {\n        const channel = pusher.channel(params.channelName);\n        const channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n        channelAuthorizer.authorize(params.socketId, callback);\n    };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n    let config = {\n        activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n        cluster: opts.cluster,\n        httpPath: opts.httpPath || defaults.httpPath,\n        httpPort: opts.httpPort || defaults.httpPort,\n        httpsPort: opts.httpsPort || defaults.httpsPort,\n        pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n        statsHost: opts.statsHost || defaults.stats_host,\n        unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n        wsPath: opts.wsPath || defaults.wsPath,\n        wsPort: opts.wsPort || defaults.wsPort,\n        wssPort: opts.wssPort || defaults.wssPort,\n        enableStats: getEnableStatsConfig(opts),\n        httpHost: getHttpHost(opts),\n        useTLS: shouldUseTLS(opts),\n        wsHost: getWebsocketHost(opts),\n        userAuthenticator: buildUserAuthenticator(opts),\n        channelAuthorizer: buildChannelAuthorizer(opts, pusher),\n    };\n    if ('disabledTransports' in opts)\n        config.disabledTransports = opts.disabledTransports;\n    if ('enabledTransports' in opts)\n        config.enabledTransports = opts.enabledTransports;\n    if ('ignoreNullOrigin' in opts)\n        config.ignoreNullOrigin = opts.ignoreNullOrigin;\n    if ('timelineParams' in opts)\n        config.timelineParams = opts.timelineParams;\n    if ('nacl' in opts) {\n        config.nacl = opts.nacl;\n    }\n    return config;\n}\nfunction getHttpHost(opts) {\n    if (opts.httpHost) {\n        return opts.httpHost;\n    }\n    if (opts.cluster) {\n        return `sockjs-${opts.cluster}.pusher.com`;\n    }\n    return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n    if (opts.wsHost) {\n        return opts.wsHost;\n    }\n    return getWebsocketHostFromCluster(opts.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n    return `ws-${cluster}.pusher.com`;\n}\nfunction shouldUseTLS(opts) {\n    if (runtime.getProtocol() === 'https:') {\n        return true;\n    }\n    else if (opts.forceTLS === false) {\n        return false;\n    }\n    return true;\n}\nfunction getEnableStatsConfig(opts) {\n    if ('enableStats' in opts) {\n        return opts.enableStats;\n    }\n    if ('disableStats' in opts) {\n        return !opts.disableStats;\n    }\n    return false;\n}\nfunction buildUserAuthenticator(opts) {\n    const userAuthentication = Object.assign(Object.assign({}, defaults.userAuthentication), opts.userAuthentication);\n    if ('customHandler' in userAuthentication &&\n        userAuthentication['customHandler'] != null) {\n        return userAuthentication['customHandler'];\n    }\n    return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n    let channelAuthorization;\n    if ('channelAuthorization' in opts) {\n        channelAuthorization = Object.assign(Object.assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n    }\n    else {\n        channelAuthorization = {\n            transport: opts.authTransport || defaults.authTransport,\n            endpoint: opts.authEndpoint || defaults.authEndpoint,\n        };\n        if ('auth' in opts) {\n            if ('params' in opts.auth)\n                channelAuthorization.params = opts.auth.params;\n            if ('headers' in opts.auth)\n                channelAuthorization.headers = opts.auth.headers;\n        }\n        if ('authorizer' in opts)\n            channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n    }\n    return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n    const channelAuthorization = buildChannelAuth(opts, pusher);\n    if ('customHandler' in channelAuthorization &&\n        channelAuthorization['customHandler'] != null) {\n        return channelAuthorization['customHandler'];\n    }\n    return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\n\n\nclass watchlist_WatchlistFacade extends dispatcher_Dispatcher {\n    constructor(pusher) {\n        super(function (eventName, data) {\n            logger.debug(`No callbacks on watchlist events for ${eventName}`);\n        });\n        this.pusher = pusher;\n        this.bindWatchlistInternalEvent();\n    }\n    handleEvent(pusherEvent) {\n        pusherEvent.data.events.forEach((watchlistEvent) => {\n            this.emit(watchlistEvent.name, watchlistEvent);\n        });\n    }\n    bindWatchlistInternalEvent() {\n        this.pusher.connection.bind('message', (pusherEvent) => {\n            var eventName = pusherEvent.event;\n            if (eventName === 'pusher_internal:watchlist_events') {\n                this.handleEvent(pusherEvent);\n            }\n        });\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n    let resolve, reject;\n    const promise = new Promise((res, rej) => {\n        resolve = res;\n        reject = rej;\n    });\n    return { promise, resolve, reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\n\n\n\n\n\nclass user_UserFacade extends dispatcher_Dispatcher {\n    constructor(pusher) {\n        super(function (eventName, data) {\n            logger.debug('No callbacks on user for ' + eventName);\n        });\n        this.signin_requested = false;\n        this.user_data = null;\n        this.serverToUserChannel = null;\n        this.signinDonePromise = null;\n        this._signinDoneResolve = null;\n        this._onAuthorize = (err, authData) => {\n            if (err) {\n                logger.warn(`Error during signin: ${err}`);\n                this._cleanup();\n                return;\n            }\n            this.pusher.send_event('pusher:signin', {\n                auth: authData.auth,\n                user_data: authData.user_data,\n            });\n        };\n        this.pusher = pusher;\n        this.pusher.connection.bind('state_change', ({ previous, current }) => {\n            if (previous !== 'connected' && current === 'connected') {\n                this._signin();\n            }\n            if (previous === 'connected' && current !== 'connected') {\n                this._cleanup();\n                this._newSigninPromiseIfNeeded();\n            }\n        });\n        this.watchlist = new watchlist_WatchlistFacade(pusher);\n        this.pusher.connection.bind('message', (event) => {\n            var eventName = event.event;\n            if (eventName === 'pusher:signin_success') {\n                this._onSigninSuccess(event.data);\n            }\n            if (this.serverToUserChannel &&\n                this.serverToUserChannel.name === event.channel) {\n                this.serverToUserChannel.handleEvent(event);\n            }\n        });\n    }\n    signin() {\n        if (this.signin_requested) {\n            return;\n        }\n        this.signin_requested = true;\n        this._signin();\n    }\n    _signin() {\n        if (!this.signin_requested) {\n            return;\n        }\n        this._newSigninPromiseIfNeeded();\n        if (this.pusher.connection.state !== 'connected') {\n            return;\n        }\n        this.pusher.config.userAuthenticator({\n            socketId: this.pusher.connection.socket_id,\n        }, this._onAuthorize);\n    }\n    _onSigninSuccess(data) {\n        try {\n            this.user_data = JSON.parse(data.user_data);\n        }\n        catch (e) {\n            logger.error(`Failed parsing user data after signin: ${data.user_data}`);\n            this._cleanup();\n            return;\n        }\n        if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n            logger.error(`user_data doesn't contain an id. user_data: ${this.user_data}`);\n            this._cleanup();\n            return;\n        }\n        this._signinDoneResolve();\n        this._subscribeChannels();\n    }\n    _subscribeChannels() {\n        const ensure_subscribed = (channel) => {\n            if (channel.subscriptionPending && channel.subscriptionCancelled) {\n                channel.reinstateSubscription();\n            }\n            else if (!channel.subscriptionPending &&\n                this.pusher.connection.state === 'connected') {\n                channel.subscribe();\n            }\n        };\n        this.serverToUserChannel = new channel_Channel(`#server-to-user-${this.user_data.id}`, this.pusher);\n        this.serverToUserChannel.bind_global((eventName, data) => {\n            if (eventName.indexOf('pusher_internal:') === 0 ||\n                eventName.indexOf('pusher:') === 0) {\n                return;\n            }\n            this.emit(eventName, data);\n        });\n        ensure_subscribed(this.serverToUserChannel);\n    }\n    _cleanup() {\n        this.user_data = null;\n        if (this.serverToUserChannel) {\n            this.serverToUserChannel.unbind_all();\n            this.serverToUserChannel.disconnect();\n            this.serverToUserChannel = null;\n        }\n        if (this.signin_requested) {\n            this._signinDoneResolve();\n        }\n    }\n    _newSigninPromiseIfNeeded() {\n        if (!this.signin_requested) {\n            return;\n        }\n        if (this.signinDonePromise && !this.signinDonePromise.done) {\n            return;\n        }\n        const { promise, resolve, reject: _ } = flat_promise();\n        promise.done = false;\n        const setDone = () => {\n            promise.done = true;\n        };\n        promise.then(setDone).catch(setDone);\n        this.signinDonePromise = promise;\n        this._signinDoneResolve = resolve;\n    }\n}\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass pusher_Pusher {\n    static ready() {\n        pusher_Pusher.isReady = true;\n        for (var i = 0, l = pusher_Pusher.instances.length; i < l; i++) {\n            pusher_Pusher.instances[i].connect();\n        }\n    }\n    static getClientFeatures() {\n        return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n            return t.isSupported({});\n        }));\n    }\n    constructor(app_key, options) {\n        checkAppKey(app_key);\n        validateOptions(options);\n        this.key = app_key;\n        this.config = getConfig(options, this);\n        this.channels = factory.createChannels();\n        this.global_emitter = new dispatcher_Dispatcher();\n        this.sessionID = runtime.randomInt(1000000000);\n        this.timeline = new timeline_Timeline(this.key, this.sessionID, {\n            cluster: this.config.cluster,\n            features: pusher_Pusher.getClientFeatures(),\n            params: this.config.timelineParams || {},\n            limit: 50,\n            level: timeline_level.INFO,\n            version: defaults.VERSION,\n        });\n        if (this.config.enableStats) {\n            this.timelineSender = factory.createTimelineSender(this.timeline, {\n                host: this.config.statsHost,\n                path: '/timeline/v2/' + runtime.TimelineTransport.name,\n            });\n        }\n        var getStrategy = (options) => {\n            return runtime.getDefaultStrategy(this.config, options, strategy_builder_defineTransport);\n        };\n        this.connection = factory.createConnectionManager(this.key, {\n            getStrategy: getStrategy,\n            timeline: this.timeline,\n            activityTimeout: this.config.activityTimeout,\n            pongTimeout: this.config.pongTimeout,\n            unavailableTimeout: this.config.unavailableTimeout,\n            useTLS: Boolean(this.config.useTLS),\n        });\n        this.connection.bind('connected', () => {\n            this.subscribeAll();\n            if (this.timelineSender) {\n                this.timelineSender.send(this.connection.isUsingTLS());\n            }\n        });\n        this.connection.bind('message', (event) => {\n            var eventName = event.event;\n            var internal = eventName.indexOf('pusher_internal:') === 0;\n            if (event.channel) {\n                var channel = this.channel(event.channel);\n                if (channel) {\n                    channel.handleEvent(event);\n                }\n            }\n            if (!internal) {\n                this.global_emitter.emit(event.event, event.data);\n            }\n        });\n        this.connection.bind('connecting', () => {\n            this.channels.disconnect();\n        });\n        this.connection.bind('disconnected', () => {\n            this.channels.disconnect();\n        });\n        this.connection.bind('error', (err) => {\n            logger.warn(err);\n        });\n        pusher_Pusher.instances.push(this);\n        this.timeline.info({ instances: pusher_Pusher.instances.length });\n        this.user = new user_UserFacade(this);\n        if (pusher_Pusher.isReady) {\n            this.connect();\n        }\n    }\n    channel(name) {\n        return this.channels.find(name);\n    }\n    allChannels() {\n        return this.channels.all();\n    }\n    connect() {\n        this.connection.connect();\n        if (this.timelineSender) {\n            if (!this.timelineSenderTimer) {\n                var usingTLS = this.connection.isUsingTLS();\n                var timelineSender = this.timelineSender;\n                this.timelineSenderTimer = new timers_PeriodicTimer(60000, function () {\n                    timelineSender.send(usingTLS);\n                });\n            }\n        }\n    }\n    disconnect() {\n        this.connection.disconnect();\n        if (this.timelineSenderTimer) {\n            this.timelineSenderTimer.ensureAborted();\n            this.timelineSenderTimer = null;\n        }\n    }\n    bind(event_name, callback, context) {\n        this.global_emitter.bind(event_name, callback, context);\n        return this;\n    }\n    unbind(event_name, callback, context) {\n        this.global_emitter.unbind(event_name, callback, context);\n        return this;\n    }\n    bind_global(callback) {\n        this.global_emitter.bind_global(callback);\n        return this;\n    }\n    unbind_global(callback) {\n        this.global_emitter.unbind_global(callback);\n        return this;\n    }\n    unbind_all(callback) {\n        this.global_emitter.unbind_all();\n        return this;\n    }\n    subscribeAll() {\n        var channelName;\n        for (channelName in this.channels.channels) {\n            if (this.channels.channels.hasOwnProperty(channelName)) {\n                this.subscribe(channelName);\n            }\n        }\n    }\n    subscribe(channel_name) {\n        var channel = this.channels.add(channel_name, this);\n        if (channel.subscriptionPending && channel.subscriptionCancelled) {\n            channel.reinstateSubscription();\n        }\n        else if (!channel.subscriptionPending &&\n            this.connection.state === 'connected') {\n            channel.subscribe();\n        }\n        return channel;\n    }\n    unsubscribe(channel_name) {\n        var channel = this.channels.find(channel_name);\n        if (channel && channel.subscriptionPending) {\n            channel.cancelSubscription();\n        }\n        else {\n            channel = this.channels.remove(channel_name);\n            if (channel && channel.subscribed) {\n                channel.unsubscribe();\n            }\n        }\n    }\n    send_event(event_name, data, channel) {\n        return this.connection.send_event(event_name, data, channel);\n    }\n    shouldUseTLS() {\n        return this.config.useTLS;\n    }\n    signin() {\n        this.user.signin();\n    }\n}\npusher_Pusher.instances = [];\npusher_Pusher.isReady = false;\npusher_Pusher.logToConsole = false;\npusher_Pusher.Runtime = runtime;\npusher_Pusher.ScriptReceivers = runtime.ScriptReceivers;\npusher_Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\npusher_Pusher.auth_callbacks = runtime.auth_callbacks;\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n    if (key === null || key === undefined) {\n        throw 'You must pass your app key when you instantiate Pusher.';\n    }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map"],"names":["root","factory","module","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","value","mode","ns","key","object","property","__extends","extendStatics","d","b","p","__","INVALID_BYTE","Coder","_paddingCharacter","length","data","out","i","c","left","s","paddingLength","op","haveBad","v0","v1","v2","v3","result","stdCoder","encode","decode","URLSafeCoder","_super","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","arr","encodedLength","pos","chars","min","n1","n2","n3","__webpack_exports__","ScriptReceiverFactory","prefix","callback","number","id","called","callbackWrapper","receiver","ScriptReceivers","Defaults","defaults","dependency_loader_DependencyLoader","options","self","request","runtime","error","callbacks","successCallback","wasSuccessful","cdn","protocol","DependenciesReceivers","Dependencies","urlStore","url_store","urlPrefix","urlObj","url","AuthRequestType","BadEventName","msg","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","xhr_auth","context","query","authOptions","authRequestType","xhr","headerName","dynamicHeaders","parsed","suffix","btoa","utob","fromCharCode","b64chars","cb_utob","cc","u","cb_encode","ccc","padlen","ord","Timer","set","clear","delay","abstract_timer","timers_clearTimeout","timer","timers_clearInterval","timers_OneOffTimer","timers_PeriodicTimer","Util","args","boundArguments","util","extend","target","sources","extensions","stringify","m","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","l","objectApply","f","keys","_","values","apply","map","mapObject","filter","test","filterObject","flatten","any","collections_all","encodeParamsObject","buildQueryString","params","decycleObject","objects","paths","derez","path","nu","source","logger_Logger","message","defaultLoggingFunction","core_pusher","logger","jsonp","callbackName","document","script","callback_name","head","jsonp_auth","ScriptRequest","src","errorString","jsonp_request_JSONPRequest","getAgent","sender","useTLS","scheme","jsonp_timeline_jsonp","jsonp_timeline","getGenericURL","baseScheme","host","getGenericPath","queryString","ws","http","sockjs","callback_registry_CallbackRegistry","prefixedEventName","names","binding","dispatcher_Dispatcher","failThrough","eventName","metadata","transport_connection_TransportConnection","hooks","priority","e","closeEvent","state","transport_Transport","environment","WSTransport","httpConfiguration","streamingConfiguration","pollingConfiguration","xhrConfiguration","XHRStreamingTransport","XHRPollingTransport","Transports","transports","SockJSTransport","socket","xdrConfiguration","yes","XDRStreamingTransport","XDRPollingTransport","transports_transports","net_info_NetInfo","net_info_Network","assistant_to_the_transport_manager_AssistantToTheTransportManager","manager","transport","connection","openTimestamp","onOpen","onClosed","lifespan","Protocol","messageEvent","messageData","pusherEventData","pusherEvent","event","protocol_protocol","connection_Connection","channel","listeners","unbindListeners","listener","action","handshake_Handshake","timeline_sender_TimelineSender","timeline","channel_Channel","pusher","socketId","private_channel_PrivateChannel","members_Members","member","subscriptionData","memberData","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","presence_channel_PresenceChannel","authData","channelData","addedMember","removedMember","utf8","base64","encrypted_channel_EncryptedChannel","nacl","sharedSecret","cipherText","nonce","bytes","raw","connection_manager_ConnectionManager","Network","handshake","errorCallbacks","withErrorEmitted","newState","previousState","newStateDescription","channels_Channels","createChannel","errMsg","Factory","transport_manager_TransportManager","sequential_strategy_SequentialStrategy","strategies","minPriority","current","timeout","runner","tryNextStrategy","strategy","best_connected_ever_strategy_BestConnectedEverStrategy","connect","runners","allRunnersFailed","callbackBuilder","rs","abortRunner","websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy","usingTLS","info","fetchTransportCache","cacheSkipCount","startTimestamp","cb","flushTransportCache","storeTransportCache","getTransportCacheKey","storage","serializedCache","latency","delayed_strategy_DelayedStrategy","IfStrategy","trueBranch","falseBranch","branch","FirstConnectedStrategy","testSupportsStrategy","getDefaultStrategy","config","baseOptions","defineTransport","definedTransports","defineTransportStrategy","type","ws_options","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","wsStrategy","default_strategy","transport_connection_initializer","http_xdomain_request_hooks","xdr","http_xdomain_request","MAX_BUFFER_LENGTH","http_request_HTTPRequest","method","payload","chunk","buffer","unreadData","endOfLinePosition","State","autoIncrement","http_socket_HTTPSocket","randomNumber","randomString","getLocation","code","reason","getUniqueURL","getSendURL","wasClean","replaceHost","parts","session","separator","hostname","urlParts","max","http_socket","http_streaming_socket_hooks","http_streaming_socket","http_polling_socket_hooks","http_polling_socket","http_xhr_request_hooks","Constructor","http_xhr_request","HTTP","http_http","web_http_http","Runtime","PusherClass","initializeOnDocumentBody","documentProtocol","TimelineLevel","timeline_level","timeline_Timeline","level","sendfn","transport_strategy_TransportStrategy","failAttempt","connected","onInitialized","onError","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabled","strategy_builder_UnsupportedStrategy","deferred","validateOptions","composeChannelQuery","dynamicParams","user_authenticator","channel_authorizer_composeChannelQuery","channel_authorizer","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","getConfig","opts","getEnableStatsConfig","getHttpHost","shouldUseTLS","getWebsocketHost","buildUserAuthenticator","buildChannelAuthorizer","getWebsocketHostFromCluster","cluster","userAuthentication","buildChannelAuth","channelAuthorization","watchlist_WatchlistFacade","watchlistEvent","flatPromise","res","rej","flat_promise","user_UserFacade","err","previous","ensure_subscribed","promise","setDone","pusher_Pusher","t","app_key","checkAppKey","getStrategy","internal","timelineSender","event_name","channelName","channel_name"],"mappings":"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","x_google_ignoreList":[0]}