text: ! function(a, b) { "function" == typeof define && define.amd ? define([], b) : "undefined" != typeof module && module.exports ? module.exports = b() : a.ReconnectingWebSocket = b() }(this, function() {
      function a(b, c, d) {
          function l(a, b) { var c = document.createEvent("CustomEvent"); return c.initCustomEvent(a, !1, !1, b), c }
          var e = { debug: !1, automaticOpen: !0, reconnectInterval: 1e3, maxReconnectInterval: 3e4, reconnectDecay: 1.5, timeoutInterval: 2e3 };
          d || (d = {});
          for (var f in e) this[f] = "undefined" != typeof d[f] ? d[f] : e[f];
          this.url = b, this.reconnectAttempts = 0, this.readyState = WebSocket.CONNECTING, this.protocol = null;
          var h, g = this,
              i = !1,
              j = !1,
              k = document.createElement("div");
          k.addEventListener("open", function(a) { g.onopen(a) }), k.addEventListener("close", function(a) { g.onclose(a) }), k.addEventListener("connecting", function(a) { g.onconnecting(a) }), k.addEventListener("message", function(a) { g.onmessage(a) }), k.addEventListener("error", function(a) { g.onerror(a) }), this.addEventListener = k.addEventListener.bind(k), this.removeEventListener = k.removeEventListener.bind(k), this.dispatchEvent = k.dispatchEvent.bind(k), this.open = function(b) {
              h = new WebSocket(g.url, c || []), b || k.dispatchEvent(l("connecting")), (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "attempt-connect", g.url);
              var d = h,
                  e = setTimeout(function() {
                      (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "connection-timeout", g.url), j = !0, d.close(), j = !1
                  }, g.timeoutInterval);
              h.onopen = function() {
                  clearTimeout(e), (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "onopen", g.url), g.protocol = h.protocol, g.readyState = WebSocket.OPEN, g.reconnectAttempts = 0;
                  var d = l("open");
                  d.isReconnect = b, b = !1, k.dispatchEvent(d)
              }, h.onclose = function(c) {
                  if (clearTimeout(e), h = null, i) g.readyState = WebSocket.CLOSED, k.dispatchEvent(l("close"));
                  else {
                      g.readyState = WebSocket.CONNECTING;
                      var d = l("connecting");
                      d.code = c.code, d.reason = c.reason, d.wasClean = c.wasClean, k.dispatchEvent(d), b || j || ((g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "onclose", g.url), k.dispatchEvent(l("close")));
                      var e = g.reconnectInterval * Math.pow(g.reconnectDecay, g.reconnectAttempts);
                      setTimeout(function() { g.reconnectAttempts++, g.open(!0) }, e > g.maxReconnectInterval ? g.maxReconnectInterval : e)
                  }
              }, h.onmessage = function(b) {
                  (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "onmessage", g.url, b.data);
                  var c = l("message");
                  c.data = b.data, k.dispatchEvent(c)
              }, h.onerror = function(b) {
                  (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "onerror", g.url, b), k.dispatchEvent(l("error"))
              }
          }, 1 == this.automaticOpen && this.open(!1), this.send = function(b) { if (h) return (g.debug || a.debugAll) && console.debug("ReconnectingWebSocket", "send", g.url, b), h.send(b); throw "INVALID_STATE_ERR : Pausing to reconnect websocket" }, this.close = function(a, b) { "undefined" == typeof a && (a = 1e3), i = !0, h && h.close(a, b) }, this.refresh = function() { h && h.close() }
      }
      return a.prototype.onopen = function() {}, a.prototype.onclose = function() {}, a.prototype.onconnecting = function() {}, a.prototype.onmessage = function() {}, a.prototype.onerror = function() {}, a.debugAll = !1, a.CONNECTING = WebSocket.CONNECTING, a.OPEN = WebSocket.OPEN, a.CLOSING = WebSocket.CLOSING, a.CLOSED = WebSocket.CLOSED, a
  });