Files
kaunter/public/js/pusher.min.js
T
MUHD HAFIFIE 403d503008 pusher testing
2021-06-20 16:03:13 +08:00

2600 lines
122 KiB
JavaScript
Vendored

/*!
* Pusher JavaScript Library v7.0.2
* https://pusher.com/
*
* Copyright 2020, Pusher
* Released under the MIT licence.
*/
! function(t, e) {
"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.Pusher = e() : t.Pusher = e()
}(window, (function() {
return function(t) {
var e = {};
function n(o) {
if (e[o]) return e[o].exports;
var r = e[o] = {
i: o,
l: !1,
exports: {}
};
return t[o].call(r.exports, r, r.exports, n), r.l = !0, r.exports
}
return n.m = t, n.c = e, n.d = function(t, e, o) {
n.o(t, e) || Object.defineProperty(t, e, {
enumerable: !0,
get: o
})
}, n.r = function(t) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(t, "__esModule", {
value: !0
})
}, n.t = function(t, e) {
if (1 & e && (t = n(t)), 8 & e) return t;
if (4 & e && "object" == typeof t && t && t.__esModule) return t;
var o = Object.create(null);
if (n.r(o), Object.defineProperty(o, "default", {
enumerable: !0,
value: t
}), 2 & e && "string" != typeof t)
for (var r in t) n.d(o, r, function(e) {
return t[e]
}.bind(null, r));
return o
}, n.n = function(t) {
var e = t && t.__esModule ? function() {
return t.default
} : function() {
return t
};
return n.d(e, "a", e), e
}, n.o = function(t, e) {
return Object.prototype.hasOwnProperty.call(t, e)
}, n.p = "", n(n.s = 2)
}([function(t, e, n) {
"use strict";
var o, r = this && this.__extends || (o = function(t, e) {
return (o = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(t, e)
}, function(t, e) {
function n() {
this.constructor = t
}
o(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
});
Object.defineProperty(e, "__esModule", {
value: !0
});
var i = function() {
function t(t) {
void 0 === t && (t = "="), this._paddingCharacter = t
}
return t.prototype.encodedLength = function(t) {
return this._paddingCharacter ? (t + 2) / 3 * 4 | 0 : (8 * t + 5) / 6 | 0
}, t.prototype.encode = function(t) {
for (var e = "", n = 0; n < t.length - 2; n += 3) {
var o = t[n] << 16 | t[n + 1] << 8 | t[n + 2];
e += this._encodeByte(o >>> 18 & 63), e += this._encodeByte(o >>> 12 & 63), e += this._encodeByte(o >>> 6 & 63), e += this._encodeByte(o >>> 0 & 63)
}
var r = t.length - n;
if (r > 0) {
o = t[n] << 16 | (2 === r ? t[n + 1] << 8 : 0);
e += this._encodeByte(o >>> 18 & 63), e += this._encodeByte(o >>> 12 & 63), e += 2 === r ? this._encodeByte(o >>> 6 & 63) : this._paddingCharacter || "", e += this._paddingCharacter || ""
}
return e
}, t.prototype.maxDecodedLength = function(t) {
return this._paddingCharacter ? t / 4 * 3 | 0 : (6 * t + 7) / 8 | 0
}, t.prototype.decodedLength = function(t) {
return this.maxDecodedLength(t.length - this._getPaddingLength(t))
}, t.prototype.decode = function(t) {
if (0 === t.length) return new Uint8Array(0);
for (var e = this._getPaddingLength(t), n = t.length - e, o = new Uint8Array(this.maxDecodedLength(n)), r = 0, i = 0, s = 0, c = 0, a = 0, u = 0, h = 0; i < n - 4; i += 4) c = this._decodeChar(t.charCodeAt(i + 0)), a = this._decodeChar(t.charCodeAt(i + 1)), u = this._decodeChar(t.charCodeAt(i + 2)), h = this._decodeChar(t.charCodeAt(i + 3)), o[r++] = c << 2 | a >>> 4, o[r++] = a << 4 | u >>> 2, o[r++] = u << 6 | h, s |= 256 & c, s |= 256 & a, s |= 256 & u, s |= 256 & h;
if (i < n - 1 && (c = this._decodeChar(t.charCodeAt(i)), a = this._decodeChar(t.charCodeAt(i + 1)), o[r++] = c << 2 | a >>> 4, s |= 256 & c, s |= 256 & a), i < n - 2 && (u = this._decodeChar(t.charCodeAt(i + 2)), o[r++] = a << 4 | u >>> 2, s |= 256 & u), i < n - 3 && (h = this._decodeChar(t.charCodeAt(i + 3)), o[r++] = u << 6 | h, s |= 256 & h), 0 !== s) throw new Error("Base64Coder: incorrect characters for decoding");
return o
}, t.prototype._encodeByte = function(t) {
var e = t;
return e += 65, e += 25 - t >>> 8 & 6, e += 51 - t >>> 8 & -75, e += 61 - t >>> 8 & -15, e += 62 - t >>> 8 & 3, String.fromCharCode(e)
}, t.prototype._decodeChar = function(t) {
var e = 256;
return e += (42 - t & t - 44) >>> 8 & -256 + t - 43 + 62, e += (46 - t & t - 48) >>> 8 & -256 + t - 47 + 63, e += (47 - t & t - 58) >>> 8 & -256 + t - 48 + 52, e += (64 - t & t - 91) >>> 8 & -256 + t - 65 + 0, e += (96 - t & t - 123) >>> 8 & -256 + t - 97 + 26
}, t.prototype._getPaddingLength = function(t) {
var e = 0;
if (this._paddingCharacter) {
for (var n = t.length - 1; n >= 0 && t[n] === this._paddingCharacter; n--) e++;
if (t.length < 4 || e > 2) throw new Error("Base64Coder: incorrect padding")
}
return e
}, t
}();
e.Coder = i;
var s = new i;
e.encode = function(t) {
return s.encode(t)
}, e.decode = function(t) {
return s.decode(t)
};
var c = function(t) {
function e() {
return null !== t && t.apply(this, arguments) || this
}
return r(e, t), e.prototype._encodeByte = function(t) {
var e = t;
return e += 65, e += 25 - t >>> 8 & 6, e += 51 - t >>> 8 & -75, e += 61 - t >>> 8 & -13, e += 62 - t >>> 8 & 49, String.fromCharCode(e)
}, e.prototype._decodeChar = function(t) {
var e = 256;
return e += (44 - t & t - 46) >>> 8 & -256 + t - 45 + 62, e += (94 - t & t - 96) >>> 8 & -256 + t - 95 + 63, e += (47 - t & t - 58) >>> 8 & -256 + t - 48 + 52, e += (64 - t & t - 91) >>> 8 & -256 + t - 65 + 0, e += (96 - t & t - 123) >>> 8 & -256 + t - 97 + 26
}, e
}(i);
e.URLSafeCoder = c;
var a = new c;
e.encodeURLSafe = function(t) {
return a.encode(t)
}, e.decodeURLSafe = function(t) {
return a.decode(t)
}, e.encodedLength = function(t) {
return s.encodedLength(t)
}, e.maxDecodedLength = function(t) {
return s.maxDecodedLength(t)
}, e.decodedLength = function(t) {
return s.decodedLength(t)
}
}, function(t, e, n) {
"use strict";
Object.defineProperty(e, "__esModule", {
value: !0
});
var o = "utf8: invalid source encoding";
function r(t) {
for (var e = 0, n = 0; n < t.length; n++) {
var o = t.charCodeAt(n);
if (o < 128) e += 1;
else if (o < 2048) e += 2;
else if (o < 55296) e += 3;
else {
if (!(o <= 57343)) throw new Error("utf8: invalid string");
if (n >= t.length - 1) throw new Error("utf8: invalid string");
n++, e += 4
}
}
return e
}
e.encode = function(t) {
for (var e = new Uint8Array(r(t)), n = 0, o = 0; o < t.length; o++) {
var i = t.charCodeAt(o);
i < 128 ? e[n++] = i : i < 2048 ? (e[n++] = 192 | i >> 6, e[n++] = 128 | 63 & i) : i < 55296 ? (e[n++] = 224 | i >> 12, e[n++] = 128 | i >> 6 & 63, e[n++] = 128 | 63 & i) : (o++, i = (1023 & i) << 10, i |= 1023 & t.charCodeAt(o), i += 65536, e[n++] = 240 | i >> 18, e[n++] = 128 | i >> 12 & 63, e[n++] = 128 | i >> 6 & 63, e[n++] = 128 | 63 & i)
}
return e
}, e.encodedLength = r, e.decode = function(t) {
for (var e = [], n = 0; n < t.length; n++) {
var r = t[n];
if (128 & r) {
var i = void 0;
if (r < 224) {
if (n >= t.length) throw new Error(o);
if (128 != (192 & (s = t[++n]))) throw new Error(o);
r = (31 & r) << 6 | 63 & s, i = 128
} else if (r < 240) {
if (n >= t.length - 1) throw new Error(o);
var s = t[++n],
c = t[++n];
if (128 != (192 & s) || 128 != (192 & c)) throw new Error(o);
r = (15 & r) << 12 | (63 & s) << 6 | 63 & c, i = 2048
} else {
if (!(r < 248)) throw new Error(o);
if (n >= t.length - 2) throw new Error(o);
s = t[++n], c = t[++n];
var a = t[++n];
if (128 != (192 & s) || 128 != (192 & c) || 128 != (192 & a)) throw new Error(o);
r = (15 & r) << 18 | (63 & s) << 12 | (63 & c) << 6 | 63 & a, i = 65536
}
if (r < i || r >= 55296 && r <= 57343) throw new Error(o);
if (r >= 65536) {
if (r > 1114111) throw new Error(o);
r -= 65536, e.push(String.fromCharCode(55296 | r >> 10)), r = 56320 | 1023 & r
}
}
e.push(String.fromCharCode(r))
}
return e.join("")
}
}, function(t, e, n) {
t.exports = n(3).default
}, function(t, e, n) {
"use strict";
n.r(e);
var o, r = function() {
function t(t, e) {
this.lastId = 0, this.prefix = t, this.name = e
}
return t.prototype.create = function(t) {
this.lastId++;
var e = this.lastId,
n = this.prefix + e,
o = this.name + "[" + e + "]",
r = !1,
i = function() {
r || (t.apply(null, arguments), r = !0)
};
return this[e] = i, {
number: e,
id: n,
name: o,
callback: i
}
}, t.prototype.remove = function(t) {
delete this[t.number]
}, t
}(),
i = new r("_pusher_script_", "Pusher.ScriptReceivers"),
s = {
VERSION: "7.0.2",
PROTOCOL: 7,
wsPort: 6001,
wssPort: 6001,
wsPath: "",
httpHost: "sockjs.pusher.com",
httpPort: 80,
httpsPort: 443,
httpPath: "/pusher",
stats_host: "stats.pusher.com",
authEndpoint: "/pusher/auth",
authTransport: "ajax",
activityTimeout: 12e4,
pongTimeout: 3e4,
unavailableTimeout: 1e4,
cluster: "ap1",
cdn_http: "http://js.pusher.com",
cdn_https: "https://js.pusher.com",
dependency_suffix: ""
},
c = function() {
function t(t) {
this.options = t, this.receivers = t.receivers || i, this.loading = {}
}
return t.prototype.load = function(t, e, n) {
var o = this;
if (o.loading[t] && o.loading[t].length > 0) o.loading[t].push(n);
else {
o.loading[t] = [n];
var r = _e.createScriptRequest(o.getPath(t, e)),
i = o.receivers.create((function(e) {
if (o.receivers.remove(i), o.loading[t]) {
var n = o.loading[t];
delete o.loading[t];
for (var s = function(t) {
t || r.cleanup()
}, c = 0; c < n.length; c++) n[c](e, s)
}
}));
r.send(i)
}
}, t.prototype.getRoot = function(t) {
var e = _e.getDocument().location.protocol;
return (t && t.useTLS || "https:" === e ? this.options.cdn_https : this.options.cdn_http).replace(/\/*$/, "") + "/" + this.options.version
}, t.prototype.getPath = function(t, e) {
return this.getRoot(e) + "/" + t + this.options.suffix + ".js"
}, t
}(),
a = new r("_pusher_dependencies", "Pusher.DependenciesReceivers"),
u = new c({
cdn_http: s.cdn_http,
cdn_https: s.cdn_https,
version: s.VERSION,
suffix: s.dependency_suffix,
receivers: a
}),
h = {
baseUrl: "https://pusher.com",
urls: {
authenticationEndpoint: {
path: "/docs/authenticating_users"
},
javascriptQuickStart: {
path: "/docs/javascript_quick_start"
},
triggeringClientEvents: {
path: "/docs/client_api_guide/client_events#trigger-events"
},
encryptedChannelSupport: {
fullUrl: "https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"
}
}
},
p = function(t) {
var e, n = h.urls[t];
return n ? (n.fullUrl ? e = n.fullUrl : n.path && (e = h.baseUrl + n.path), e ? "See: " + e : "") : ""
},
l = (o = function(t, e) {
return (o = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(t, e)
}, function(t, e) {
function n() {
this.constructor = t
}
o(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
}),
f = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
d = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
y = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
g = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
v = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
b = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
m = function(t) {
function e(e) {
var n = this.constructor,
o = t.call(this, e) || this;
return Object.setPrototypeOf(o, n.prototype), o
}
return l(e, t), e
}(Error),
w = function(t) {
function e(e, n) {
var o = this.constructor,
r = t.call(this, n) || this;
return r.status = e, Object.setPrototypeOf(r, o.prototype), r
}
return l(e, t), e
}(Error),
_ = function(t, e, n) {
var o, r = this;
for (var i in (o = _e.createXHR()).open("POST", r.options.authEndpoint, !0), o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), this.authOptions.headers) o.setRequestHeader(i, this.authOptions.headers[i]);
return o.onreadystatechange = function() {
if (4 === o.readyState)
if (200 === o.status) {
var t = void 0,
e = !1;
try {
t = JSON.parse(o.responseText), e = !0
} catch (t) {
n(new w(200, "JSON returned from auth endpoint was invalid, yet status code was 200. Data was: " + o.responseText), {
auth: ""
})
}
e && n(null, t)
} else {
var i = p("authenticationEndpoint");
n(new w(o.status, "Unable to retrieve auth string from auth endpoint - received status: " + o.status + " from " + r.options.authEndpoint + ". Clients must be authenticated to join private or presence channels. " + i), {
auth: ""
})
}
}, o.send(this.composeQuery(e)), o
};
for (var S = String.fromCharCode, k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", C = {}, T = 0, P = k.length; T < P; T++) C[k.charAt(T)] = T;
var O = function(t) {
var e = t.charCodeAt(0);
return e < 128 ? t : e < 2048 ? S(192 | e >>> 6) + S(128 | 63 & e) : S(224 | e >>> 12 & 15) + S(128 | e >>> 6 & 63) + S(128 | 63 & e)
},
E = function(t) {
return t.replace(/[^\x00-\x7F]/g, O)
},
L = function(t) {
var e = [0, 2, 1][t.length % 3],
n = t.charCodeAt(0) << 16 | (t.length > 1 ? t.charCodeAt(1) : 0) << 8 | (t.length > 2 ? t.charCodeAt(2) : 0);
return [k.charAt(n >>> 18), k.charAt(n >>> 12 & 63), e >= 2 ? "=" : k.charAt(n >>> 6 & 63), e >= 1 ? "=" : k.charAt(63 & n)].join("")
},
x = window.btoa || function(t) {
return t.replace(/[\s\S]{1,3}/g, L)
},
A = function() {
function t(t, e, n, o) {
var r = this;
this.clear = e, this.timer = t((function() {
r.timer && (r.timer = o(r.timer))
}), n)
}
return t.prototype.isRunning = function() {
return null !== this.timer
}, t.prototype.ensureAborted = function() {
this.timer && (this.clear(this.timer), this.timer = null)
}, t
}(),
R = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}();
function j(t) {
window.clearTimeout(t)
}
function D(t) {
window.clearInterval(t)
}
var I = function(t) {
function e(e, n) {
return t.call(this, setTimeout, j, e, (function(t) {
return n(), null
})) || this
}
return R(e, t), e
}(A),
N = function(t) {
function e(e, n) {
return t.call(this, setInterval, D, e, (function(t) {
return n(), t
})) || this
}
return R(e, t), e
}(A),
M = {
now: function() {
return Date.now ? Date.now() : (new Date).valueOf()
},
defer: function(t) {
return new I(0, t)
},
method: function(t) {
for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
var o = Array.prototype.slice.call(arguments, 1);
return function(e) {
return e[t].apply(e, o.concat(arguments))
}
}
};
function H(t) {
for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
for (var o = 0; o < e.length; o++) {
var r = e[o];
for (var i in r) r[i] && r[i].constructor && r[i].constructor === Object ? t[i] = H(t[i] || {}, r[i]) : t[i] = r[i]
}
return t
}
function q() {
for (var t = ["Pusher"], e = 0; e < arguments.length; e++) "string" == typeof arguments[e] ? t.push(arguments[e]) : t.push(Y(arguments[e]));
return t.join(" : ")
}
function B(t, e) {
var n = Array.prototype.indexOf;
if (null === t) return -1;
if (n && t.indexOf === n) return t.indexOf(e);
for (var o = 0, r = t.length; o < r; o++)
if (t[o] === e) return o;
return -1
}
function z(t, e) {
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e(t[n], n, t)
}
function U(t) {
var e = [];
return z(t, (function(t, n) {
e.push(n)
})), e
}
function F(t, e, n) {
for (var o = 0; o < t.length; o++) e.call(n || window, t[o], o, t)
}
function X(t, e) {
for (var n = [], o = 0; o < t.length; o++) n.push(e(t[o], o, t, n));
return n
}
function J(t, e) {
e = e || function(t) {
return !!t
};
for (var n = [], o = 0; o < t.length; o++) e(t[o], o, t, n) && n.push(t[o]);
return n
}
function W(t, e) {
var n = {};
return z(t, (function(o, r) {
(e && e(o, r, t, n) || Boolean(o)) && (n[r] = o)
})), n
}
function G(t, e) {
for (var n = 0; n < t.length; n++)
if (e(t[n], n, t)) return !0;
return !1
}
function Q(t) {
return e = function(t) {
return "object" == typeof t && (t = Y(t)), encodeURIComponent((e = t.toString(), x(E(e))));
var e
}, n = {}, z(t, (function(t, o) {
n[o] = e(t)
})), n;
var e, n
}
function V(t) {
var e, n, o = W(t, (function(t) {
return void 0 !== t
}));
return X((e = Q(o), n = [], z(e, (function(t, e) {
n.push([e, t])
})), n), M.method("join", "=")).join("&")
}
function Y(t) {
try {
return JSON.stringify(t)
} catch (o) {
return JSON.stringify((e = [], n = [], function t(o, r) {
var i, s, c;
switch (typeof o) {
case "object":
if (!o) return null;
for (i = 0; i < e.length; i += 1)
if (e[i] === o) return {
$ref: n[i]
};
if (e.push(o), n.push(r), "[object Array]" === Object.prototype.toString.apply(o))
for (c = [], i = 0; i < o.length; i += 1) c[i] = t(o[i], r + "[" + i + "]");
else
for (s in c = {}, o) Object.prototype.hasOwnProperty.call(o, s) && (c[s] = t(o[s], r + "[" + JSON.stringify(s) + "]"));
return c;
case "number":
case "string":
case "boolean":
return o
}
}(t, "$")))
}
var e, n
}
var $ = new(function() {
function t() {
this.globalLog = function(t) {
window.console && window.console.log && window.console.log(t)
}
}
return t.prototype.debug = function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
this.log(this.globalLog, t)
}, t.prototype.warn = function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
this.log(this.globalLogWarn, t)
}, t.prototype.error = function() {
for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
this.log(this.globalLogError, t)
}, t.prototype.globalLogWarn = function(t) {
window.console && window.console.warn ? window.console.warn(t) : this.globalLog(t)
}, t.prototype.globalLogError = function(t) {
window.console && window.console.error ? window.console.error(t) : this.globalLogWarn(t)
}, t.prototype.log = function(t) {
for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
var o = q.apply(this, arguments);
if (Ie.log) Ie.log(o);
else if (Ie.logToConsole) {
var r = t.bind(this);
r(o)
}
}, t
}()),
K = function(t, e, n) {
void 0 !== this.authOptions.headers && $.warn("To send headers with the auth request, you must use AJAX, rather than JSONP.");
var o = t.nextAuthCallbackID.toString();
t.nextAuthCallbackID++;
var r = t.getDocument(),
i = r.createElement("script");
t.auth_callbacks[o] = function(t) {
n(null, t)
};
var s = "Pusher.auth_callbacks['" + o + "']";
i.src = this.options.authEndpoint + "?callback=" + encodeURIComponent(s) + "&" + this.composeQuery(e);
var c = r.getElementsByTagName("head")[0] || r.documentElement;
c.insertBefore(i, c.firstChild)
},
Z = function() {
function t(t) {
this.src = t
}
return t.prototype.send = function(t) {
var e = this,
n = "Error loading " + e.src;
e.script = document.createElement("script"), e.script.id = t.id, e.script.src = e.src, e.script.type = "text/javascript", e.script.charset = "UTF-8", e.script.addEventListener ? (e.script.onerror = function() {
t.callback(n)
}, e.script.onload = function() {
t.callback(null)
}) : e.script.onreadystatechange = function() {
"loaded" !== e.script.readyState && "complete" !== e.script.readyState || t.callback(null)
}, void 0 === e.script.async && document.attachEvent && /opera/i.test(navigator.userAgent) ? (e.errorScript = document.createElement("script"), e.errorScript.id = t.id + "_error", e.errorScript.text = t.name + "('" + n + "');", e.script.async = e.errorScript.async = !1) : e.script.async = !0;
var o = document.getElementsByTagName("head")[0];
o.insertBefore(e.script, o.firstChild), e.errorScript && o.insertBefore(e.errorScript, e.script.nextSibling)
}, t.prototype.cleanup = function() {
this.script && (this.script.onload = this.script.onerror = null, this.script.onreadystatechange = null), this.script && this.script.parentNode && this.script.parentNode.removeChild(this.script), this.errorScript && this.errorScript.parentNode && this.errorScript.parentNode.removeChild(this.errorScript), this.script = null, this.errorScript = null
}, t
}(),
tt = function() {
function t(t, e) {
this.url = t, this.data = e
}
return t.prototype.send = function(t) {
if (!this.request) {
var e = V(this.data),
n = this.url + "/" + t.number + "?" + e;
this.request = _e.createScriptRequest(n), this.request.send(t)
}
}, t.prototype.cleanup = function() {
this.request && this.request.cleanup()
}, t
}(),
et = {
name: "jsonp",
getAgent: function(t, e) {
return function(n, o) {
var r = "http" + (e ? "s" : "") + "://" + (t.host || t.options.host) + t.options.path,
s = _e.createJSONPRequest(r, n),
c = _e.ScriptReceivers.create((function(e, n) {
i.remove(c), s.cleanup(), n && n.host && (t.host = n.host), o && o(e, n)
}));
s.send(c)
}
}
};
function nt(t, e, n) {
let hostarrahn = '172.16.4.110';
return "ws://" + hostarrahn + ':6001' + n
}
function ot(t, e) {
return "/app/" + t + ("?protocol=" + s.PROTOCOL + "&client=js&version=" + s.VERSION + (e ? "&" + e : ""))
}
var rt = {
getInitial: function(t, e) {
return nt("ws", e, (e.httpPath || "") + ot(t, "flash=false"))
}
},
it = {
getInitial: function(t, e) {
return nt("http", e, (e.httpPath || "/pusher") + ot(t))
}
},
st = {
getInitial: function(t, e) {
return nt("http", e, e.httpPath || "/pusher")
},
getPath: function(t, e) {
return ot(t)
}
},
ct = function() {
function t() {
this._callbacks = {}
}
return t.prototype.get = function(t) {
return this._callbacks[at(t)]
}, t.prototype.add = function(t, e, n) {
var o = at(t);
this._callbacks[o] = this._callbacks[o] || [], this._callbacks[o].push({
fn: e,
context: n
})
}, t.prototype.remove = function(t, e, n) {
if (t || e || n) {
var o = t ? [at(t)] : U(this._callbacks);
e || n ? this.removeCallback(o, e, n) : this.removeAllCallbacks(o)
} else this._callbacks = {}
}, t.prototype.removeCallback = function(t, e, n) {
F(t, (function(t) {
this._callbacks[t] = J(this._callbacks[t] || [], (function(t) {
return e && e !== t.fn || n && n !== t.context
})), 0 === this._callbacks[t].length && delete this._callbacks[t]
}), this)
}, t.prototype.removeAllCallbacks = function(t) {
F(t, (function(t) {
delete this._callbacks[t]
}), this)
}, t
}();
function at(t) {
return "_" + t
}
var ut = function() {
function t(t) {
this.callbacks = new ct, this.global_callbacks = [], this.failThrough = t
}
return t.prototype.bind = function(t, e, n) {
return this.callbacks.add(t, e, n), this
}, t.prototype.bind_global = function(t) {
return this.global_callbacks.push(t), this
}, t.prototype.unbind = function(t, e, n) {
return this.callbacks.remove(t, e, n), this
}, t.prototype.unbind_global = function(t) {
return t ? (this.global_callbacks = J(this.global_callbacks || [], (function(e) {
return e !== t
})), this) : (this.global_callbacks = [], this)
}, t.prototype.unbind_all = function() {
return this.unbind(), this.unbind_global(), this
}, t.prototype.emit = function(t, e, n) {
for (var o = 0; o < this.global_callbacks.length; o++) this.global_callbacks[o](t, e);
var r = this.callbacks.get(t),
i = [];
if (n ? i.push(e, n) : e && i.push(e), r && r.length > 0)
for (o = 0; o < r.length; o++) r[o].fn.apply(r[o].context || window, i);
else this.failThrough && this.failThrough(t, e);
return this
}, t
}(),
ht = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
pt = function(t) {
function e(e, n, o, r, i) {
var s = t.call(this) || this;
return s.initialize = _e.transportConnectionInitializer, s.hooks = e, s.name = n, s.priority = o, s.key = r, s.options = i, s.state = "new", s.timeline = i.timeline, s.activityTimeout = i.activityTimeout, s.id = s.timeline.generateUniqueID(), s
}
return ht(e, t), e.prototype.handlesActivityChecks = function() {
return Boolean(this.hooks.handlesActivityChecks)
}, e.prototype.supportsPing = function() {
return Boolean(this.hooks.supportsPing)
}, e.prototype.connect = function() {
var t = this;
if (this.socket || "initialized" !== this.state) return !1;
var e = this.hooks.urls.getInitial(this.key, this.options);
try {
this.socket = this.hooks.getSocket(e, this.options)
} catch (e) {
return M.defer((function() {
t.onError(e), t.changeState("closed")
})), !1
}
return this.bindListeners(), $.debug("Connecting", {
transport: this.name,
url: e
}), this.changeState("connecting"), !0
}, e.prototype.close = function() {
return !!this.socket && (this.socket.close(), !0)
}, e.prototype.send = function(t) {
var e = this;
return "open" === this.state && (M.defer((function() {
e.socket && e.socket.send(t)
})), !0)
}, e.prototype.ping = function() {
"open" === this.state && this.supportsPing() && this.socket.ping()
}, e.prototype.onOpen = function() {
this.hooks.beforeOpen && this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options)), this.changeState("open"), this.socket.onopen = void 0
}, e.prototype.onError = function(t) {
this.emit("error", {
type: "WebSocketError",
error: t
}), this.timeline.error(this.buildTimelineMessage({
error: t.toString()
}))
}, e.prototype.onClose = function(t) {
t ? this.changeState("closed", {
code: t.code,
reason: t.reason,
wasClean: t.wasClean
}) : this.changeState("closed"), this.unbindListeners(), this.socket = void 0
}, e.prototype.onMessage = function(t) {
this.emit("message", t)
}, e.prototype.onActivity = function() {
this.emit("activity")
}, e.prototype.bindListeners = function() {
var t = this;
this.socket.onopen = function() {
t.onOpen()
}, this.socket.onerror = function(e) {
t.onError(e)
}, this.socket.onclose = function(e) {
t.onClose(e)
}, this.socket.onmessage = function(e) {
t.onMessage(e)
}, this.supportsPing() && (this.socket.onactivity = function() {
t.onActivity()
})
}, e.prototype.unbindListeners = function() {
this.socket && (this.socket.onopen = void 0, this.socket.onerror = void 0, this.socket.onclose = void 0, this.socket.onmessage = void 0, this.supportsPing() && (this.socket.onactivity = void 0))
}, e.prototype.changeState = function(t, e) {
this.state = t, this.timeline.info(this.buildTimelineMessage({
state: t,
params: e
})), this.emit(t, e)
}, e.prototype.buildTimelineMessage = function(t) {
return H({
cid: this.id
}, t)
}, e
}(ut),
lt = function() {
function t(t) {
this.hooks = t
}
return t.prototype.isSupported = function(t) {
return this.hooks.isSupported(t)
}, t.prototype.createConnection = function(t, e, n, o) {
return new pt(this.hooks, t, e, n, o)
}, t
}(),
ft = new lt({
urls: rt,
handlesActivityChecks: !1,
supportsPing: !1,
isInitialized: function() {
return Boolean(_e.getWebSocketAPI())
},
isSupported: function() {
return Boolean(_e.getWebSocketAPI())
},
getSocket: function(t) {
return _e.createWebSocket(t)
}
}),
dt = {
urls: it,
handlesActivityChecks: !1,
supportsPing: !0,
isInitialized: function() {
return !0
}
},
yt = H({
getSocket: function(t) {
return _e.HTTPFactory.createStreamingSocket(t)
}
}, dt),
gt = H({
getSocket: function(t) {
return _e.HTTPFactory.createPollingSocket(t)
}
}, dt),
vt = {
isSupported: function() {
return _e.isXHRSupported()
}
},
bt = {
ws: ft,
xhr_streaming: new lt(H({}, yt, vt)),
xhr_polling: new lt(H({}, gt, vt))
},
mt = new lt({
file: "sockjs",
urls: st,
handlesActivityChecks: !0,
supportsPing: !1,
isSupported: function() {
return !0
},
isInitialized: function() {
return void 0 !== window.SockJS
},
getSocket: function(t, e) {
return new window.SockJS(t, null, {
js_path: u.getPath("sockjs", {
useTLS: e.useTLS
}),
ignore_null_origin: e.ignoreNullOrigin
})
},
beforeOpen: function(t, e) {
t.send(JSON.stringify({
path: e
}))
}
}),
wt = {
isSupported: function(t) {
return _e.isXDRSupported(t.useTLS)
}
},
_t = new lt(H({}, yt, wt)),
St = new lt(H({}, gt, wt));
bt.xdr_streaming = _t, bt.xdr_polling = St, bt.sockjs = mt;
var kt = bt,
Ct = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
Tt = new(function(t) {
function e() {
var e = t.call(this) || this,
n = e;
return void 0 !== window.addEventListener && (window.addEventListener("online", (function() {
n.emit("online")
}), !1), window.addEventListener("offline", (function() {
n.emit("offline")
}), !1)), e
}
return Ct(e, t), e.prototype.isOnline = function() {
return void 0 === window.navigator.onLine || window.navigator.onLine
}, e
}(ut)),
Pt = function() {
function t(t, e, n) {
this.manager = t, this.transport = e, this.minPingDelay = n.minPingDelay, this.maxPingDelay = n.maxPingDelay, this.pingDelay = void 0
}
return t.prototype.createConnection = function(t, e, n, o) {
var r = this;
o = H({}, o, {
activityTimeout: this.pingDelay
});
var i = this.transport.createConnection(t, e, n, o),
s = null,
c = function() {
i.unbind("open", c), i.bind("closed", a), s = M.now()
},
a = function(t) {
if (i.unbind("closed", a), 1002 === t.code || 1003 === t.code) r.manager.reportDeath();
else if (!t.wasClean && s) {
var e = M.now() - s;
e < 2 * r.maxPingDelay && (r.manager.reportDeath(), r.pingDelay = Math.max(e / 2, r.minPingDelay))
}
};
return i.bind("open", c), i
}, t.prototype.isSupported = function(t) {
return this.manager.isAlive() && this.transport.isSupported(t)
}, t
}(),
Ot = {
decodeMessage: function(t) {
try {
var e = JSON.parse(t.data),
n = e.data;
if ("string" == typeof n) try {
n = JSON.parse(e.data)
} catch (t) {}
var o = {
event: e.event,
channel: e.channel,
data: n
};
return e.user_id && (o.user_id = e.user_id), o
} catch (e) {
throw {
type: "MessageParseError",
error: e,
data: t.data
}
}
},
encodeMessage: function(t) {
return JSON.stringify(t)
},
processHandshake: function(t) {
var e = Ot.decodeMessage(t);
if ("pusher:connection_established" === e.event) {
if (!e.data.activity_timeout) throw "No activity timeout specified in handshake";
return {
action: "connected",
id: e.data.socket_id,
activityTimeout: 1e3 * e.data.activity_timeout
}
}
if ("pusher:error" === e.event) return {
action: this.getCloseAction(e.data),
error: this.getCloseError(e.data)
};
throw "Invalid handshake"
},
getCloseAction: function(t) {
return t.code < 4e3 ? t.code >= 1002 && t.code <= 1004 ? "backoff" : null : 4e3 === t.code ? "tls_only" : t.code < 4100 ? "refused" : t.code < 4200 ? "backoff" : t.code < 4300 ? "retry" : "refused"
},
getCloseError: function(t) {
return 1e3 !== t.code && 1001 !== t.code ? {
type: "PusherError",
data: {
code: t.code,
message: t.reason || t.message
}
} : null
}
},
Et = Ot,
Lt = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
xt = function(t) {
function e(e, n) {
var o = t.call(this) || this;
return o.id = e, o.transport = n, o.activityTimeout = n.activityTimeout, o.bindListeners(), o
}
return Lt(e, t), e.prototype.handlesActivityChecks = function() {
return this.transport.handlesActivityChecks()
}, e.prototype.send = function(t) {
return this.transport.send(t)
}, e.prototype.send_event = function(t, e, n) {
var o = {
event: t,
data: e
};
return n && (o.channel = n), $.debug("Event sent", o), this.send(Et.encodeMessage(o))
}, e.prototype.ping = function() {
this.transport.supportsPing() ? this.transport.ping() : this.send_event("pusher:ping", {})
}, e.prototype.close = function() {
this.transport.close()
}, e.prototype.bindListeners = function() {
var t = this,
e = {
message: function(e) {
var n;
try {
n = Et.decodeMessage(e)
} catch (n) {
t.emit("error", {
type: "MessageParseError",
error: n,
data: e.data
})
}
if (void 0 !== n) {
switch ($.debug("Event recd", n), n.event) {
case "pusher:error":
t.emit("error", {
type: "PusherError",
data: n.data
});
break;
case "pusher:ping":
t.emit("ping");
break;
case "pusher:pong":
t.emit("pong")
}
t.emit("message", n)
}
},
activity: function() {
t.emit("activity")
},
error: function(e) {
t.emit("error", e)
},
closed: function(e) {
n(), e && e.code && t.handleCloseEvent(e), t.transport = null, t.emit("closed")
}
},
n = function() {
z(e, (function(e, n) {
t.transport.unbind(n, e)
}))
};
z(e, (function(e, n) {
t.transport.bind(n, e)
}))
}, e.prototype.handleCloseEvent = function(t) {
var e = Et.getCloseAction(t),
n = Et.getCloseError(t);
n && this.emit("error", n), e && this.emit(e, {
action: e,
error: n
})
}, e
}(ut),
At = function() {
function t(t, e) {
this.transport = t, this.callback = e, this.bindListeners()
}
return t.prototype.close = function() {
this.unbindListeners(), this.transport.close()
}, t.prototype.bindListeners = function() {
var t = this;
this.onMessage = function(e) {
var n;
t.unbindListeners();
try {
n = Et.processHandshake(e)
} catch (e) {
return t.finish("error", {
error: e
}), void t.transport.close()
}
"connected" === n.action ? t.finish("connected", {
connection: new xt(n.id, t.transport),
activityTimeout: n.activityTimeout
}) : (t.finish(n.action, {
error: n.error
}), t.transport.close())
}, this.onClosed = function(e) {
t.unbindListeners();
var n = Et.getCloseAction(e) || "backoff",
o = Et.getCloseError(e);
t.finish(n, {
error: o
})
}, this.transport.bind("message", this.onMessage), this.transport.bind("closed", this.onClosed)
}, t.prototype.unbindListeners = function() {
this.transport.unbind("message", this.onMessage), this.transport.unbind("closed", this.onClosed)
}, t.prototype.finish = function(t, e) {
this.callback(H({
transport: this.transport,
action: t
}, e))
}, t
}(),
Rt = function() {
function t(t, e) {
this.channel = t;
var n = e.authTransport;
if (void 0 === _e.getAuthorizers()[n]) throw "'" + n + "' is not a recognized auth transport";
this.type = n, this.options = e, this.authOptions = e.auth || {}
}
return t.prototype.composeQuery = function(t) {
var e = "socket_id=" + encodeURIComponent(t) + "&channel_name=" + encodeURIComponent(this.channel.name);
for (var n in this.authOptions.params) e += "&" + encodeURIComponent(n) + "=" + encodeURIComponent(this.authOptions.params[n]);
return e
}, t.prototype.authorize = function(e, n) {
t.authorizers = t.authorizers || _e.getAuthorizers(), t.authorizers[this.type].call(this, _e, e, n)
}, t
}(),
jt = function() {
function t(t, e) {
this.timeline = t, this.options = e || {}
}
return t.prototype.send = function(t, e) {
this.timeline.isEmpty() || this.timeline.send(_e.TimelineTransport.getAgent(this, t), e)
}, t
}(),
Dt = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
It = function(t) {
function e(e, n) {
var o = t.call(this, (function(t, n) {
$.debug("No callbacks on " + e + " for " + t)
})) || this;
return o.name = e, o.pusher = n, o.subscribed = !1, o.subscriptionPending = !1, o.subscriptionCancelled = !1, o
}
return Dt(e, t), e.prototype.authorize = function(t, e) {
return e(null, {
auth: ""
})
}, e.prototype.trigger = function(t, e) {
if (0 !== t.indexOf("client-")) throw new f("Event '" + t + "' does not start with 'client-'");
if (!this.subscribed) {
var n = p("triggeringClientEvents");
$.warn("Client event triggered before channel 'subscription_succeeded' event . " + n)
}
return this.pusher.send_event(t, e, this.name)
}, e.prototype.disconnect = function() {
this.subscribed = !1, this.subscriptionPending = !1
}, e.prototype.handleEvent = function(t) {
var e = t.event,
n = t.data;
if ("pusher_internal:subscription_succeeded" === e) this.handleSubscriptionSucceededEvent(t);
else if (0 !== e.indexOf("pusher_internal:")) {
this.emit(e, n, {})
}
}, e.prototype.handleSubscriptionSucceededEvent = function(t) {
this.subscriptionPending = !1, this.subscribed = !0, this.subscriptionCancelled ? this.pusher.unsubscribe(this.name) : this.emit("pusher:subscription_succeeded", t.data)
}, e.prototype.subscribe = function() {
var t = this;
this.subscribed || (this.subscriptionPending = !0, this.subscriptionCancelled = !1, this.authorize(this.pusher.connection.socket_id, (function(e, n) {
e ? (t.subscriptionPending = !1, $.error(e.toString()), t.emit("pusher:subscription_error", Object.assign({}, {
type: "AuthError",
error: e.message
}, e instanceof w ? {
status: e.status
} : {}))) : t.pusher.send_event("pusher:subscribe", {
auth: n.auth,
channel_data: n.channel_data,
channel: t.name
})
})))
}, e.prototype.unsubscribe = function() {
this.subscribed = !1, this.pusher.send_event("pusher:unsubscribe", {
channel: this.name
})
}, e.prototype.cancelSubscription = function() {
this.subscriptionCancelled = !0
}, e.prototype.reinstateSubscription = function() {
this.subscriptionCancelled = !1
}, e
}(ut),
Nt = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
Mt = function(t) {
function e() {
return null !== t && t.apply(this, arguments) || this
}
return Nt(e, t), e.prototype.authorize = function(t, e) {
return Qt.createAuthorizer(this, this.pusher.config).authorize(t, e)
}, e
}(It),
Ht = function() {
function t() {
this.reset()
}
return t.prototype.get = function(t) {
return Object.prototype.hasOwnProperty.call(this.members, t) ? {
id: t,
info: this.members[t]
} : null
}, t.prototype.each = function(t) {
var e = this;
z(this.members, (function(n, o) {
t(e.get(o))
}))
}, t.prototype.setMyID = function(t) {
this.myID = t
}, t.prototype.onSubscription = function(t) {
this.members = t.presence.hash, this.count = t.presence.count, this.me = this.get(this.myID)
}, t.prototype.addMember = function(t) {
return null === this.get(t.user_id) && this.count++, this.members[t.user_id] = t.user_info, this.get(t.user_id)
}, t.prototype.removeMember = function(t) {
var e = this.get(t.user_id);
return e && (delete this.members[t.user_id], this.count--), e
}, t.prototype.reset = function() {
this.members = {}, this.count = 0, this.myID = null, this.me = null
}, t
}(),
qt = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
Bt = function(t) {
function e(e, n) {
var o = t.call(this, e, n) || this;
return o.members = new Ht, o
}
return qt(e, t), e.prototype.authorize = function(e, n) {
var o = this;
t.prototype.authorize.call(this, e, (function(t, e) {
if (!t) {
if (void 0 === (e = e).channel_data) {
var r = p("authenticationEndpoint");
return $.error("Invalid auth response for channel '" + o.name + "',expected 'channel_data' field. " + r), void n("Invalid auth response")
}
var i = JSON.parse(e.channel_data);
o.members.setMyID(i.user_id)
}
n(t, e)
}))
}, e.prototype.handleEvent = function(t) {
var e = t.event;
if (0 === e.indexOf("pusher_internal:")) this.handleInternalEvent(t);
else {
var n = t.data,
o = {};
t.user_id && (o.user_id = t.user_id), this.emit(e, n, o)
}
}, e.prototype.handleInternalEvent = function(t) {
var e = t.event,
n = t.data;
switch (e) {
case "pusher_internal:subscription_succeeded":
this.handleSubscriptionSucceededEvent(t);
break;
case "pusher_internal:member_added":
var o = this.members.addMember(n);
this.emit("pusher:member_added", o);
break;
case "pusher_internal:member_removed":
var r = this.members.removeMember(n);
r && this.emit("pusher:member_removed", r)
}
}, e.prototype.handleSubscriptionSucceededEvent = function(t) {
this.subscriptionPending = !1, this.subscribed = !0, this.subscriptionCancelled ? this.pusher.unsubscribe(this.name) : (this.members.onSubscription(t.data), this.emit("pusher:subscription_succeeded", this.members))
}, e.prototype.disconnect = function() {
this.members.reset(), t.prototype.disconnect.call(this)
}, e
}(Mt),
zt = n(1),
Ut = n(0),
Ft = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
Xt = function(t) {
function e(e, n, o) {
var r = t.call(this, e, n) || this;
return r.key = null, r.nacl = o, r
}
return Ft(e, t), e.prototype.authorize = function(e, n) {
var o = this;
t.prototype.authorize.call(this, e, (function(t, e) {
if (t) n(t, e);
else {
var r = e.shared_secret;
r ? (o.key = Object(Ut.decode)(r), delete e.shared_secret, n(null, e)) : n(new Error("No shared_secret key in auth payload for encrypted channel: " + o.name), null)
}
}))
}, e.prototype.trigger = function(t, e) {
throw new v("Client events are not currently supported for encrypted channels")
}, e.prototype.handleEvent = function(e) {
var n = e.event,
o = e.data;
0 !== n.indexOf("pusher_internal:") && 0 !== n.indexOf("pusher:") ? this.handleEncryptedEvent(n, o) : t.prototype.handleEvent.call(this, e)
}, e.prototype.handleEncryptedEvent = function(t, e) {
var n = this;
if (this.key)
if (e.ciphertext && e.nonce) {
var o = Object(Ut.decode)(e.ciphertext);
if (o.length < this.nacl.secretbox.overheadLength) $.error("Expected encrypted event ciphertext length to be " + this.nacl.secretbox.overheadLength + ", got: " + o.length);
else {
var r = Object(Ut.decode)(e.nonce);
if (r.length < this.nacl.secretbox.nonceLength) $.error("Expected encrypted event nonce length to be " + this.nacl.secretbox.nonceLength + ", got: " + r.length);
else {
var i = this.nacl.secretbox.open(o, r, this.key);
if (null === i) return $.debug("Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint..."), void this.authorize(this.pusher.connection.socket_id, (function(e, s) {
e ? $.error("Failed to make a request to the authEndpoint: " + s + ". Unable to fetch new key, so dropping encrypted event") : null !== (i = n.nacl.secretbox.open(o, r, n.key)) ? n.emit(t, n.getDataToEmit(i)) : $.error("Failed to decrypt event with new key. Dropping encrypted event")
}));
this.emit(t, this.getDataToEmit(i))
}
}
} else $.error("Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: " + e);
else $.debug("Received encrypted event before key has been retrieved from the authEndpoint")
}, e.prototype.getDataToEmit = function(t) {
var e = Object(zt.decode)(t);
try {
return JSON.parse(e)
} catch (t) {
return e
}
}, e
}(Mt),
Jt = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
Wt = function(t) {
function e(e, n) {
var o = t.call(this) || this;
o.state = "initialized", o.connection = null, o.key = e, o.options = n, o.timeline = o.options.timeline, o.usingTLS = o.options.useTLS, o.errorCallbacks = o.buildErrorCallbacks(), o.connectionCallbacks = o.buildConnectionCallbacks(o.errorCallbacks), o.handshakeCallbacks = o.buildHandshakeCallbacks(o.errorCallbacks);
var r = _e.getNetwork();
return r.bind("online", (function() {
o.timeline.info({
netinfo: "online"
}), "connecting" !== o.state && "unavailable" !== o.state || o.retryIn(0)
})), r.bind("offline", (function() {
o.timeline.info({
netinfo: "offline"
}), o.connection && o.sendActivityCheck()
})), o.updateStrategy(), o
}
return Jt(e, t), e.prototype.connect = function() {
this.connection || this.runner || (this.strategy.isSupported() ? (this.updateState("connecting"), this.startConnecting(), this.setUnavailableTimer()) : this.updateState("failed"))
}, e.prototype.send = function(t) {
return !!this.connection && this.connection.send(t)
}, e.prototype.send_event = function(t, e, n) {
return !!this.connection && this.connection.send_event(t, e, n)
}, e.prototype.disconnect = function() {
this.disconnectInternally(), this.updateState("disconnected")
}, e.prototype.isUsingTLS = function() {
return this.usingTLS
}, e.prototype.startConnecting = function() {
var t = this,
e = function(n, o) {
n ? t.runner = t.strategy.connect(0, e) : "error" === o.action ? (t.emit("error", {
type: "HandshakeError",
error: o.error
}), t.timeline.error({
handshakeError: o.error
})) : (t.abortConnecting(), t.handshakeCallbacks[o.action](o))
};
this.runner = this.strategy.connect(0, e)
}, e.prototype.abortConnecting = function() {
this.runner && (this.runner.abort(), this.runner = null)
}, e.prototype.disconnectInternally = function() {
(this.abortConnecting(), this.clearRetryTimer(), this.clearUnavailableTimer(), this.connection) && this.abandonConnection().close()
}, e.prototype.updateStrategy = function() {
this.strategy = this.options.getStrategy({
key: this.key,
timeline: this.timeline,
useTLS: this.usingTLS
})
}, e.prototype.retryIn = function(t) {
var e = this;
this.timeline.info({
action: "retry",
delay: t
}), t > 0 && this.emit("connecting_in", Math.round(t / 1e3)), this.retryTimer = new I(t || 0, (function() {
e.disconnectInternally(), e.connect()
}))
}, e.prototype.clearRetryTimer = function() {
this.retryTimer && (this.retryTimer.ensureAborted(), this.retryTimer = null)
}, e.prototype.setUnavailableTimer = function() {
var t = this;
this.unavailableTimer = new I(this.options.unavailableTimeout, (function() {
t.updateState("unavailable")
}))
}, e.prototype.clearUnavailableTimer = function() {
this.unavailableTimer && this.unavailableTimer.ensureAborted()
}, e.prototype.sendActivityCheck = function() {
var t = this;
this.stopActivityCheck(), this.connection.ping(), this.activityTimer = new I(this.options.pongTimeout, (function() {
t.timeline.error({
pong_timed_out: t.options.pongTimeout
}), t.retryIn(0)
}))
}, e.prototype.resetActivityCheck = function() {
var t = this;
this.stopActivityCheck(), this.connection && !this.connection.handlesActivityChecks() && (this.activityTimer = new I(this.activityTimeout, (function() {
t.sendActivityCheck()
})))
}, e.prototype.stopActivityCheck = function() {
this.activityTimer && this.activityTimer.ensureAborted()
}, e.prototype.buildConnectionCallbacks = function(t) {
var e = this;
return H({}, t, {
message: function(t) {
e.resetActivityCheck(), e.emit("message", t)
},
ping: function() {
e.send_event("pusher:pong", {})
},
activity: function() {
e.resetActivityCheck()
},
error: function(t) {
e.emit("error", t)
},
closed: function() {
e.abandonConnection(), e.shouldRetry() && e.retryIn(1e3)
}
})
}, e.prototype.buildHandshakeCallbacks = function(t) {
var e = this;
return H({}, t, {
connected: function(t) {
e.activityTimeout = Math.min(e.options.activityTimeout, t.activityTimeout, t.connection.activityTimeout || 1 / 0), e.clearUnavailableTimer(), e.setConnection(t.connection), e.socket_id = e.connection.id, e.updateState("connected", {
socket_id: e.socket_id
})
}
})
}, e.prototype.buildErrorCallbacks = function() {
var t = this,
e = function(e) {
return function(n) {
n.error && t.emit("error", {
type: "WebSocketError",
error: n.error
}), e(n)
}
};
return {
tls_only: e((function() {
t.usingTLS = !0, t.updateStrategy(), t.retryIn(0)
})),
refused: e((function() {
t.disconnect()
})),
backoff: e((function() {
t.retryIn(1e3)
})),
retry: e((function() {
t.retryIn(0)
}))
}
}, e.prototype.setConnection = function(t) {
for (var e in this.connection = t, this.connectionCallbacks) this.connection.bind(e, this.connectionCallbacks[e]);
this.resetActivityCheck()
}, e.prototype.abandonConnection = function() {
if (this.connection) {
for (var t in this.stopActivityCheck(), this.connectionCallbacks) this.connection.unbind(t, this.connectionCallbacks[t]);
var e = this.connection;
return this.connection = null, e
}
}, e.prototype.updateState = function(t, e) {
var n = this.state;
if (this.state = t, n !== t) {
var o = t;
"connected" === o && (o += " with new socket ID " + e.socket_id), $.debug("State changed", n + " -> " + o), this.timeline.info({
state: t,
params: e
}), this.emit("state_change", {
previous: n,
current: t
}), this.emit(t, e)
}
}, e.prototype.shouldRetry = function() {
return "connecting" === this.state || "connected" === this.state
}, e
}(ut),
Gt = function() {
function t() {
this.channels = {}
}
return t.prototype.add = function(t, e) {
return this.channels[t] || (this.channels[t] = function(t, e) {
if (0 === t.indexOf("private-encrypted-")) {
if (e.config.nacl) return Qt.createEncryptedChannel(t, e, e.config.nacl);
var n = p("encryptedChannelSupport");
throw new v("Tried to subscribe to a private-encrypted- channel but no nacl implementation available. " + n)
}
return 0 === t.indexOf("private-") ? Qt.createPrivateChannel(t, e) : 0 === t.indexOf("presence-") ? Qt.createPresenceChannel(t, e) : Qt.createChannel(t, e)
}(t, e)), this.channels[t]
}, t.prototype.all = function() {
return function(t) {
var e = [];
return z(t, (function(t) {
e.push(t)
})), e
}(this.channels)
}, t.prototype.find = function(t) {
return this.channels[t]
}, t.prototype.remove = function(t) {
var e = this.channels[t];
return delete this.channels[t], e
}, t.prototype.disconnect = function() {
z(this.channels, (function(t) {
t.disconnect()
}))
}, t
}();
var Qt = {
createChannels: function() {
return new Gt
},
createConnectionManager: function(t, e) {
return new Wt(t, e)
},
createChannel: function(t, e) {
return new It(t, e)
},
createPrivateChannel: function(t, e) {
return new Mt(t, e)
},
createPresenceChannel: function(t, e) {
return new Bt(t, e)
},
createEncryptedChannel: function(t, e, n) {
return new Xt(t, e, n)
},
createTimelineSender: function(t, e) {
return new jt(t, e)
},
createAuthorizer: function(t, e) {
return e.authorizer ? e.authorizer(t, e) : new Rt(t, e)
},
createHandshake: function(t, e) {
return new At(t, e)
},
createAssistantToTheTransportManager: function(t, e, n) {
return new Pt(t, e, n)
}
},
Vt = function() {
function t(t) {
this.options = t || {}, this.livesLeft = this.options.lives || 1 / 0
}
return t.prototype.getAssistant = function(t) {
return Qt.createAssistantToTheTransportManager(this, t, {
minPingDelay: this.options.minPingDelay,
maxPingDelay: this.options.maxPingDelay
})
}, t.prototype.isAlive = function() {
return this.livesLeft > 0
}, t.prototype.reportDeath = function() {
this.livesLeft -= 1
}, t
}(),
Yt = function() {
function t(t, e) {
this.strategies = t, this.loop = Boolean(e.loop), this.failFast = Boolean(e.failFast), this.timeout = e.timeout, this.timeoutLimit = e.timeoutLimit
}
return t.prototype.isSupported = function() {
return G(this.strategies, M.method("isSupported"))
}, t.prototype.connect = function(t, e) {
var n = this,
o = this.strategies,
r = 0,
i = this.timeout,
s = null,
c = function(a, u) {
u ? e(null, u) : (r += 1, n.loop && (r %= o.length), r < o.length ? (i && (i *= 2, n.timeoutLimit && (i = Math.min(i, n.timeoutLimit))), s = n.tryStrategy(o[r], t, {
timeout: i,
failFast: n.failFast
}, c)) : e(!0))
};
return s = this.tryStrategy(o[r], t, {
timeout: i,
failFast: this.failFast
}, c), {
abort: function() {
s.abort()
},
forceMinPriority: function(e) {
t = e, s && s.forceMinPriority(e)
}
}
}, t.prototype.tryStrategy = function(t, e, n, o) {
var r = null,
i = null;
return n.timeout > 0 && (r = new I(n.timeout, (function() {
i.abort(), o(!0)
}))), i = t.connect(e, (function(t, e) {
t && r && r.isRunning() && !n.failFast || (r && r.ensureAborted(), o(t, e))
})), {
abort: function() {
r && r.ensureAborted(), i.abort()
},
forceMinPriority: function(t) {
i.forceMinPriority(t)
}
}
}, t
}(),
$t = function() {
function t(t) {
this.strategies = t
}
return t.prototype.isSupported = function() {
return G(this.strategies, M.method("isSupported"))
}, t.prototype.connect = function(t, e) {
return function(t, e, n) {
var o = X(t, (function(t, o, r, i) {
return t.connect(e, n(o, i))
}));
return {
abort: function() {
F(o, Kt)
},
forceMinPriority: function(t) {
F(o, (function(e) {
e.forceMinPriority(t)
}))
}
}
}(this.strategies, t, (function(t, n) {
return function(o, r) {
n[t].error = o, o ? function(t) {
return function(t, e) {
for (var n = 0; n < t.length; n++)
if (!e(t[n], n, t)) return !1;
return !0
}(t, (function(t) {
return Boolean(t.error)
}))
}(n) && e(!0) : (F(n, (function(t) {
t.forceMinPriority(r.transport.priority)
})), e(null, r))
}
}))
}, t
}();
function Kt(t) {
t.error || t.aborted || (t.abort(), t.aborted = !0)
}
var Zt = function() {
function t(t, e, n) {
this.strategy = t, this.transports = e, this.ttl = n.ttl || 18e5, this.usingTLS = n.useTLS, this.timeline = n.timeline
}
return t.prototype.isSupported = function() {
return this.strategy.isSupported()
}, t.prototype.connect = function(t, e) {
var n = this.usingTLS,
o = function(t) {
var e = _e.getLocalStorage();
if (e) try {
var n = e[te(t)];
if (n) return JSON.parse(n)
} catch (e) {
ee(t)
}
return null
}(n),
r = [this.strategy];
if (o && o.timestamp + this.ttl >= M.now()) {
var i = this.transports[o.transport];
i && (this.timeline.info({
cached: !0,
transport: o.transport,
latency: o.latency
}), r.push(new Yt([i], {
timeout: 2 * o.latency + 1e3,
failFast: !0
})))
}
var s = M.now(),
c = r.pop().connect(t, (function o(i, a) {
i ? (ee(n), r.length > 0 ? (s = M.now(), c = r.pop().connect(t, o)) : e(i)) : (! function(t, e, n) {
var o = _e.getLocalStorage();
if (o) try {
o[te(t)] = Y({
timestamp: M.now(),
transport: e,
latency: n
})
} catch (t) {}
}(n, a.transport.name, M.now() - s), e(null, a))
}));
return {
abort: function() {
c.abort()
},
forceMinPriority: function(e) {
t = e, c && c.forceMinPriority(e)
}
}
}, t
}();
function te(t) {
return "pusherTransport" + (t ? "TLS" : "NonTLS")
}
function ee(t) {
var e = _e.getLocalStorage();
if (e) try {
delete e[te(t)]
} catch (t) {}
}
var ne = function() {
function t(t, e) {
var n = e.delay;
this.strategy = t, this.options = {
delay: n
}
}
return t.prototype.isSupported = function() {
return this.strategy.isSupported()
}, t.prototype.connect = function(t, e) {
var n, o = this.strategy,
r = new I(this.options.delay, (function() {
n = o.connect(t, e)
}));
return {
abort: function() {
r.ensureAborted(), n && n.abort()
},
forceMinPriority: function(e) {
t = e, n && n.forceMinPriority(e)
}
}
}, t
}(),
oe = function() {
function t(t, e, n) {
this.test = t, this.trueBranch = e, this.falseBranch = n
}
return t.prototype.isSupported = function() {
return (this.test() ? this.trueBranch : this.falseBranch).isSupported()
}, t.prototype.connect = function(t, e) {
return (this.test() ? this.trueBranch : this.falseBranch).connect(t, e)
}, t
}(),
re = function() {
function t(t) {
this.strategy = t
}
return t.prototype.isSupported = function() {
return this.strategy.isSupported()
}, t.prototype.connect = function(t, e) {
var n = this.strategy.connect(t, (function(t, o) {
o && n.abort(), e(t, o)
}));
return n
}, t
}();
function ie(t) {
return function() {
return t.isSupported()
}
}
var se, ce = function(t, e, n) {
var o = {};
function r(e, r, i, s, c) {
var a = n(t, e, r, i, s, c);
return o[e] = a, a
}
var i, s = Object.assign({}, e, {
hostNonTLS: t.wsHost + ":" + t.wsPort,
hostTLS: t.wsHost + ":" + t.wssPort,
httpPath: t.wsPath
}),
c = Object.assign({}, s, {
useTLS: !0
}),
a = Object.assign({}, e, {
hostNonTLS: t.httpHost + ":" + t.httpPort,
hostTLS: t.httpHost + ":" + t.httpsPort,
httpPath: t.httpPath
}),
u = {
loop: !0,
timeout: 15e3,
timeoutLimit: 6e4
},
h = new Vt({
lives: 2,
minPingDelay: 1e4,
maxPingDelay: t.activityTimeout
}),
p = new Vt({
lives: 2,
minPingDelay: 1e4,
maxPingDelay: t.activityTimeout
}),
l = r("ws", "ws", 3, s, h),
f = r("wss", "ws", 3, c, h),
d = r("sockjs", "sockjs", 1, a),
y = r("xhr_streaming", "xhr_streaming", 1, a, p),
g = r("xdr_streaming", "xdr_streaming", 1, a, p),
v = r("xhr_polling", "xhr_polling", 1, a),
b = r("xdr_polling", "xdr_polling", 1, a),
m = new Yt([l], u),
w = new Yt([f], u),
_ = new Yt([d], u),
S = new Yt([new oe(ie(y), y, g)], u),
k = new Yt([new oe(ie(v), v, b)], u),
C = new Yt([new oe(ie(S), new $t([S, new ne(k, {
delay: 4e3
})]), k)], u),
T = new oe(ie(C), C, _);
return i = e.useTLS ? new $t([m, new ne(T, {
delay: 2e3
})]) : new $t([m, new ne(w, {
delay: 2e3
}), new ne(T, {
delay: 5e3
})]), new Zt(new re(new oe(ie(l), i, T)), o, {
ttl: 18e5,
timeline: e.timeline,
useTLS: e.useTLS
})
},
ae = {
getRequest: function(t) {
var e = new window.XDomainRequest;
return e.ontimeout = function() {
t.emit("error", new d), t.close()
}, e.onerror = function(e) {
t.emit("error", e), t.close()
}, e.onprogress = function() {
e.responseText && e.responseText.length > 0 && t.onChunk(200, e.responseText)
}, e.onload = function() {
e.responseText && e.responseText.length > 0 && t.onChunk(200, e.responseText), t.emit("finished", 200), t.close()
}, e
},
abortRequest: function(t) {
t.ontimeout = t.onerror = t.onprogress = t.onload = null, t.abort()
}
},
ue = function() {
var t = function(e, n) {
return (t = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array && function(t, e) {
t.__proto__ = e
} || function(t, e) {
for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
})(e, n)
};
return function(e, n) {
function o() {
this.constructor = e
}
t(e, n), e.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o)
}
}(),
he = function(t) {
function e(e, n, o) {
var r = t.call(this) || this;
return r.hooks = e, r.method = n, r.url = o, r
}
return ue(e, t), e.prototype.start = function(t) {
var e = this;
this.position = 0, this.xhr = this.hooks.getRequest(this), this.unloader = function() {
e.close()
}, _e.addUnloadListener(this.unloader), this.xhr.open(this.method, this.url, !0), this.xhr.setRequestHeader && this.xhr.setRequestHeader("Content-Type", "application/json"), this.xhr.send(t)
}, e.prototype.close = function() {
this.unloader && (_e.removeUnloadListener(this.unloader), this.unloader = null), this.xhr && (this.hooks.abortRequest(this.xhr), this.xhr = null)
}, e.prototype.onChunk = function(t, e) {
for (;;) {
var n = this.advanceBuffer(e);
if (!n) break;
this.emit("chunk", {
status: t,
data: n
})
}
this.isBufferTooLong(e) && this.emit("buffer_too_long")
}, e.prototype.advanceBuffer = function(t) {
var e = t.slice(this.position),
n = e.indexOf("\n");
return -1 !== n ? (this.position += n + 1, e.slice(0, n)) : null
}, e.prototype.isBufferTooLong = function(t) {
return this.position === t.length && t.length > 262144
}, e
}(ut);
! function(t) {
t[t.CONNECTING = 0] = "CONNECTING", t[t.OPEN = 1] = "OPEN", t[t.CLOSED = 3] = "CLOSED"
}(se || (se = {}));
var pe = se,
le = 1;
function fe(t) {
var e = -1 === t.indexOf("?") ? "?" : "&";
return t + e + "t=" + +new Date + "&n=" + le++
}
function de(t) {
return Math.floor(Math.random() * t)
}
var ye, ge = function() {
function t(t, e) {
this.hooks = t, this.session = de(1e3) + "/" + function(t) {
for (var e = [], n = 0; n < t; n++) e.push(de(32).toString(32));
return e.join("")
}(8), this.location = function(t) {
var e = /([^\?]*)\/*(\??.*)/.exec(t);
return {
base: e[1],
queryString: e[2]
}
}(e), this.readyState = pe.CONNECTING, this.openStream()
}
return t.prototype.send = function(t) {
return this.sendRaw(JSON.stringify([t]))
}, t.prototype.ping = function() {
this.hooks.sendHeartbeat(this)
}, t.prototype.close = function(t, e) {
this.onClose(t, e, !0)
}, t.prototype.sendRaw = function(t) {
if (this.readyState !== pe.OPEN) return !1;
try {
return _e.createSocketRequest("POST", fe((e = this.location, n = this.session, e.base + "/" + n + "/xhr_send"))).start(t), !0
} catch (t) {
return !1
}
var e, n
}, t.prototype.reconnect = function() {
this.closeStream(), this.openStream()
}, t.prototype.onClose = function(t, e, n) {
this.closeStream(), this.readyState = pe.CLOSED, this.onclose && this.onclose({
code: t,
reason: e,
wasClean: n
})
}, t.prototype.onChunk = function(t) {
var e;
if (200 === t.status) switch (this.readyState === pe.OPEN && this.onActivity(), t.data.slice(0, 1)) {
case "o":
e = JSON.parse(t.data.slice(1) || "{}"), this.onOpen(e);
break;
case "a":
e = JSON.parse(t.data.slice(1) || "[]");
for (var n = 0; n < e.length; n++) this.onEvent(e[n]);
break;
case "m":
e = JSON.parse(t.data.slice(1) || "null"), this.onEvent(e);
break;
case "h":
this.hooks.onHeartbeat(this);
break;
case "c":
e = JSON.parse(t.data.slice(1) || "[]"), this.onClose(e[0], e[1], !0)
}
}, t.prototype.onOpen = function(t) {
var e, n, o;
this.readyState === pe.CONNECTING ? (t && t.hostname && (this.location.base = (e = this.location.base, n = t.hostname, (o = /(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(e))[1] + n + o[3])), this.readyState = pe.OPEN, this.onopen && this.onopen()) : this.onClose(1006, "Server lost session", !0)
}, t.prototype.onEvent = function(t) {
this.readyState === pe.OPEN && this.onmessage && this.onmessage({
data: t
})
}, t.prototype.onActivity = function() {
this.onactivity && this.onactivity()
}, t.prototype.onError = function(t) {
this.onerror && this.onerror(t)
}, t.prototype.openStream = function() {
var t = this;
this.stream = _e.createSocketRequest("POST", fe(this.hooks.getReceiveURL(this.location, this.session))), this.stream.bind("chunk", (function(e) {
t.onChunk(e)
})), this.stream.bind("finished", (function(e) {
t.hooks.onFinished(t, e)
})), this.stream.bind("buffer_too_long", (function() {
t.reconnect()
}));
try {
this.stream.start()
} catch (e) {
M.defer((function() {
t.onError(e), t.onClose(1006, "Could not start streaming", !1)
}))
}
}, t.prototype.closeStream = function() {
this.stream && (this.stream.unbind_all(), this.stream.close(), this.stream = null)
}, t
}(),
ve = {
getReceiveURL: function(t, e) {
return t.base + "/" + e + "/xhr_streaming" + t.queryString
},
onHeartbeat: function(t) {
t.sendRaw("[]")
},
sendHeartbeat: function(t) {
t.sendRaw("[]")
},
onFinished: function(t, e) {
t.onClose(1006, "Connection interrupted (" + e + ")", !1)
}
},
be = {
getReceiveURL: function(t, e) {
return t.base + "/" + e + "/xhr" + t.queryString
},
onHeartbeat: function() {},
sendHeartbeat: function(t) {
t.sendRaw("[]")
},
onFinished: function(t, e) {
200 === e ? t.reconnect() : t.onClose(1006, "Connection interrupted (" + e + ")", !1)
}
},
me = {
getRequest: function(t) {
var e = new(_e.getXHRAPI());
return e.onreadystatechange = e.onprogress = function() {
switch (e.readyState) {
case 3:
e.responseText && e.responseText.length > 0 && t.onChunk(e.status, e.responseText);
break;
case 4:
e.responseText && e.responseText.length > 0 && t.onChunk(e.status, e.responseText), t.emit("finished", e.status), t.close()
}
}, e
},
abortRequest: function(t) {
t.onreadystatechange = null, t.abort()
}
},
we = {
createStreamingSocket: function(t) {
return this.createSocket(ve, t)
},
createPollingSocket: function(t) {
return this.createSocket(be, t)
},
createSocket: function(t, e) {
return new ge(t, e)
},
createXHR: function(t, e) {
return this.createRequest(me, t, e)
},
createRequest: function(t, e, n) {
return new he(t, e, n)
},
createXDR: function(t, e) {
return this.createRequest(ae, t, e)
}
},
_e = {
nextAuthCallbackID: 1,
auth_callbacks: {},
ScriptReceivers: i,
DependenciesReceivers: a,
getDefaultStrategy: ce,
Transports: kt,
transportConnectionInitializer: function() {
var t = this;
t.timeline.info(t.buildTimelineMessage({
transport: t.name + (t.options.useTLS ? "s" : "")
})), t.hooks.isInitialized() ? t.changeState("initialized") : t.hooks.file ? (t.changeState("initializing"), u.load(t.hooks.file, {
useTLS: t.options.useTLS
}, (function(e, n) {
t.hooks.isInitialized() ? (t.changeState("initialized"), n(!0)) : (e && t.onError(e), t.onClose(), n(!1))
}))) : t.onClose()
},
HTTPFactory: we,
TimelineTransport: et,
getXHRAPI: function() {
return window.XMLHttpRequest
},
getWebSocketAPI: function() {
return window.WebSocket || window.MozWebSocket
},
setup: function(t) {
var e = this;
window.Pusher = t;
var n = function() {
e.onDocumentBody(t.ready)
};
window.JSON ? n() : u.load("json2", {}, n)
},
getDocument: function() {
return document
},
getProtocol: function() {
return this.getDocument().location.protocol
},
getAuthorizers: function() {
return {
ajax: _,
jsonp: K
}
},
onDocumentBody: function(t) {
var e = this;
document.body ? t() : setTimeout((function() {
e.onDocumentBody(t)
}), 0)
},
createJSONPRequest: function(t, e) {
return new tt(t, e)
},
createScriptRequest: function(t) {
return new Z(t)
},
getLocalStorage: function() {
try {
return window.localStorage
} catch (t) {
return
}
},
createXHR: function() {
return this.getXHRAPI() ? this.createXMLHttpRequest() : this.createMicrosoftXHR()
},
createXMLHttpRequest: function() {
return new(this.getXHRAPI())
},
createMicrosoftXHR: function() {
return new ActiveXObject("Microsoft.XMLHTTP")
},
getNetwork: function() {
return Tt
},
createWebSocket: function(t) {
return new(this.getWebSocketAPI())(t)
},
createSocketRequest: function(t, e) {
if (this.isXHRSupported()) return this.HTTPFactory.createXHR(t, e);
if (this.isXDRSupported(0 === e.indexOf("https:"))) return this.HTTPFactory.createXDR(t, e);
throw "Cross-origin HTTP requests are not supported"
},
isXHRSupported: function() {
var t = this.getXHRAPI();
return Boolean(t) && void 0 !== (new t).withCredentials
},
isXDRSupported: function(t) {
var e = t ? "https:" : "http:",
n = this.getProtocol();
return Boolean(window.XDomainRequest) && n === e
},
addUnloadListener: function(t) {
void 0 !== window.addEventListener ? window.addEventListener("unload", t, !1) : void 0 !== window.attachEvent && window.attachEvent("onunload", t)
},
removeUnloadListener: function(t) {
void 0 !== window.addEventListener ? window.removeEventListener("unload", t, !1) : void 0 !== window.detachEvent && window.detachEvent("onunload", t)
}
};
! function(t) {
t[t.ERROR = 3] = "ERROR", t[t.INFO = 6] = "INFO", t[t.DEBUG = 7] = "DEBUG"
}(ye || (ye = {}));
var Se = ye,
ke = function() {
function t(t, e, n) {
this.key = t, this.session = e, this.events = [], this.options = n || {}, this.sent = 0, this.uniqueID = 0
}
return t.prototype.log = function(t, e) {
t <= this.options.level && (this.events.push(H({}, e, {
timestamp: M.now()
})), this.options.limit && this.events.length > this.options.limit && this.events.shift())
}, t.prototype.error = function(t) {
this.log(Se.ERROR, t)
}, t.prototype.info = function(t) {
this.log(Se.INFO, t)
}, t.prototype.debug = function(t) {
this.log(Se.DEBUG, t)
}, t.prototype.isEmpty = function() {
return 0 === this.events.length
}, t.prototype.send = function(t, e) {
var n = this,
o = H({
session: this.session,
bundle: this.sent + 1,
key: this.key,
lib: "js",
version: this.options.version,
cluster: this.options.cluster,
features: this.options.features,
timeline: this.events
}, this.options.params);
return this.events = [], t(o, (function(t, o) {
t || n.sent++, e && e(t, o)
})), !0
}, t.prototype.generateUniqueID = function() {
return this.uniqueID++, this.uniqueID
}, t
}(),
Ce = function() {
function t(t, e, n, o) {
this.name = t, this.priority = e, this.transport = n, this.options = o || {}
}
return t.prototype.isSupported = function() {
return this.transport.isSupported({
useTLS: this.options.useTLS
})
}, t.prototype.connect = function(t, e) {
var n = this;
if (!this.isSupported()) return Te(new m, e);
if (this.priority < t) return Te(new y, e);
var o = !1,
r = this.transport.createConnection(this.name, this.priority, this.options.key, this.options),
i = null,
s = function() {
r.unbind("initialized", s), r.connect()
},
c = function() {
i = Qt.createHandshake(r, (function(t) {
o = !0, h(), e(null, t)
}))
},
a = function(t) {
h(), e(t)
},
u = function() {
var t;
h(), t = Y(r), e(new g(t))
},
h = function() {
r.unbind("initialized", s), r.unbind("open", c), r.unbind("error", a), r.unbind("closed", u)
};
return r.bind("initialized", s), r.bind("open", c), r.bind("error", a), r.bind("closed", u), r.initialize(), {
abort: function() {
o || (h(), i ? i.close() : r.close())
},
forceMinPriority: function(t) {
o || n.priority < t && (i ? i.close() : r.close())
}
}
}, t
}();
function Te(t, e) {
return M.defer((function() {
e(t)
})), {
abort: function() {},
forceMinPriority: function() {}
}
}
var Pe = _e.Transports,
Oe = function(t, e, n, o, r, i) {
var s, c = Pe[n];
if (!c) throw new b(n);
return !(t.enabledTransports && -1 === B(t.enabledTransports, e) || t.disabledTransports && -1 !== B(t.disabledTransports, e)) ? (r = Object.assign({
ignoreNullOrigin: t.ignoreNullOrigin
}, r), s = new Ce(e, o, i ? i.getAssistant(c) : c, r)) : s = Ee, s
},
Ee = {
isSupported: function() {
return !1
},
connect: function(t, e) {
var n = M.defer((function() {
e(new m)
}));
return {
abort: function() {
n.ensureAborted()
},
forceMinPriority: function() {}
}
}
};
function Le(t) {
return t.httpHost ? t.httpHost : t.cluster ? "sockjs-" + t.cluster + ".pusher.com" : s.httpHost
}
function xe(t) {
return t.wsHost ? t.wsHost : t.cluster ? Ae(t.cluster) : Ae(s.cluster)
}
function Ae(t) {
return t + ".pusher.com"
}
function Re(t) {
return "https:" === _e.getProtocol() || !1 !== t.forceTLS
}
function je(t) {
return "enableStats" in t ? t.enableStats : "disableStats" in t && !t.disableStats
}
var De = function() {
function t(e, n) {
var o, r, i = this;
if (function(t) {
if (null == t) throw "You must pass your app key when you instantiate Pusher."
}(e), !(n = n || {}).cluster && !n.wsHost && !n.httpHost) {
var c = p("javascriptQuickStart");
$.warn("You should always specify a cluster when connecting. " + c)
}
"disableStats" in n && $.warn("The disableStats option is deprecated in favor of enableStats"), this.key = e, this.config = (r = {
activityTimeout: (o = n).activityTimeout || s.activityTimeout,
authEndpoint: o.authEndpoint || s.authEndpoint,
authTransport: o.authTransport || s.authTransport,
cluster: o.cluster || s.cluster,
httpPath: o.httpPath || s.httpPath,
httpPort: o.httpPort || s.httpPort,
httpsPort: o.httpsPort || s.httpsPort,
pongTimeout: o.pongTimeout || s.pongTimeout,
statsHost: o.statsHost || s.stats_host,
unavailableTimeout: o.unavailableTimeout || s.unavailableTimeout,
wsPath: o.wsPath || s.wsPath,
wsPort: o.wsPort || s.wsPort,
wssPort: o.wssPort || s.wssPort,
enableStats: je(o),
httpHost: Le(o),
useTLS: Re(o),
wsHost: xe(o)
}, "auth" in o && (r.auth = o.auth), "authorizer" in o && (r.authorizer = o.authorizer), "disabledTransports" in o && (r.disabledTransports = o.disabledTransports), "enabledTransports" in o && (r.enabledTransports = o.enabledTransports), "ignoreNullOrigin" in o && (r.ignoreNullOrigin = o.ignoreNullOrigin), "timelineParams" in o && (r.timelineParams = o.timelineParams), "nacl" in o && (r.nacl = o.nacl), r), this.channels = Qt.createChannels(), this.global_emitter = new ut, this.sessionID = Math.floor(1e9 * Math.random()), this.timeline = new ke(this.key, this.sessionID, {
cluster: this.config.cluster,
features: t.getClientFeatures(),
params: this.config.timelineParams || {},
limit: 50,
level: Se.INFO,
version: s.VERSION
}), this.config.enableStats && (this.timelineSender = Qt.createTimelineSender(this.timeline, {
host: this.config.statsHost,
path: "/timeline/v2/" + _e.TimelineTransport.name
}));
this.connection = Qt.createConnectionManager(this.key, {
getStrategy: function(t) {
return _e.getDefaultStrategy(i.config, t, Oe)
},
timeline: this.timeline,
activityTimeout: this.config.activityTimeout,
pongTimeout: this.config.pongTimeout,
unavailableTimeout: this.config.unavailableTimeout,
useTLS: Boolean(this.config.useTLS)
}), this.connection.bind("connected", (function() {
i.subscribeAll(), i.timelineSender && i.timelineSender.send(i.connection.isUsingTLS())
})), this.connection.bind("message", (function(t) {
var e = 0 === t.event.indexOf("pusher_internal:");
if (t.channel) {
var n = i.channel(t.channel);
n && n.handleEvent(t)
}
e || i.global_emitter.emit(t.event, t.data)
})), this.connection.bind("connecting", (function() {
i.channels.disconnect()
})), this.connection.bind("disconnected", (function() {
i.channels.disconnect()
})), this.connection.bind("error", (function(t) {
$.warn(t)
})), t.instances.push(this), this.timeline.info({
instances: t.instances.length
}), t.isReady && this.connect()
}
return t.ready = function() {
t.isReady = !0;
for (var e = 0, n = t.instances.length; e < n; e++) t.instances[e].connect()
}, t.getClientFeatures = function() {
return U(W({
ws: _e.Transports.ws
}, (function(t) {
return t.isSupported({})
})))
}, t.prototype.channel = function(t) {
return this.channels.find(t)
}, t.prototype.allChannels = function() {
return this.channels.all()
}, t.prototype.connect = function() {
if (this.connection.connect(), this.timelineSender && !this.timelineSenderTimer) {
var t = this.connection.isUsingTLS(),
e = this.timelineSender;
this.timelineSenderTimer = new N(6e4, (function() {
e.send(t)
}))
}
}, t.prototype.disconnect = function() {
this.connection.disconnect(), this.timelineSenderTimer && (this.timelineSenderTimer.ensureAborted(), this.timelineSenderTimer = null)
}, t.prototype.bind = function(t, e, n) {
return this.global_emitter.bind(t, e, n), this
}, t.prototype.unbind = function(t, e, n) {
return this.global_emitter.unbind(t, e, n), this
}, t.prototype.bind_global = function(t) {
return this.global_emitter.bind_global(t), this
}, t.prototype.unbind_global = function(t) {
return this.global_emitter.unbind_global(t), this
}, t.prototype.unbind_all = function(t) {
return this.global_emitter.unbind_all(), this
}, t.prototype.subscribeAll = function() {
var t;
for (t in this.channels.channels) this.channels.channels.hasOwnProperty(t) && this.subscribe(t)
}, t.prototype.subscribe = function(t) {
var e = this.channels.add(t, this);
return e.subscriptionPending && e.subscriptionCancelled ? e.reinstateSubscription() : e.subscriptionPending || "connected" !== this.connection.state || e.subscribe(), e
}, t.prototype.unsubscribe = function(t) {
var e = this.channels.find(t);
e && e.subscriptionPending ? e.cancelSubscription() : (e = this.channels.remove(t)) && e.subscribed && e.unsubscribe()
}, t.prototype.send_event = function(t, e, n) {
return this.connection.send_event(t, e, n)
}, t.prototype.shouldUseTLS = function() {
return this.config.useTLS
}, t.instances = [], t.isReady = !1, t.logToConsole = !1, t.Runtime = _e, t.ScriptReceivers = _e.ScriptReceivers, t.DependenciesReceivers = _e.DependenciesReceivers, t.auth_callbacks = _e.auth_callbacks, t
}(),
Ie = e.default = De;
_e.setup(De)
}])
}));