function  T499845 (t) {
  var e, r, n, o = t.exports = {};
  function i() {
      throw Error("setTimeout has not been defined")
  }
  function a() {
      throw Error("clearTimeout has not been defined")
  }
  function s(t) {
      if (e === setTimeout)
          return setTimeout(t, 0);
      if ((e === i || !e) && setTimeout)
          return e = setTimeout,
          setTimeout(t, 0);
      try {
          return e(t, 0)
      } catch (r) {
          try {
              return e.call(null, t, 0)
          } catch (r) {
              return e.call(this, t, 0)
          }
      }
  }
  !function() {
      try {
          e = "function" == typeof setTimeout ? setTimeout : i
      } catch (t) {
          e = i
      }
      try {
          r = "function" == typeof clearTimeout ? clearTimeout : a
      } catch (t) {
          r = a
      }
  }();
  var u = []
    , c = !1
    , f = -1;
  function l() {
      if (!!c && !!n)
          c = !1,
          n.length ? u = n.concat(u) : f = -1,
          u.length && h()
  }
  function h() {
      if (!c) {
          var t = s(l);
          c = !0;
          for (var e = u.length; e; ) {
              for (n = u,
              u = []; ++f < e; )
                  n && n[f].run();
              f = -1,
              e = u.length
          }
          n = null,
          c = !1,
          !function(t) {
              if (r === clearTimeout)
                  return clearTimeout(t);
              if ((r === a || !r) && clearTimeout)
                  return r = clearTimeout,
                  clearTimeout(t);
              try {
                  r(t)
              } catch (e) {
                  try {
                      return r.call(null, t)
                  } catch (e) {
                      return r.call(this, t)
                  }
              }
          }(t)
      }
  }
  function p(t, e) {
      this.fun = t,
      this.array = e
  }
  function d() {}
  o.nextTick = function(t) {
      var e = Array(arguments.length - 1);
      if (arguments.length > 1)
          for (var r = 1; r < arguments.length; r++)
              e[r - 1] = arguments[r];
      u.push(new p(t,e)),
      1 === u.length && !c && s(h)
  }
  ,
  p.prototype.run = function() {
      this.fun.apply(null, this.array)
  }
  ,
  o.title = "browser",
  o.browser = !0,
  o.env = {},
  o.argv = [],
  o.version = "",
  o.versions = {},
  o.on = d,
  o.addListener = d,
  o.once = d,
  o.off = d,
  o.removeListener = d,
  o.removeAllListeners = d,
  o.emit = d,
  o.prependListener = d,
  o.prependOnceListener = d,
  o.listeners = function(t) {
      return []
  }
  ,
  o.binding = function(t) {
      throw Error("process.binding is not supported")
  }
  ,
  o.cwd = function() {
      return "/"
  }
  ,
  o.chdir = function(t) {
      throw Error("process.chdir is not supported")
  }
  ,
  o.umask = function() {
      return 0
  }
}
function T984826(e, t, i) {
  !function(e, t) {
      "use strict";
      function n(e, t) {
          if (!e)
              throw Error(t || "Assertion failed")
      }
      function r(e, t) {
          e.super_ = t;
          var i = function() {};
          i.prototype = t.prototype,
          e.prototype = new i,
          e.prototype.constructor = e
      }
      function a(e, t, i) {
          if (a.isBN(e))
              return e;
          this.negative = 0,
          this.words = null,
          this.length = 0,
          this.red = null,
          null !== e && (("le" === t || "be" === t) && (i = t,
          t = 10),
          this._init(e || 0, t || 10, i || "be"))
      }
      "object" == typeof e ? e.exports = a : t.BN = a,
      a.BN = a,
      a.wordSize = 26;
      try {
          c = "undefined" != typeof window && void 0 !== window.Buffer ? window.Buffer : i(678244).Buffer
      } catch (e) {}
      function o(e, t) {
          var i = e.charCodeAt(t);
          return i >= 65 && i <= 70 ? i - 55 : i >= 97 && i <= 102 ? i - 87 : i - 48 & 15
      }
      function s(e, t, i) {
          var n = o(e, i);
          return i - 1 >= t && (n |= o(e, i - 1) << 4),
          n
      }
      function l(e, t, i, n) {
          for (var r = 0, a = Math.min(e.length, i), o = t; o < a; o++) {
              var s = e.charCodeAt(o) - 48;
              r *= n,
              s >= 49 ? r += s - 49 + 10 : s >= 17 ? r += s - 17 + 10 : r += s
          }
          return r
      }
      a.isBN = function(e) {
          return e instanceof a || null !== e && "object" == typeof e && e.constructor.wordSize === a.wordSize && Array.isArray(e.words)
      }
      ,
      a.max = function(e, t) {
          return e.cmp(t) > 0 ? e : t
      }
      ,
      a.min = function(e, t) {
          return 0 > e.cmp(t) ? e : t
      }
      ,
      a.prototype._init = function(e, t, i) {
          if ("number" == typeof e)
              return this._initNumber(e, t, i);
          if ("object" == typeof e)
              return this._initArray(e, t, i);
          "hex" === t && (t = 16),
          n(t === (0 | t) && t >= 2 && t <= 36),
          e = e.toString().replace(/\s+/g, "");
          var r = 0;
          "-" === e[0] && (r++,
          this.negative = 1),
          r < e.length && (16 === t ? this._parseHex(e, r, i) : (this._parseBase(e, t, r),
          "le" === i && this._initArray(this.toArray(), t, i)))
      }
      ,
      a.prototype._initNumber = function(e, t, i) {
          e < 0 && (this.negative = 1,
          e = -e),
          e < 0x4000000 ? (this.words = [0x3ffffff & e],
          this.length = 1) : e < 0x10000000000000 ? (this.words = [0x3ffffff & e, e / 0x4000000 & 0x3ffffff],
          this.length = 2) : (n(e < 0x20000000000000),
          this.words = [0x3ffffff & e, e / 0x4000000 & 0x3ffffff, 1],
          this.length = 3),
          "le" === i && this._initArray(this.toArray(), t, i)
      }
      ,
      a.prototype._initArray = function(e, t, i) {
          if (n("number" == typeof e.length),
          e.length <= 0)
              return this.words = [0],
              this.length = 1,
              this;
          this.length = Math.ceil(e.length / 3),
          this.words = Array(this.length);
          for (var r, a, o = 0; o < this.length; o++)
              this.words[o] = 0;
          var s = 0;
          if ("be" === i)
              for (o = e.length - 1,
              r = 0; o >= 0; o -= 3)
                  a = e[o] | e[o - 1] << 8 | e[o - 2] << 16,
                  this.words[r] |= a << s & 0x3ffffff,
                  this.words[r + 1] = a >>> 26 - s & 0x3ffffff,
                  (s += 24) >= 26 && (s -= 26,
                  r++);
          else if ("le" === i)
              for (o = 0,
              r = 0; o < e.length; o += 3)
                  a = e[o] | e[o + 1] << 8 | e[o + 2] << 16,
                  this.words[r] |= a << s & 0x3ffffff,
                  this.words[r + 1] = a >>> 26 - s & 0x3ffffff,
                  (s += 24) >= 26 && (s -= 26,
                  r++);
          return this.strip()
      }
      ,
      a.prototype._parseHex = function(e, t, i) {
          this.length = Math.ceil((e.length - t) / 6),
          this.words = Array(this.length);
          for (var n, r = 0; r < this.length; r++)
              this.words[r] = 0;
          var a = 0
            , o = 0;
          if ("be" === i)
              for (r = e.length - 1; r >= t; r -= 2)
                  n = s(e, t, r) << a,
                  this.words[o] |= 0x3ffffff & n,
                  a >= 18 ? (a -= 18,
                  o += 1,
                  this.words[o] |= n >>> 26) : a += 8;
          else
              for (r = (e.length - t) % 2 == 0 ? t + 1 : t; r < e.length; r += 2)
                  n = s(e, t, r) << a,
                  this.words[o] |= 0x3ffffff & n,
                  a >= 18 ? (a -= 18,
                  o += 1,
                  this.words[o] |= n >>> 26) : a += 8;
          this.strip()
      }
      ,
      a.prototype._parseBase = function(e, t, i) {
          this.words = [0],
          this.length = 1;
          for (var n = 0, r = 1; r <= 0x3ffffff; r *= t)
              n++;
          n--,
          r = r / t | 0;
          for (var a = e.length - i, o = a % n, s = Math.min(a, a - o) + i, c = 0, d = i; d < s; d += n)
              c = l(e, d, d + n, t),
              this.imuln(r),
              this.words[0] + c < 0x4000000 ? this.words[0] += c : this._iaddn(c);
          if (0 !== o) {
              var u = 1;
              for (c = l(e, d, e.length, t),
              d = 0; d < o; d++)
                  u *= t;
              this.imuln(u),
              this.words[0] + c < 0x4000000 ? this.words[0] += c : this._iaddn(c)
          }
          this.strip()
      }
      ,
      a.prototype.copy = function(e) {
          e.words = Array(this.length);
          for (var t = 0; t < this.length; t++)
              e.words[t] = this.words[t];
          e.length = this.length,
          e.negative = this.negative,
          e.red = this.red
      }
      ,
      a.prototype.clone = function() {
          var e = new a(null);
          return this.copy(e),
          e
      }
      ,
      a.prototype._expand = function(e) {
          for (; this.length < e; )
              this.words[this.length++] = 0;
          return this
      }
      ,
      a.prototype.strip = function() {
          for (; this.length > 1 && 0 === this.words[this.length - 1]; )
              this.length--;
          return this._normSign()
      }
      ,
      a.prototype._normSign = function() {
          return 1 === this.length && 0 === this.words[0] && (this.negative = 0),
          this
      }
      ,
      a.prototype.inspect = function() {
          return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"
      }
      ;
      var c, d = ["", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000"], u = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], f = [0, 0, 0x2000000, 0x290d741, 0x1000000, 0x2e90edd, 0x39aa400, 0x267bf47, 0x1000000, 0x290d741, 1e7, 0x12959c3, 0x222c000, 0x3bd7765, 7529536, 0xadcea1, 0x1000000, 0x1704f61, 0x206fc40, 0x2cddcf9, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 0xb54ba0, 0xdaf26b, 0x1069c00, 0x138f9ad, 243e5, 0x1b4d89f, 0x2000000, 0x25528a1, 0x2b54a20, 0x3216b93, 0x39aa400];
      function h(e) {
          for (var t = Array(e.bitLength()), i = 0; i < t.length; i++) {
              var n = i / 26 | 0
                , r = i % 26;
              t[i] = (e.words[n] & 1 << r) >>> r
          }
          return t
      }
      function p(e, t, i) {
          i.negative = t.negative ^ e.negative;
          var n = e.length + t.length | 0;
          i.length = n,
          n = n - 1 | 0;
          var r = 0 | e.words[0]
            , a = 0 | t.words[0]
            , o = r * a
            , s = 0x3ffffff & o
            , l = o / 0x4000000 | 0;
          i.words[0] = s;
          for (var c = 1; c < n; c++) {
              for (var d = l >>> 26, u = 0x3ffffff & l, f = Math.min(c, t.length - 1), h = Math.max(0, c - e.length + 1); h <= f; h++) {
                  var p = c - h | 0;
                  r = 0 | e.words[p],
                  d += (o = r * (a = 0 | t.words[h]) + u) / 0x4000000 | 0,
                  u = 0x3ffffff & o
              }
              i.words[c] = 0 | u,
              l = 0 | d
          }
          return 0 !== l ? i.words[c] = 0 | l : i.length--,
          i.strip()
      }
      a.prototype.toString = function(e, t) {
          if (t = 0 | t || 1,
          16 === (e = e || 10) || "hex" === e) {
              i = "";
              for (var i, r = 0, a = 0, o = 0; o < this.length; o++) {
                  var s = this.words[o]
                    , l = ((s << r | a) & 0xffffff).toString(16);
                  i = 0 != (a = s >>> 24 - r & 0xffffff) || o !== this.length - 1 ? d[6 - l.length] + l + i : l + i,
                  (r += 2) >= 26 && (r -= 26,
                  o--)
              }
              for (0 !== a && (i = a.toString(16) + i); i.length % t != 0; )
                  i = "0" + i;
              return 0 !== this.negative && (i = "-" + i),
              i
          }
          if (e === (0 | e) && e >= 2 && e <= 36) {
              var c = u[e]
                , h = f[e];
              i = "";
              var p = this.clone();
              for (p.negative = 0; !p.isZero(); ) {
                  var v = p.modn(h).toString(e);
                  i = (p = p.idivn(h)).isZero() ? v + i : d[c - v.length] + v + i
              }
              for (this.isZero() && (i = "0" + i); i.length % t != 0; )
                  i = "0" + i;
              return 0 !== this.negative && (i = "-" + i),
              i
          }
          n(!1, "Base should be between 2 and 36")
      }
      ,
      a.prototype.toNumber = function() {
          var e = this.words[0];
          return 2 === this.length ? e += 0x4000000 * this.words[1] : 3 === this.length && 1 === this.words[2] ? e += 0x10000000000000 + 0x4000000 * this.words[1] : this.length > 2 && n(!1, "Number can only safely store up to 53 bits"),
          0 !== this.negative ? -e : e
      }
      ,
      a.prototype.toJSON = function() {
          return this.toString(16)
      }
      ,
      a.prototype.toBuffer = function(e, t) {
          return n(void 0 !== c),
          this.toArrayLike(c, e, t)
      }
      ,
      a.prototype.toArray = function(e, t) {
          return this.toArrayLike(Array, e, t)
      }
      ,
      a.prototype.toArrayLike = function(e, t, i) {
          var r, a, o = this.byteLength(), s = i || Math.max(1, o);
          n(o <= s, "byte array longer than desired length"),
          n(s > 0, "Requested array length <= 0"),
          this.strip();
          var l = "le" === t
            , c = new e(s)
            , d = this.clone();
          if (l) {
              for (a = 0; !d.isZero(); a++)
                  r = d.andln(255),
                  d.iushrn(8),
                  c[a] = r;
              for (; a < s; a++)
                  c[a] = 0
          } else {
              for (a = 0; a < s - o; a++)
                  c[a] = 0;
              for (a = 0; !d.isZero(); a++)
                  r = d.andln(255),
                  d.iushrn(8),
                  c[s - a - 1] = r
          }
          return c
      }
      ,
      Math.clz32 ? a.prototype._countBits = function(e) {
          return 32 - Math.clz32(e)
      }
      : a.prototype._countBits = function(e) {
          var t = e
            , i = 0;
          return t >= 4096 && (i += 13,
          t >>>= 13),
          t >= 64 && (i += 7,
          t >>>= 7),
          t >= 8 && (i += 4,
          t >>>= 4),
          t >= 2 && (i += 2,
          t >>>= 2),
          i + t
      }
      ,
      a.prototype._zeroBits = function(e) {
          if (0 === e)
              return 26;
          var t = e
            , i = 0;
          return (8191 & t) == 0 && (i += 13,
          t >>>= 13),
          (127 & t) == 0 && (i += 7,
          t >>>= 7),
          (15 & t) == 0 && (i += 4,
          t >>>= 4),
          (3 & t) == 0 && (i += 2,
          t >>>= 2),
          (1 & t) == 0 && i++,
          i
      }
      ,
      a.prototype.bitLength = function() {
          var e = this.words[this.length - 1]
            , t = this._countBits(e);
          return (this.length - 1) * 26 + t
      }
      ,
      a.prototype.zeroBits = function() {
          if (this.isZero())
              return 0;
          for (var e = 0, t = 0; t < this.length; t++) {
              var i = this._zeroBits(this.words[t]);
              if (e += i,
              26 !== i)
                  break
          }
          return e
      }
      ,
      a.prototype.byteLength = function() {
          return Math.ceil(this.bitLength() / 8)
      }
      ,
      a.prototype.toTwos = function(e) {
          return 0 !== this.negative ? this.abs().inotn(e).iaddn(1) : this.clone()
      }
      ,
      a.prototype.fromTwos = function(e) {
          return this.testn(e - 1) ? this.notn(e).iaddn(1).ineg() : this.clone()
      }
      ,
      a.prototype.isNeg = function() {
          return 0 !== this.negative
      }
      ,
      a.prototype.neg = function() {
          return this.clone().ineg()
      }
      ,
      a.prototype.ineg = function() {
          return !this.isZero() && (this.negative ^= 1),
          this
      }
      ,
      a.prototype.iuor = function(e) {
          for (; this.length < e.length; )
              this.words[this.length++] = 0;
          for (var t = 0; t < e.length; t++)
              this.words[t] = this.words[t] | e.words[t];
          return this.strip()
      }
      ,
      a.prototype.ior = function(e) {
          return n((this.negative | e.negative) == 0),
          this.iuor(e)
      }
      ,
      a.prototype.or = function(e) {
          return this.length > e.length ? this.clone().ior(e) : e.clone().ior(this)
      }
      ,
      a.prototype.uor = function(e) {
          return this.length > e.length ? this.clone().iuor(e) : e.clone().iuor(this)
      }
      ,
      a.prototype.iuand = function(e) {
          var t;
          t = this.length > e.length ? e : this;
          for (var i = 0; i < t.length; i++)
              this.words[i] = this.words[i] & e.words[i];
          return this.length = t.length,
          this.strip()
      }
      ,
      a.prototype.iand = function(e) {
          return n((this.negative | e.negative) == 0),
          this.iuand(e)
      }
      ,
      a.prototype.and = function(e) {
          return this.length > e.length ? this.clone().iand(e) : e.clone().iand(this)
      }
      ,
      a.prototype.uand = function(e) {
          return this.length > e.length ? this.clone().iuand(e) : e.clone().iuand(this)
      }
      ,
      a.prototype.iuxor = function(e) {
          this.length > e.length ? (t = this,
          i = e) : (t = e,
          i = this);
          for (var t, i, n = 0; n < i.length; n++)
              this.words[n] = t.words[n] ^ i.words[n];
          if (this !== t)
              for (; n < t.length; n++)
                  this.words[n] = t.words[n];
          return this.length = t.length,
          this.strip()
      }
      ,
      a.prototype.ixor = function(e) {
          return n((this.negative | e.negative) == 0),
          this.iuxor(e)
      }
      ,
      a.prototype.xor = function(e) {
          return this.length > e.length ? this.clone().ixor(e) : e.clone().ixor(this)
      }
      ,
      a.prototype.uxor = function(e) {
          return this.length > e.length ? this.clone().iuxor(e) : e.clone().iuxor(this)
      }
      ,
      a.prototype.inotn = function(e) {
          n("number" == typeof e && e >= 0);
          var t = 0 | Math.ceil(e / 26)
            , i = e % 26;
          this._expand(t),
          i > 0 && t--;
          for (var r = 0; r < t; r++)
              this.words[r] = 0x3ffffff & ~this.words[r];
          return i > 0 && (this.words[r] = ~this.words[r] & 0x3ffffff >> 26 - i),
          this.strip()
      }
      ,
      a.prototype.notn = function(e) {
          return this.clone().inotn(e)
      }
      ,
      a.prototype.setn = function(e, t) {
          n("number" == typeof e && e >= 0);
          var i = e / 26 | 0
            , r = e % 26;
          return this._expand(i + 1),
          t ? this.words[i] = this.words[i] | 1 << r : this.words[i] = this.words[i] & ~(1 << r),
          this.strip()
      }
      ,
      a.prototype.iadd = function(e) {
          if (0 !== this.negative && 0 === e.negative)
              return this.negative = 0,
              t = this.isub(e),
              this.negative ^= 1,
              this._normSign();
          if (0 === this.negative && 0 !== e.negative)
              return e.negative = 0,
              t = this.isub(e),
              e.negative = 1,
              t._normSign();
          this.length > e.length ? (i = this,
          n = e) : (i = e,
          n = this);
          for (var t, i, n, r = 0, a = 0; a < n.length; a++)
              t = (0 | i.words[a]) + (0 | n.words[a]) + r,
              this.words[a] = 0x3ffffff & t,
              r = t >>> 26;
          for (; 0 !== r && a < i.length; a++)
              t = (0 | i.words[a]) + r,
              this.words[a] = 0x3ffffff & t,
              r = t >>> 26;
          if (this.length = i.length,
          0 !== r)
              this.words[this.length] = r,
              this.length++;
          else if (i !== this)
              for (; a < i.length; a++)
                  this.words[a] = i.words[a];
          return this
      }
      ,
      a.prototype.add = function(e) {
          var t;
          return 0 !== e.negative && 0 === this.negative ? (e.negative = 0,
          t = this.sub(e),
          e.negative ^= 1,
          t) : 0 === e.negative && 0 !== this.negative ? (this.negative = 0,
          t = e.sub(this),
          this.negative = 1,
          t) : this.length > e.length ? this.clone().iadd(e) : e.clone().iadd(this)
      }
      ,
      a.prototype.isub = function(e) {
          if (0 !== e.negative) {
              e.negative = 0;
              var t, i, n = this.iadd(e);
              return e.negative = 1,
              n._normSign()
          }
          if (0 !== this.negative)
              return this.negative = 0,
              this.iadd(e),
              this.negative = 1,
              this._normSign();
          var r = this.cmp(e);
          if (0 === r)
              return this.negative = 0,
              this.length = 1,
              this.words[0] = 0,
              this;
          r > 0 ? (t = this,
          i = e) : (t = e,
          i = this);
          for (var a = 0, o = 0; o < i.length; o++)
              a = (n = (0 | t.words[o]) - (0 | i.words[o]) + a) >> 26,
              this.words[o] = 0x3ffffff & n;
          for (; 0 !== a && o < t.length; o++)
              a = (n = (0 | t.words[o]) + a) >> 26,
              this.words[o] = 0x3ffffff & n;
          if (0 === a && o < t.length && t !== this)
              for (; o < t.length; o++)
                  this.words[o] = t.words[o];
          return this.length = Math.max(this.length, o),
          t !== this && (this.negative = 1),
          this.strip()
      }
      ,
      a.prototype.sub = function(e) {
          return this.clone().isub(e)
      }
      ;
      var v = function(e, t, i) {
          var n, r, a, o = e.words, s = t.words, l = i.words, c = 0, d = 0 | o[0], u = 8191 & d, f = d >>> 13, h = 0 | o[1], p = 8191 & h, v = h >>> 13, m = 0 | o[2], g = 8191 & m, _ = m >>> 13, y = 0 | o[3], b = 8191 & y, I = y >>> 13, w = 0 | o[4], x = 8191 & w, S = w >>> 13, M = 0 | o[5], C = 8191 & M, T = M >>> 13, A = 0 | o[6], k = 8191 & A, P = A >>> 13, E = 0 | o[7], D = 8191 & E, R = E >>> 13, N = 0 | o[8], L = 8191 & N, j = N >>> 13, O = 0 | o[9], B = 8191 & O, F = O >>> 13, U = 0 | s[0], G = 8191 & U, z = U >>> 13, V = 0 | s[1], W = 8191 & V, Z = V >>> 13, K = 0 | s[2], H = 8191 & K, q = K >>> 13, J = 0 | s[3], Y = 8191 & J, Q = J >>> 13, X = 0 | s[4], $ = 8191 & X, ee = X >>> 13, et = 0 | s[5], ei = 8191 & et, en = et >>> 13, er = 0 | s[6], ea = 8191 & er, eo = er >>> 13, es = 0 | s[7], el = 8191 & es, ec = es >>> 13, ed = 0 | s[8], eu = 8191 & ed, ef = ed >>> 13, eh = 0 | s[9], ep = 8191 & eh, ev = eh >>> 13;
          i.negative = e.negative ^ t.negative,
          i.length = 19,
          n = Math.imul(u, G),
          r = (r = Math.imul(u, z)) + Math.imul(f, G) | 0;
          var em = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = Math.imul(f, z)) + (r >>> 13) | 0) + (em >>> 26) | 0,
          em &= 0x3ffffff,
          n = Math.imul(p, G),
          r = (r = Math.imul(p, z)) + Math.imul(v, G) | 0,
          a = Math.imul(v, z),
          n = n + Math.imul(u, W) | 0,
          r = (r = r + Math.imul(u, Z) | 0) + Math.imul(f, W) | 0;
          var eg = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, Z) | 0) + (r >>> 13) | 0) + (eg >>> 26) | 0,
          eg &= 0x3ffffff,
          n = Math.imul(g, G),
          r = (r = Math.imul(g, z)) + Math.imul(_, G) | 0,
          a = Math.imul(_, z),
          n = n + Math.imul(p, W) | 0,
          r = (r = r + Math.imul(p, Z) | 0) + Math.imul(v, W) | 0,
          a = a + Math.imul(v, Z) | 0,
          n = n + Math.imul(u, H) | 0,
          r = (r = r + Math.imul(u, q) | 0) + Math.imul(f, H) | 0;
          var e_ = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, q) | 0) + (r >>> 13) | 0) + (e_ >>> 26) | 0,
          e_ &= 0x3ffffff,
          n = Math.imul(b, G),
          r = (r = Math.imul(b, z)) + Math.imul(I, G) | 0,
          a = Math.imul(I, z),
          n = n + Math.imul(g, W) | 0,
          r = (r = r + Math.imul(g, Z) | 0) + Math.imul(_, W) | 0,
          a = a + Math.imul(_, Z) | 0,
          n = n + Math.imul(p, H) | 0,
          r = (r = r + Math.imul(p, q) | 0) + Math.imul(v, H) | 0,
          a = a + Math.imul(v, q) | 0,
          n = n + Math.imul(u, Y) | 0,
          r = (r = r + Math.imul(u, Q) | 0) + Math.imul(f, Y) | 0;
          var ey = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, Q) | 0) + (r >>> 13) | 0) + (ey >>> 26) | 0,
          ey &= 0x3ffffff,
          n = Math.imul(x, G),
          r = (r = Math.imul(x, z)) + Math.imul(S, G) | 0,
          a = Math.imul(S, z),
          n = n + Math.imul(b, W) | 0,
          r = (r = r + Math.imul(b, Z) | 0) + Math.imul(I, W) | 0,
          a = a + Math.imul(I, Z) | 0,
          n = n + Math.imul(g, H) | 0,
          r = (r = r + Math.imul(g, q) | 0) + Math.imul(_, H) | 0,
          a = a + Math.imul(_, q) | 0,
          n = n + Math.imul(p, Y) | 0,
          r = (r = r + Math.imul(p, Q) | 0) + Math.imul(v, Y) | 0,
          a = a + Math.imul(v, Q) | 0,
          n = n + Math.imul(u, $) | 0,
          r = (r = r + Math.imul(u, ee) | 0) + Math.imul(f, $) | 0;
          var eb = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, ee) | 0) + (r >>> 13) | 0) + (eb >>> 26) | 0,
          eb &= 0x3ffffff,
          n = Math.imul(C, G),
          r = (r = Math.imul(C, z)) + Math.imul(T, G) | 0,
          a = Math.imul(T, z),
          n = n + Math.imul(x, W) | 0,
          r = (r = r + Math.imul(x, Z) | 0) + Math.imul(S, W) | 0,
          a = a + Math.imul(S, Z) | 0,
          n = n + Math.imul(b, H) | 0,
          r = (r = r + Math.imul(b, q) | 0) + Math.imul(I, H) | 0,
          a = a + Math.imul(I, q) | 0,
          n = n + Math.imul(g, Y) | 0,
          r = (r = r + Math.imul(g, Q) | 0) + Math.imul(_, Y) | 0,
          a = a + Math.imul(_, Q) | 0,
          n = n + Math.imul(p, $) | 0,
          r = (r = r + Math.imul(p, ee) | 0) + Math.imul(v, $) | 0,
          a = a + Math.imul(v, ee) | 0,
          n = n + Math.imul(u, ei) | 0,
          r = (r = r + Math.imul(u, en) | 0) + Math.imul(f, ei) | 0;
          var eI = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, en) | 0) + (r >>> 13) | 0) + (eI >>> 26) | 0,
          eI &= 0x3ffffff,
          n = Math.imul(k, G),
          r = (r = Math.imul(k, z)) + Math.imul(P, G) | 0,
          a = Math.imul(P, z),
          n = n + Math.imul(C, W) | 0,
          r = (r = r + Math.imul(C, Z) | 0) + Math.imul(T, W) | 0,
          a = a + Math.imul(T, Z) | 0,
          n = n + Math.imul(x, H) | 0,
          r = (r = r + Math.imul(x, q) | 0) + Math.imul(S, H) | 0,
          a = a + Math.imul(S, q) | 0,
          n = n + Math.imul(b, Y) | 0,
          r = (r = r + Math.imul(b, Q) | 0) + Math.imul(I, Y) | 0,
          a = a + Math.imul(I, Q) | 0,
          n = n + Math.imul(g, $) | 0,
          r = (r = r + Math.imul(g, ee) | 0) + Math.imul(_, $) | 0,
          a = a + Math.imul(_, ee) | 0,
          n = n + Math.imul(p, ei) | 0,
          r = (r = r + Math.imul(p, en) | 0) + Math.imul(v, ei) | 0,
          a = a + Math.imul(v, en) | 0,
          n = n + Math.imul(u, ea) | 0,
          r = (r = r + Math.imul(u, eo) | 0) + Math.imul(f, ea) | 0;
          var ew = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, eo) | 0) + (r >>> 13) | 0) + (ew >>> 26) | 0,
          ew &= 0x3ffffff,
          n = Math.imul(D, G),
          r = (r = Math.imul(D, z)) + Math.imul(R, G) | 0,
          a = Math.imul(R, z),
          n = n + Math.imul(k, W) | 0,
          r = (r = r + Math.imul(k, Z) | 0) + Math.imul(P, W) | 0,
          a = a + Math.imul(P, Z) | 0,
          n = n + Math.imul(C, H) | 0,
          r = (r = r + Math.imul(C, q) | 0) + Math.imul(T, H) | 0,
          a = a + Math.imul(T, q) | 0,
          n = n + Math.imul(x, Y) | 0,
          r = (r = r + Math.imul(x, Q) | 0) + Math.imul(S, Y) | 0,
          a = a + Math.imul(S, Q) | 0,
          n = n + Math.imul(b, $) | 0,
          r = (r = r + Math.imul(b, ee) | 0) + Math.imul(I, $) | 0,
          a = a + Math.imul(I, ee) | 0,
          n = n + Math.imul(g, ei) | 0,
          r = (r = r + Math.imul(g, en) | 0) + Math.imul(_, ei) | 0,
          a = a + Math.imul(_, en) | 0,
          n = n + Math.imul(p, ea) | 0,
          r = (r = r + Math.imul(p, eo) | 0) + Math.imul(v, ea) | 0,
          a = a + Math.imul(v, eo) | 0,
          n = n + Math.imul(u, el) | 0,
          r = (r = r + Math.imul(u, ec) | 0) + Math.imul(f, el) | 0;
          var ex = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, ec) | 0) + (r >>> 13) | 0) + (ex >>> 26) | 0,
          ex &= 0x3ffffff,
          n = Math.imul(L, G),
          r = (r = Math.imul(L, z)) + Math.imul(j, G) | 0,
          a = Math.imul(j, z),
          n = n + Math.imul(D, W) | 0,
          r = (r = r + Math.imul(D, Z) | 0) + Math.imul(R, W) | 0,
          a = a + Math.imul(R, Z) | 0,
          n = n + Math.imul(k, H) | 0,
          r = (r = r + Math.imul(k, q) | 0) + Math.imul(P, H) | 0,
          a = a + Math.imul(P, q) | 0,
          n = n + Math.imul(C, Y) | 0,
          r = (r = r + Math.imul(C, Q) | 0) + Math.imul(T, Y) | 0,
          a = a + Math.imul(T, Q) | 0,
          n = n + Math.imul(x, $) | 0,
          r = (r = r + Math.imul(x, ee) | 0) + Math.imul(S, $) | 0,
          a = a + Math.imul(S, ee) | 0,
          n = n + Math.imul(b, ei) | 0,
          r = (r = r + Math.imul(b, en) | 0) + Math.imul(I, ei) | 0,
          a = a + Math.imul(I, en) | 0,
          n = n + Math.imul(g, ea) | 0,
          r = (r = r + Math.imul(g, eo) | 0) + Math.imul(_, ea) | 0,
          a = a + Math.imul(_, eo) | 0,
          n = n + Math.imul(p, el) | 0,
          r = (r = r + Math.imul(p, ec) | 0) + Math.imul(v, el) | 0,
          a = a + Math.imul(v, ec) | 0,
          n = n + Math.imul(u, eu) | 0,
          r = (r = r + Math.imul(u, ef) | 0) + Math.imul(f, eu) | 0;
          var eS = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, ef) | 0) + (r >>> 13) | 0) + (eS >>> 26) | 0,
          eS &= 0x3ffffff,
          n = Math.imul(B, G),
          r = (r = Math.imul(B, z)) + Math.imul(F, G) | 0,
          a = Math.imul(F, z),
          n = n + Math.imul(L, W) | 0,
          r = (r = r + Math.imul(L, Z) | 0) + Math.imul(j, W) | 0,
          a = a + Math.imul(j, Z) | 0,
          n = n + Math.imul(D, H) | 0,
          r = (r = r + Math.imul(D, q) | 0) + Math.imul(R, H) | 0,
          a = a + Math.imul(R, q) | 0,
          n = n + Math.imul(k, Y) | 0,
          r = (r = r + Math.imul(k, Q) | 0) + Math.imul(P, Y) | 0,
          a = a + Math.imul(P, Q) | 0,
          n = n + Math.imul(C, $) | 0,
          r = (r = r + Math.imul(C, ee) | 0) + Math.imul(T, $) | 0,
          a = a + Math.imul(T, ee) | 0,
          n = n + Math.imul(x, ei) | 0,
          r = (r = r + Math.imul(x, en) | 0) + Math.imul(S, ei) | 0,
          a = a + Math.imul(S, en) | 0,
          n = n + Math.imul(b, ea) | 0,
          r = (r = r + Math.imul(b, eo) | 0) + Math.imul(I, ea) | 0,
          a = a + Math.imul(I, eo) | 0,
          n = n + Math.imul(g, el) | 0,
          r = (r = r + Math.imul(g, ec) | 0) + Math.imul(_, el) | 0,
          a = a + Math.imul(_, ec) | 0,
          n = n + Math.imul(p, eu) | 0,
          r = (r = r + Math.imul(p, ef) | 0) + Math.imul(v, eu) | 0,
          a = a + Math.imul(v, ef) | 0,
          n = n + Math.imul(u, ep) | 0,
          r = (r = r + Math.imul(u, ev) | 0) + Math.imul(f, ep) | 0;
          var eM = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(f, ev) | 0) + (r >>> 13) | 0) + (eM >>> 26) | 0,
          eM &= 0x3ffffff,
          n = Math.imul(B, W),
          r = (r = Math.imul(B, Z)) + Math.imul(F, W) | 0,
          a = Math.imul(F, Z),
          n = n + Math.imul(L, H) | 0,
          r = (r = r + Math.imul(L, q) | 0) + Math.imul(j, H) | 0,
          a = a + Math.imul(j, q) | 0,
          n = n + Math.imul(D, Y) | 0,
          r = (r = r + Math.imul(D, Q) | 0) + Math.imul(R, Y) | 0,
          a = a + Math.imul(R, Q) | 0,
          n = n + Math.imul(k, $) | 0,
          r = (r = r + Math.imul(k, ee) | 0) + Math.imul(P, $) | 0,
          a = a + Math.imul(P, ee) | 0,
          n = n + Math.imul(C, ei) | 0,
          r = (r = r + Math.imul(C, en) | 0) + Math.imul(T, ei) | 0,
          a = a + Math.imul(T, en) | 0,
          n = n + Math.imul(x, ea) | 0,
          r = (r = r + Math.imul(x, eo) | 0) + Math.imul(S, ea) | 0,
          a = a + Math.imul(S, eo) | 0,
          n = n + Math.imul(b, el) | 0,
          r = (r = r + Math.imul(b, ec) | 0) + Math.imul(I, el) | 0,
          a = a + Math.imul(I, ec) | 0,
          n = n + Math.imul(g, eu) | 0,
          r = (r = r + Math.imul(g, ef) | 0) + Math.imul(_, eu) | 0,
          a = a + Math.imul(_, ef) | 0,
          n = n + Math.imul(p, ep) | 0,
          r = (r = r + Math.imul(p, ev) | 0) + Math.imul(v, ep) | 0;
          var eC = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(v, ev) | 0) + (r >>> 13) | 0) + (eC >>> 26) | 0,
          eC &= 0x3ffffff,
          n = Math.imul(B, H),
          r = (r = Math.imul(B, q)) + Math.imul(F, H) | 0,
          a = Math.imul(F, q),
          n = n + Math.imul(L, Y) | 0,
          r = (r = r + Math.imul(L, Q) | 0) + Math.imul(j, Y) | 0,
          a = a + Math.imul(j, Q) | 0,
          n = n + Math.imul(D, $) | 0,
          r = (r = r + Math.imul(D, ee) | 0) + Math.imul(R, $) | 0,
          a = a + Math.imul(R, ee) | 0,
          n = n + Math.imul(k, ei) | 0,
          r = (r = r + Math.imul(k, en) | 0) + Math.imul(P, ei) | 0,
          a = a + Math.imul(P, en) | 0,
          n = n + Math.imul(C, ea) | 0,
          r = (r = r + Math.imul(C, eo) | 0) + Math.imul(T, ea) | 0,
          a = a + Math.imul(T, eo) | 0,
          n = n + Math.imul(x, el) | 0,
          r = (r = r + Math.imul(x, ec) | 0) + Math.imul(S, el) | 0,
          a = a + Math.imul(S, ec) | 0,
          n = n + Math.imul(b, eu) | 0,
          r = (r = r + Math.imul(b, ef) | 0) + Math.imul(I, eu) | 0,
          a = a + Math.imul(I, ef) | 0,
          n = n + Math.imul(g, ep) | 0,
          r = (r = r + Math.imul(g, ev) | 0) + Math.imul(_, ep) | 0;
          var eT = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(_, ev) | 0) + (r >>> 13) | 0) + (eT >>> 26) | 0,
          eT &= 0x3ffffff,
          n = Math.imul(B, Y),
          r = (r = Math.imul(B, Q)) + Math.imul(F, Y) | 0,
          a = Math.imul(F, Q),
          n = n + Math.imul(L, $) | 0,
          r = (r = r + Math.imul(L, ee) | 0) + Math.imul(j, $) | 0,
          a = a + Math.imul(j, ee) | 0,
          n = n + Math.imul(D, ei) | 0,
          r = (r = r + Math.imul(D, en) | 0) + Math.imul(R, ei) | 0,
          a = a + Math.imul(R, en) | 0,
          n = n + Math.imul(k, ea) | 0,
          r = (r = r + Math.imul(k, eo) | 0) + Math.imul(P, ea) | 0,
          a = a + Math.imul(P, eo) | 0,
          n = n + Math.imul(C, el) | 0,
          r = (r = r + Math.imul(C, ec) | 0) + Math.imul(T, el) | 0,
          a = a + Math.imul(T, ec) | 0,
          n = n + Math.imul(x, eu) | 0,
          r = (r = r + Math.imul(x, ef) | 0) + Math.imul(S, eu) | 0,
          a = a + Math.imul(S, ef) | 0,
          n = n + Math.imul(b, ep) | 0,
          r = (r = r + Math.imul(b, ev) | 0) + Math.imul(I, ep) | 0;
          var eA = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(I, ev) | 0) + (r >>> 13) | 0) + (eA >>> 26) | 0,
          eA &= 0x3ffffff,
          n = Math.imul(B, $),
          r = (r = Math.imul(B, ee)) + Math.imul(F, $) | 0,
          a = Math.imul(F, ee),
          n = n + Math.imul(L, ei) | 0,
          r = (r = r + Math.imul(L, en) | 0) + Math.imul(j, ei) | 0,
          a = a + Math.imul(j, en) | 0,
          n = n + Math.imul(D, ea) | 0,
          r = (r = r + Math.imul(D, eo) | 0) + Math.imul(R, ea) | 0,
          a = a + Math.imul(R, eo) | 0,
          n = n + Math.imul(k, el) | 0,
          r = (r = r + Math.imul(k, ec) | 0) + Math.imul(P, el) | 0,
          a = a + Math.imul(P, ec) | 0,
          n = n + Math.imul(C, eu) | 0,
          r = (r = r + Math.imul(C, ef) | 0) + Math.imul(T, eu) | 0,
          a = a + Math.imul(T, ef) | 0,
          n = n + Math.imul(x, ep) | 0,
          r = (r = r + Math.imul(x, ev) | 0) + Math.imul(S, ep) | 0;
          var ek = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(S, ev) | 0) + (r >>> 13) | 0) + (ek >>> 26) | 0,
          ek &= 0x3ffffff,
          n = Math.imul(B, ei),
          r = (r = Math.imul(B, en)) + Math.imul(F, ei) | 0,
          a = Math.imul(F, en),
          n = n + Math.imul(L, ea) | 0,
          r = (r = r + Math.imul(L, eo) | 0) + Math.imul(j, ea) | 0,
          a = a + Math.imul(j, eo) | 0,
          n = n + Math.imul(D, el) | 0,
          r = (r = r + Math.imul(D, ec) | 0) + Math.imul(R, el) | 0,
          a = a + Math.imul(R, ec) | 0,
          n = n + Math.imul(k, eu) | 0,
          r = (r = r + Math.imul(k, ef) | 0) + Math.imul(P, eu) | 0,
          a = a + Math.imul(P, ef) | 0,
          n = n + Math.imul(C, ep) | 0,
          r = (r = r + Math.imul(C, ev) | 0) + Math.imul(T, ep) | 0;
          var eP = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(T, ev) | 0) + (r >>> 13) | 0) + (eP >>> 26) | 0,
          eP &= 0x3ffffff,
          n = Math.imul(B, ea),
          r = (r = Math.imul(B, eo)) + Math.imul(F, ea) | 0,
          a = Math.imul(F, eo),
          n = n + Math.imul(L, el) | 0,
          r = (r = r + Math.imul(L, ec) | 0) + Math.imul(j, el) | 0,
          a = a + Math.imul(j, ec) | 0,
          n = n + Math.imul(D, eu) | 0,
          r = (r = r + Math.imul(D, ef) | 0) + Math.imul(R, eu) | 0,
          a = a + Math.imul(R, ef) | 0,
          n = n + Math.imul(k, ep) | 0,
          r = (r = r + Math.imul(k, ev) | 0) + Math.imul(P, ep) | 0;
          var eE = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(P, ev) | 0) + (r >>> 13) | 0) + (eE >>> 26) | 0,
          eE &= 0x3ffffff,
          n = Math.imul(B, el),
          r = (r = Math.imul(B, ec)) + Math.imul(F, el) | 0,
          a = Math.imul(F, ec),
          n = n + Math.imul(L, eu) | 0,
          r = (r = r + Math.imul(L, ef) | 0) + Math.imul(j, eu) | 0,
          a = a + Math.imul(j, ef) | 0,
          n = n + Math.imul(D, ep) | 0,
          r = (r = r + Math.imul(D, ev) | 0) + Math.imul(R, ep) | 0;
          var eD = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(R, ev) | 0) + (r >>> 13) | 0) + (eD >>> 26) | 0,
          eD &= 0x3ffffff,
          n = Math.imul(B, eu),
          r = (r = Math.imul(B, ef)) + Math.imul(F, eu) | 0,
          a = Math.imul(F, ef),
          n = n + Math.imul(L, ep) | 0,
          r = (r = r + Math.imul(L, ev) | 0) + Math.imul(j, ep) | 0;
          var eR = (c + n | 0) + ((8191 & r) << 13) | 0;
          c = ((a = a + Math.imul(j, ev) | 0) + (r >>> 13) | 0) + (eR >>> 26) | 0,
          eR &= 0x3ffffff,
          n = Math.imul(B, ep),
          r = (r = Math.imul(B, ev)) + Math.imul(F, ep) | 0;
          var eN = (c + n | 0) + ((8191 & r) << 13) | 0;
          return c = ((a = Math.imul(F, ev)) + (r >>> 13) | 0) + (eN >>> 26) | 0,
          eN &= 0x3ffffff,
          l[0] = em,
          l[1] = eg,
          l[2] = e_,
          l[3] = ey,
          l[4] = eb,
          l[5] = eI,
          l[6] = ew,
          l[7] = ex,
          l[8] = eS,
          l[9] = eM,
          l[10] = eC,
          l[11] = eT,
          l[12] = eA,
          l[13] = ek,
          l[14] = eP,
          l[15] = eE,
          l[16] = eD,
          l[17] = eR,
          l[18] = eN,
          0 !== c && (l[19] = c,
          i.length++),
          i
      };
      function m(e, t, i) {
          i.negative = t.negative ^ e.negative,
          i.length = e.length + t.length;
          for (var n = 0, r = 0, a = 0; a < i.length - 1; a++) {
              var o = r;
              r = 0;
              for (var s = 0x3ffffff & n, l = Math.min(a, t.length - 1), c = Math.max(0, a - e.length + 1); c <= l; c++) {
                  var d = a - c
                    , u = (0 | e.words[d]) * (0 | t.words[c])
                    , f = 0x3ffffff & u;
                  o = o + (u / 0x4000000 | 0) | 0,
                  s = 0x3ffffff & (f = f + s | 0),
                  r += (o = o + (f >>> 26) | 0) >>> 26,
                  o &= 0x3ffffff
              }
              i.words[a] = s,
              n = o,
              o = r
          }
          return 0 !== n ? i.words[a] = n : i.length--,
          i.strip()
      }
      function g(e, t, i) {
          return new _().mulp(e, t, i)
      }
      function _(e, t) {
          this.x = e,
          this.y = t
      }
      !Math.imul && (v = p),
      a.prototype.mulTo = function(e, t) {
          var i, n = this.length + e.length;
          return i = 10 === this.length && 10 === e.length ? v(this, e, t) : n < 63 ? p(this, e, t) : n < 1024 ? m(this, e, t) : g(this, e, t)
      }
      ,
      _.prototype.makeRBT = function(e) {
          for (var t = Array(e), i = a.prototype._countBits(e) - 1, n = 0; n < e; n++)
              t[n] = this.revBin(n, i, e);
          return t
      }
      ,
      _.prototype.revBin = function(e, t, i) {
          if (0 === e || e === i - 1)
              return e;
          for (var n = 0, r = 0; r < t; r++)
              n |= (1 & e) << t - r - 1,
              e >>= 1;
          return n
      }
      ,
      _.prototype.permute = function(e, t, i, n, r, a) {
          for (var o = 0; o < a; o++)
              n[o] = t[e[o]],
              r[o] = i[e[o]]
      }
      ,
      _.prototype.transform = function(e, t, i, n, r, a) {
          this.permute(a, e, t, i, n, r);
          for (var o = 1; o < r; o <<= 1) {
              for (var s = o << 1, l = Math.cos(2 * Math.PI / s), c = Math.sin(2 * Math.PI / s), d = 0; d < r; d += s) {
                  for (var u = l, f = c, h = 0; h < o; h++) {
                      var p = i[d + h]
                        , v = n[d + h]
                        , m = i[d + h + o]
                        , g = n[d + h + o]
                        , _ = u * m - f * g;
                      g = u * g + f * m,
                      m = _,
                      i[d + h] = p + m,
                      n[d + h] = v + g,
                      i[d + h + o] = p - m,
                      n[d + h + o] = v - g,
                      h !== s && (_ = l * u - c * f,
                      f = l * f + c * u,
                      u = _)
                  }
              }
          }
      }
      ,
      _.prototype.guessLen13b = function(e, t) {
          var i = 1 | Math.max(t, e)
            , n = 1 & i
            , r = 0;
          for (i = i / 2 | 0; i; i >>>= 1)
              r++;
          return 1 << r + 1 + n
      }
      ,
      _.prototype.conjugate = function(e, t, i) {
          if (!(i <= 1))
              for (var n = 0; n < i / 2; n++) {
                  var r = e[n];
                  e[n] = e[i - n - 1],
                  e[i - n - 1] = r,
                  r = t[n],
                  t[n] = -t[i - n - 1],
                  t[i - n - 1] = -r
              }
      }
      ,
      _.prototype.normalize13b = function(e, t) {
          for (var i = 0, n = 0; n < t / 2; n++) {
              var r = 8192 * Math.round(e[2 * n + 1] / t) + Math.round(e[2 * n] / t) + i;
              e[n] = 0x3ffffff & r,
              i = r < 0x4000000 ? 0 : r / 0x4000000 | 0
          }
          return e
      }
      ,
      _.prototype.convert13b = function(e, t, i, r) {
          for (var a = 0, o = 0; o < t; o++)
              a += 0 | e[o],
              i[2 * o] = 8191 & a,
              a >>>= 13,
              i[2 * o + 1] = 8191 & a,
              a >>>= 13;
          for (o = 2 * t; o < r; ++o)
              i[o] = 0;
          n(0 === a),
          n((-8192 & a) == 0)
      }
      ,
      _.prototype.stub = function(e) {
          for (var t = Array(e), i = 0; i < e; i++)
              t[i] = 0;
          return t
      }
      ,
      _.prototype.mulp = function(e, t, i) {
          var n = 2 * this.guessLen13b(e.length, t.length)
            , r = this.makeRBT(n)
            , a = this.stub(n)
            , o = Array(n)
            , s = Array(n)
            , l = Array(n)
            , c = Array(n)
            , d = Array(n)
            , u = Array(n)
            , f = i.words;
          f.length = n,
          this.convert13b(e.words, e.length, o, n),
          this.convert13b(t.words, t.length, c, n),
          this.transform(o, a, s, l, n, r),
          this.transform(c, a, d, u, n, r);
          for (var h = 0; h < n; h++) {
              var p = s[h] * d[h] - l[h] * u[h];
              l[h] = s[h] * u[h] + l[h] * d[h],
              s[h] = p
          }
          return this.conjugate(s, l, n),
          this.transform(s, l, f, a, n, r),
          this.conjugate(f, a, n),
          this.normalize13b(f, n),
          i.negative = e.negative ^ t.negative,
          i.length = e.length + t.length,
          i.strip()
      }
      ,
      a.prototype.mul = function(e) {
          var t = new a(null);
          return t.words = Array(this.length + e.length),
          this.mulTo(e, t)
      }
      ,
      a.prototype.mulf = function(e) {
          var t = new a(null);
          return t.words = Array(this.length + e.length),
          g(this, e, t)
      }
      ,
      a.prototype.imul = function(e) {
          return this.clone().mulTo(e, this)
      }
      ,
      a.prototype.imuln = function(e) {
          n("number" == typeof e),
          n(e < 0x4000000);
          for (var t = 0, i = 0; i < this.length; i++) {
              var r = (0 | this.words[i]) * e
                , a = (0x3ffffff & r) + (0x3ffffff & t);
              t >>= 26,
              t += (r / 0x4000000 | 0) + (a >>> 26),
              this.words[i] = 0x3ffffff & a
          }
          return 0 !== t && (this.words[i] = t,
          this.length++),
          this
      }
      ,
      a.prototype.muln = function(e) {
          return this.clone().imuln(e)
      }
      ,
      a.prototype.sqr = function() {
          return this.mul(this)
      }
      ,
      a.prototype.isqr = function() {
          return this.imul(this.clone())
      }
      ,
      a.prototype.pow = function(e) {
          var t = h(e);
          if (0 === t.length)
              return new a(1);
          for (var i = this, n = 0; n < t.length && 0 === t[n]; n++,
          i = i.sqr())
              ;
          if (++n < t.length)
              for (var r = i.sqr(); n < t.length; n++,
              r = r.sqr())
                  0 !== t[n] && (i = i.mul(r));
          return i
      }
      ,
      a.prototype.iushln = function(e) {
          n("number" == typeof e && e >= 0);
          var t, i = e % 26, r = (e - i) / 26, a = 0x3ffffff >>> 26 - i << 26 - i;
          if (0 !== i) {
              var o = 0;
              for (t = 0; t < this.length; t++) {
                  var s = this.words[t] & a
                    , l = (0 | this.words[t]) - s << i;
                  this.words[t] = l | o,
                  o = s >>> 26 - i
              }
              o && (this.words[t] = o,
              this.length++)
          }
          if (0 !== r) {
              for (t = this.length - 1; t >= 0; t--)
                  this.words[t + r] = this.words[t];
              for (t = 0; t < r; t++)
                  this.words[t] = 0;
              this.length += r
          }
          return this.strip()
      }
      ,
      a.prototype.ishln = function(e) {
          return n(0 === this.negative),
          this.iushln(e)
      }
      ,
      a.prototype.iushrn = function(e, t, i) {
          n("number" == typeof e && e >= 0),
          r = t ? (t - t % 26) / 26 : 0;
          var r, a = e % 26, o = Math.min((e - a) / 26, this.length), s = 0x3ffffff ^ 0x3ffffff >>> a << a, l = i;
          if (r -= o,
          r = Math.max(0, r),
          l) {
              for (var c = 0; c < o; c++)
                  l.words[c] = this.words[c];
              l.length = o
          }
          if (0 === o)
              ;
          else if (this.length > o)
              for (this.length -= o,
              c = 0; c < this.length; c++)
                  this.words[c] = this.words[c + o];
          else
              this.words[0] = 0,
              this.length = 1;
          var d = 0;
          for (c = this.length - 1; c >= 0 && (0 !== d || c >= r); c--) {
              var u = 0 | this.words[c];
              this.words[c] = d << 26 - a | u >>> a,
              d = u & s
          }
          return l && 0 !== d && (l.words[l.length++] = d),
          0 === this.length && (this.words[0] = 0,
          this.length = 1),
          this.strip()
      }
      ,
      a.prototype.ishrn = function(e, t, i) {
          return n(0 === this.negative),
          this.iushrn(e, t, i)
      }
      ,
      a.prototype.shln = function(e) {
          return this.clone().ishln(e)
      }
      ,
      a.prototype.ushln = function(e) {
          return this.clone().iushln(e)
      }
      ,
      a.prototype.shrn = function(e) {
          return this.clone().ishrn(e)
      }
      ,
      a.prototype.ushrn = function(e) {
          return this.clone().iushrn(e)
      }
      ,
      a.prototype.testn = function(e) {
          n("number" == typeof e && e >= 0);
          var t = e % 26
            , i = (e - t) / 26
            , r = 1 << t;
          return !(this.length <= i) && !!(this.words[i] & r)
      }
      ,
      a.prototype.imaskn = function(e) {
          n("number" == typeof e && e >= 0);
          var t = e % 26
            , i = (e - t) / 26;
          if (n(0 === this.negative, "imaskn works only with positive numbers"),
          this.length <= i)
              return this;
          if (0 !== t && i++,
          this.length = Math.min(i, this.length),
          0 !== t) {
              var r = 0x3ffffff ^ 0x3ffffff >>> t << t;
              this.words[this.length - 1] &= r
          }
          return this.strip()
      }
      ,
      a.prototype.maskn = function(e) {
          return this.clone().imaskn(e)
      }
      ,
      a.prototype.iaddn = function(e) {
          if (n("number" == typeof e),
          n(e < 0x4000000),
          e < 0)
              return this.isubn(-e);
          if (0 !== this.negative)
              return 1 === this.length && (0 | this.words[0]) < e ? (this.words[0] = e - (0 | this.words[0]),
              this.negative = 0,
              this) : (this.negative = 0,
              this.isubn(e),
              this.negative = 1,
              this);
          return this._iaddn(e)
      }
      ,
      a.prototype._iaddn = function(e) {
          this.words[0] += e;
          for (var t = 0; t < this.length && this.words[t] >= 0x4000000; t++)
              this.words[t] -= 0x4000000,
              t === this.length - 1 ? this.words[t + 1] = 1 : this.words[t + 1]++;
          return this.length = Math.max(this.length, t + 1),
          this
      }
      ,
      a.prototype.isubn = function(e) {
          if (n("number" == typeof e),
          n(e < 0x4000000),
          e < 0)
              return this.iaddn(-e);
          if (0 !== this.negative)
              return this.negative = 0,
              this.iaddn(e),
              this.negative = 1,
              this;
          if (this.words[0] -= e,
          1 === this.length && this.words[0] < 0)
              this.words[0] = -this.words[0],
              this.negative = 1;
          else
              for (var t = 0; t < this.length && this.words[t] < 0; t++)
                  this.words[t] += 0x4000000,
                  this.words[t + 1] -= 1;
          return this.strip()
      }
      ,
      a.prototype.addn = function(e) {
          return this.clone().iaddn(e)
      }
      ,
      a.prototype.subn = function(e) {
          return this.clone().isubn(e)
      }
      ,
      a.prototype.iabs = function() {
          return this.negative = 0,
          this
      }
      ,
      a.prototype.abs = function() {
          return this.clone().iabs()
      }
      ,
      a.prototype._ishlnsubmul = function(e, t, i) {
          var r, a, o = e.length + i;
          this._expand(o);
          var s = 0;
          for (r = 0; r < e.length; r++) {
              a = (0 | this.words[r + i]) + s;
              var l = (0 | e.words[r]) * t;
              a -= 0x3ffffff & l,
              s = (a >> 26) - (l / 0x4000000 | 0),
              this.words[r + i] = 0x3ffffff & a
          }
          for (; r < this.length - i; r++)
              s = (a = (0 | this.words[r + i]) + s) >> 26,
              this.words[r + i] = 0x3ffffff & a;
          if (0 === s)
              return this.strip();
          for (n(-1 === s),
          s = 0,
          r = 0; r < this.length; r++)
              s = (a = -(0 | this.words[r]) + s) >> 26,
              this.words[r] = 0x3ffffff & a;
          return this.negative = 1,
          this.strip()
      }
      ,
      a.prototype._wordDiv = function(e, t) {
          var i, n = this.length - e.length, r = this.clone(), o = e, s = 0 | o.words[o.length - 1];
          0 != (n = 26 - this._countBits(s)) && (o = o.ushln(n),
          r.iushln(n),
          s = 0 | o.words[o.length - 1]);
          var l = r.length - o.length;
          if ("mod" !== t) {
              (i = new a(null)).length = l + 1,
              i.words = Array(i.length);
              for (var c = 0; c < i.length; c++)
                  i.words[c] = 0
          }
          var d = r.clone()._ishlnsubmul(o, 1, l);
          0 === d.negative && (r = d,
          i && (i.words[l] = 1));
          for (var u = l - 1; u >= 0; u--) {
              var f = (0 | r.words[o.length + u]) * 0x4000000 + (0 | r.words[o.length + u - 1]);
              for (f = Math.min(f / s | 0, 0x3ffffff),
              r._ishlnsubmul(o, f, u); 0 !== r.negative; )
                  f--,
                  r.negative = 0,
                  r._ishlnsubmul(o, 1, u),
                  !r.isZero() && (r.negative ^= 1);
              i && (i.words[u] = f)
          }
          return i && i.strip(),
          r.strip(),
          "div" !== t && 0 !== n && r.iushrn(n),
          {
              div: i || null,
              mod: r
          }
      }
      ,
      a.prototype.divmod = function(e, t, i) {
          var r, o, s;
          if (n(!e.isZero()),
          this.isZero())
              return {
                  div: new a(0),
                  mod: new a(0)
              };
          if (0 !== this.negative && 0 === e.negative)
              return s = this.neg().divmod(e, t),
              "mod" !== t && (r = s.div.neg()),
              "div" !== t && (o = s.mod.neg(),
              i && 0 !== o.negative && o.iadd(e)),
              {
                  div: r,
                  mod: o
              };
          if (0 === this.negative && 0 !== e.negative)
              return s = this.divmod(e.neg(), t),
              "mod" !== t && (r = s.div.neg()),
              {
                  div: r,
                  mod: s.mod
              };
          if ((this.negative & e.negative) != 0)
              return s = this.neg().divmod(e.neg(), t),
              "div" !== t && (o = s.mod.neg(),
              i && 0 !== o.negative && o.isub(e)),
              {
                  div: s.div,
                  mod: o
              };
          if (e.length > this.length || 0 > this.cmp(e))
              return {
                  div: new a(0),
                  mod: this
              };
          if (1 === e.length)
              return "div" === t ? {
                  div: this.divn(e.words[0]),
                  mod: null
              } : "mod" === t ? {
                  div: null,
                  mod: new a(this.modn(e.words[0]))
              } : {
                  div: this.divn(e.words[0]),
                  mod: new a(this.modn(e.words[0]))
              };
          return this._wordDiv(e, t)
      }
      ,
      a.prototype.div = function(e) {
          return this.divmod(e, "div", !1).div
      }
      ,
      a.prototype.mod = function(e) {
          return this.divmod(e, "mod", !1).mod
      }
      ,
      a.prototype.umod = function(e) {
          return this.divmod(e, "mod", !0).mod
      }
      ,
      a.prototype.divRound = function(e) {
          var t = this.divmod(e);
          if (t.mod.isZero())
              return t.div;
          var i = 0 !== t.div.negative ? t.mod.isub(e) : t.mod
            , n = e.ushrn(1)
            , r = e.andln(1)
            , a = i.cmp(n);
          return a < 0 || 1 === r && 0 === a ? t.div : 0 !== t.div.negative ? t.div.isubn(1) : t.div.iaddn(1)
      }
      ,
      a.prototype.modn = function(e) {
          n(e <= 0x3ffffff);
          for (var t = 0x4000000 % e, i = 0, r = this.length - 1; r >= 0; r--)
              i = (t * i + (0 | this.words[r])) % e;
          return i
      }
      ,
      a.prototype.idivn = function(e) {
          n(e <= 0x3ffffff);
          for (var t = 0, i = this.length - 1; i >= 0; i--) {
              var r = (0 | this.words[i]) + 0x4000000 * t;
              this.words[i] = r / e | 0,
              t = r % e
          }
          return this.strip()
      }
      ,
      a.prototype.divn = function(e) {
          return this.clone().idivn(e)
      }
      ,
      a.prototype.egcd = function(e) {
          n(0 === e.negative),
          n(!e.isZero());
          var t = this
            , i = e.clone();
          t = 0 !== t.negative ? t.umod(e) : t.clone();
          for (var r = new a(1), o = new a(0), s = new a(0), l = new a(1), c = 0; t.isEven() && i.isEven(); )
              t.iushrn(1),
              i.iushrn(1),
              ++c;
          for (var d = i.clone(), u = t.clone(); !t.isZero(); ) {
              for (var f = 0, h = 1; (t.words[0] & h) == 0 && f < 26; ++f,
              h <<= 1)
                  ;
              if (f > 0)
                  for (t.iushrn(f); f-- > 0; )
                      (r.isOdd() || o.isOdd()) && (r.iadd(d),
                      o.isub(u)),
                      r.iushrn(1),
                      o.iushrn(1);
              for (var p = 0, v = 1; (i.words[0] & v) == 0 && p < 26; ++p,
              v <<= 1)
                  ;
              if (p > 0)
                  for (i.iushrn(p); p-- > 0; )
                      (s.isOdd() || l.isOdd()) && (s.iadd(d),
                      l.isub(u)),
                      s.iushrn(1),
                      l.iushrn(1);
              t.cmp(i) >= 0 ? (t.isub(i),
              r.isub(s),
              o.isub(l)) : (i.isub(t),
              s.isub(r),
              l.isub(o))
          }
          return {
              a: s,
              b: l,
              gcd: i.iushln(c)
          }
      }
      ,
      a.prototype._invmp = function(e) {
          n(0 === e.negative),
          n(!e.isZero());
          var t, i = this, r = e.clone();
          i = 0 !== i.negative ? i.umod(e) : i.clone();
          for (var o = new a(1), s = new a(0), l = r.clone(); i.cmpn(1) > 0 && r.cmpn(1) > 0; ) {
              for (var c = 0, d = 1; (i.words[0] & d) == 0 && c < 26; ++c,
              d <<= 1)
                  ;
              if (c > 0)
                  for (i.iushrn(c); c-- > 0; )
                      o.isOdd() && o.iadd(l),
                      o.iushrn(1);
              for (var u = 0, f = 1; (r.words[0] & f) == 0 && u < 26; ++u,
              f <<= 1)
                  ;
              if (u > 0)
                  for (r.iushrn(u); u-- > 0; )
                      s.isOdd() && s.iadd(l),
                      s.iushrn(1);
              i.cmp(r) >= 0 ? (i.isub(r),
              o.isub(s)) : (r.isub(i),
              s.isub(o))
          }
          return 0 > (t = 0 === i.cmpn(1) ? o : s).cmpn(0) && t.iadd(e),
          t
      }
      ,
      a.prototype.gcd = function(e) {
          if (this.isZero())
              return e.abs();
          if (e.isZero())
              return this.abs();
          var t = this.clone()
            , i = e.clone();
          t.negative = 0,
          i.negative = 0;
          for (var n = 0; t.isEven() && i.isEven(); n++)
              t.iushrn(1),
              i.iushrn(1);
          for (; ; ) {
              for (; t.isEven(); )
                  t.iushrn(1);
              for (; i.isEven(); )
                  i.iushrn(1);
              var r = t.cmp(i);
              if (r < 0) {
                  var a = t;
                  t = i,
                  i = a
              } else if (0 === r || 0 === i.cmpn(1))
                  break;
              t.isub(i)
          }
          return i.iushln(n)
      }
      ,
      a.prototype.invm = function(e) {
          return this.egcd(e).a.umod(e)
      }
      ,
      a.prototype.isEven = function() {
          return (1 & this.words[0]) == 0
      }
      ,
      a.prototype.isOdd = function() {
          return (1 & this.words[0]) == 1
      }
      ,
      a.prototype.andln = function(e) {
          return this.words[0] & e
      }
      ,
      a.prototype.bincn = function(e) {
          n("number" == typeof e);
          var t = e % 26
            , i = (e - t) / 26
            , r = 1 << t;
          if (this.length <= i)
              return this._expand(i + 1),
              this.words[i] |= r,
              this;
          for (var a = r, o = i; 0 !== a && o < this.length; o++) {
              var s = 0 | this.words[o];
              s += a,
              a = s >>> 26,
              s &= 0x3ffffff,
              this.words[o] = s
          }
          return 0 !== a && (this.words[o] = a,
          this.length++),
          this
      }
      ,
      a.prototype.isZero = function() {
          return 1 === this.length && 0 === this.words[0]
      }
      ,
      a.prototype.cmpn = function(e) {
          var t, i = e < 0;
          if (0 !== this.negative && !i)
              return -1;
          if (0 === this.negative && i)
              return 1;
          if (this.strip(),
          this.length > 1)
              t = 1;
          else {
              i && (e = -e),
              n(e <= 0x3ffffff, "Number is too big");
              var r = 0 | this.words[0];
              t = r === e ? 0 : r < e ? -1 : 1
          }
          return 0 !== this.negative ? 0 | -t : t
      }
      ,
      a.prototype.cmp = function(e) {
          if (0 !== this.negative && 0 === e.negative)
              return -1;
          if (0 === this.negative && 0 !== e.negative)
              return 1;
          var t = this.ucmp(e);
          return 0 !== this.negative ? 0 | -t : t
      }
      ,
      a.prototype.ucmp = function(e) {
          if (this.length > e.length)
              return 1;
          if (this.length < e.length)
              return -1;
          for (var t = 0, i = this.length - 1; i >= 0; i--) {
              var n = 0 | this.words[i]
                , r = 0 | e.words[i];
              if (n !== r) {
                  n < r ? t = -1 : n > r && (t = 1);
                  break
              }
          }
          return t
      }
      ,
      a.prototype.gtn = function(e) {
          return 1 === this.cmpn(e)
      }
      ,
      a.prototype.gt = function(e) {
          return 1 === this.cmp(e)
      }
      ,
      a.prototype.gten = function(e) {
          return this.cmpn(e) >= 0
      }
      ,
      a.prototype.gte = function(e) {
          return this.cmp(e) >= 0
      }
      ,
      a.prototype.ltn = function(e) {
          return -1 === this.cmpn(e)
      }
      ,
      a.prototype.lt = function(e) {
          return -1 === this.cmp(e)
      }
      ,
      a.prototype.lten = function(e) {
          return 0 >= this.cmpn(e)
      }
      ,
      a.prototype.lte = function(e) {
          return 0 >= this.cmp(e)
      }
      ,
      a.prototype.eqn = function(e) {
          return 0 === this.cmpn(e)
      }
      ,
      a.prototype.eq = function(e) {
          return 0 === this.cmp(e)
      }
      ,
      a.red = function(e) {
          return new M(e)
      }
      ,
      a.prototype.toRed = function(e) {
          return n(!this.red, "Already a number in reduction context"),
          n(0 === this.negative, "red works only with positives"),
          e.convertTo(this)._forceRed(e)
      }
      ,
      a.prototype.fromRed = function() {
          return n(this.red, "fromRed works only with numbers in reduction context"),
          this.red.convertFrom(this)
      }
      ,
      a.prototype._forceRed = function(e) {
          return this.red = e,
          this
      }
      ,
      a.prototype.forceRed = function(e) {
          return n(!this.red, "Already a number in reduction context"),
          this._forceRed(e)
      }
      ,
      a.prototype.redAdd = function(e) {
          return n(this.red, "redAdd works only with red numbers"),
          this.red.add(this, e)
      }
      ,
      a.prototype.redIAdd = function(e) {
          return n(this.red, "redIAdd works only with red numbers"),
          this.red.iadd(this, e)
      }
      ,
      a.prototype.redSub = function(e) {
          return n(this.red, "redSub works only with red numbers"),
          this.red.sub(this, e)
      }
      ,
      a.prototype.redISub = function(e) {
          return n(this.red, "redISub works only with red numbers"),
          this.red.isub(this, e)
      }
      ,
      a.prototype.redShl = function(e) {
          return n(this.red, "redShl works only with red numbers"),
          this.red.shl(this, e)
      }
      ,
      a.prototype.redMul = function(e) {
          return n(this.red, "redMul works only with red numbers"),
          this.red._verify2(this, e),
          this.red.mul(this, e)
      }
      ,
      a.prototype.redIMul = function(e) {
          return n(this.red, "redMul works only with red numbers"),
          this.red._verify2(this, e),
          this.red.imul(this, e)
      }
      ,
      a.prototype.redSqr = function() {
          return n(this.red, "redSqr works only with red numbers"),
          this.red._verify1(this),
          this.red.sqr(this)
      }
      ,
      a.prototype.redISqr = function() {
          return n(this.red, "redISqr works only with red numbers"),
          this.red._verify1(this),
          this.red.isqr(this)
      }
      ,
      a.prototype.redSqrt = function() {
          return n(this.red, "redSqrt works only with red numbers"),
          this.red._verify1(this),
          this.red.sqrt(this)
      }
      ,
      a.prototype.redInvm = function() {
          return n(this.red, "redInvm works only with red numbers"),
          this.red._verify1(this),
          this.red.invm(this)
      }
      ,
      a.prototype.redNeg = function() {
          return n(this.red, "redNeg works only with red numbers"),
          this.red._verify1(this),
          this.red.neg(this)
      }
      ,
      a.prototype.redPow = function(e) {
          return n(this.red && !e.red, "redPow(normalNum)"),
          this.red._verify1(this),
          this.red.pow(this, e)
      }
      ;
      var y = {
          k256: null,
          p224: null,
          p192: null,
          p25519: null
      };
      function b(e, t) {
          this.name = e,
          this.p = new a(t,16),
          this.n = this.p.bitLength(),
          this.k = new a(1).iushln(this.n).isub(this.p),
          this.tmp = this._tmp()
      }
      function I() {
          b.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")
      }
      function w() {
          b.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")
      }
      function x() {
          b.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")
      }
      function S() {
          b.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")
      }
      function M(e) {
          if ("string" == typeof e) {
              var t = a._prime(e);
              this.m = t.p,
              this.prime = t
          } else
              n(e.gtn(1), "modulus must be greater than 1"),
              this.m = e,
              this.prime = null
      }
      function C(e) {
          M.call(this, e),
          this.shift = this.m.bitLength(),
          this.shift % 26 != 0 && (this.shift += 26 - this.shift % 26),
          this.r = new a(1).iushln(this.shift),
          this.r2 = this.imod(this.r.sqr()),
          this.rinv = this.r._invmp(this.m),
          this.minv = this.rinv.mul(this.r).isubn(1).div(this.m),
          this.minv = this.minv.umod(this.r),
          this.minv = this.r.sub(this.minv)
      }
      b.prototype._tmp = function() {
          var e = new a(null);
          return e.words = Array(Math.ceil(this.n / 13)),
          e
      }
      ,
      b.prototype.ireduce = function(e) {
          var t, i = e;
          do
              this.split(i, this.tmp),
              t = (i = (i = this.imulK(i)).iadd(this.tmp)).bitLength();
          while (t > this.n);
          var n = t < this.n ? -1 : i.ucmp(this.p);
          return 0 === n ? (i.words[0] = 0,
          i.length = 1) : n > 0 ? i.isub(this.p) : void 0 !== i.strip ? i.strip() : i._strip(),
          i
      }
      ,
      b.prototype.split = function(e, t) {
          e.iushrn(this.n, 0, t)
      }
      ,
      b.prototype.imulK = function(e) {
          return e.imul(this.k)
      }
      ,
      r(I, b),
      I.prototype.split = function(e, t) {
          for (var i = 4194303, n = Math.min(e.length, 9), r = 0; r < n; r++)
              t.words[r] = e.words[r];
          if (t.length = n,
          e.length <= 9) {
              e.words[0] = 0,
              e.length = 1;
              return
          }
          var a = e.words[9];
          for (r = 10,
          t.words[t.length++] = a & i; r < e.length; r++) {
              var o = 0 | e.words[r];
              e.words[r - 10] = (o & i) << 4 | a >>> 22,
              a = o
          }
          a >>>= 22,
          e.words[r - 10] = a,
          0 === a && e.length > 10 ? e.length -= 10 : e.length -= 9
      }
      ,
      I.prototype.imulK = function(e) {
          e.words[e.length] = 0,
          e.words[e.length + 1] = 0,
          e.length += 2;
          for (var t = 0, i = 0; i < e.length; i++) {
              var n = 0 | e.words[i];
              t += 977 * n,
              e.words[i] = 0x3ffffff & t,
              t = 64 * n + (t / 0x4000000 | 0)
          }
          return 0 === e.words[e.length - 1] && (e.length--,
          0 === e.words[e.length - 1] && e.length--),
          e
      }
      ,
      r(w, b),
      r(x, b),
      r(S, b),
      S.prototype.imulK = function(e) {
          for (var t = 0, i = 0; i < e.length; i++) {
              var n = (0 | e.words[i]) * 19 + t
                , r = 0x3ffffff & n;
              n >>>= 26,
              e.words[i] = r,
              t = n
          }
          return 0 !== t && (e.words[e.length++] = t),
          e
      }
      ,
      a._prime = function(e) {
          var t;
          if (y[e])
              return y[e];
          if ("k256" === e)
              t = new I;
          else if ("p224" === e)
              t = new w;
          else if ("p192" === e)
              t = new x;
          else if ("p25519" === e)
              t = new S;
          else
              throw Error("Unknown prime " + e);
          return y[e] = t,
          t
      }
      ,
      M.prototype._verify1 = function(e) {
          n(0 === e.negative, "red works only with positives"),
          n(e.red, "red works only with red numbers")
      }
      ,
      M.prototype._verify2 = function(e, t) {
          n((e.negative | t.negative) == 0, "red works only with positives"),
          n(e.red && e.red === t.red, "red works only with red numbers")
      }
      ,
      M.prototype.imod = function(e) {
          return this.prime ? this.prime.ireduce(e)._forceRed(this) : e.umod(this.m)._forceRed(this)
      }
      ,
      M.prototype.neg = function(e) {
          return e.isZero() ? e.clone() : this.m.sub(e)._forceRed(this)
      }
      ,
      M.prototype.add = function(e, t) {
          this._verify2(e, t);
          var i = e.add(t);
          return i.cmp(this.m) >= 0 && i.isub(this.m),
          i._forceRed(this)
      }
      ,
      M.prototype.iadd = function(e, t) {
          this._verify2(e, t);
          var i = e.iadd(t);
          return i.cmp(this.m) >= 0 && i.isub(this.m),
          i
      }
      ,
      M.prototype.sub = function(e, t) {
          this._verify2(e, t);
          var i = e.sub(t);
          return 0 > i.cmpn(0) && i.iadd(this.m),
          i._forceRed(this)
      }
      ,
      M.prototype.isub = function(e, t) {
          this._verify2(e, t);
          var i = e.isub(t);
          return 0 > i.cmpn(0) && i.iadd(this.m),
          i
      }
      ,
      M.prototype.shl = function(e, t) {
          return this._verify1(e),
          this.imod(e.ushln(t))
      }
      ,
      M.prototype.imul = function(e, t) {
          return this._verify2(e, t),
          this.imod(e.imul(t))
      }
      ,
      M.prototype.mul = function(e, t) {
          return this._verify2(e, t),
          this.imod(e.mul(t))
      }
      ,
      M.prototype.isqr = function(e) {
          return this.imul(e, e.clone())
      }
      ,
      M.prototype.sqr = function(e) {
          return this.mul(e, e)
      }
      ,
      M.prototype.sqrt = function(e) {
          if (e.isZero())
              return e.clone();
          var t = this.m.andln(3);
          if (n(t % 2 == 1),
          3 === t) {
              var i = this.m.add(new a(1)).iushrn(2);
              return this.pow(e, i)
          }
          for (var r = this.m.subn(1), o = 0; !r.isZero() && 0 === r.andln(1); )
              o++,
              r.iushrn(1);
          n(!r.isZero());
          var s = new a(1).toRed(this)
            , l = s.redNeg()
            , c = this.m.subn(1).iushrn(1)
            , d = this.m.bitLength();
          for (d = new a(2 * d * d).toRed(this); 0 !== this.pow(d, c).cmp(l); )
              d.redIAdd(l);
          for (var u = this.pow(d, r), f = this.pow(e, r.addn(1).iushrn(1)), h = this.pow(e, r), p = o; 0 !== h.cmp(s); ) {
              for (var v = h, m = 0; 0 !== v.cmp(s); m++)
                  v = v.redSqr();
              n(m < p);
              var g = this.pow(u, new a(1).iushln(p - m - 1));
              f = f.redMul(g),
              u = g.redSqr(),
              h = h.redMul(u),
              p = m
          }
          return f
      }
      ,
      M.prototype.invm = function(e) {
          var t = e._invmp(this.m);
          return 0 !== t.negative ? (t.negative = 0,
          this.imod(t).redNeg()) : this.imod(t)
      }
      ,
      M.prototype.pow = function(e, t) {
          if (t.isZero())
              return new a(1).toRed(this);
          if (0 === t.cmpn(1))
              return e.clone();
          var i = 4
            , n = Array(16);
          n[0] = new a(1).toRed(this),
          n[1] = e;
          for (var r = 2; r < n.length; r++)
              n[r] = this.mul(n[r - 1], e);
          var o = n[0]
            , s = 0
            , l = 0
            , c = t.bitLength() % 26;
          for (0 === c && (c = 26),
          r = t.length - 1; r >= 0; r--) {
              for (var d = t.words[r], u = c - 1; u >= 0; u--) {
                  var f = d >> u & 1;
                  if (o !== n[0] && (o = this.sqr(o)),
                  0 === f && 0 === s) {
                      l = 0;
                      continue
                  }
                  s <<= 1,
                  s |= f,
                  (++l === i || 0 === r && 0 === u) && (o = this.mul(o, n[s]),
                  l = 0,
                  s = 0)
              }
              c = 26
          }
          return o
      }
      ,
      M.prototype.convertTo = function(e) {
          var t = e.umod(this.m);
          return t === e ? t.clone() : t
      }
      ,
      M.prototype.convertFrom = function(e) {
          var t = e.clone();
          return t.red = null,
          t
      }
      ,
      a.mont = function(e) {
          return new C(e)
      }
      ,
      r(C, M),
      C.prototype.convertTo = function(e) {
          return this.imod(e.ushln(this.shift))
      }
      ,
      C.prototype.convertFrom = function(e) {
          var t = this.imod(e.mul(this.rinv));
          return t.red = null,
          t
      }
      ,
      C.prototype.imul = function(e, t) {
          if (e.isZero() || t.isZero())
              return e.words[0] = 0,
              e.length = 1,
              e;
          var i = e.imul(t)
            , n = i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m)
            , r = i.isub(n).iushrn(this.shift)
            , a = r;
          return r.cmp(this.m) >= 0 ? a = r.isub(this.m) : 0 > r.cmpn(0) && (a = r.iadd(this.m)),
          a._forceRed(this)
      }
      ,
      C.prototype.mul = function(e, t) {
          if (e.isZero() || t.isZero())
              return new a(0)._forceRed(this);
          var i = e.mul(t)
            , n = i.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m)
            , r = i.isub(n).iushrn(this.shift)
            , o = r;
          return r.cmp(this.m) >= 0 ? o = r.isub(this.m) : 0 > r.cmpn(0) && (o = r.iadd(this.m)),
          o._forceRed(this)
      }
      ,
      C.prototype.invm = function(e) {
          return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)
      }
  }(e = i.nmd(e), this)
}

function T966465(t, e, r) {
  "use strict";
  let n = r(814800)
    , o = r(933977)
    , i = "function" == typeof Symbol && "function" == typeof Symbol.for ? Symbol.for("nodejs.util.inspect.custom") : null;
  e.Buffer = s,
  e.SlowBuffer = function(t) {
      return +t != t && (t = 0),
      s.alloc(+t)
  }
  ,
  e.INSPECT_MAX_BYTES = 50;
  e.kMaxLength = 0x7fffffff,
  s.TYPED_ARRAY_SUPPORT = function() {
      try {
          let t = new Uint8Array(1)
            , e = {
              foo: function() {
                  return 42
              }
          };
          return Object.setPrototypeOf(e, Uint8Array.prototype),
          Object.setPrototypeOf(t, e),
          42 === t.foo()
      } catch (t) {
          return !1
      }
  }(),
  !s.TYPED_ARRAY_SUPPORT && "undefined" != typeof console && "function" == typeof console.error && console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
  function a(t) {
      if (t > 0x7fffffff)
          throw RangeError('The value "' + t + '" is invalid for option "size"');
      let e = new Uint8Array(t);
      return Object.setPrototypeOf(e, s.prototype),
      e
  }
  function s(t, e, r) {
      if ("number" == typeof t) {
          if ("string" == typeof e)
              throw TypeError('The "string" argument must be of type string. Received type number');
          return f(t)
      }
      return u(t, e, r)
  }
  function u(t, e, r) {
      if ("string" == typeof t)
          return function(t, e) {
              if (("string" != typeof e || "" === e) && (e = "utf8"),
              !s.isEncoding(e))
                  throw TypeError("Unknown encoding: " + e);
              let r = 0 | d(t, e)
                , n = a(r)
                , o = n.write(t, e);
              return o !== r && (n = n.slice(0, o)),
              n
          }(t, e);
      if (ArrayBuffer.isView(t))
          return function(t) {
              if (U(t, Uint8Array)) {
                  let e = new Uint8Array(t);
                  return h(e.buffer, e.byteOffset, e.byteLength)
              }
              return l(t)
          }(t);
      if (null == t)
          throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t);
      if (U(t, ArrayBuffer) || t && U(t.buffer, ArrayBuffer) || "undefined" != typeof SharedArrayBuffer && (U(t, SharedArrayBuffer) || t && U(t.buffer, SharedArrayBuffer)))
          return h(t, e, r);
      if ("number" == typeof t)
          throw TypeError('The "value" argument must not be of type number. Received type number');
      let n = t.valueOf && t.valueOf();
      if (null != n && n !== t)
          return s.from(n, e, r);
      let o = function(t) {
          if (s.isBuffer(t)) {
              let e = 0 | p(t.length)
                , r = a(e);
              return 0 === r.length ? r : (t.copy(r, 0, 0, e),
              r)
          }
          if (void 0 !== t.length)
              return "number" != typeof t.length || B(t.length) ? a(0) : l(t);
          if ("Buffer" === t.type && Array.isArray(t.data))
              return l(t.data)
      }(t);
      if (o)
          return o;
      if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t[Symbol.toPrimitive])
          return s.from(t[Symbol.toPrimitive]("string"), e, r);
      throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t)
  }
  function c(t) {
      if ("number" != typeof t)
          throw TypeError('"size" argument must be of type number');
      if (t < 0)
          throw RangeError('The value "' + t + '" is invalid for option "size"')
  }
  Object.defineProperty(s.prototype, "parent", {
      enumerable: !0,
      get: function() {
          if (s.isBuffer(this))
              return this.buffer
      }
  }),
  Object.defineProperty(s.prototype, "offset", {
      enumerable: !0,
      get: function() {
          if (s.isBuffer(this))
              return this.byteOffset
      }
  }),
  s.poolSize = 8192,
  s.from = function(t, e, r) {
      return u(t, e, r)
  }
  ,
  Object.setPrototypeOf(s.prototype, Uint8Array.prototype),
  Object.setPrototypeOf(s, Uint8Array);
  function f(t) {
      return c(t),
      a(t < 0 ? 0 : 0 | p(t))
  }
  s.alloc = function(t, e, r) {
      var n, o, i;
      return n = t,
      o = e,
      i = r,
      (c(n),
      n <= 0) ? a(n) : void 0 !== o ? "string" == typeof i ? a(n).fill(o, i) : a(n).fill(o) : a(n)
  }
  ,
  s.allocUnsafe = function(t) {
      return f(t)
  }
  ,
  s.allocUnsafeSlow = function(t) {
      return f(t)
  }
  ;
  function l(t) {
      let e = t.length < 0 ? 0 : 0 | p(t.length)
        , r = a(e);
      for (let n = 0; n < e; n += 1)
          r[n] = 255 & t[n];
      return r
  }
  function h(t, e, r) {
      let n;
      if (e < 0 || t.byteLength < e)
          throw RangeError('"offset" is outside of buffer bounds');
      if (t.byteLength < e + (r || 0))
          throw RangeError('"length" is outside of buffer bounds');
      return Object.setPrototypeOf(n = void 0 === e && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t,e) : new Uint8Array(t,e,r), s.prototype),
      n
  }
  function p(t) {
      if (t >= 0x7fffffff)
          throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + "7fffffff bytes");
      return 0 | t
  }
  function d(t, e) {
      if (s.isBuffer(t))
          return t.length;
      if (ArrayBuffer.isView(t) || U(t, ArrayBuffer))
          return t.byteLength;
      if ("string" != typeof t)
          throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t);
      let r = t.length
        , n = arguments.length > 2 && !0 === arguments[2];
      if (!n && 0 === r)
          return 0;
      let o = !1;
      for (; ; )
          switch (e) {
          case "ascii":
          case "latin1":
          case "binary":
              return r;
          case "utf8":
          case "utf-8":
              return L(t).length;
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
              return 2 * r;
          case "hex":
              return r >>> 1;
          case "base64":
              return M(t).length;
          default:
              if (o)
                  return n ? -1 : L(t).length;
              e = ("" + e).toLowerCase(),
              o = !0
          }
  }
  function v(t, e, r) {
      let o = !1;
      if ((void 0 === e || e < 0) && (e = 0),
      e > this.length)
          return "";
      if ((void 0 === r || r > this.length) && (r = this.length),
      r <= 0 || (r >>>= 0) <= (e >>>= 0))
          return "";
      for (!t && (t = "utf8"); ; )
          switch (t) {
          case "hex":
              return function(t, e, r) {
                  let n = t.length;
                  (!e || e < 0) && (e = 0),
                  (!r || r < 0 || r > n) && (r = n);
                  let o = "";
                  for (let n = e; n < r; ++n)
                      o += D[t[n]];
                  return o
              }(this, e, r);
          case "utf8":
          case "utf-8":
              return b(this, e, r);
          case "ascii":
              return function(t, e, r) {
                  let n = "";
                  r = Math.min(t.length, r);
                  for (let o = e; o < r; ++o)
                      n += String.fromCharCode(127 & t[o]);
                  return n
              }(this, e, r);
          case "latin1":
          case "binary":
              return function(t, e, r) {
                  let n = "";
                  r = Math.min(t.length, r);
                  for (let o = e; o < r; ++o)
                      n += String.fromCharCode(t[o]);
                  return n
              }(this, e, r);
          case "base64":
              return function(t, e, r) {
                  return 0 === e && r === t.length ? n.fromByteArray(t) : n.fromByteArray(t.slice(e, r))
              }(this, e, r);
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
              return function(t, e, r) {
                  let n = t.slice(e, r)
                    , o = "";
                  for (let t = 0; t < n.length - 1; t += 2)
                      o += String.fromCharCode(n[t] + 256 * n[t + 1]);
                  return o
              }(this, e, r);
          default:
              if (o)
                  throw TypeError("Unknown encoding: " + t);
              t = (t + "").toLowerCase(),
              o = !0
          }
  }
  function g(t, e, r) {
      let n = t[e];
      t[e] = t[r],
      t[r] = n
  }
  function y(t, e, r, n, o) {
      if (0 === t.length)
          return -1;
      if ("string" == typeof r ? (n = r,
      r = 0) : r > 0x7fffffff ? r = 0x7fffffff : r < -0x80000000 && (r = -0x80000000),
      function(t) {
          return t != t
      }(r = +r) && (r = o ? 0 : t.length - 1),
      r < 0 && (r = t.length + r),
      r >= t.length) {
          if (o)
              return -1;
          r = t.length - 1
      } else if (r < 0) {
          if (!o)
              return -1;
          r = 0
      }
      if ("string" == typeof e && (e = s.from(e, n)),
      s.isBuffer(e))
          return 0 === e.length ? -1 : m(t, e, r, n, o);
      if ("number" == typeof e) {
          if (e &= 255,
          "function" == typeof Uint8Array.prototype.indexOf)
              return o ? Uint8Array.prototype.indexOf.call(t, e, r) : Uint8Array.prototype.lastIndexOf.call(t, e, r);
          return m(t, [e], r, n, o)
      }
      throw TypeError("val must be string, number or Buffer")
  }
  function m(t, e, r, n, o) {
      let i, a = 1, s = t.length, u = e.length;
      if (void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n)) {
          if (t.length < 2 || e.length < 2)
              return -1;
          a = 2,
          s /= 2,
          u /= 2,
          r /= 2
      }
      function c(t, e) {
          return 1 === a ? t[e] : t.readUInt16BE(e * a)
      }
      if (o) {
          let n = -1;
          for (i = r; i < s; i++)
              if (c(t, i) === c(e, -1 === n ? 0 : i - n)) {
                  if (-1 === n && (n = i),
                  i - n + 1 === u)
                      return n * a
              } else
                  -1 !== n && (i -= i - n),
                  n = -1
      } else
          for (r + u > s && (r = s - u),
          i = r; i >= 0; i--) {
              let r = !0;
              for (let n = 0; n < u; n++)
                  if (c(t, i + n) !== c(e, n)) {
                      r = !1;
                      break
                  }
              if (r)
                  return i
          }
      return -1
  }
  s.isBuffer = function(t) {
      return null != t && !0 === t._isBuffer && t !== s.prototype
  }
  ,
  s.compare = function(t, e) {
      if (U(t, Uint8Array) && (t = s.from(t, t.offset, t.byteLength)),
      U(e, Uint8Array) && (e = s.from(e, e.offset, e.byteLength)),
      !s.isBuffer(t) || !s.isBuffer(e))
          throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
      if (t === e)
          return 0;
      let r = t.length
        , n = e.length;
      for (let o = 0, i = Math.min(r, n); o < i; ++o)
          if (t[o] !== e[o]) {
              r = t[o],
              n = e[o];
              break
          }
      return r < n ? -1 : n < r ? 1 : 0
  }
  ,
  s.isEncoding = function(t) {
      switch (String(t).toLowerCase()) {
      case "hex":
      case "utf8":
      case "utf-8":
      case "ascii":
      case "latin1":
      case "binary":
      case "base64":
      case "ucs2":
      case "ucs-2":
      case "utf16le":
      case "utf-16le":
          return !0;
      default:
          return !1
      }
  }
  ,
  s.concat = function(t, e) {
      let r;
      if (!Array.isArray(t))
          throw TypeError('"list" argument must be an Array of Buffers');
      if (0 === t.length)
          return s.alloc(0);
      if (void 0 === e)
          for (r = 0,
          e = 0; r < t.length; ++r)
              e += t[r].length;
      let n = s.allocUnsafe(e)
        , o = 0;
      for (r = 0; r < t.length; ++r) {
          let e = t[r];
          if (U(e, Uint8Array))
              o + e.length > n.length ? (!s.isBuffer(e) && (e = s.from(e)),
              e.copy(n, o)) : Uint8Array.prototype.set.call(n, e, o);
          else if (s.isBuffer(e))
              e.copy(n, o);
          else
              throw TypeError('"list" argument must be an Array of Buffers');
          o += e.length
      }
      return n
  }
  ,
  s.byteLength = d,
  s.prototype._isBuffer = !0,
  s.prototype.swap16 = function() {
      let t = this.length;
      if (t % 2 != 0)
          throw RangeError("Buffer size must be a multiple of 16-bits");
      for (let e = 0; e < t; e += 2)
          g(this, e, e + 1);
      return this
  }
  ,
  s.prototype.swap32 = function() {
      let t = this.length;
      if (t % 4 != 0)
          throw RangeError("Buffer size must be a multiple of 32-bits");
      for (let e = 0; e < t; e += 4)
          g(this, e, e + 3),
          g(this, e + 1, e + 2);
      return this
  }
  ,
  s.prototype.swap64 = function() {
      let t = this.length;
      if (t % 8 != 0)
          throw RangeError("Buffer size must be a multiple of 64-bits");
      for (let e = 0; e < t; e += 8)
          g(this, e, e + 7),
          g(this, e + 1, e + 6),
          g(this, e + 2, e + 5),
          g(this, e + 3, e + 4);
      return this
  }
  ,
  s.prototype.toString = function() {
      let t = this.length;
      return 0 === t ? "" : 0 == arguments.length ? b(this, 0, t) : v.apply(this, arguments)
  }
  ,
  s.prototype.toLocaleString = s.prototype.toString,
  s.prototype.equals = function(t) {
      if (!s.isBuffer(t))
          throw TypeError("Argument must be a Buffer");
      return this === t || 0 === s.compare(this, t)
  }
  ,
  s.prototype.inspect = function() {
      let t = ""
        , r = e.INSPECT_MAX_BYTES;
      return t = this.toString("hex", 0, r).replace(/(.{2})/g, "$1 ").trim(),
      this.length > r && (t += " ... "),
      "<Buffer " + t + ">"
  }
  ,
  i && (s.prototype[i] = s.prototype.inspect),
  s.prototype.compare = function(t, e, r, n, o) {
      if (U(t, Uint8Array) && (t = s.from(t, t.offset, t.byteLength)),
      !s.isBuffer(t))
          throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t);
      if (void 0 === e && (e = 0),
      void 0 === r && (r = t ? t.length : 0),
      void 0 === n && (n = 0),
      void 0 === o && (o = this.length),
      e < 0 || r > t.length || n < 0 || o > this.length)
          throw RangeError("out of range index");
      if (n >= o && e >= r)
          return 0;
      if (n >= o)
          return -1;
      if (e >= r)
          return 1;
      if (e >>>= 0,
      r >>>= 0,
      n >>>= 0,
      o >>>= 0,
      this === t)
          return 0;
      let i = o - n
        , a = r - e
        , u = Math.min(i, a)
        , c = this.slice(n, o)
        , f = t.slice(e, r);
      for (let t = 0; t < u; ++t)
          if (c[t] !== f[t]) {
              i = c[t],
              a = f[t];
              break
          }
      return i < a ? -1 : a < i ? 1 : 0
  }
  ,
  s.prototype.includes = function(t, e, r) {
      return -1 !== this.indexOf(t, e, r)
  }
  ,
  s.prototype.indexOf = function(t, e, r) {
      return y(this, t, e, r, !0)
  }
  ,
  s.prototype.lastIndexOf = function(t, e, r) {
      return y(this, t, e, r, !1)
  }
  ;
  s.prototype.write = function(t, e, r, n) {
      var o, i, a, s, u, c, f, l, h, p, d, v, g, y, m, b;
      if (void 0 === e)
          n = "utf8",
          r = this.length,
          e = 0;
      else if (void 0 === r && "string" == typeof e)
          n = e,
          r = this.length,
          e = 0;
      else if (isFinite(e))
          e >>>= 0,
          isFinite(r) ? (r >>>= 0,
          void 0 === n && (n = "utf8")) : (n = r,
          r = void 0);
      else
          throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
      let w = this.length - e;
      if ((void 0 === r || r > w) && (r = w),
      t.length > 0 && (r < 0 || e < 0) || e > this.length)
          throw RangeError("Attempt to write outside buffer bounds");
      !n && (n = "utf8");
      let x = !1;
      for (; ; )
          switch (n) {
          case "hex":
              return function(t, e, r, n) {
                  let o;
                  r = Number(r) || 0;
                  let i = t.length - r;
                  n ? (n = Number(n)) > i && (n = i) : n = i;
                  let a = e.length;
                  for (n > a / 2 && (n = a / 2),
                  o = 0; o < n; ++o) {
                      let n = parseInt(e.substr(2 * o, 2), 16);
                      if (function(t) {
                          return t != t
                      }(n))
                          break;
                      t[r + o] = n
                  }
                  return o
              }(this, t, e, r);
          case "utf8":
          case "utf-8":
              ;return o = this,
              i = t,
              a = e,
              s = r,
              N(L(i, o.length - a), o, a, s);
          case "ascii":
          case "latin1":
          case "binary":
              ;return u = this,
              c = t,
              f = e,
              l = r,
              N(function(t) {
                  let e = [];
                  for (let r = 0; r < t.length; ++r)
                      e.push(255 & t.charCodeAt(r));
                  return e
              }(c), u, f, l);
          case "base64":
              ;return h = this,
              p = t,
              d = e,
              v = r,
              N(M(p), h, d, v);
          case "ucs2":
          case "ucs-2":
          case "utf16le":
          case "utf-16le":
              ;return g = this,
              y = t,
              m = e,
              b = r,
              N(function(t, e) {
                  let r, n, o;
                  let i = [];
                  for (let a = 0; a < t.length && !((e -= 2) < 0); ++a)
                      n = (r = t.charCodeAt(a)) >> 8,
                      o = r % 256,
                      i.push(o),
                      i.push(n);
                  return i
              }(y, g.length - m), g, m, b);
          default:
              if (x)
                  throw TypeError("Unknown encoding: " + n);
              n = ("" + n).toLowerCase(),
              x = !0
          }
  }
  ,
  s.prototype.toJSON = function() {
      return {
          type: "Buffer",
          data: Array.prototype.slice.call(this._arr || this, 0)
      }
  }
  ;
  function b(t, e, r) {
      r = Math.min(t.length, r);
      let n = []
        , o = e;
      for (; o < r; ) {
          let e = t[o]
            , i = null
            , a = e > 239 ? 4 : e > 223 ? 3 : e > 191 ? 2 : 1;
          if (o + a <= r) {
              let r, n, s, u;
              switch (a) {
              case 1:
                  e < 128 && (i = e);
                  break;
              case 2:
                  (192 & (r = t[o + 1])) == 128 && (u = (31 & e) << 6 | 63 & r) > 127 && (i = u);
                  break;
              case 3:
                  r = t[o + 1],
                  n = t[o + 2],
                  (192 & r) == 128 && (192 & n) == 128 && (u = (15 & e) << 12 | (63 & r) << 6 | 63 & n) > 2047 && (u < 55296 || u > 57343) && (i = u);
                  break;
              case 4:
                  r = t[o + 1],
                  n = t[o + 2],
                  s = t[o + 3],
                  (192 & r) == 128 && (192 & n) == 128 && (192 & s) == 128 && (u = (15 & e) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & s) > 65535 && u < 1114112 && (i = u)
              }
          }
          null === i ? (i = 65533,
          a = 1) : i > 65535 && (i -= 65536,
          n.push(i >>> 10 & 1023 | 55296),
          i = 56320 | 1023 & i),
          n.push(i),
          o += a
      }
      return function(t) {
          let e = t.length;
          if (e <= 4096)
              return String.fromCharCode.apply(String, t);
          let r = ""
            , n = 0;
          for (; n < e; )
              r += String.fromCharCode.apply(String, t.slice(n, n += 4096));
          return r
      }(n)
  }
  function w(t, e, r) {
      if (t % 1 != 0 || t < 0)
          throw RangeError("offset is not uint");
      if (t + e > r)
          throw RangeError("Trying to access beyond buffer length")
  }
  function x(t, e, r, n, o, i) {
      if (!s.isBuffer(t))
          throw TypeError('"buffer" argument must be a Buffer instance');
      if (e > o || e < i)
          throw RangeError('"value" argument is out of bounds');
      if (r + n > t.length)
          throw RangeError("Index out of range")
  }
  function E(t, e, r, n, o) {
      k(e, n, o, t, r, 7);
      let i = Number(e & BigInt(0xffffffff));
      t[r++] = i,
      i >>= 8,
      t[r++] = i,
      i >>= 8,
      t[r++] = i,
      i >>= 8,
      t[r++] = i;
      let a = Number(e >> BigInt(32) & BigInt(0xffffffff));
      return t[r++] = a,
      a >>= 8,
      t[r++] = a,
      a >>= 8,
      t[r++] = a,
      a >>= 8,
      t[r++] = a,
      r
  }
  function S(t, e, r, n, o) {
      k(e, n, o, t, r, 7);
      let i = Number(e & BigInt(0xffffffff));
      t[r + 7] = i,
      i >>= 8,
      t[r + 6] = i,
      i >>= 8,
      t[r + 5] = i,
      i >>= 8,
      t[r + 4] = i;
      let a = Number(e >> BigInt(32) & BigInt(0xffffffff));
      return t[r + 3] = a,
      a >>= 8,
      t[r + 2] = a,
      a >>= 8,
      t[r + 1] = a,
      a >>= 8,
      t[r] = a,
      r + 8
  }
  function A(t, e, r, n, o, i) {
      if (r + n > t.length || r < 0)
          throw RangeError("Index out of range")
  }
  function O(t, e, r, n, i) {
      return e = +e,
      r >>>= 0,
      !i && A(t, e, r, 4, 34028234663852886e22, -34028234663852886e22),
      o.write(t, e, r, n, 23, 4),
      r + 4
  }
  function T(t, e, r, n, i) {
      return e = +e,
      r >>>= 0,
      !i && A(t, e, r, 8, 17976931348623157e292, -17976931348623157e292),
      o.write(t, e, r, n, 52, 8),
      r + 8
  }
  s.prototype.slice = function(t, e) {
      let r = this.length;
      t = ~~t,
      e = void 0 === e ? r : ~~e,
      t < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r),
      e < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r),
      e < t && (e = t);
      let n = this.subarray(t, e);
      return Object.setPrototypeOf(n, s.prototype),
      n
  }
  ,
  s.prototype.readUintLE = s.prototype.readUIntLE = function(t, e, r) {
      t >>>= 0,
      e >>>= 0,
      !r && w(t, e, this.length);
      let n = this[t]
        , o = 1
        , i = 0;
      for (; ++i < e && (o *= 256); )
          n += this[t + i] * o;
      return n
  }
  ,
  s.prototype.readUintBE = s.prototype.readUIntBE = function(t, e, r) {
      t >>>= 0,
      e >>>= 0,
      !r && w(t, e, this.length);
      let n = this[t + --e]
        , o = 1;
      for (; e > 0 && (o *= 256); )
          n += this[t + --e] * o;
      return n
  }
  ,
  s.prototype.readUint8 = s.prototype.readUInt8 = function(t, e) {
      return t >>>= 0,
      !e && w(t, 1, this.length),
      this[t]
  }
  ,
  s.prototype.readUint16LE = s.prototype.readUInt16LE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 2, this.length),
      this[t] | this[t + 1] << 8
  }
  ,
  s.prototype.readUint16BE = s.prototype.readUInt16BE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 2, this.length),
      this[t] << 8 | this[t + 1]
  }
  ,
  s.prototype.readUint32LE = s.prototype.readUInt32LE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 0x1000000 * this[t + 3]
  }
  ,
  s.prototype.readUint32BE = s.prototype.readUInt32BE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      0x1000000 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3])
  }
  ,
  s.prototype.readBigUInt64LE = F(function(t) {
      C(t >>>= 0, "offset");
      let e = this[t]
        , r = this[t + 7];
      (void 0 === e || void 0 === r) && P(t, this.length - 8);
      let n = e + 256 * this[++t] + 65536 * this[++t] + 0x1000000 * this[++t]
        , o = this[++t] + 256 * this[++t] + 65536 * this[++t] + 0x1000000 * r;
      return BigInt(n) + (BigInt(o) << BigInt(32))
  }),
  s.prototype.readBigUInt64BE = F(function(t) {
      C(t >>>= 0, "offset");
      let e = this[t]
        , r = this[t + 7];
      (void 0 === e || void 0 === r) && P(t, this.length - 8);
      let n = 0x1000000 * e + 65536 * this[++t] + 256 * this[++t] + this[++t]
        , o = 0x1000000 * this[++t] + 65536 * this[++t] + 256 * this[++t] + r;
      return (BigInt(n) << BigInt(32)) + BigInt(o)
  }),
  s.prototype.readIntLE = function(t, e, r) {
      t >>>= 0,
      e >>>= 0,
      !r && w(t, e, this.length);
      let n = this[t]
        , o = 1
        , i = 0;
      for (; ++i < e && (o *= 256); )
          n += this[t + i] * o;
      return n >= (o *= 128) && (n -= Math.pow(2, 8 * e)),
      n
  }
  ,
  s.prototype.readIntBE = function(t, e, r) {
      t >>>= 0,
      e >>>= 0,
      !r && w(t, e, this.length);
      let n = e
        , o = 1
        , i = this[t + --n];
      for (; n > 0 && (o *= 256); )
          i += this[t + --n] * o;
      return i >= (o *= 128) && (i -= Math.pow(2, 8 * e)),
      i
  }
  ,
  s.prototype.readInt8 = function(t, e) {
      return (t >>>= 0,
      !e && w(t, 1, this.length),
      128 & this[t]) ? -((255 - this[t] + 1) * 1) : this[t]
  }
  ,
  s.prototype.readInt16LE = function(t, e) {
      t >>>= 0,
      !e && w(t, 2, this.length);
      let r = this[t] | this[t + 1] << 8;
      return 32768 & r ? 0xffff0000 | r : r
  }
  ,
  s.prototype.readInt16BE = function(t, e) {
      t >>>= 0,
      !e && w(t, 2, this.length);
      let r = this[t + 1] | this[t] << 8;
      return 32768 & r ? 0xffff0000 | r : r
  }
  ,
  s.prototype.readInt32LE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24
  }
  ,
  s.prototype.readInt32BE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]
  }
  ,
  s.prototype.readBigInt64LE = F(function(t) {
      C(t >>>= 0, "offset");
      let e = this[t]
        , r = this[t + 7];
      return (void 0 === e || void 0 === r) && P(t, this.length - 8),
      (BigInt(this[t + 4] + 256 * this[t + 5] + 65536 * this[t + 6] + (r << 24)) << BigInt(32)) + BigInt(e + 256 * this[++t] + 65536 * this[++t] + 0x1000000 * this[++t])
  }),
  s.prototype.readBigInt64BE = F(function(t) {
      C(t >>>= 0, "offset");
      let e = this[t]
        , r = this[t + 7];
      return (void 0 === e || void 0 === r) && P(t, this.length - 8),
      (BigInt((e << 24) + 65536 * this[++t] + 256 * this[++t] + this[++t]) << BigInt(32)) + BigInt(0x1000000 * this[++t] + 65536 * this[++t] + 256 * this[++t] + r)
  }),
  s.prototype.readFloatLE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      o.read(this, t, !0, 23, 4)
  }
  ,
  s.prototype.readFloatBE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 4, this.length),
      o.read(this, t, !1, 23, 4)
  }
  ,
  s.prototype.readDoubleLE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 8, this.length),
      o.read(this, t, !0, 52, 8)
  }
  ,
  s.prototype.readDoubleBE = function(t, e) {
      return t >>>= 0,
      !e && w(t, 8, this.length),
      o.read(this, t, !1, 52, 8)
  }
  ,
  s.prototype.writeUintLE = s.prototype.writeUIntLE = function(t, e, r, n) {
      if (t = +t,
      e >>>= 0,
      r >>>= 0,
      !n) {
          let n = Math.pow(2, 8 * r) - 1;
          x(this, t, e, r, n, 0)
      }
      let o = 1
        , i = 0;
      for (this[e] = 255 & t; ++i < r && (o *= 256); )
          this[e + i] = t / o & 255;
      return e + r
  }
  ,
  s.prototype.writeUintBE = s.prototype.writeUIntBE = function(t, e, r, n) {
      if (t = +t,
      e >>>= 0,
      r >>>= 0,
      !n) {
          let n = Math.pow(2, 8 * r) - 1;
          x(this, t, e, r, n, 0)
      }
      let o = r - 1
        , i = 1;
      for (this[e + o] = 255 & t; --o >= 0 && (i *= 256); )
          this[e + o] = t / i & 255;
      return e + r
  }
  ,
  s.prototype.writeUint8 = s.prototype.writeUInt8 = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 1, 255, 0),
      this[e] = 255 & t,
      e + 1
  }
  ,
  s.prototype.writeUint16LE = s.prototype.writeUInt16LE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 2, 65535, 0),
      this[e] = 255 & t,
      this[e + 1] = t >>> 8,
      e + 2
  }
  ,
  s.prototype.writeUint16BE = s.prototype.writeUInt16BE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 2, 65535, 0),
      this[e] = t >>> 8,
      this[e + 1] = 255 & t,
      e + 2
  }
  ,
  s.prototype.writeUint32LE = s.prototype.writeUInt32LE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 4, 0xffffffff, 0),
      this[e + 3] = t >>> 24,
      this[e + 2] = t >>> 16,
      this[e + 1] = t >>> 8,
      this[e] = 255 & t,
      e + 4
  }
  ,
  s.prototype.writeUint32BE = s.prototype.writeUInt32BE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 4, 0xffffffff, 0),
      this[e] = t >>> 24,
      this[e + 1] = t >>> 16,
      this[e + 2] = t >>> 8,
      this[e + 3] = 255 & t,
      e + 4
  }
  ,
  s.prototype.writeBigUInt64LE = F(function(t, e=0) {
      return E(this, t, e, BigInt(0), BigInt("0xffffffffffffffff"))
  }),
  s.prototype.writeBigUInt64BE = F(function(t, e=0) {
      return S(this, t, e, BigInt(0), BigInt("0xffffffffffffffff"))
  }),
  s.prototype.writeIntLE = function(t, e, r, n) {
      if (t = +t,
      e >>>= 0,
      !n) {
          let n = Math.pow(2, 8 * r - 1);
          x(this, t, e, r, n - 1, -n)
      }
      let o = 0
        , i = 1
        , a = 0;
      for (this[e] = 255 & t; ++o < r && (i *= 256); )
          t < 0 && 0 === a && 0 !== this[e + o - 1] && (a = 1),
          this[e + o] = (t / i >> 0) - a & 255;
      return e + r
  }
  ,
  s.prototype.writeIntBE = function(t, e, r, n) {
      if (t = +t,
      e >>>= 0,
      !n) {
          let n = Math.pow(2, 8 * r - 1);
          x(this, t, e, r, n - 1, -n)
      }
      let o = r - 1
        , i = 1
        , a = 0;
      for (this[e + o] = 255 & t; --o >= 0 && (i *= 256); )
          t < 0 && 0 === a && 0 !== this[e + o + 1] && (a = 1),
          this[e + o] = (t / i >> 0) - a & 255;
      return e + r
  }
  ,
  s.prototype.writeInt8 = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 1, 127, -128),
      t < 0 && (t = 255 + t + 1),
      this[e] = 255 & t,
      e + 1
  }
  ,
  s.prototype.writeInt16LE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 2, 32767, -32768),
      this[e] = 255 & t,
      this[e + 1] = t >>> 8,
      e + 2
  }
  ,
  s.prototype.writeInt16BE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 2, 32767, -32768),
      this[e] = t >>> 8,
      this[e + 1] = 255 & t,
      e + 2
  }
  ,
  s.prototype.writeInt32LE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 4, 0x7fffffff, -0x80000000),
      this[e] = 255 & t,
      this[e + 1] = t >>> 8,
      this[e + 2] = t >>> 16,
      this[e + 3] = t >>> 24,
      e + 4
  }
  ,
  s.prototype.writeInt32BE = function(t, e, r) {
      return t = +t,
      e >>>= 0,
      !r && x(this, t, e, 4, 0x7fffffff, -0x80000000),
      t < 0 && (t = 0xffffffff + t + 1),
      this[e] = t >>> 24,
      this[e + 1] = t >>> 16,
      this[e + 2] = t >>> 8,
      this[e + 3] = 255 & t,
      e + 4
  }
  ,
  s.prototype.writeBigInt64LE = F(function(t, e=0) {
      return E(this, t, e, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"))
  }),
  s.prototype.writeBigInt64BE = F(function(t, e=0) {
      return S(this, t, e, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"))
  }),
  s.prototype.writeFloatLE = function(t, e, r) {
      return O(this, t, e, !0, r)
  }
  ,
  s.prototype.writeFloatBE = function(t, e, r) {
      return O(this, t, e, !1, r)
  }
  ,
  s.prototype.writeDoubleLE = function(t, e, r) {
      return T(this, t, e, !0, r)
  }
  ,
  s.prototype.writeDoubleBE = function(t, e, r) {
      return T(this, t, e, !1, r)
  }
  ,
  s.prototype.copy = function(t, e, r, n) {
      if (!s.isBuffer(t))
          throw TypeError("argument should be a Buffer");
      if (!r && (r = 0),
      !n && 0 !== n && (n = this.length),
      e >= t.length && (e = t.length),
      !e && (e = 0),
      n > 0 && n < r && (n = r),
      n === r || 0 === t.length || 0 === this.length)
          return 0;
      if (e < 0)
          throw RangeError("targetStart out of bounds");
      if (r < 0 || r >= this.length)
          throw RangeError("Index out of range");
      if (n < 0)
          throw RangeError("sourceEnd out of bounds");
      n > this.length && (n = this.length),
      t.length - e < n - r && (n = t.length - e + r);
      let o = n - r;
      return this === t && "function" == typeof Uint8Array.prototype.copyWithin ? this.copyWithin(e, r, n) : Uint8Array.prototype.set.call(t, this.subarray(r, n), e),
      o
  }
  ,
  s.prototype.fill = function(t, e, r, n) {
      let o;
      if ("string" == typeof t) {
          if ("string" == typeof e ? (n = e,
          e = 0,
          r = this.length) : "string" == typeof r && (n = r,
          r = this.length),
          void 0 !== n && "string" != typeof n)
              throw TypeError("encoding must be a string");
          if ("string" == typeof n && !s.isEncoding(n))
              throw TypeError("Unknown encoding: " + n);
          if (1 === t.length) {
              let e = t.charCodeAt(0);
              ("utf8" === n && e < 128 || "latin1" === n) && (t = e)
          }
      } else
          "number" == typeof t ? t &= 255 : "boolean" == typeof t && (t = Number(t));
      if (e < 0 || this.length < e || this.length < r)
          throw RangeError("Out of range index");
      if (r <= e)
          return this;
      if (e >>>= 0,
      r = void 0 === r ? this.length : r >>> 0,
      !t && (t = 0),
      "number" == typeof t)
          for (o = e; o < r; ++o)
              this[o] = t;
      else {
          let i = s.isBuffer(t) ? t : s.from(t, n)
            , a = i.length;
          if (0 === a)
              throw TypeError('The value "' + t + '" is invalid for argument "value"');
          for (o = 0; o < r - e; ++o)
              this[o + e] = i[o % a]
      }
      return this
  }
  ;
  let R = {};
  function _(t, e, r) {
      R[t] = class extends r {
          constructor() {
              super(),
              Object.defineProperty(this, "message", {
                  value: e.apply(this, arguments),
                  writable: !0,
                  configurable: !0
              }),
              this.name = `${this.name} [${t}]`,
              this.stack,
              delete this.name
          }
          get code() {
              return t
          }
          set code(t) {
              Object.defineProperty(this, "code", {
                  configurable: !0,
                  enumerable: !0,
                  value: t,
                  writable: !0
              })
          }
          toString() {
              return `${this.name} [${t}]: ${this.message}`
          }
      }
  }
  function I(t) {
      let e = ""
        , r = t.length
        , n = "-" === t[0] ? 1 : 0;
      for (; r >= n + 4; r -= 3)
          e = `_${t.slice(r - 3, r)}${e}`;
      return `${t.slice(0, r)}${e}`
  }
  _("ERR_BUFFER_OUT_OF_BOUNDS", function(t) {
      return t ? `${t} is outside of buffer bounds` : "Attempt to access memory outside buffer bounds"
  }, RangeError),
  _("ERR_INVALID_ARG_TYPE", function(t, e) {
      return `The "${t}" argument must be of type number. Received type ${typeof e}`
  }, TypeError),
  _("ERR_OUT_OF_RANGE", function(t, e, r) {
      let n = `The value of "${t}" is out of range.`
        , o = r;
      return Number.isInteger(r) && Math.abs(r) > 0x100000000 ? o = I(String(r)) : "bigint" == typeof r && (o = String(r),
      (r > BigInt(2) ** BigInt(32) || r < -(BigInt(2) ** BigInt(32))) && (o = I(o)),
      o += "n"),
      n += ` It must be ${e}. Received ${o}`
  }, RangeError);
  function k(t, e, r, n, o, i) {
      var a, s, u;
      if (t > r || t < e) {
          let n;
          let o = "bigint" == typeof e ? "n" : "";
          throw n = i > 3 ? 0 === e || e === BigInt(0) ? `>= 0${o} and < 2${o} ** ${(i + 1) * 8}${o}` : `>= -(2${o} ** ${(i + 1) * 8 - 1}${o}) and < 2 ** ${(i + 1) * 8 - 1}${o}` : `>= ${e}${o} and <= ${r}${o}`,
          new R.ERR_OUT_OF_RANGE("value",n,t)
      }
      a = n,
      s = o,
      u = i,
      C(s, "offset"),
      (void 0 === a[s] || void 0 === a[s + u]) && P(s, a.length - (u + 1))
  }
  function C(t, e) {
      if ("number" != typeof t)
          throw new R.ERR_INVALID_ARG_TYPE(e,"number",t)
  }
  function P(t, e, r) {
      if (Math.floor(t) !== t)
          throw C(t, r),
          new R.ERR_OUT_OF_RANGE(r || "offset","an integer",t);
      if (e < 0)
          throw new R.ERR_BUFFER_OUT_OF_BOUNDS;
      throw new R.ERR_OUT_OF_RANGE(r || "offset",`>= ${r ? 1 : 0} and <= ${e}`,t)
  }
  let j = /[^+/0-9A-Za-z-_]/g;
  function L(t, e) {
      let r;
      e = e || 1 / 0;
      let n = t.length
        , o = null
        , i = [];
      for (let a = 0; a < n; ++a) {
          if ((r = t.charCodeAt(a)) > 55295 && r < 57344) {
              if (!o) {
                  if (r > 56319) {
                      (e -= 3) > -1 && i.push(239, 191, 189);
                      continue
                  }
                  if (a + 1 === n) {
                      (e -= 3) > -1 && i.push(239, 191, 189);
                      continue
                  }
                  o = r;
                  continue
              }
              if (r < 56320) {
                  (e -= 3) > -1 && i.push(239, 191, 189),
                  o = r;
                  continue
              }
              r = (o - 55296 << 10 | r - 56320) + 65536
          } else
              o && (e -= 3) > -1 && i.push(239, 191, 189);
          if (o = null,
          r < 128) {
              if ((e -= 1) < 0)
                  break;
              i.push(r)
          } else if (r < 2048) {
              if ((e -= 2) < 0)
                  break;
              i.push(r >> 6 | 192, 63 & r | 128)
          } else if (r < 65536) {
              if ((e -= 3) < 0)
                  break;
              i.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128)
          } else if (r < 1114112) {
              if ((e -= 4) < 0)
                  break;
              i.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128)
          } else
              throw Error("Invalid code point")
      }
      return i
  }
  function M(t) {
      return n.toByteArray(function(t) {
          if ((t = (t = t.split("=")[0]).trim().replace(j, "")).length < 2)
              return "";
          for (; t.length % 4 != 0; )
              t += "=";
          return t
      }(t))
  }
  function N(t, e, r, n) {
      let o;
      for (o = 0; o < n && !(o + r >= e.length) && !(o >= t.length); ++o)
          e[o + r] = t[o];
      return o
  }
  function U(t, e) {
      return t instanceof e || null != t && null != t.constructor && null != t.constructor.name && t.constructor.name === e.name
  }
  function B(t) {
      return t != t
  }
  let D = function() {
      let t = "0123456789abcdef"
        , e = Array(256);
      for (let r = 0; r < 16; ++r) {
          let n = 16 * r;
          for (let o = 0; o < 16; ++o)
              e[n + o] = t[r] + t[o]
      }
      return e
  }();
  function F(t) {
      return "undefined" == typeof BigInt ? z : t
  }
  function z() {
      throw Error("BigInt not supported")
  }
}
function T140860(e, t, i) {
  var n = i(966465)
    , r = n.Buffer;
  function a(e, t) {
      for (var i in e)
          t[i] = e[i]
  }
  function o(e, t, i) {
      return r(e, t, i)
  }
  r.from && r.alloc && r.allocUnsafe && r.allocUnsafeSlow ? e.exports = n : (a(n, t),
  t.Buffer = o),
  o.prototype = Object.create(r.prototype),
  a(r, o),
  o.from = function(e, t, i) {
      if ("number" == typeof e)
          throw TypeError("Argument must not be a number");
      return r(e, t, i)
  }
  ,
  o.alloc = function(e, t, i) {
      if ("number" != typeof e)
          throw TypeError("Argument must be a number");
      var n = r(e);
      return void 0 !== t ? "string" == typeof i ? n.fill(t, i) : n.fill(t) : n.fill(0),
      n
  }
  ,
  o.allocUnsafe = function(e) {
      if ("number" != typeof e)
          throw TypeError("Argument must be a number");
      return r(e)
  }
  ,
  o.allocUnsafeSlow = function(e) {
      if ("number" != typeof e)
          throw TypeError("Argument must be a number");
      return n.SlowBuffer(e)
  }
}
function T203960(e, t, i) {
  "use strict";
  var n = T499845(e),
    r = 65536,
    a = 0xffffffff;
  function o() {
    throw Error(
      "Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11"
    );
  }
  var s = i(T140860).Buffer,
    l = window.crypto || window.msCrypto;
  function c(e, t) {
    if (e > a) throw RangeError("requested too many random bytes");
    var i = s.allocUnsafe(e);
    if (e > 0) {
      if (e > r)
        for (var o = 0; o < e; o += r) l.getRandomValues(i.slice(o, o + r));
      else l.getRandomValues(i);
    }
    return "function" == typeof t
      ? n.nextTick(function () {
          t(null, i);
        })
      : i;
  }
  l && l.getRandomValues ? (e.exports = c) : (e.exports = o);
}
function TEST0(e, t, i) {
  var n = T203960(e, t, i);
  (e.exports = _), (_.simpleSieve = m), (_.fermatTest = g);
  var r = i(984826),
    a = new r(24),
    o = new (i(350724))(),
    s = new r(1),
    l = new r(2),
    c = new r(5);
  new r(16), new r(8);
  var d = new r(10),
    u = new r(3);
  new r(7);
  var f = new r(11),
    h = new r(4);
  new r(12);
  var p = null;
  function v() {
    if (null !== p) return p;
    var e = 1048576,
      t = [];
    t[0] = 2;
    for (var i = 1, n = 3; n < e; n += 2) {
      for (
        var r = Math.ceil(Math.sqrt(n)), a = 0;
        a < i && t[a] <= r && n % t[a] != 0;
        a++
      );
      (i === a || !(t[a] <= r)) && (t[i++] = n);
    }
    return (p = t), t;
  }
  function m(e) {
    for (var t = v(), i = 0; i < t.length; i++)
      if (0 === e.modn(t[i])) {
        if (0 !== e.cmpn(t[i])) return !1;
        break;
      }
    return !0;
  }
  function g(e) {
    var t = r.mont(e);
    return 0 === l.toRed(t).redPow(e.subn(1)).fromRed().cmpn(1);
  }
  function _(e, t) {
    var i, p;
    if (e < 16)
      return 2 === t || 5 === t ? new r([140, 123]) : new r([140, 39]);
    for (t = new r(t); ; ) {
      for (i = new r(n(Math.ceil(e / 8))); i.bitLength() > e; ) i.ishrn(1);
      if ((i.isEven() && i.iadd(s), !i.testn(1) && i.iadd(l), t.cmp(l))) {
        if (!t.cmp(c)) for (; i.mod(d).cmp(u); ) i.iadd(h);
      } else for (; i.mod(a).cmp(f); ) i.iadd(h);
      if (
        m((p = i.shrn(1))) &&
        m(i) &&
        g(p) &&
        g(i) &&
        o.test(p) &&
        o.test(i)
      )
        return i;
    }
  }
}

function TEST(e, t, r) {
  "use strict";
  var n = "object" == typeof Reflect ? Reflect : null
    , i = n && "function" == typeof n.apply ? n.apply : function(e, t, r) {
      return Function.prototype.apply.call(e, t, r)
  }
    , o = n && "function" == typeof n.ownKeys ? n.ownKeys : Object.getOwnPropertySymbols ? function(e) {
      return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))
  }
  : function(e) {
      return Object.getOwnPropertyNames(e)
  }
    , s = Number.isNaN || function(e) {
      return e != e
  }
  ;
  function a() {
      a.init.call(this)
  }
  e.exports = a,
  e.exports.once = function(e, t) {
      return new Promise(function(r, n) {
          var i, o, s;
          function a(r) {
              e.removeListener(t, c),
              n(r)
          }
          function c() {
              "function" == typeof e.removeListener && e.removeListener("error", a),
              r([].slice.call(arguments))
          }
          y(e, t, c, {
              once: !0
          }),
          "error" !== t && (i = e,
          o = a,
          s = {
              once: !0
          },
          "function" == typeof i.on && y(i, "error", o, s))
      }
      )
  }
  ,
  (a.EventEmitter = a).prototype._events = void 0,
  a.prototype._eventsCount = 0,
  a.prototype._maxListeners = void 0;
  var c = 10;
  function u(e) {
      if ("function" != typeof e)
          throw TypeError('The "listener" argument must be of type Function. Received type ' + typeof e)
  }
  function l(e) {
      return void 0 === e._maxListeners ? a.defaultMaxListeners : e._maxListeners
  }
  function f(e, t, r, n) {
      var i, o, s;
      return u(r),
      void 0 === (i = e._events) ? (i = e._events = Object.create(null),
      e._eventsCount = 0) : (void 0 !== i.newListener && (e.emit("newListener", t, r.listener || r),
      i = e._events),
      o = i[t]),
      void 0 === o ? (o = i[t] = r,
      ++e._eventsCount) : ("function" == typeof o ? o = i[t] = n ? [r, o] : [o, r] : n ? o.unshift(r) : o.push(r),
      0 < (i = l(e)) && o.length > i && !o.warned && (o.warned = !0,
      (n = Error("Possible EventEmitter memory leak detected. " + o.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit")).name = "MaxListenersExceededWarning",
      n.emitter = e,
      n.type = t,
      n.count = o.length,
      s = n,
      console && console.warn && console.warn(s))),
      e
  }
  function p(e, t, r) {
      return (t = (function() {
          if (!this.fired)
              return this.target.removeListener(this.type, this.wrapFn),
              this.fired = !0,
              0 == arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments)
      }
      ).bind(e = {
          fired: !1,
          wrapFn: void 0,
          target: e,
          type: t,
          listener: r
      })).listener = r,
      e.wrapFn = t
  }
  function h(e, t, r) {
      var e = e._events;
      return void 0 === e || void 0 === (e = e[t]) ? [] : "function" == typeof e ? r ? [e.listener || e] : [e] : r ? function(e) {
          for (var t = Array(e.length), r = 0; r < t.length; ++r)
              t[r] = e[r].listener || e[r];
          return t
      }(e) : g(e, e.length)
  }
  function d(e) {
      var t = this._events;
      if (void 0 !== t) {
          if ("function" == typeof (t = t[e]))
              return 1;
          if (void 0 !== t)
              return t.length
      }
      return 0
  }
  function g(e, t) {
      for (var r = Array(t), n = 0; n < t; ++n)
          r[n] = e[n];
      return r
  }
  function y(e, t, r, n) {
      if ("function" == typeof e.on)
          n.once ? e.once(t, r) : e.on(t, r);
      else {
          if ("function" != typeof e.addEventListener)
              throw TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e);
          e.addEventListener(t, function i(o) {
              n.once && e.removeEventListener(t, i),
              r(o)
          })
      }
  }
  Object.defineProperty(a, "defaultMaxListeners", {
      enumerable: !0,
      get: function() {
          return c
      },
      set: function(e) {
          if ("number" != typeof e || e < 0 || s(e))
              throw RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + ".");
          c = e
      }
  }),
  a.init = function() {
      void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null),
      this._eventsCount = 0),
      this._maxListeners = this._maxListeners || void 0
  }
  ,
  a.prototype.setMaxListeners = function(e) {
      if ("number" != typeof e || e < 0 || s(e))
          throw RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + ".");
      return this._maxListeners = e,
      this
  }
  ,
  a.prototype.getMaxListeners = function() {
      return l(this)
  }
  ,
  a.prototype.emit = function(e) {
      for (var t = [], r = 1; r < arguments.length; r++)
          t.push(arguments[r]);
      var n = "error" === e
        , o = this._events;
      if (void 0 !== o)
          n = n && void 0 === o.error;
      else if (!n)
          return !1;
      if (n) {
          if ((s = 0 < t.length ? t[0] : s)instanceof Error)
              throw s;
          throw (n = Error("Unhandled error." + (s ? " (" + s.message + ")" : ""))).context = s,
          n
      }
      var s = o[e];
      if (void 0 === s)
          return !1;
      if ("function" == typeof s)
          i(s, this, t);
      else
          for (var a = s.length, c = g(s, a), r = 0; r < a; ++r)
              i(c[r], this, t);
      return !0
  }
  ,
  a.prototype.on = a.prototype.addListener = function(e, t) {
      return f(this, e, t, !1)
  }
  ,
  a.prototype.prependListener = function(e, t) {
      return f(this, e, t, !0)
  }
  ,
  a.prototype.once = function(e, t) {
      return u(t),
      this.on(e, p(this, e, t)),
      this
  }
  ,
  a.prototype.prependOnceListener = function(e, t) {
      return u(t),
      this.prependListener(e, p(this, e, t)),
      this
  }
  ,
  a.prototype.off = a.prototype.removeListener = function(e, t) {
      var r, n, i, o, s;
      if (u(t),
      void 0 !== (n = this._events) && void 0 !== (r = n[e])) {
          if (r === t || r.listener === t)
              0 == --this._eventsCount ? this._events = Object.create(null) : (delete n[e],
              n.removeListener && this.emit("removeListener", e, r.listener || t));
          else if ("function" != typeof r) {
              for (i = -1,
              o = r.length - 1; 0 <= o; o--)
                  if (r[o] === t || r[o].listener === t) {
                      s = r[o].listener,
                      i = o;
                      break
                  }
              if (i < 0)
                  return this;
              0 === i ? r.shift() : function(e, t) {
                  for (; t + 1 < e.length; t++)
                      e[t] = e[t + 1];
                  e.pop()
              }(r, i),
              1 === r.length && (n[e] = r[0]),
              void 0 !== n.removeListener && this.emit("removeListener", e, s || t)
          }
      }
      return this
  }
  ,
  a.prototype.removeAllListeners = function(e) {
      var t, r = this._events;
      if (void 0 !== r) {
          if (void 0 === r.removeListener)
              0 == arguments.length ? (this._events = Object.create(null),
              this._eventsCount = 0) : void 0 !== r[e] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete r[e]);
          else if (0 == arguments.length) {
              for (var n, i = Object.keys(r), o = 0; o < i.length; ++o)
                  "removeListener" !== (n = i[o]) && this.removeAllListeners(n);
              this.removeAllListeners("removeListener"),
              this._events = Object.create(null),
              this._eventsCount = 0
          } else if ("function" == typeof (t = r[e]))
              this.removeListener(e, t);
          else if (void 0 !== t)
              for (o = t.length - 1; 0 <= o; o--)
                  this.removeListener(e, t[o])
      }
      return this
  }
  ,
  a.prototype.listeners = function(e) {
      return h(this, e, !0)
  }
  ,
  a.prototype.rawListeners = function(e) {
      return h(this, e, !1)
  }
  ,
  a.listenerCount = function(e, t) {
      return "function" == typeof e.listenerCount ? e.listenerCount(t) : d.call(e, t)
  }
  ,
  a.prototype.listenerCount = d,
  a.prototype.eventNames = function() {
      return 0 < this._eventsCount ? o(this._events) : []
  }
}
function TEST2(e, t, r) {
  (function(t) {
      e.exports = function(e) {
          "use strict";
          var r, n = (r = e) && "object" == typeof r && "default"in r ? r : {
              default: r
          };
          function i(e, t) {
              for (var r, n, i = 0; i < t.length; i++) {
                  var o = t[i];
                  o.enumerable = o.enumerable || !1,
                  o.configurable = !0,
                  "value"in o && (o.writable = !0),
                  Object.defineProperty(e, (r = o.key,
                  n = void 0,
                  "symbol" == typeof (n = function(e, t) {
                      if ("object" != typeof e || null === e)
                          return e;
                      var r = e[Symbol.toPrimitive];
                      if (void 0 !== r) {
                          var n = r.call(e, t || "default");
                          if ("object" != typeof n)
                              return n;
                          throw TypeError("@@toPrimitive must return a primitive value.")
                      }
                      return ("string" === t ? String : Number)(e)
                  }(r, "string")) ? n : String(n)), o)
              }
          }
          var o = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : void 0 !== t ? t : "undefined" != typeof self ? self : {};
          function s(e, t, r) {
              return e(r = {
                  path: t,
                  exports: {},
                  require: function(e, t) {
                      return function() {
                          throw Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")
                      }(null == t && r.path)
                  }
              }, r.exports),
              r.exports
          }
          var a = s(function(e, t) {
              var r;
              e.exports = r || function(e, t) {
                  if ("undefined" != typeof window && window.crypto && (r = window.crypto),
                  "undefined" != typeof self && self.crypto && (r = self.crypto),
                  "undefined" != typeof globalThis && globalThis.crypto && (r = globalThis.crypto),
                  !r && "undefined" != typeof window && window.msCrypto && (r = window.msCrypto),
                  !r && void 0 !== o && o.crypto && (r = o.crypto),
                  !r)
                      try {
                          r = n.default
                      } catch (e) {}
                  var r, i = function() {
                      if (r) {
                          if ("function" == typeof r.getRandomValues)
                              try {
                                  return r.getRandomValues(new Uint32Array(1))[0]
                              } catch (e) {}
                          if ("function" == typeof r.randomBytes)
                              try {
                                  return r.randomBytes(4).readInt32LE()
                              } catch (e) {}
                      }
                      throw Error("Native crypto module could not be used to get secure random number.")
                  }, s = Object.create || function() {
                      function e() {}
                      return function(t) {
                          var r;
                          return e.prototype = t,
                          r = new e,
                          e.prototype = null,
                          r
                      }
                  }(), a = {}, c = a.lib = {}, u = c.Base = {
                      extend: function(e) {
                          var t = s(this);
                          return e && t.mixIn(e),
                          t.hasOwnProperty("init") && this.init !== t.init || (t.init = function() {
                              t.$super.init.apply(this, arguments)
                          }
                          ),
                          t.init.prototype = t,
                          t.$super = this,
                          t
                      },
                      create: function() {
                          var e = this.extend();
                          return e.init.apply(e, arguments),
                          e
                      },
                      init: function() {},
                      mixIn: function(e) {
                          for (var t in e)
                              e.hasOwnProperty(t) && (this[t] = e[t]);
                          e.hasOwnProperty("toString") && (this.toString = e.toString)
                      },
                      clone: function() {
                          return this.init.prototype.extend(this)
                      }
                  }, l = c.WordArray = u.extend({
                      init: function(e, t) {
                          e = this.words = e || [],
                          this.sigBytes = null != t ? t : 4 * e.length
                      },
                      toString: function(e) {
                          return (e || p).stringify(this)
                      },
                      concat: function(e) {
                          var t = this.words
                            , r = e.words
                            , n = this.sigBytes
                            , i = e.sigBytes;
                          if (this.clamp(),
                          n % 4)
                              for (var o = 0; o < i; o++) {
                                  var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                                  t[n + o >>> 2] |= s << 24 - (n + o) % 4 * 8
                              }
                          else
                              for (var a = 0; a < i; a += 4)
                                  t[n + a >>> 2] = r[a >>> 2];
                          return this.sigBytes += i,
                          this
                      },
                      clamp: function() {
                          var t = this.words
                            , r = this.sigBytes;
                          t[r >>> 2] &= 0xffffffff << 32 - r % 4 * 8,
                          t.length = e.ceil(r / 4)
                      },
                      clone: function() {
                          var e = u.clone.call(this);
                          return e.words = this.words.slice(0),
                          e
                      },
                      random: function(e) {
                          for (var t = [], r = 0; r < e; r += 4)
                              t.push(i());
                          return new l.init(t,e)
                      }
                  }), f = a.enc = {}, p = f.Hex = {
                      stringify: function(e) {
                          for (var t = e.words, r = e.sigBytes, n = [], i = 0; i < r; i++) {
                              var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                              n.push((o >>> 4).toString(16)),
                              n.push((15 & o).toString(16))
                          }
                          return n.join("")
                      },
                      parse: function(e) {
                          for (var t = e.length, r = [], n = 0; n < t; n += 2)
                              r[n >>> 3] |= parseInt(e.substr(n, 2), 16) << 24 - n % 8 * 4;
                          return new l.init(r,t / 2)
                      }
                  }, h = f.Latin1 = {
                      stringify: function(e) {
                          for (var t = e.words, r = e.sigBytes, n = [], i = 0; i < r; i++) {
                              var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                              n.push(String.fromCharCode(o))
                          }
                          return n.join("")
                      },
                      parse: function(e) {
                          for (var t = e.length, r = [], n = 0; n < t; n++)
                              r[n >>> 2] |= (255 & e.charCodeAt(n)) << 24 - n % 4 * 8;
                          return new l.init(r,t)
                      }
                  }, d = f.Utf8 = {
                      stringify: function(e) {
                          try {
                              return decodeURIComponent(escape(h.stringify(e)))
                          } catch (e) {
                              throw Error("Malformed UTF-8 data")
                          }
                      },
                      parse: function(e) {
                          return h.parse(unescape(encodeURIComponent(e)))
                      }
                  }, g = c.BufferedBlockAlgorithm = u.extend({
                      reset: function() {
                          this._data = new l.init,
                          this._nDataBytes = 0
                      },
                      _append: function(e) {
                          "string" == typeof e && (e = d.parse(e)),
                          this._data.concat(e),
                          this._nDataBytes += e.sigBytes
                      },
                      _process: function(t) {
                          var r, n = this._data, i = n.words, o = n.sigBytes, s = this.blockSize, a = o / (4 * s), c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * s, u = e.min(4 * c, o);
                          if (c) {
                              for (var f = 0; f < c; f += s)
                                  this._doProcessBlock(i, f);
                              r = i.splice(0, c),
                              n.sigBytes -= u
                          }
                          return new l.init(r,u)
                      },
                      clone: function() {
                          var e = u.clone.call(this);
                          return e._data = this._data.clone(),
                          e
                      },
                      _minBufferSize: 0
                  });
                  c.Hasher = g.extend({
                      cfg: u.extend(),
                      init: function(e) {
                          this.cfg = this.cfg.extend(e),
                          this.reset()
                      },
                      reset: function() {
                          g.reset.call(this),
                          this._doReset()
                      },
                      update: function(e) {
                          return this._append(e),
                          this._process(),
                          this
                      },
                      finalize: function(e) {
                          return e && this._append(e),
                          this._doFinalize()
                      },
                      blockSize: 16,
                      _createHelper: function(e) {
                          return function(t, r) {
                              return new e.init(r).finalize(t)
                          }
                      },
                      _createHmacHelper: function(e) {
                          return function(t, r) {
                              return new y.HMAC.init(e,r).finalize(t)
                          }
                      }
                  });
                  var y = a.algo = {};
                  return a
              }(Math)
          })
            , c = s(function(e, t) {
              var r, n, i, o, s, c, u, l, f;
              e.exports = (r = Math,
              i = (n = a.lib).WordArray,
              o = n.Hasher,
              s = a.algo,
              c = [],
              u = [],
              function() {
                  function e(e) {
                      return 0x100000000 * (e - (0 | e)) | 0
                  }
                  for (var t = 2, n = 0; n < 64; )
                      (function(e) {
                          for (var t = r.sqrt(e), n = 2; n <= t; n++)
                              if (!(e % n))
                                  return !1;
                          return !0
                      }
                      )(t) && (n < 8 && (c[n] = e(r.pow(t, .5))),
                      u[n] = e(r.pow(t, 1 / 3)),
                      n++),
                      t++
              }(),
              l = [],
              f = s.SHA256 = o.extend({
                  _doReset: function() {
                      this._hash = new i.init(c.slice(0))
                  },
                  _doProcessBlock: function(e, t) {
                      for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], c = r[5], f = r[6], p = r[7], h = 0; h < 64; h++) {
                          if (h < 16)
                              l[h] = 0 | e[t + h];
                          else {
                              var d = l[h - 15]
                                , g = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3
                                , y = l[h - 2]
                                , m = (y << 15 | y >>> 17) ^ (y << 13 | y >>> 19) ^ y >>> 10;
                              l[h] = g + l[h - 7] + m + l[h - 16]
                          }
                          var v = n & i ^ n & o ^ i & o
                            , b = (n << 30 | n >>> 2) ^ (n << 19 | n >>> 13) ^ (n << 10 | n >>> 22)
                            , _ = p + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & c ^ ~a & f) + u[h] + l[h];
                          p = f,
                          f = c,
                          c = a,
                          a = s + _ | 0,
                          s = o,
                          o = i,
                          i = n,
                          n = _ + (b + v) | 0
                      }
                      r[0] = r[0] + n | 0,
                      r[1] = r[1] + i | 0,
                      r[2] = r[2] + o | 0,
                      r[3] = r[3] + s | 0,
                      r[4] = r[4] + a | 0,
                      r[5] = r[5] + c | 0,
                      r[6] = r[6] + f | 0,
                      r[7] = r[7] + p | 0
                  },
                  _doFinalize: function() {
                      var e = this._data
                        , t = e.words
                        , n = 8 * this._nDataBytes
                        , i = 8 * e.sigBytes;
                      return t[i >>> 5] |= 128 << 24 - i % 32,
                      t[14 + (i + 64 >>> 9 << 4)] = r.floor(n / 0x100000000),
                      t[15 + (i + 64 >>> 9 << 4)] = n,
                      e.sigBytes = 4 * t.length,
                      this._process(),
                      this._hash
                  },
                  clone: function() {
                      var e = o.clone.call(this);
                      return e._hash = this._hash.clone(),
                      e
                  }
              }),
              a.SHA256 = o._createHelper(f),
              a.HmacSHA256 = o._createHmacHelper(f),
              a.SHA256)
          })
            , u = (s(function(e, t) {
              var r, n;
              e.exports = (r = a.lib.Base,
              n = a.enc.Utf8,
              void (a.algo.HMAC = r.extend({
                  init: function(e, t) {
                      e = this._hasher = new e.init,
                      "string" == typeof t && (t = n.parse(t));
                      var r = e.blockSize
                        , i = 4 * r;
                      t.sigBytes > i && (t = e.finalize(t)),
                      t.clamp();
                      for (var o = this._oKey = t.clone(), s = this._iKey = t.clone(), a = o.words, c = s.words, u = 0; u < r; u++)
                          a[u] ^= 0x5c5c5c5c,
                          c[u] ^= 0x36363636;
                      o.sigBytes = s.sigBytes = i,
                      this.reset()
                  },
                  reset: function() {
                      var e = this._hasher;
                      e.reset(),
                      e.update(this._iKey)
                  },
                  update: function(e) {
                      return this._hasher.update(e),
                      this
                  },
                  finalize: function(e) {
                      var t = this._hasher
                        , r = t.finalize(e);
                      return t.reset(),
                      t.finalize(this._oKey.clone().concat(r))
                  }
              })))
          }),
          s(function(e, t) {
              e.exports = a.HmacSHA256
          }))
            , l = {
              hmac: function(e, t) {
                  return u(t, e)
              },
              sha256: function(e) {
                  return c(e)
              }
          }
            , f = ["authorization", "content-type", "content-length", "user-agent", "presigned-expires", "expect", "x-amzn-trace-id"]
            , p = function(e) {
              try {
                  return encodeURIComponent(e).replace(/[^A-Za-z0-9_.~\-%]+/g, escape).replace(/[*]/g, function(e) {
                      return "%".concat(e.charCodeAt(0).toString(16).toUpperCase())
                  })
              } catch (e) {
                  return ""
              }
          }
            , h = function(e) {
              return Object.keys(e).sort().map(function(t) {
                  var r = e[t];
                  if (null != r) {
                      var n = p(t);
                      if (n)
                          return Array.isArray(r) ? "".concat(n, "=").concat(r.map(p).sort().join("&".concat(n, "="))) : "".concat(n, "=").concat(p(r))
                  }
              }).filter(function(e) {
                  return e
              }).join("&")
          };
          return function() {
              var e, t;
              function r(e, t, n) {
                  !function(e, t) {
                      if (!(e instanceof t))
                          throw TypeError("Cannot call a class as a function")
                  }(this, r),
                  this.request = e,
                  this.request.headers = e.headers || {},
                  this.serviceName = t,
                  n = n || {},
                  this.signatureCache = "boolean" != typeof n.signatureCache || n.signatureCache,
                  this.operation = n.operation,
                  this.signatureVersion = n.signatureVersion,
                  this.constant = n.isVolcengine ? {
                      algorithm: "HMAC-SHA256",
                      v4Identifier: "request",
                      dateHeader: "X-Date",
                      tokenHeader: "x-security-token",
                      contentSha256Header: "X-Content-Sha256",
                      kDatePrefix: ""
                  } : {
                      algorithm: "AWS4-HMAC-SHA256",
                      v4Identifier: "aws4_request",
                      dateHeader: "X-Amz-Date",
                      tokenHeader: "x-amz-security-token",
                      contentSha256Header: "X-Amz-Content-Sha256",
                      kDatePrefix: "AWS4"
                  },
                  this.bodySha256 = n.bodySha256,
                  this.shouldSerializeBody = "boolean" != typeof n.shouldSerializeBody || n.shouldSerializeBody
              }
              return e = [{
                  key: "addAuthorization",
                  value: function(e, t) {
                      var r = this.iso8601(t).replace(/[:\-]|\.\d{3}/g, "");
                      this.addHeaders(e, r),
                      this.request.headers.Authorization = this.authorization(e, r)
                  }
              }, {
                  key: "addHeaders",
                  value: function(e, t) {
                      if (this.request.headers[this.constant.dateHeader] = t,
                      e.sessionToken && (this.request.headers[this.constant.tokenHeader] = e.sessionToken),
                      this.request.body) {
                          var r = this.request.body;
                          "string" != typeof r && this.shouldSerializeBody && (r = r instanceof URLSearchParams ? r.toString() : JSON.stringify(r)),
                          this.request.headers[this.constant.contentSha256Header] = this.bodySha256 || l.sha256(r).toString()
                      }
                  }
              }, {
                  key: "authorization",
                  value: function(e, t) {
                      var r = []
                        , n = this.credentialString(t);
                      return r.push("".concat(this.constant.algorithm, " Credential=").concat(e.accessKeyId, "/").concat(n)),
                      r.push("SignedHeaders=".concat(this.signedHeaders())),
                      r.push("Signature=".concat(this.signature(e, t))),
                      r.join(", ")
                  }
              }, {
                  key: "signature",
                  value: function(e, t) {
                      var r = this.getSigningKey(e, t.substr(0, 8), this.request.region, this.serviceName, this.signatureCache);
                      return l.hmac(r, this.stringToSign(t), "hex")
                  }
              }, {
                  key: "stringToSign",
                  value: function(e) {
                      var t = [];
                      return t.push(this.constant.algorithm),
                      t.push(e),
                      t.push(this.credentialString(e)),
                      t.push(this.hexEncodedHash(this.canonicalString())),
                      t.join("\n")
                  }
              }, {
                  key: "canonicalString",
                  value: function() {
                      var e = []
                        , t = this.request.pathname || "/";
                      return e.push(this.request.method.toUpperCase()),
                      e.push(t),
                      e.push(h(this.request.params) || ""),
                      e.push("".concat(this.canonicalHeaders(), "\n")),
                      e.push(this.signedHeaders()),
                      e.push(this.hexEncodedBodyHash()),
                      e.join("\n")
                  }
              }, {
                  key: "canonicalHeaders",
                  value: function() {
                      var e = this
                        , t = [];
                      Object.keys(this.request.headers).forEach(function(r) {
                          t.push([r, e.request.headers[r]])
                      }),
                      t.sort(function(e, t) {
                          return e[0].toLowerCase() < t[0].toLowerCase() ? -1 : 1
                      });
                      var r = [];
                      return t.forEach(function(t) {
                          var n = t[0].toLowerCase();
                          if (e.isSignableHeader(n)) {
                              var i = t[1];
                              if (null == i || "function" != typeof i.toString)
                                  throw Error("Header ".concat(n, " contains invalid value"));
                              r.push("".concat(n, ":").concat(e.canonicalHeaderValues(i.toString())))
                          }
                      }),
                      r.join("\n")
                  }
              }, {
                  key: "canonicalHeaderValues",
                  value: function(e) {
                      return e.replace(/\s+/g, " ").replace(/^\s+|\s+$/g, "")
                  }
              }, {
                  key: "signedHeaders",
                  value: function() {
                      var e = this
                        , t = [];
                      return Object.keys(this.request.headers).forEach(function(r) {
                          r = r.toLowerCase(),
                          e.isSignableHeader(r) && t.push(r)
                      }),
                      t.sort().join(";")
                  }
              }, {
                  key: "credentialString",
                  value: function(e) {
                      return this.createScope(e.substr(0, 8), this.request.region, this.serviceName)
                  }
              }, {
                  key: "hexEncodedHash",
                  value: function(e) {
                      return l.sha256(e)
                  }
              }, {
                  key: "hexEncodedBodyHash",
                  value: function() {
                      return this.request.headers[this.constant.contentSha256Header] ? this.request.headers[this.constant.contentSha256Header] : this.request.body ? this.hexEncodedHash(h(this.request.body)) : this.hexEncodedHash("")
                  }
              }, {
                  key: "isSignableHeader",
                  value: function(e) {
                      return 0 === e.toLowerCase().indexOf("x-amz-") || 0 > f.indexOf(e)
                  }
              }, {
                  key: "iso8601",
                  value: function(e) {
                      return void 0 === e && (e = new Date),
                      e.toISOString().replace(/\.\d{3}Z$/, "Z")
                  }
              }, {
                  key: "getSigningKey",
                  value: function(e, t, r, n) {
                      var i = l.hmac("".concat(this.constant.kDatePrefix).concat(e.secretAccessKey), t)
                        , o = l.hmac(i, r)
                        , s = l.hmac(o, n);
                      return l.hmac(s, this.constant.v4Identifier)
                  }
              }, {
                  key: "createScope",
                  value: function(e, t, r) {
                      return [e.substr(0, 8), t, r, this.constant.v4Identifier].join("/")
                  }
              }],
              i(r.prototype, e),
              t && i(r, t),
              Object.defineProperty(r, "prototype", {
                  writable: !1
              }),
              r
          }()
      }(r(9))
  }
  ).call(this, r(5))
}
function TEST3(e, t, r) {
  e.exports = function() {
      return r(10)('!function(t){var n={};function __webpack_require__(r){var e;return(n[r]||(e=n[r]={i:r,l:!1,exports:{}},t[r].call(e.exports,e,e.exports,__webpack_require__),e.l=!0,e)).exports}__webpack_require__.m=t,__webpack_require__.c=n,__webpack_require__.d=function(r,e,t){__webpack_require__.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:t})},__webpack_require__.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},__webpack_require__.t=function(e,r){if(1&r&&(e=__webpack_require__(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(__webpack_require__.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)__webpack_require__.d(t,n,function(r){return e[r]}.bind(null,n));return t},__webpack_require__.n=function(r){var e=r&&r.__esModule?function getDefault(){return r.default}:function getModuleExports(){return r};return __webpack_require__.d(e,"a",e),e},__webpack_require__.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=9)}([function(r,e,y){!function(_){r.exports=function(){var r=r||function(u,t){var r;if(typeof window!=="undefined"&&window.crypto)r=window.crypto;if(typeof self!=="undefined"&&self.crypto)r=self.crypto;if(typeof globalThis!=="undefined"&&globalThis.crypto)r=globalThis.crypto;if(!r&&typeof window!=="undefined"&&window.msCrypto)r=window.msCrypto;if(!r&&typeof _!=="undefined"&&_.crypto)r=_.crypto;if(!r&&"function"==="function")try{r=y(11)}catch(r){}var n=function(){if(r){if(typeof r.getRandomValues==="function")try{return r.getRandomValues(new Uint32Array(1))[0]}catch(r){}if(typeof r.randomBytes==="function")try{return r.randomBytes(4).readInt32LE()}catch(r){}}throw new Error("Native crypto module could not be used to get secure random number.")};var i=Object.create||function(){function F(){}return function(r){var e;F.prototype=r;e=new F;F.prototype=null;return e}}();var e={};var a=e.lib={};var o=a.Base=function(){return{extend:function(r){var e=i(this);if(r)e.mixIn(r);if(!e.hasOwnProperty("init")||this.init===e.init)e.init=function(){e.$super.init.apply(this,arguments)};e.init.prototype=e;e.$super=this;return e},create:function(){var r=this.extend();r.init.apply(r,arguments);return r},init:function(){},mixIn:function(r){for(var e in r)if(r.hasOwnProperty(e))this[e]=r[e];if(r.hasOwnProperty("toString"))this.toString=r.toString},clone:function(){return this.init.prototype.extend(this)}}}();var h=a.WordArray=o.extend({init:function(r,e){r=this.words=r||[];if(e!=t)this.sigBytes=e;else this.sigBytes=r.length*4},toString:function(r){return(r||s).stringify(this)},concat:function(r){var e=this.words;var t=r.words;var n=this.sigBytes;var i=r.sigBytes;this.clamp();if(n%4)for(var a=0;a<i;a++){var o=t[a>>>2]>>>24-a%4*8&255;e[n+a>>>2]|=o<<24-(n+a)%4*8}else for(var c=0;c<i;c+=4)e[n+c>>>2]=t[c>>>2];this.sigBytes+=i;return this},clamp:function(){var r=this.words;var e=this.sigBytes;r[e>>>2]&=4294967295<<32-e%4*8;r.length=u.ceil(e/4)},clone:function(){var r=o.clone.call(this);r.words=this.words.slice(0);return r},random:function(r){var e=[];for(var t=0;t<r;t+=4)e.push(n());return new h.init(e,r)}});var c=e.enc={};var s=c.Hex={stringify:function(r){var e=r.words;var t=r.sigBytes;var n=[];for(var i=0;i<t;i++){var a=e[i>>>2]>>>24-i%4*8&255;n.push((a>>>4).toString(16));n.push((a&15).toString(16))}return n.join("")},parse:function(r){var e=r.length;var t=[];for(var n=0;n<e;n+=2)t[n>>>3]|=parseInt(r.substr(n,2),16)<<24-n%8*4;return new h.init(t,e/2)}};var f=c.Latin1={stringify:function(r){var e=r.words;var t=r.sigBytes;var n=[];for(var i=0;i<t;i++){var a=e[i>>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(a))}return n.join("")},parse:function(r){var e=r.length;var t=[];for(var n=0;n<e;n++)t[n>>>2]|=(r.charCodeAt(n)&255)<<24-n%4*8;return new h.init(t,e)}};var v=c.Utf8={stringify:function(r){try{return decodeURIComponent(escape(f.stringify(r)))}catch(r){throw new Error("Malformed UTF-8 data")}},parse:function(r){return f.parse(unescape(encodeURIComponent(r)))}};var p=a.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new h.init;this._nDataBytes=0},_append:function(r){if(typeof r=="string")r=v.parse(r);this._data.concat(r);this._nDataBytes+=r.sigBytes},_process:function(r){var e;var t=this._data;var n=t.words;var i=t.sigBytes;var a=this.blockSize;var o=a*4;var c=i/o;if(r)c=u.ceil(c);else c=u.max((c|0)-this._minBufferSize,0);var s=c*a;var f=u.min(s*4,i);if(s){for(var v=0;v<s;v+=a)this._doProcessBlock(n,v);e=n.splice(0,s);t.sigBytes-=f}return new h.init(e,f)},clone:function(){var r=o.clone.call(this);r._data=this._data.clone();return r},_minBufferSize:0});var l=a.Hasher=p.extend({cfg:o.extend(),init:function(r){this.cfg=this.cfg.extend(r);this.reset()},reset:function(){p.reset.call(this);this._doReset()},update:function(r){this._append(r);this._process();return this},finalize:function(r){if(r)this._append(r);var e=this._doFinalize();return e},blockSize:512/32,_createHelper:function(t){return function(r,e){return new t.init(e).finalize(r)}},_createHmacHelper:function(t){return function(r,e){return new d.HMAC.init(t,e).finalize(r)}}});var d=e.algo={};return e}(Math);return r}()}.call(this,y(10))},function(r,e,t){r.exports=function(F){F.lib.Cipher||function(o){var r=F;var e=r.lib;var t=e.Base;var s=e.WordArray;var n=e.BufferedBlockAlgorithm;var i=r.enc;var a=i.Utf8;var c=i.Base64;var f=r.algo;var v=f.EvpKDF;var u=e.Cipher=n.extend({cfg:t.extend(),createEncryptor:function(r,e){return this.create(this._ENC_XFORM_MODE,r,e)},createDecryptor:function(r,e){return this.create(this._DEC_XFORM_MODE,r,e)},init:function(r,e,t){this.cfg=this.cfg.extend(t);this._xformMode=r;this._key=e;this.reset()},reset:function(){n.reset.call(this);this._doReset()},process:function(r){this._append(r);return this._process()},finalize:function(r){if(r)this._append(r);var e=this._doFinalize();return e},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function selectCipherStrategy(r){if(typeof r=="string")return S;else return m}return function(n){return{encrypt:function(r,e,t){return selectCipherStrategy(e).encrypt(n,r,e,t)},decrypt:function(r,e,t){return selectCipherStrategy(e).decrypt(n,r,e,t)}}}}()});var h=e.StreamCipher=u.extend({_doFinalize:function(){var r=this._process(!!"flush");return r},blockSize:1});var p=r.mode={};var l=e.BlockCipherMode=t.extend({createEncryptor:function(r,e){return this.Encryptor.create(r,e)},createDecryptor:function(r,e){return this.Decryptor.create(r,e)},init:function(r,e){this._cipher=r;this._iv=e}});var d=p.CBC=function(){var r=l.extend();r.Encryptor=r.extend({processBlock:function(r,e){var t=this._cipher;var n=t.blockSize;xorBlock.call(this,r,e,n);t.encryptBlock(r,e);this._prevBlock=r.slice(e,e+n)}});r.Decryptor=r.extend({processBlock:function(r,e){var t=this._cipher;var n=t.blockSize;var i=r.slice(e,e+n);t.decryptBlock(r,e);xorBlock.call(this,r,e,n);this._prevBlock=i}});function xorBlock(r,e,t){var n;var i=this._iv;if(i){n=i;this._iv=o}else n=this._prevBlock;for(var a=0;a<t;a++)r[e+a]^=n[a]}return r}();var _=r.pad={};var y=_.Pkcs7={pad:function(r,e){var t=e*4;var n=t-r.sigBytes%t;var i=n<<24|n<<16|n<<8|n;var a=[];for(var o=0;o<n;o+=4)a.push(i);var c=s.create(a,n);r.concat(c)},unpad:function(r){var e=r.words[r.sigBytes-1>>>2]&255;r.sigBytes-=e}};var g=e.BlockCipher=u.extend({cfg:u.cfg.extend({mode:d,padding:y}),reset:function(){var r;u.reset.call(this);var e=this.cfg;var t=e.iv;var n=e.mode;if(this._xformMode==this._ENC_XFORM_MODE)r=n.createEncryptor;else{r=n.createDecryptor;this._minBufferSize=1}if(this._mode&&this._mode.__creator==r)this._mode.init(this,t&&t.words);else{this._mode=r.call(n,this,t&&t.words);this._mode.__creator=r}},_doProcessBlock:function(r,e){this._mode.processBlock(r,e)},_doFinalize:function(){var r;var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);r=this._process(!!"flush")}else{r=this._process(!!"flush");e.unpad(r)}return r},blockSize:128/32});var w=e.CipherParams=t.extend({init:function(r){this.mixIn(r)},toString:function(r){return(r||this.formatter).stringify(this)}});var k=r.format={};var B=k.OpenSSL={stringify:function(r){var e;var t=r.ciphertext;var n=r.salt;if(n)e=s.create([1398893684,1701076831]).concat(n).concat(t);else e=t;return e.toString(c)},parse:function(r){var e;var t=c.parse(r);var n=t.words;if(n[0]==1398893684&&n[1]==1701076831){e=s.create(n.slice(2,4));n.splice(0,4);t.sigBytes-=16}return w.create({ciphertext:t,salt:e})}};var m=e.SerializableCipher=t.extend({cfg:t.extend({format:B}),encrypt:function(r,e,t,n){n=this.cfg.extend(n);var i=r.createEncryptor(t,n);var a=i.finalize(e);var o=i.cfg;return w.create({ciphertext:a,key:t,iv:o.iv,algorithm:r,mode:o.mode,padding:o.padding,blockSize:r.blockSize,formatter:n.format})},decrypt:function(r,e,t,n){n=this.cfg.extend(n);e=this._parse(e,n.format);var i=r.createDecryptor(t,n).finalize(e.ciphertext);return i},_parse:function(r,e){if(typeof r=="string")return e.parse(r,this);else return r}});var x=r.kdf={};var b=x.OpenSSL={execute:function(r,e,t,n,i){if(!n)n=s.random(64/8);if(!i)var a=v.create({keySize:e+t}).compute(r,n);else var a=v.create({keySize:e+t,hasher:i}).compute(r,n);var o=s.create(a.words.slice(e),t*4);a.sigBytes=e*4;return w.create({key:a,iv:o,salt:n})}};var S=e.PasswordBasedCipher=m.extend({cfg:m.cfg.extend({kdf:b}),encrypt:function(r,e,t,n){n=this.cfg.extend(n);var i=n.kdf.execute(t,r.keySize,r.ivSize,n.salt,n.hasher);n.iv=i.iv;var a=m.encrypt.call(this,r,e,i.key,n);a.mixIn(i);return a},decrypt:function(r,e,t,n){n=this.cfg.extend(n);e=this._parse(e,n.format);var i=n.kdf.execute(t,r.keySize,r.ivSize,e.salt,n.hasher);n.iv=i.iv;var a=m.decrypt.call(this,r,e,i.key,n);return a}})}()}(t(0),t(5))},function(r,e,t){r.exports=function(a){return function(){var r=a;var e=r.lib;var t=e.BlockCipher;var n=r.algo;var v=[];var f=[];var u=[];var h=[];var p=[];var l=[];var d=[];var _=[];var y=[];var g=[];(function(){var r=[];for(var e=0;e<256;e++)if(e<128)r[e]=e<<1;else r[e]=e<<1^283;var t=0;var n=0;for(var e=0;e<256;e++){var i=n^n<<1^n<<2^n<<3^n<<4;i=i>>>8^i&255^99;v[t]=i;f[i]=t;var a=r[t];var o=r[a];var c=r[o];var s=r[i]*257^i*16843008;u[t]=s<<24|s>>>8;h[t]=s<<16|s>>>16;p[t]=s<<8|s>>>24;l[t]=s;var s=c*16843009^o*65537^a*257^t*16843008;d[i]=s<<24|s>>>8;_[i]=s<<16|s>>>16;y[i]=s<<8|s>>>24;g[i]=s;if(!t)t=n=1;else{t=a^r[r[r[c^a]]];n^=r[r[n]]}}})();var w=[0,1,2,4,8,16,32,64,128,27,54];var i=n.AES=t.extend({_doReset:function(){var r;if(this._nRounds&&this._keyPriorReset===this._key)return;var e=this._keyPriorReset=this._key;var t=e.words;var n=e.sigBytes/4;var i=this._nRounds=n+6;var a=(i+1)*4;var o=this._keySchedule=[];for(var c=0;c<a;c++)if(c<n)o[c]=t[c];else{r=o[c-1];if(!(c%n)){r=r<<8|r>>>24;r=v[r>>>24]<<24|v[r>>>16&255]<<16|v[r>>>8&255]<<8|v[r&255];r^=w[c/n|0]<<24}else if(n>6&&c%n==4)r=v[r>>>24]<<24|v[r>>>16&255]<<16|v[r>>>8&255]<<8|v[r&255];o[c]=o[c-n]^r}var s=this._invKeySchedule=[];for(var f=0;f<a;f++){var c=a-f;if(f%4)var r=o[c];else var r=o[c-4];if(f<4||c<=4)s[f]=r;else s[f]=d[v[r>>>24]]^_[v[r>>>16&255]]^y[v[r>>>8&255]]^g[v[r&255]]}},encryptBlock:function(r,e){this._doCryptBlock(r,e,this._keySchedule,u,h,p,l,v)},decryptBlock:function(r,e){var t=r[e+1];r[e+1]=r[e+3];r[e+3]=t;this._doCryptBlock(r,e,this._invKeySchedule,d,_,y,g,f);var t=r[e+1];r[e+1]=r[e+3];r[e+3]=t},_doCryptBlock:function(r,e,t,n,i,a,o,c){var s=this._nRounds;var f=r[e]^t[0];var v=r[e+1]^t[1];var u=r[e+2]^t[2];var h=r[e+3]^t[3];var p=4;for(var l=1;l<s;l++){var d=n[f>>>24]^i[v>>>16&255]^a[u>>>8&255]^o[h&255]^t[p++];var _=n[v>>>24]^i[u>>>16&255]^a[h>>>8&255]^o[f&255]^t[p++];var y=n[u>>>24]^i[h>>>16&255]^a[f>>>8&255]^o[v&255]^t[p++];var g=n[h>>>24]^i[f>>>16&255]^a[v>>>8&255]^o[u&255]^t[p++];f=d;v=_;u=y;h=g}var d=(c[f>>>24]<<24|c[v>>>16&255]<<16|c[u>>>8&255]<<8|c[h&255])^t[p++];var _=(c[v>>>24]<<24|c[u>>>16&255]<<16|c[h>>>8&255]<<8|c[f&255])^t[p++];var y=(c[u>>>24]<<24|c[h>>>16&255]<<16|c[f>>>8&255]<<8|c[v&255])^t[p++];var g=(c[h>>>24]<<24|c[f>>>16&255]<<16|c[v>>>8&255]<<8|c[u&255])^t[p++];r[e]=d;r[e+1]=_;r[e+2]=y;r[e+3]=g},keySize:256/32});r.AES=t._createHelper(i)}(),a.AES}(t(0),(t(12),t(13),t(5),t(1)))},function(r,e,t){r.exports=function(e){return e.mode.ECB=function(){var r=e.lib.BlockCipherMode.extend();r.Encryptor=r.extend({processBlock:function(r,e){this._cipher.encryptBlock(r,e)}});r.Decryptor=r.extend({processBlock:function(r,e){this._cipher.decryptBlock(r,e)}});return r}(),e.mode.ECB}(t(0),t(1))},function(r,e,t){r.exports=function(r){return r.enc.Utf8}(t(0))},function(r,e,t){r.exports=function(o){return function(){var r=o;var e=r.lib;var t=e.Base;var v=e.WordArray;var n=r.algo;var i=n.MD5;var a=n.EvpKDF=t.extend({cfg:t.extend({keySize:128/32,hasher:i,iterations:1}),init:function(r){this.cfg=this.cfg.extend(r)},compute:function(r,e){var t;var n=this.cfg;var i=n.hasher.create();var a=v.create();var o=a.words;var c=n.keySize;var s=n.iterations;while(o.length<c){if(t)i.update(t);t=i.update(r).finalize(e);i.reset();for(var f=1;f<s;f++){t=i.finalize(t);i.reset()}a.concat(t)}a.sigBytes=c*4;return a}});r.EvpKDF=function(r,e,t){return a.create(t).compute(r,e)}}(),o.EvpKDF}(t(0),(t(14),t(15)))},function(r,e,t){r.exports=function(r){return r.pad.Pkcs7}(t(0),t(1))},function(r,e,t){r.exports=function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding}(t(0),t(1))},function(r,e,t){r.exports=function(a){return function(){if(typeof ArrayBuffer!="function")return;var r=a;var e=r.lib;var t=e.WordArray;var i=t.init;var n=t.init=function(r){if(r instanceof ArrayBuffer)r=new Uint8Array(r);if(r instanceof Int8Array||typeof Uint8ClampedArray!=="undefined"&&r instanceof Uint8ClampedArray||r instanceof Int16Array||r instanceof Uint16Array||r instanceof Int32Array||r instanceof Uint32Array||r instanceof Float32Array||r instanceof Float64Array)r=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);if(r instanceof Uint8Array){var e=r.byteLength;var t=[];for(var n=0;n<e;n++)t[n>>>2]|=r[n]<<24-n%4*8;i.call(this,t,e)}else i.apply(this,arguments)};n.prototype=t}(),a.lib.WordArray}(t(0))},function(r,e,t){"use strict";t.r(e);var e=t(2),o=t.n(e),e=t(3),c=t.n(e),e=t(6),s=t.n(e),e=t(7),f=t.n(e),e=t(8),v=t.n(e),e=t(4),u=t.n(e);function crc32(r,e){for(var t=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],n=("undefined"!=typeof Int32Array&&(t=new Int32Array(t)),-1^~~e),i=(r=new Uint8Array(r)).length,a=0;a<i;a++)n=t[255&(n^r[a])]^n>>>8;return(-1^n)>>>0}function dec2hex(r){if(void 0!==r)return function toEight(r){return r.length<8?toEight(r="0".concat(r)):r}(Number(r).toString(16))}self.onmessage=function(r){var r=r.data,e=r[0],t=r[1],n=r[2],i=r[3],a=r[4],r=r[5];i?(i=v.a.create(e),i=crc32(r=function wordArrayToUint8Array(r){for(var e=r.sigBytes,t=r.words,n=new Uint8Array(e),i=0,a=0;i!==e;){var o=t[a++];if(n[i++]=(4278190080&o)>>>24,i===e)break;if(n[i++]=(16711680&o)>>>16,i===e)break;if(n[i++]=(65280&o)>>>8,i===e)break;n[i++]=255&o}return n}((r&&e.byteLength%16!=0?o.a.encrypt(i,u.a.parse(a),{mode:c.a,padding:s.a}):o.a.encrypt(i,u.a.parse(a),{mode:c.a,padding:f.a})).ciphertext),0),postMessage([r.buffer,dec2hex(i),t,n],[r.buffer])):(a=crc32(e,0),postMessage([e,dec2hex(a),t,n],[e]))}},function(r,e){var t=function(){return this}();try{t=t||new Function("return this")()}catch(r){"object"==typeof window&&(t=window)}r.exports=t},function(r,e){},function(r,e,t){r.exports=function(i){return function(){var r=i;var e=r.lib;var f=e.WordArray;var t=r.enc;var n=t.Base64={stringify:function(r){var e=r.words;var t=r.sigBytes;var n=this._map;r.clamp();var i=[];for(var a=0;a<t;a+=3){var o=e[a>>>2]>>>24-a%4*8&255;var c=e[a+1>>>2]>>>24-(a+1)%4*8&255;var s=e[a+2>>>2]>>>24-(a+2)%4*8&255;var f=o<<16|c<<8|s;for(var v=0;v<4&&a+v*.75<t;v++)i.push(n.charAt(f>>>6*(3-v)&63))}var u=n.charAt(64);if(u)while(i.length%4)i.push(u);return i.join("")},parse:function(r){var e=r.length;var t=this._map;var n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i<t.length;i++)n[t.charCodeAt(i)]=i}var a=t.charAt(64);if(a){var o=r.indexOf(a);if(o!==-1)e=o}return parseLoop(r,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};function parseLoop(r,e,t){var n=[];var i=0;for(var a=0;a<e;a++)if(a%4){var o=t[r.charCodeAt(a-1)]<<a%4*2;var c=t[r.charCodeAt(a)]>>>6-a%4*2;var s=o|c;n[i>>>2]|=s<<24-i%4*8;i++}return f.create(n,i)}}(),i.enc.Base64}(t(0))},function(r,e,t){r.exports=function(o){return function(v){var r=o;var e=r.lib;var t=e.WordArray;var n=e.Hasher;var i=r.algo;var F=[];(function(){for(var r=0;r<64;r++)F[r]=v.abs(v.sin(r+1))*4294967296|0})();var a=i.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(r,e){for(var t=0;t<16;t++){var n=e+t;var i=r[n];r[n]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360}var a=this._hash.words;var o=r[e+0];var c=r[e+1];var s=r[e+2];var f=r[e+3];var v=r[e+4];var u=r[e+5];var h=r[e+6];var p=r[e+7];var l=r[e+8];var d=r[e+9];var _=r[e+10];var y=r[e+11];var g=r[e+12];var w=r[e+13];var k=r[e+14];var B=r[e+15];var m=a[0];var x=a[1];var b=a[2];var S=a[3];m=FF(m,x,b,S,o,7,F[0]);S=FF(S,m,x,b,c,12,F[1]);b=FF(b,S,m,x,s,17,F[2]);x=FF(x,b,S,m,f,22,F[3]);m=FF(m,x,b,S,v,7,F[4]);S=FF(S,m,x,b,u,12,F[5]);b=FF(b,S,m,x,h,17,F[6]);x=FF(x,b,S,m,p,22,F[7]);m=FF(m,x,b,S,l,7,F[8]);S=FF(S,m,x,b,d,12,F[9]);b=FF(b,S,m,x,_,17,F[10]);x=FF(x,b,S,m,y,22,F[11]);m=FF(m,x,b,S,g,7,F[12]);S=FF(S,m,x,b,w,12,F[13]);b=FF(b,S,m,x,k,17,F[14]);x=FF(x,b,S,m,B,22,F[15]);m=GG(m,x,b,S,c,5,F[16]);S=GG(S,m,x,b,h,9,F[17]);b=GG(b,S,m,x,y,14,F[18]);x=GG(x,b,S,m,o,20,F[19]);m=GG(m,x,b,S,u,5,F[20]);S=GG(S,m,x,b,_,9,F[21]);b=GG(b,S,m,x,B,14,F[22]);x=GG(x,b,S,m,v,20,F[23]);m=GG(m,x,b,S,d,5,F[24]);S=GG(S,m,x,b,k,9,F[25]);b=GG(b,S,m,x,f,14,F[26]);x=GG(x,b,S,m,l,20,F[27]);m=GG(m,x,b,S,w,5,F[28]);S=GG(S,m,x,b,s,9,F[29]);b=GG(b,S,m,x,p,14,F[30]);x=GG(x,b,S,m,g,20,F[31]);m=HH(m,x,b,S,u,4,F[32]);S=HH(S,m,x,b,l,11,F[33]);b=HH(b,S,m,x,y,16,F[34]);x=HH(x,b,S,m,k,23,F[35]);m=HH(m,x,b,S,c,4,F[36]);S=HH(S,m,x,b,v,11,F[37]);b=HH(b,S,m,x,p,16,F[38]);x=HH(x,b,S,m,_,23,F[39]);m=HH(m,x,b,S,w,4,F[40]);S=HH(S,m,x,b,o,11,F[41]);b=HH(b,S,m,x,f,16,F[42]);x=HH(x,b,S,m,h,23,F[43]);m=HH(m,x,b,S,d,4,F[44]);S=HH(S,m,x,b,g,11,F[45]);b=HH(b,S,m,x,B,16,F[46]);x=HH(x,b,S,m,s,23,F[47]);m=II(m,x,b,S,o,6,F[48]);S=II(S,m,x,b,p,10,F[49]);b=II(b,S,m,x,k,15,F[50]);x=II(x,b,S,m,u,21,F[51]);m=II(m,x,b,S,g,6,F[52]);S=II(S,m,x,b,f,10,F[53]);b=II(b,S,m,x,_,15,F[54]);x=II(x,b,S,m,c,21,F[55]);m=II(m,x,b,S,l,6,F[56]);S=II(S,m,x,b,B,10,F[57]);b=II(b,S,m,x,h,15,F[58]);x=II(x,b,S,m,w,21,F[59]);m=II(m,x,b,S,v,6,F[60]);S=II(S,m,x,b,y,10,F[61]);b=II(b,S,m,x,s,15,F[62]);x=II(x,b,S,m,d,21,F[63]);a[0]=a[0]+m|0;a[1]=a[1]+x|0;a[2]=a[2]+b|0;a[3]=a[3]+S|0},_doFinalize:function(){var r=this._data;var e=r.words;var t=this._nDataBytes*8;var n=r.sigBytes*8;e[n>>>5]|=128<<24-n%32;var i=v.floor(t/4294967296);var a=t;e[(n+64>>>9<<4)+15]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360;e[(n+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;r.sigBytes=(e.length+1)*4;this._process();var o=this._hash;var c=o.words;for(var s=0;s<4;s++){var f=c[s];c[s]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}return o},clone:function(){var r=n.clone.call(this);r._hash=this._hash.clone();return r}});function FF(r,e,t,n,i,a,o){var c=r+(e&t|~e&n)+i+o;return(c<<a|c>>>32-a)+e}function GG(r,e,t,n,i,a,o){var c=r+(e&n|t&~n)+i+o;return(c<<a|c>>>32-a)+e}function HH(r,e,t,n,i,a,o){var c=r+(e^t^n)+i+o;return(c<<a|c>>>32-a)+e}function II(r,e,t,n,i,a,o){var c=r+(t^(e|~n))+i+o;return(c<<a|c>>>32-a)+e}r.MD5=n._createHelper(a);r.HmacMD5=n._createHmacHelper(a)}(Math),o.MD5}(t(0))},function(r,e,t){r.exports=function(o){return function(){var r=o;var e=r.lib;var t=e.WordArray;var n=e.Hasher;var i=r.algo;var u=[];var a=i.SHA1=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(r,e){var t=this._hash.words;var n=t[0];var i=t[1];var a=t[2];var o=t[3];var c=t[4];for(var s=0;s<80;s++){if(s<16)u[s]=r[e+s]|0;else{var f=u[s-3]^u[s-8]^u[s-14]^u[s-16];u[s]=f<<1|f>>>31}var v=(n<<5|n>>>27)+c+u[s];if(s<20)v+=(i&a|~i&o)+1518500249;else if(s<40)v+=(i^a^o)+1859775393;else if(s<60)v+=(i&a|i&o|a&o)-1894007588;else v+=(i^a^o)-899497514;c=o;o=a;a=i<<30|i>>>2;i=n;n=v}t[0]=t[0]+n|0;t[1]=t[1]+i|0;t[2]=t[2]+a|0;t[3]=t[3]+o|0;t[4]=t[4]+c|0},_doFinalize:function(){var r=this._data;var e=r.words;var t=this._nDataBytes*8;var n=r.sigBytes*8;e[n>>>5]|=128<<24-n%32;e[(n+64>>>9<<4)+14]=Math.floor(t/4294967296);e[(n+64>>>9<<4)+15]=t;r.sigBytes=e.length*4;this._process();return this._hash},clone:function(){var r=n.clone.call(this);r._hash=this._hash.clone();return r}});r.SHA1=n._createHelper(a);r.HmacSHA1=n._createHmacHelper(a)}(),o.SHA1}(t(0))},function(r,e,t){r.exports=function(o){(function(){var r=o;var e=r.lib;var t=e.Base;var n=r.enc;var f=n.Utf8;var i=r.algo;var a=i.HMAC=t.extend({init:function(r,e){r=this._hasher=new r.init;if(typeof e=="string")e=f.parse(e);var t=r.blockSize;var n=t*4;if(e.sigBytes>n)e=r.finalize(e);e.clamp();var i=this._oKey=e.clone();var a=this._iKey=e.clone();var o=i.words;var c=a.words;for(var s=0;s<t;s++){o[s]^=1549556828;c[s]^=909522486}i.sigBytes=a.sigBytes=n;this.reset()},reset:function(){var r=this._hasher;r.reset();r.update(this._iKey)},update:function(r){this._hasher.update(r);return this},finalize:function(r){var e=this._hasher;var t=e.finalize(r);e.reset();var n=e.finalize(this._oKey.clone().concat(t));return n}})})()}(t(0))}]);', null)
  }
}
function TEST4(e, t, r) {
  (function(t) {
      var n;
      e.exports = n || function(e, n) {
          if ("undefined" != typeof window && window.crypto && (i = window.crypto),
          "undefined" != typeof self && self.crypto && (i = self.crypto),
          "undefined" != typeof globalThis && globalThis.crypto && (i = globalThis.crypto),
          !i && "undefined" != typeof window && window.msCrypto && (i = window.msCrypto),
          !i && void 0 !== t && t.crypto && (i = t.crypto),
          !i)
              try {
                  i = r(7)
              } catch (e) {}
          var i, o = function() {
              if (i) {
                  if ("function" == typeof i.getRandomValues)
                      try {
                          return i.getRandomValues(new Uint32Array(1))[0]
                      } catch (e) {}
                  if ("function" == typeof i.randomBytes)
                      try {
                          return i.randomBytes(4).readInt32LE()
                      } catch (e) {}
              }
              throw Error("Native crypto module could not be used to get secure random number.")
          }, s = Object.create || function() {
              function e() {}
              return function(t) {
                  var r;
                  return e.prototype = t,
                  r = new e,
                  e.prototype = null,
                  r
              }
          }(), a = {}, c = a.lib = {}, u = c.Base = {
              extend: function(e) {
                  var t = s(this);
                  return e && t.mixIn(e),
                  (!t.hasOwnProperty("init") || this.init === t.init) && (t.init = function() {
                      t.$super.init.apply(this, arguments)
                  }
                  ),
                  t.init.prototype = t,
                  t.$super = this,
                  t
              },
              create: function() {
                  var e = this.extend();
                  return e.init.apply(e, arguments),
                  e
              },
              init: function() {},
              mixIn: function(e) {
                  for (var t in e)
                      e.hasOwnProperty(t) && (this[t] = e[t]);
                  e.hasOwnProperty("toString") && (this.toString = e.toString)
              },
              clone: function() {
                  return this.init.prototype.extend(this)
              }
          }, l = c.WordArray = u.extend({
              init: function(e, t) {
                  e = this.words = e || [],
                  t != n ? this.sigBytes = t : this.sigBytes = 4 * e.length
              },
              toString: function(e) {
                  return (e || p).stringify(this)
              },
              concat: function(e) {
                  var t = this.words
                    , r = e.words
                    , n = this.sigBytes
                    , i = e.sigBytes;
                  if (this.clamp(),
                  n % 4)
                      for (var o = 0; o < i; o++) {
                          var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                          t[n + o >>> 2] |= s << 24 - (n + o) % 4 * 8
                      }
                  else
                      for (var a = 0; a < i; a += 4)
                          t[n + a >>> 2] = r[a >>> 2];
                  return this.sigBytes += i,
                  this
              },
              clamp: function() {
                  var t = this.words
                    , r = this.sigBytes;
                  t[r >>> 2] &= 0xffffffff << 32 - r % 4 * 8,
                  t.length = e.ceil(r / 4)
              },
              clone: function() {
                  var e = u.clone.call(this);
                  return e.words = this.words.slice(0),
                  e
              },
              random: function(e) {
                  for (var t = [], r = 0; r < e; r += 4)
                      t.push(o());
                  return new l.init(t,e)
              }
          }), f = a.enc = {}, p = f.Hex = {
              stringify: function(e) {
                  for (var t = e.words, r = e.sigBytes, n = [], i = 0; i < r; i++) {
                      var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                      n.push((o >>> 4).toString(16)),
                      n.push((15 & o).toString(16))
                  }
                  return n.join("")
              },
              parse: function(e) {
                  for (var t = e.length, r = [], n = 0; n < t; n += 2)
                      r[n >>> 3] |= parseInt(e.substr(n, 2), 16) << 24 - n % 8 * 4;
                  return new l.init(r,t / 2)
              }
          }, h = f.Latin1 = {
              stringify: function(e) {
                  for (var t = e.words, r = e.sigBytes, n = [], i = 0; i < r; i++) {
                      var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                      n.push(String.fromCharCode(o))
                  }
                  return n.join("")
              },
              parse: function(e) {
                  for (var t = e.length, r = [], n = 0; n < t; n++)
                      r[n >>> 2] |= (255 & e.charCodeAt(n)) << 24 - n % 4 * 8;
                  return new l.init(r,t)
              }
          }, d = f.Utf8 = {
              stringify: function(e) {
                  try {
                      return decodeURIComponent(escape(h.stringify(e)))
                  } catch (e) {
                      throw Error("Malformed UTF-8 data")
                  }
              },
              parse: function(e) {
                  return h.parse(unescape(encodeURIComponent(e)))
              }
          }, g = c.BufferedBlockAlgorithm = u.extend({
              reset: function() {
                  this._data = new l.init,
                  this._nDataBytes = 0
              },
              _append: function(e) {
                  "string" == typeof e && (e = d.parse(e)),
                  this._data.concat(e),
                  this._nDataBytes += e.sigBytes
              },
              _process: function(t) {
                  var r, n = this._data, i = n.words, o = n.sigBytes, s = this.blockSize, a = o / (4 * s), c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * s, u = e.min(4 * c, o);
                  if (c) {
                      for (var f = 0; f < c; f += s)
                          this._doProcessBlock(i, f);
                      r = i.splice(0, c),
                      n.sigBytes -= u
                  }
                  return new l.init(r,u)
              },
              clone: function() {
                  var e = u.clone.call(this);
                  return e._data = this._data.clone(),
                  e
              },
              _minBufferSize: 0
          });
          c.Hasher = g.extend({
              cfg: u.extend(),
              init: function(e) {
                  this.cfg = this.cfg.extend(e),
                  this.reset()
              },
              reset: function() {
                  g.reset.call(this),
                  this._doReset()
              },
              update: function(e) {
                  return this._append(e),
                  this._process(),
                  this
              },
              finalize: function(e) {
                  return e && this._append(e),
                  this._doFinalize()
              },
              blockSize: 16,
              _createHelper: function(e) {
                  return function(t, r) {
                      return new e.init(r).finalize(t)
                  }
              },
              _createHmacHelper: function(e) {
                  return function(t, r) {
                      return new y.HMAC.init(e,r).finalize(t)
                  }
              }
          });
          var y = a.algo = {};
          return a
      }(Math)
  }
  ).call(this, r(5))
}
function TEST5(e, t, r) {
  var n;
  e.exports = (n = r(3),
  function(e) {
      var t = n.lib
        , r = t.WordArray
        , i = t.Hasher
        , o = n.algo
        , s = []
        , a = [];
      (function() {
          function t(e) {
              return (e - (0 | e)) * 0x100000000 | 0
          }
          for (var r = 2, n = 0; n < 64; )
              (function(t) {
                  for (var r = e.sqrt(t), n = 2; n <= r; n++)
                      if (!(t % n))
                          return !1;
                  return !0
              }
              )(r) && (n < 8 && (s[n] = t(e.pow(r, .5))),
              a[n] = t(e.pow(r, 1 / 3)),
              n++),
              r++
      }
      )();
      var c = []
        , u = o.SHA256 = i.extend({
          _doReset: function() {
              this._hash = new r.init(s.slice(0))
          },
          _doProcessBlock: function(e, t) {
              for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], u = r[4], l = r[5], f = r[6], p = r[7], h = 0; h < 64; h++) {
                  if (h < 16)
                      c[h] = 0 | e[t + h];
                  else {
                      var d = c[h - 15]
                        , g = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3
                        , y = c[h - 2]
                        , m = (y << 15 | y >>> 17) ^ (y << 13 | y >>> 19) ^ y >>> 10;
                      c[h] = g + c[h - 7] + m + c[h - 16]
                  }
                  var v = u & l ^ ~u & f
                    , b = n & i ^ n & o ^ i & o
                    , _ = (n << 30 | n >>> 2) ^ (n << 19 | n >>> 13) ^ (n << 10 | n >>> 22)
                    , S = p + ((u << 26 | u >>> 6) ^ (u << 21 | u >>> 11) ^ (u << 7 | u >>> 25)) + v + a[h] + c[h]
                    , x = _ + b;
                  p = f,
                  f = l,
                  l = u,
                  u = s + S | 0,
                  s = o,
                  o = i,
                  i = n,
                  n = S + x | 0
              }
              r[0] = r[0] + n | 0,
              r[1] = r[1] + i | 0,
              r[2] = r[2] + o | 0,
              r[3] = r[3] + s | 0,
              r[4] = r[4] + u | 0,
              r[5] = r[5] + l | 0,
              r[6] = r[6] + f | 0,
              r[7] = r[7] + p | 0
          },
          _doFinalize: function() {
              var t = this._data
                , r = t.words
                , n = 8 * this._nDataBytes
                , i = 8 * t.sigBytes;
              return r[i >>> 5] |= 128 << 24 - i % 32,
              r[(i + 64 >>> 9 << 4) + 14] = e.floor(n / 0x100000000),
              r[(i + 64 >>> 9 << 4) + 15] = n,
              t.sigBytes = 4 * r.length,
              this._process(),
              this._hash
          },
          clone: function() {
              var e = i.clone.call(this);
              return e._hash = this._hash.clone(),
              e
          }
      });
      n.SHA256 = i._createHelper(u),
      n.HmacSHA256 = i._createHmacHelper(u)
  }(Math),
  n.SHA256)
}
function TEST6(e, t) {
  var r = function() {
      return this
  }();
  try {
      r = r || Function("return this")()
  } catch (e) {
      "object" == typeof window && (r = window)
  }
  e.exports = r
}
function TEST7(e, t, r) {
  var n;
  e.exports = (n = r(3),
  r(4),
  r(8),
  n.HmacSHA256)
}
function TEST8(e, t) {}
function TEST9(e, t, r) {
  var n, i, o;
  e.exports = void (i = (n = r(3)).lib.Base,
  o = n.enc.Utf8,
  n.algo.HMAC = i.extend({
      init: function(e, t) {
          e = this._hasher = new e.init,
          "string" == typeof t && (t = o.parse(t));
          var r = e.blockSize
            , n = 4 * r;
          t.sigBytes > n && (t = e.finalize(t)),
          t.clamp();
          for (var i = this._oKey = t.clone(), s = this._iKey = t.clone(), a = i.words, c = s.words, u = 0; u < r; u++)
              a[u] ^= 0x5c5c5c5c,
              c[u] ^= 0x36363636;
          i.sigBytes = s.sigBytes = n,
          this.reset()
      },
      reset: function() {
          var e = this._hasher;
          e.reset(),
          e.update(this._iKey)
      },
      update: function(e) {
          return this._hasher.update(e),
          this
      },
      finalize: function(e) {
          var t = this._hasher
            , r = t.finalize(e);
          return t.reset(),
          t.finalize(this._oKey.clone().concat(r))
      }
  }))
}
function TEST10(e, t) {}
function TEST11(e, t, r) {
  "use strict";
  var n = window.URL || window.webkitURL;
  e.exports = function(e, t) {
      try {
          try {
              var r;
              try {
                  (r = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder)).append(e),
                  r = r.getBlob()
              } catch (t) {
                  r = new Blob([e])
              }
              return new Worker(n.createObjectURL(r))
          } catch (t) {
              return new Worker("data:application/javascript," + encodeURIComponent(e))
          }
      } catch (e) {
          if (t)
              return new Worker(t);
          throw Error("Inline worker is not supported")
      }
  }
}
function TEST12(e, t, r) {
  "use strict";
  r.r(t),
  r.d(t, "default", function() {
      return t7
  });
  var t = r(0)
    , n = r.n(t)
    , i = "{tosDomain}/upload/v1/{oid}?uploadid={uploadId}&part_number={part_number}&phase=transfer"
    , o = "{tosDomain}/upload/v1/{oid}"
    , s = {
      debug: !1,
      region: "cn-north-1",
      external: {},
      getSliceFunc: null,
      uploadSliceCount: 3,
      retryUploadTime: 2,
      retryProcess: !0,
      retryProcessTime: 3,
      retryTaskTime: 2,
      progressMonitorTime: 1e4,
      progressMonitorSpeed: 50,
      schema: "https",
      enableDiskBreakpoint: !0,
      gatewayTimeout: 3e4,
      uploadTimeout: 18e5,
      realtimeSpeedInterval: 3e3,
      replace: {}
  }
    , a = function() {
      return (a = Object.assign || function(e) {
          for (var t, r = 1, n = arguments.length; r < n; r++)
              for (var i in t = arguments[r])
                  Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
          return e
      }
      ).apply(this, arguments)
  };
  function c() {
      for (var e = [], t = 0; t < arguments.length; t++)
          e = e.concat(function(e, t) {
              var r = "function" == typeof Symbol && e[Symbol.iterator];
              if (!r)
                  return e;
              var n, i, o = r.call(e), s = [];
              try {
                  for (; (void 0 === t || 0 < t--) && !(n = o.next()).done; )
                      s.push(n.value)
              } catch (e) {
                  i = {
                      error: e
                  }
              } finally {
                  try {
                      n && !n.done && (r = o.return) && r.call(o)
                  } finally {
                      if (i)
                          throw i.error
                  }
              }
              return s
          }(arguments[t]));
      return e
  }
  function u(e) {
      return null != e && "[object Object]" == Object.prototype.toString.call(e)
  }
  function l(e) {
      return function(e) {
          if ("string" == typeof e) {
              for (var t = [], r = e.split("z"), n = 0; n < r.length; n++) {
                  var i = 64 ^ +parseInt(r[n], 25)
                    , i = String.fromCharCode(i);
                  t.push(i)
              }
              return t.join("")
          }
      }(e)
  }
  function f(e) {
      var t = document.createElement("a");
      return t.href = e,
      t
  }
  function p(e) {
      var t = {};
      try {
          var r = f(e).search;
          if (!r)
              return t;
          (r = r.slice(1)).split("&").forEach(function(e) {
              var r, n, i = e.split("=");
              i.length && (r = i[0],
              n = i[1]);
              try {
                  t[r] = decodeURIComponent(void 0 === n ? "" : n)
              } catch (e) {
                  t[r] = n
              }
          })
      } catch (e) {}
      return t
  }
  function h(e) {
      for (var t = 0, r = 0, n = (e += "").length, i = 0; i < n; i++)
          (0x7fffffffffff < (t = 31 * t + e.charCodeAt(r++)) || t < -0x800000000000) && (t &= 0xffffffffffff);
      return t < 0 && (t += 0x7ffffffffffff),
      t
  }
  function d(e, t) {
      try {
          return e ? w.get(e, {
              domain: t || document.domain
          }) : w.get()
      } catch (e) {
          return ""
      }
  }
  function g(e, t, r, n) {
      try {
          var i = n || document.domain
            , o = +new Date + (r || 6048e5);
          w.set(e, t, {
              expires: new Date(o),
              path: "/",
              domain: i
          })
      } catch (e) {}
  }
  function y() {
      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
          var t = 16 * Math.random() | 0;
          return ("x" === e ? t : 3 & t | 8).toString(16)
      })
  }
  function m() {
      return (function e(t) {
          return t ? (t ^ 16 * Math.random() >> t / 4).toString(10) : "10000000-1000-4000-8000-100000000000".replace(/[018]/g, e)
      }
      )().replace(/-/g, "").slice(0, 19)
  }
  var v, b, _, S, x = function() {
      function e() {
          this._hooks = {},
          this._cache = [],
          this._hooksCache = {}
      }
      return e.prototype.on = function(e, t) {
          e && t && "function" == typeof t && (this._hooks[e] || (this._hooks[e] = []),
          this._hooks[e].push(t))
      }
      ,
      e.prototype.once = function(e, t) {
          var r = this;
          e && t && "function" == typeof t && this.on(e, function n(i) {
              t(i),
              r.off(e, n)
          })
      }
      ,
      e.prototype.off = function(e, t) {
          e && this._hooks[e] && this._hooks[e].length && (t ? -1 !== (t = this._hooks[e].indexOf(t)) && this._hooks[e].splice(t, 1) : this._hooks[e] = [])
      }
      ,
      e.prototype.emit = function(e, t, r) {
          r ? e && (-1 !== this._cache.indexOf(r) ? this._emit(e, t) : (this._hooksCache.hasOwnProperty(r) || (this._hooksCache[r] = {}),
          this._hooksCache[r].hasOwnProperty(e) || (this._hooksCache[r][e] = []),
          this._hooksCache[r][e].push(t))) : this._emit(e, t)
      }
      ,
      e.prototype._emit = function(e, t) {
          e && this._hooks[e] && this._hooks[e].length && c(this._hooks[e]).forEach(function(e) {
              try {
                  e(t)
              } catch (e) {}
          })
      }
      ,
      e.prototype.set = function(e) {
          e && -1 === this._cache.indexOf(e) && this._cache.push(e)
      }
      ,
      e
  }(), w = (_ = +Date.now() + Number(("" + Math.random()).slice(2, 8)),
  (t = {
      exports: {}
  }).exports = function() {
      function e() {
          for (var e = 0, t = {}; e < arguments.length; e++) {
              var r, n = arguments[e];
              for (r in n)
                  t[r] = n[r]
          }
          return t
      }
      function t(e) {
          return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent)
      }
      return function r(n) {
          function i() {}
          function o(t, r, o) {
              if ("undefined" != typeof document) {
                  "number" == typeof (o = e({
                      path: "/"
                  }, i.defaults, o)).expires && (o.expires = new Date(+new Date + 864e5 * o.expires)),
                  o.expires = o.expires ? o.expires.toUTCString() : "";
                  try {
                      var s = JSON.stringify(r);
                      /^[\{\[]/.test(s) && (r = s)
                  } catch (e) {}
                  r = n.write ? n.write(r, t) : encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent),
                  t = encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape);
                  var a, c = "";
                  for (a in o)
                      o[a] && (c += "; " + a,
                      !0 !== o[a]) && (c += "=" + o[a].split(";")[0]);
                  return document.cookie = t + "=" + r + c
              }
          }
          function s(e, r) {
              if ("undefined" != typeof document) {
                  for (var i = {}, o = document.cookie ? document.cookie.split("; ") : [], s = 0; s < o.length; s++) {
                      var a = o[s].split("=")
                        , c = a.slice(1).join("=");
                      r || '"' !== c.charAt(0) || (c = c.slice(1, -1));
                      try {
                          var u = t(a[0])
                            , c = (n.read || n)(c, u) || t(c);
                          if (r)
                              try {
                                  c = JSON.parse(c)
                              } catch (e) {}
                          if (i[u] = c,
                          e === u)
                              break
                      } catch (e) {}
                  }
                  return e ? i[e] : i
              }
          }
          return i.set = o,
          i.get = function(e) {
              return s(e, !1)
          }
          ,
          i.getJSON = function(e) {
              return s(e, !0)
          }
          ,
          i.remove = function(t, r) {
              o(t, "", e(r, {
                  expires: -1
              }))
          }
          ,
          i.defaults = {},
          i.withConverter = r,
          i
      }(function() {})
  }(),
  t.exports), k = function() {
      function e() {
          this.cache = {}
      }
      return e.prototype.setItem = function(e, t) {
          this.cache[e] = t
      }
      ,
      e.prototype.getItem = function(e) {
          return this.cache[e]
      }
      ,
      e.prototype.removeItem = function(e) {
          this.cache[e] = void 0
      }
      ,
      e.prototype.getCookie = function(e, t) {
          return d(e, t)
      }
      ,
      e.prototype.setCookie = function(e, t, r, n) {
          g(e, t, r, n)
      }
      ,
      e
  }(), E = {
      getItem: function(e) {
          try {
              var t = localStorage.getItem(e)
                , r = t;
              try {
                  t && "string" == typeof t && (r = JSON.parse(t))
              } catch (e) {}
              return r || {}
          } catch (e) {}
          return {}
      },
      setItem: function(e, t) {
          try {
              var r = "string" == typeof t ? t : JSON.stringify(t);
              localStorage.setItem(e, r)
          } catch (e) {}
      },
      removeItem: function(e) {
          try {
              localStorage.removeItem(e)
          } catch (e) {}
      },
      getCookie: function(e, t) {
          return d(e, t)
      },
      setCookie: function(e, t, r, n) {
          g(e, t, r, n)
      },
      isSupportLS: function() {
          try {
              return localStorage.setItem("_ranger-test-key", "hi"),
              localStorage.getItem("_ranger-test-key"),
              localStorage.removeItem("_ranger-test-key"),
              !0
          } catch (e) {
              return !1
          }
      }()
  }, O = {
      getItem: function(e) {
          try {
              var t = sessionStorage.getItem(e)
                , r = t;
              try {
                  t && "string" == typeof t && (r = JSON.parse(t))
              } catch (e) {}
              return r || {}
          } catch (e) {}
          return {}
      },
      setItem: function(e, t) {
          try {
              var r = "string" == typeof t ? t : JSON.stringify(t);
              sessionStorage.setItem(e, r)
          } catch (e) {}
      },
      removeItem: function(e) {
          try {
              sessionStorage.removeItem(e)
          } catch (e) {}
      },
      getCookie: function(e, t) {
          return d(e, t)
      },
      setCookie: function(e, t, r, n) {
          g(e, t, r, n)
      },
      isSupportSession: function() {
          try {
              return sessionStorage.setItem("_ranger-test-key", "hi"),
              sessionStorage.getItem("_ranger-test-key"),
              sessionStorage.removeItem("_ranger-test-key"),
              !0
          } catch (e) {
              return !1
          }
      }()
  }, T = function() {
      function e(e, t) {
          this._storage = t && "session" === t ? O : !e && E.isSupportLS ? E : new k
      }
      return e.prototype.getItem = function(e) {
          return this._storage.getItem(e)
      }
      ,
      e.prototype.setItem = function(e, t) {
          this._storage.setItem(e, t)
      }
      ,
      e.prototype.getCookie = function(e, t) {
          return this._storage.getCookie(e, t)
      }
      ,
      e.prototype.setCookie = function(e, t, r, n) {
          this._storage.setCookie(e, t, r, n)
      }
      ,
      e.prototype.removeItem = function(e) {
          this._storage.removeItem(e)
      }
      ,
      e
  }(), C = function() {
      function e(e, t, r) {
          this.appid = e,
          this.domain = t,
          this.userAgent = window.navigator.userAgent,
          this.appVersion = window.navigator.appVersion,
          this.cookie_expire = r
      }
      return e.prototype.init = function() {
          var e = window.navigator.userAgent
            , t = window.navigator.language
            , r = document.referrer
            , n = r ? f(r).hostname : ""
            , i = p(window.location.href)
            , o = /Mobile|htc|mini|Android|iP(ad|od|hone)/.test(this.appVersion) ? "wap" : "web"
            , i = (this.utm = function(e, t, r, n) {
              var i = new T(!1)
                , o = new T(!1,"session")
                , s = e ? "_tea_utm_cache_" + e : "_tea_utm_cache"
                , a = e ? "_$utm_from_url_" + e : "_$utm_from_url"
                , c = {}
                , u = ["tr_shareuser", "tr_admaster", "tr_param1", "tr_param2", "tr_param3", "tr_param4", "$utm_from_url"]
                , l = {
                  ad_id: Number(t.ad_id) || void 0,
                  campaign_id: Number(t.campaign_id) || void 0,
                  creative_id: Number(t.creative_id) || void 0,
                  utm_source: t.utm_source,
                  utm_medium: t.utm_medium,
                  utm_campaign: t.utm_campaign,
                  utm_term: t.utm_term,
                  utm_content: t.utm_content,
                  tr_shareuser: t.tr_shareuser,
                  tr_admaster: t.tr_admaster,
                  tr_param1: t.tr_param1,
                  tr_param2: t.tr_param2,
                  tr_param3: t.tr_param3,
                  tr_param4: t.tr_param4
              };
              try {
                  var f, p, h = !1;
                  for (f in l)
                      l[f] && (-1 !== u.indexOf(f) ? (c.hasOwnProperty("tracer_data") || (c.tracer_data = {}),
                      c.tracer_data[f] = l[f]) : c[f] = l[f],
                      h = !0);
                  h ? (o.setItem(a, "1"),
                  i.setCookie(s, JSON.stringify(c), n, r)) : (p = i.getCookie(s, r)) && (c = JSON.parse(p)),
                  o.getItem(a) && (c.hasOwnProperty("tracer_data") || (c.tracer_data = {}),
                  c.tracer_data.$utm_from_url = 1)
              } catch (e) {
                  return l
              }
              return c
          }(this.appid, i, this.domain, this.cookie_expire),
          this.browser())
            , s = this.os();
          return {
              browser: i.browser,
              browser_version: i.browser_version,
              platform: o,
              os_name: s.os_name,
              os_version: s.os_version,
              userAgent: e,
              screen_width: window.screen && window.screen.width,
              screen_height: window.screen && window.screen.height,
              device_model: this.getDeviceModel(s.os_name),
              language: t,
              referrer: r,
              referrer_host: n,
              utm: this.utm,
              latest_data: this.last(r, n)
          }
      }
      ,
      e.prototype.last = function(e, t) {
          var r = ""
            , n = ""
            , i = ""
            , o = location.hostname
            , s = !1;
          return e && t && o !== t && (n = t,
          s = !0,
          (o = p(r = e)).keyword) && (i = o.keyword),
          {
              $latest_referrer: r,
              $latest_referrer_host: n,
              $latest_search_keyword: i,
              isLast: s
          }
      }
      ,
      e.prototype.browser = function() {
          var e, t = "", r = "" + parseFloat(this.appVersion), n = this.userAgent;
          return -1 !== n.indexOf("Edge") || -1 !== n.indexOf("Edg") ? (t = "Microsoft Edge",
          r = -1 !== n.indexOf("Edge") ? (e = n.indexOf("Edge"),
          n.substring(e + 5)) : (e = n.indexOf("Edg"),
          n.substring(e + 4))) : -1 !== (e = n.indexOf("MSIE")) ? (t = "Microsoft Internet Explorer",
          r = n.substring(e + 5)) : -1 !== (e = n.indexOf("Lark")) ? (t = "Lark",
          r = n.substring(e + 5, e + 11)) : -1 !== (e = n.indexOf("MetaSr")) ? (t = "sougoubrowser",
          r = n.substring(e + 7, e + 10)) : -1 !== n.indexOf("MQQBrowser") || -1 !== n.indexOf("QQBrowser") ? (t = "qqbrowser",
          -1 !== n.indexOf("MQQBrowser") ? (e = n.indexOf("MQQBrowser"),
          r = n.substring(e + 11, e + 15)) : -1 !== n.indexOf("QQBrowser") && (e = n.indexOf("QQBrowser"),
          r = n.substring(e + 10, e + 17))) : -1 !== n.indexOf("Chrome") ? -1 !== (e = n.indexOf("MicroMessenger")) ? (t = "weixin",
          r = n.substring(e + 15, e + 20)) : -1 !== (e = n.indexOf("360")) ? (t = "360browser",
          r = n.substring(n.indexOf("Chrome") + 7)) : -1 !== n.indexOf("baidubrowser") || -1 !== n.indexOf("BIDUBrowser") ? (-1 !== n.indexOf("baidubrowser") ? (e = n.indexOf("baidubrowser"),
          r = n.substring(e + 13, e + 16)) : -1 !== n.indexOf("BIDUBrowser") && (e = n.indexOf("BIDUBrowser"),
          r = n.substring(e + 12, e + 15)),
          t = "baidubrowser") : -1 !== (e = n.indexOf("xiaomi")) ? r = -1 !== n.indexOf("openlanguagexiaomi") ? (t = "openlanguage xiaomi",
          n.substring(e + 7, e + 13)) : (t = "xiaomi",
          n.substring(e - 7, e - 1)) : -1 !== (e = n.indexOf("TTWebView")) ? (t = "TTWebView",
          r = n.substring(e + 10, e + 23)) : -1 === (e = n.indexOf("Chrome")) && -1 === (e = n.indexOf("Chrome")) || (t = "Chrome",
          r = n.substring(e + 7)) : -1 !== n.indexOf("Safari") ? -1 !== (e = n.indexOf("QQ")) ? (t = "qqbrowser",
          r = n.substring(e + 10, e + 16)) : -1 !== (e = n.indexOf("Safari")) && (t = "Safari",
          r = n.substring(e + 7),
          -1 !== (e = n.indexOf("Version"))) && (r = n.substring(e + 8)) : -1 !== (e = n.indexOf("Firefox")) ? (t = "Firefox",
          r = n.substring(e + 8)) : -1 !== (e = n.indexOf("MicroMessenger")) ? (t = "weixin",
          r = n.substring(e + 15, e + 20)) : -1 !== (e = n.indexOf("QQ")) && (t = "qqbrowser",
          r = n.substring(e + 3, e + 8)),
          {
              browser: t,
              browser_version: r = -1 !== (n = (r = -1 !== (n = (r = -1 !== (n = r.indexOf(";")) ? r.substring(0, n) : r).indexOf(" ")) ? r.substring(0, n) : r).indexOf(")")) ? r.substring(0, n) : r
          }
      }
      ,
      e.prototype.os = function() {
          for (var e = "", t = "", r = [{
              s: "Windows 10",
              r: /(Windows 10.0|Windows NT 10.0|Windows NT 10.1)/
          }, {
              s: "Windows 8.1",
              r: /(Windows 8.1|Windows NT 6.3)/
          }, {
              s: "Windows 8",
              r: /(Windows 8|Windows NT 6.2)/
          }, {
              s: "Windows 7",
              r: /(Windows 7|Windows NT 6.1)/
          }, {
              s: "Android",
              r: /Android/
          }, {
              s: "iOS",
              r: /(iPhone|iPad|iPod)/
          }, {
              s: "Mac OS X",
              r: /Mac OS X/
          }, {
              s: "Mac OS",
              r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/
          }, {
              s: "chromeOS",
              r: /CrOS/
          }, {
              s: "Linux",
              r: /(Linux|X11)/
          }, {
              s: "Sun OS",
              r: /SunOS/
          }], n = 0; n < r.length; n++) {
              var i = r[n];
              if (i.r.test(this.userAgent)) {
                  "Mac OS X" === (e = i.s) && this.isNewIpad() && (e = "iOS");
                  break
              }
          }
          function o(e, t) {
              return (e = e.exec(t)) && e[1] ? e[1] : ""
          }
          function s(e, t) {
              return (e = RegExp("(?:^|[^A-Z0-9-_]|[^A-Z0-9-]_|sprd-)(?:" + e + ")", "i").exec(t)) ? e.slice(1)[0] : ""
          }
          switch (/Windows/.test(e) && (t = o(/Windows (.*)/, e),
          e = "windows"),
          e) {
          case "Mac OS X":
              t = s("Mac[ +]OS[ +]X(?:[ /](?:Version )?(\\d+(?:[_\\.]\\d+)+))?", this.userAgent),
              e = "mac";
              break;
          case "Android":
              t = o(/Android ([\.\_\d]+)/, a = this.userAgent) || o(/Android\/([\.\_\d]+)/, a),
              e = "android";
              break;
          case "iOS":
              t = this.isNewIpad() ? s("Mac[ +]OS[ +]X(?:[ /](?:Version )?(\\d+(?:[_\\.]\\d+)+))?", this.userAgent) : (t = /OS (\d+)_(\d+)_?(\d+)?/.exec(this.appVersion)) ? t[1] + "." + t[2] + "." + (0 | t[3]) : "",
              e = "ios";
              break;
          case "chromeOS":
              var a = this.userAgent.indexOf("x86_64")
                , t = this.userAgent.substring(a + 7, a + 16)
          }
          return {
              os_name: e,
              os_version: t
          }
      }
      ,
      e.prototype.getDeviceModel = function(e) {
          var t, r, n = "";
          try {
              "android" === e ? navigator.userAgent.split(";").forEach(function(e) {
                  -1 < e.indexOf("Build/") && (n = e.slice(0, e.indexOf("Build/")))
              }) : "ios" !== e && "mac" !== e && "windows" !== e || (n = this.isNewIpad() ? "iPad" : (r = (t = navigator.userAgent.replace("Mozilla/5.0 (", "")).indexOf(";"),
              t.slice(0, r)))
          } catch (e) {}
          return n.trim()
      }
      ,
      e.prototype.isNewIpad = function() {
          return void 0 !== this.userAgent && "MacIntel" === navigator.platform && "number" == typeof navigator.maxTouchPoints && 1 < navigator.maxTouchPoints
      }
      ,
      e
  }(), D = {
      cn: "1fz22z22z1nz21z4mz4bz4bz22z1mz19z1jz1mz1ez4az1az22z1mz19z21z1lz21z21z1bz1iz4az1az1mz1k",
      va: "1fz22z22z1nz21z4mz4bz4bz22z1mz19z1jz1mz1ez4az1gz22z1mz19z21z1lz21z21z1bz1iz4az1az1mz1k",
      sg: "1fz22z22z1nz21z4mz4bz4bz22z1mz19z1jz1mz1ez4az22z1mz19z21z1lz21z21z1bz1iz4az1az1mz1k"
  }, j = {
      cn: "1fz22z22z1nz21z4mz4bz4bz1kz1az21z4az28z1gz1hz1gz1cz18z1nz1gz4az1az1mz1k",
      sg: "1fz22z22z1nz21z4mz4bz4bz21z1ez18z1jz1gz49z1kz1az21z4az19z27z22z1cz1mz24z1cz20z21z1cz18z4az1az1mz1k",
      va: "1fz22z22z1nz21z4mz4bz4bz1kz18z1jz1gz24z18z49z1kz1az21z4az19z27z22z1cz1mz24z1cz20z21z1cz18z4az1az1mz1k"
  }, I = "5.1.11", P = function() {
      function e(e, t) {
          this.collector = e,
          this.config = t,
          this.eventNameWhiteList = ["__bav_page", "__bav_beat", "__bav_page_statistics", "__bav_click", "__bav_page_exposure"],
          this.paramsNameWhiteList = ["$inactive", "$inline", "$target_uuid_list", "$source_uuid", "$is_spider", "$source_id", "$is_first_time", "_staging_flag"],
          this.regStr = RegExp("^[a-zA-Z0-9][a-z0-9A-Z_.-]{1,255}$")
      }
      return e.prototype.checkVerify = function(e) {
          var t, r, n, i = this;
          return !!(e && e.length && (e = e[0]) && (t = e.events,
          r = e.header,
          t) && t.length) && (n = !0,
          t.forEach(function(e) {
              e ? (i.checkEventName(e.event) || (n = !1,
              e.checkEvent = "\u4E8B\u4EF6\u540D\u4E0D\u80FD\u4EE5 $ or __\u5F00\u5934"),
              i.checkEventParams(e.params) || (n = !1,
              e.checkParams = "\u5C5E\u6027\u540D\u4E0D\u80FD\u4EE5 $ or __\u5F00\u5934")) : (n = !1,
              e.checkEvent = "\u4E8B\u4EF6\u5F02\u5E38")
          }),
          n = !!this.checkEventParams(r) && n)
      }
      ,
      e.prototype.checkEventName = function(e) {
          return !!e && this.calculate(e, "event")
      }
      ,
      e.prototype.checkEventParams = function(e) {
          var t = e;
          if ("string" == typeof e && (t = JSON.parse(t)),
          Object.keys(t).length)
              for (var r in t)
                  return !(!this.calculate(r, "params") || "string" == typeof t[r] && 1024 < t[r].length && (console.warn("params: " + r + " can not over 1024 byte, please check;"),
                  1));
          return !0
      }
      ,
      e.prototype.calculate = function(e, t) {
          return -1 !== ("event" === t ? this.eventNameWhiteList : this.paramsNameWhiteList).indexOf(e) || !RegExp("^\\$").test(e) && !RegExp("^__").test(e) || (console.warn(("event" === t ? "event" : "params") + " name: " + e + " can not start with $ or __, pleace check;"),
          !1)
      }
      ,
      e
  }(), A = ((v = J = J || {}).Init = "init",
  v.Config = "config",
  v.Start = "start",
  v.Ready = "ready",
  v.UnReady = "un-ready",
  v.TokenComplete = "token-complete",
  v.TokenStorage = "token-storage",
  v.TokenFetch = "token-fetch",
  v.TokenError = "token-error",
  v.ConfigUuid = "config-uuid",
  v.ConfigWebId = "config-webid",
  v.ConfigDomain = "config-domain",
  v.CustomWebId = "custom-webid",
  v.TokenChange = "token-change",
  v.TokenReset = "token-reset",
  v.ConfigTransform = "config-transform",
  v.EnvTransform = "env-transform",
  v.SessionReset = "session-reset",
  v.SessionResetTime = "session-reset-time",
  v.SetSessionId = "set-session-id",
  v.Event = "event",
  v.Events = "events",
  v.EventNow = "event-now",
  v.CleanEvents = "clean-events",
  v.BeconEvent = "becon-event",
  v.SubmitBefore = "submit-before",
  v.SubmitScuess = "submit-scuess",
  v.SubmitAfter = "submit-after",
  v.SubmitError = "submit-error",
  v.SubmitVerify = "submit-verify",
  v.Stay = "stay",
  v.ResetStay = "reset-stay",
  v.StayReady = "stay-ready",
  v.SetStay = "set-stay",
  v.RouteChange = "route-change",
  v.RouteReady = "route-ready",
  v.Ab = "ab",
  v.AbVar = "ab-var",
  v.AbAllVars = "ab-all-vars",
  v.AbConfig = "ab-config",
  v.AbExternalVersion = "ab-external-version",
  v.AbVersionChangeOn = "ab-version-change-on",
  v.AbVersionChangeOff = "ab-version-change-off",
  v.AbOpenLayer = "ab-open-layer",
  v.AbCloseLayer = "ab-close-layer",
  v.AbReady = "ab-ready",
  v.AbComplete = "ab-complete",
  v.AbTimeout = "ab-timeout",
  v.Profile = "profile",
  v.ProfileSet = "profile-set",
  v.ProfileSetOnce = "profile-set-once",
  v.ProfileUnset = "profile-unset",
  v.ProfileIncrement = "profile-increment",
  v.ProfileAppend = "profile-append",
  v.ProfileClear = "profile-clear",
  v.Autotrack = "autotrack",
  v.AutotrackReady = "autotrack-ready",
  v.CepReady = "cep-ready",
  v.TracerReady = "tracer-ready",
  v.sessionRecord = "session-record",
  v.SessionRecordStart = "session-record-start",
  v.SessionRecordPause = "session-record-pause",
  v.SessionRecordEnd = "session-record-end",
  v.SessionRecordReport = "session-record-report",
  v.DestoryInstance = "destory-instance",
  v.VisualCollectReady = "visual-collect-ready",
  v.VisualApiReady = "visual-api-ready",
  v.VisualApiUpdate = "visual-api-update",
  (b = S = S || {}).DEBUGGER_MESSAGE = "debugger-message",
  b.DEBUGGER_MESSAGE_SDK = "debugger-message-sdk",
  b.DEBUGGER_MESSAGE_FETCH = "debugger-message-fetch",
  b.DEBUGGER_MESSAGE_FETCH_RESULT = "debugger-message-fetch-result",
  b.DEBUGGER_MESSAGE_EVENT = "debugger-message-event",
  b.DEVTOOL_WEB_READY = "devtool-web-ready",
  J), R = void 0, t = (new Date).getTimezoneOffset(), z = parseInt("" + -t / 60, 10), B = 60 * t, U = function() {
      function e(e, t) {
          this.is_first_time = !0,
          this.configPersist = !1,
          this.initConfig = t,
          this.collect = e;
          var r = new C(t.app_id,t.cookie_domain || "",t.cookie_expire || 7776e6).init()
            , e = (this.eventCheck = new P(e,t),
          "__tea_cache_first_" + t.app_id)
            , t = (this.configKey = "__tea_cache_config_" + t.app_id,
          this.sessionStorage = new T(!1,"session"),
          this.localStorage = new T(!1,"local"),
          t.configPersist && (this.configPersist = !0,
          this.storage = 1 === t.configPersist ? this.sessionStorage : this.localStorage),
          this.localStorage.getItem(e));
          t && 1 == t ? this.is_first_time = !1 : (this.is_first_time = !0,
          this.localStorage.setItem(e, "1")),
          this.envInfo = {
              user: {
                  user_unique_id: R,
                  user_type: R,
                  user_id: R,
                  user_is_auth: R,
                  user_is_login: R,
                  device_id: R,
                  web_id: R,
                  ip_addr_id: R,
                  user_unique_id_type: R
              },
              header: {
                  app_id: R,
                  app_name: R,
                  app_install_id: R,
                  install_id: R,
                  app_package: R,
                  app_channel: R,
                  app_version: R,
                  ab_version: R,
                  os_name: r.os_name,
                  os_version: r.os_version,
                  device_model: r.device_model,
                  ab_client: R,
                  traffic_type: R,
                  client_ip: R,
                  device_brand: R,
                  os_api: R,
                  access: R,
                  language: r.language,
                  region: R,
                  app_language: R,
                  app_region: R,
                  creative_id: r.utm.creative_id,
                  ad_id: r.utm.ad_id,
                  campaign_id: r.utm.campaign_id,
                  log_type: R,
                  rnd: R,
                  platform: r.platform,
                  sdk_version: I,
                  sdk_lib: "js",
                  province: R,
                  city: R,
                  timezone: z,
                  tz_offset: B,
                  tz_name: R,
                  sim_region: R,
                  carrier: R,
                  resolution: r.screen_width + "x" + r.screen_height,
                  browser: r.browser,
                  browser_version: r.browser_version,
                  referrer: r.referrer,
                  referrer_host: r.referrer_host,
                  width: r.screen_width,
                  height: r.screen_height,
                  screen_width: r.screen_width,
                  screen_height: r.screen_height,
                  utm_term: r.utm.utm_term,
                  utm_content: r.utm.utm_content,
                  utm_source: r.utm.utm_source,
                  utm_medium: r.utm.utm_medium,
                  utm_campaign: r.utm.utm_campaign,
                  tracer_data: JSON.stringify(r.utm.tracer_data),
                  custom: {},
                  wechat_unionid: R,
                  wechat_openid: R
              }
          },
          this.ab_version = "",
          this.evtParams = {},
          this.reportErrorCallback = function() {}
          ,
          this.isLast = !1,
          this.setCustom(r),
          this.initDomain(),
          this.initABData()
      }
      return e.prototype.initDomain = function() {
          var e = this.initConfig.channel_domain;
          e ? this.domain = e : (e = this.initConfig.channel,
          this.domain = l(j[e]))
      }
      ,
      e.prototype.setDomain = function(e) {
          this.domain = e
      }
      ,
      e.prototype.getDomain = function() {
          return this.domain
      }
      ,
      e.prototype.initABData = function() {
          var e, t = "__tea_sdk_ab_version_" + this.initConfig.app_id, r = null;
          r = this.initConfig.ab_cross ? (e = this.localStorage.getCookie(t, this.initConfig.ab_cookie_domain)) ? JSON.parse(e) : null : this.localStorage.getItem(t),
          this.setAbCache(r)
      }
      ,
      e.prototype.setAbCache = function(e) {
          this.ab_cache = e
      }
      ,
      e.prototype.getAbCache = function() {
          return this.ab_cache
      }
      ,
      e.prototype.setAbVersion = function(e) {
          this.ab_version = e
      }
      ,
      e.prototype.getAbVersion = function() {
          return this.ab_version
      }
      ,
      e.prototype.clearAbCache = function() {
          this.ab_version = "",
          this.ab_cache = {}
      }
      ,
      e.prototype.getUrl = function(e) {
          var t = "";
          switch (e) {
          case "event":
              t = "/list";
              break;
          case "webid":
              t = "/webid";
              break;
          case "tobid":
              t = "/tobid"
          }
          return e = "",
          this.initConfig.caller && (e = "?sdk_version=5.1.11&sdk_name=web&app_id=" + this.initConfig.app_id + "&caller=" + this.initConfig.caller),
          "" + this.getDomain() + t + e
      }
      ,
      e.prototype.setCustom = function(e) {
          if (e && e.latest_data && e.latest_data.isLast)
              for (var t in delete e.latest_data.isLast,
              this.isLast = !0,
              e.latest_data)
                  this.envInfo.header.custom[t] = e.latest_data[t]
      }
      ,
      e.prototype.set = function(e) {
          var t = this;
          Object.keys(e).forEach(function(r) {
              var n, i, o;
              void 0 !== e[r] && null !== e[r] || t.delete(r);
              try {
                  t.eventCheck.calculate(r, "config")
              } catch (e) {}
              "traffic_type" === r && t.isLast && (t.envInfo.header.custom.$latest_traffic_source_type = e[r]),
              "evtParams" === r ? t.evtParams = a({}, t.evtParams || {}, e.evtParams || {}) : "_staging_flag" === r ? t.evtParams = a({}, t.evtParams || {}, {
                  _staging_flag: e._staging_flag
              }) : "reportErrorCallback" === r && "function" == typeof e[r] ? t.reportErrorCallback = e[r] : (o = i = "",
              -1 < r.indexOf(".") && (i = (n = r.split("."))[0],
              o = n[1]),
              i ? "user" === i || "header" === i ? t.envInfo[i][o] = e[r] : t.envInfo.header.custom[o] = e[r] : Object.hasOwnProperty.call(t.envInfo.user, r) ? -1 < ["user_type", "ip_addr_id"].indexOf(r) ? t.envInfo.user[r] = e[r] && Number(e[r]) : -1 < ["user_id", "web_id", "user_unique_id", "user_unique_id_type"].indexOf(r) ? t.envInfo.user[r] = e[r] && String(e[r]) : -1 < ["user_is_auth", "user_is_login"].indexOf(r) ? t.envInfo.user[r] = !!e[r] : "device_id" === r && (t.envInfo.user[r] = e[r]) : Object.hasOwnProperty.call(t.envInfo.header, r) ? t.envInfo.header[r] = e[r] : t.envInfo.header.custom[r] = e[r])
          })
      }
      ,
      e.prototype.get = function(e) {
          try {
              return e ? "evtParams" === e ? this.evtParams : "reportErrorCallback" === e ? this[e] : Object.hasOwnProperty.call(this.envInfo.user, e) ? this.envInfo.user[e] : Object.hasOwnProperty.call(this.envInfo.header, e) ? this.envInfo.header[e] : JSON.parse(JSON.stringify(this.envInfo[e])) : JSON.parse(JSON.stringify(this.envInfo))
          } catch (e) {
              console.log("get config stringify error "),
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e.prototype.setStore = function(e) {
          try {
              var t, r;
              this.configPersist && (t = this.storage.getItem(this.configKey) || {}) && Object.keys(e).length && (r = Object.assign(e, t),
              this.storage.setItem(this.configKey, r))
          } catch (e) {
              console.log("setStore error"),
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e.prototype.getStore = function() {
          try {
              var e;
              return this.configPersist && (e = this.storage.getItem(this.configKey) || {},
              Object.keys(e).length) ? e : null
          } catch (e) {
              return this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              }),
              null
          }
      }
      ,
      e.prototype.delete = function(e) {
          try {
              var t;
              this.configPersist && (t = this.storage.getItem(this.configKey) || {}) && Object.hasOwnProperty.call(t, e) && (delete t[e],
              this.storage.setItem(this.configKey, t))
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              }),
              console.log("delete error")
          }
      }
      ,
      e
  }(), M = function() {
      function e(e, t) {
          this.isLog = t || !1,
          this.name = e || ""
      }
      return e.prototype.info = function(e) {
          this.isLog && console.log("%c %s", "color: yellow; background-color: black;", "[AppLog WEB SDK] [instance: " + this.name + "] " + e)
      }
      ,
      e.prototype.warn = function(e) {
          this.isLog && console.warn("[AppLog WEB SDK] [instance: " + this.name + "] " + e)
      }
      ,
      e.prototype.error = function(e) {
          this.isLog && console.error("[AppLog WEB SDK] [instance: " + this.name + "] " + e)
      }
      ,
      e.prototype.throw = function(e) {
          throw this.error(this.name),
          Error(e)
      }
      ,
      e
  }(), G = function() {
      function e() {
          this.spiderBot = ["Baiduspider", "googlebot", "360Spider", "haosouspider", "YoudaoBot", "Sogou News Spider", "Yisouspider", "Googlebot", "Headless", "Applebot", "Bingbot", "PetalBot"]
      }
      return e.prototype.checkSpider = function(e) {
          var t, r;
          return !!e.enable_spider && (!(t = window.navigator.userAgent) || (r = !1,
          this.spiderBot.forEach(function(e) {
              -1 !== t.indexOf(e) && (r = !0)
          }),
          r))
      }
      ,
      e
  }(), F = function() {
      function e(e, t) {
          this.collect = e,
          this.native = t
      }
      var t = e.prototype;
      return t.bridgeInject = function() {
          try {
              return !!this.native && (AppLogBridge ? (console.log("AppLogBridge is injected"),
              !0) : (console.log("AppLogBridge is not inject"),
              !1))
          } catch (e) {
              return console.log("AppLogBridge is not inject"),
              !1
          }
      }
      ,
      t.bridgeReady = function() {
          var e = this;
          return new Promise(function(t, r) {
              try {
                  e.bridgeInject() ? AppLogBridge.hasStarted(function(e) {
                      console.log("AppLogBridge is started? : " + e),
                      e ? t(!0) : r(!1)
                  }) : r(!1)
              } catch (e) {
                  console.log("AppLogBridge, error:" + JSON.stringify(e.stack)),
                  r(!1)
              }
          }
          )
      }
      ,
      t.setNativeAppId = function(e) {
          try {
              AppLogBridge.setNativeAppId(JSON.stringify(e)),
              console.log("change bridge appid, event report with appid: " + e)
          } catch (e) {
              console.error("setNativeAppId error")
          }
      }
      ,
      t.setConfig = function(e) {
          var t = this;
          try {
              Object.keys(e).forEach(function(r) {
                  "user_unique_id" === r ? t.setUserUniqueId(e[r]) : e[r] ? t.addHeaderInfo(r, e[r]) : t.removeHeaderInfo(r)
              })
          } catch (e) {
              console.error("setConfig error")
          }
      }
      ,
      t.setUserUniqueId = function(e) {
          try {
              AppLogBridge.setUserUniqueId(e)
          } catch (e) {
              console.error("setUserUniqueId error")
          }
      }
      ,
      t.addHeaderInfo = function(e, t) {
          try {
              AppLogBridge.addHeaderInfo(e, t)
          } catch (e) {
              console.error("addHeaderInfo error")
          }
      }
      ,
      t.setHeaderInfo = function(e) {
          try {
              AppLogBridge.setHeaderInfo(JSON.stringify(e))
          } catch (e) {
              console.error("setHeaderInfo error")
          }
      }
      ,
      t.removeHeaderInfo = function(e) {
          try {
              AppLogBridge.removeHeaderInfo(e)
          } catch (e) {
              console.error("removeHeaderInfo error")
          }
      }
      ,
      t.reportPv = function(e) {
          this.onEventV3("predefine_pageview", e)
      }
      ,
      t.onEventV3 = function(e, t) {
          try {
              AppLogBridge.onEventV3(e, t),
              this.collect.emit(DebuggerMesssge.DEBUGGER_MESSAGE, {
                  type: DebuggerMesssge.DEBUGGER_MESSAGE_EVENT,
                  info: "bridge\u57CB\u70B9\u4E0A\u62A5",
                  time: Date.now(),
                  data: [{
                      events: [{
                          event: e,
                          params: t
                      }]
                  }],
                  code: 200,
                  status: "success"
              })
          } catch (e) {
              console.error("onEventV3 error")
          }
      }
      ,
      t.profileSet = function(e) {
          try {
              AppLogBridge.profileSet(e)
          } catch (e) {
              console.error("profileSet error")
          }
      }
      ,
      t.profileSetOnce = function(e) {
          try {
              AppLogBridge.profileSetOnce(e)
          } catch (e) {
              console.error("profileSetOnce error")
          }
      }
      ,
      t.profileIncrement = function(e) {
          try {
              AppLogBridge.profileIncrement(e)
          } catch (e) {
              console.error("profileIncrement error")
          }
      }
      ,
      t.profileUnset = function(e) {
          try {
              AppLogBridge.profileUnset(e)
          } catch (e) {
              console.error("profileUnset error")
          }
      }
      ,
      t.profileAppend = function(e) {
          try {
              AppLogBridge.profileAppend(e)
          } catch (e) {
              console.error("profileAppend error")
          }
      }
      ,
      e
  }(), N = function() {
      function e() {}
      return e.prototype.apply = function(e, t) {
          var r = this;
          this.collect = e,
          this.storage = new T(!1,"session"),
          this.sessionKey = "__tea_session_id_" + t.app_id,
          this.expireTime = t.expireTime || 18e5,
          this.disableSession = t.disable_session,
          this.disableSessionTimeCheck = t.disable_session_check,
          this.disableSession || (this.setSessionId(),
          this.collect.on(A.SessionReset, function(e) {
              r.resetSessionId(e)
          }),
          this.collect.on(A.SessionResetTime, function() {
              r.updateSessionIdTime()
          }))
      }
      ,
      e.prototype.updateSessionIdTime = function() {
          var e, t = this.storage.getItem(this.sessionKey);
          t && t.sessionId && (e = t.timestamp,
          Date.now() - e > this.expireTime ? t = {
              sessionId: y(),
              timestamp: Date.now()
          } : t.timestamp = Date.now(),
          this.storage.setItem(this.sessionKey, t),
          this.resetExpTime())
      }
      ,
      e.prototype.setSessionId = function() {
          var e = this
            , t = this.storage.getItem(this.sessionKey);
          t && t.sessionId ? t.timestamp = Date.now() : t = {
              sessionId: y(),
              timestamp: Date.now()
          },
          this.storage.setItem(this.sessionKey, t),
          this.disableSessionTimeCheck || (this.sessionExp = setInterval(function() {
              e.checkEXp()
          }, this.expireTime))
      }
      ,
      e.prototype.getSessionId = function() {
          var e = this.storage.getItem(this.sessionKey);
          return !this.disableSession && e && e.sessionId ? e.sessionId : ""
      }
      ,
      e.prototype.resetExpTime = function() {
          var e = this;
          this.sessionExp && (clearInterval(this.sessionExp),
          this.sessionExp = setInterval(function() {
              e.checkEXp()
          }, this.expireTime))
      }
      ,
      e.prototype.resetSessionId = function(e) {
          e = {
              sessionId: e || y(),
              timestamp: Date.now()
          },
          this.storage.setItem(this.sessionKey, e)
      }
      ,
      e.prototype.checkEXp = function() {
          var e = this.storage.getItem(this.sessionKey);
          e && e.sessionId && Date.now() - e.timestamp + 30 >= this.expireTime && (e = {
              sessionId: y(),
              timestamp: Date.now()
          },
          this.storage.setItem(this.sessionKey, e))
      }
      ,
      e
  }(), H = function() {
      function e() {
          this.eventLimit = 50,
          this.enable_ttwebid = !1,
          this.eventCache = [],
          this.beconEventCache = []
      }
      return e.prototype.apply = function(e, t) {
          var r = this
            , n = (this.collect = e,
          this.config = t,
          this.configManager = e.configManager,
          this.eventCheck = new P(e,t),
          this.cacheStorgae = new T(!0),
          this.localStorage = new T(!1),
          this.maxReport = t.max_report || 10,
          this.reportTime = t.reportTime || t.report_time || 30,
          this.timeout = t.timeout || 1e5,
          this.enable_ttwebid = t.enable_ttwebid,
          this.reportUrl = t.report_url || this.configManager.getUrl("event"),
          this.eventKey = "__tea_cache_events_" + this.configManager.get("app_id"),
          this.beconKey = "__tea_cache_events_becon_" + this.configManager.get("app_id"),
          this.abKey = "__tea_sdk_ab_version_" + this.configManager.get("app_id"),
          this.refer_key = "__tea_cache_refer_" + this.configManager.get("app_id"),
          this.pageId = y(),
          this.collect.on(A.Ready, function() {
              r.reportAll(!1)
          }),
          this.collect.on(A.ConfigDomain, function() {
              r.reportUrl = r.configManager.getUrl("event")
          }),
          this.collect.on(A.Event, function(e) {
              r.event(e)
          }),
          this.collect.on(A.BeconEvent, function(e) {
              r.beconEvent(e)
          }),
          this.collect.on(A.CleanEvents, function() {
              r.reportAll(!1)
          }),
          this.linster());
          this.collect.on(A.DestoryInstance, function() {
              n && n()
          })
      }
      ,
      e.prototype.linster = function() {
          function e() {
              n.reportAll(!0)
          }
          function t() {
              "hidden" === document.visibilityState && n.reportAll(!0)
          }
          var r, n = this;
          return window.addEventListener("unload", e, !1),
          r = e,
          navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) ? window.addEventListener("pagehide", r, !1) : window.addEventListener("beforeunload", r, !1),
          document.addEventListener("visibilitychange", t, !1),
          function() {
              window.removeEventListener("unload", e),
              window.removeEventListener("pagehide", e, !1),
              window.removeEventListener("beforeunload", e, !1),
              document.removeEventListener("visibilitychange", t, !1)
          }
      }
      ,
      e.prototype.reportAll = function(e) {
          this.report(e),
          this.reportBecon()
      }
      ,
      e.prototype.event = function(e) {
          var t = this;
          try {
              var r, n = c(e, this.cacheStorgae.getItem(this.eventKey) || []);
              this.cacheStorgae.setItem(this.eventKey, n),
              this.reportTimeout && clearTimeout(this.reportTimeout),
              n.length >= this.maxReport ? this.report(!1) : (r = this.reportTime,
              this.reportTimeout = setTimeout(function() {
                  t.report(!1),
                  t.reportTimeout = null
              }, r))
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e.prototype.beconEvent = function(e) {
          e = c(e, this.cacheStorgae.getItem(this.beconKey) || []),
          this.cacheStorgae.setItem(this.beconKey, e),
          this.collect.destroy || this.collect.sdkStop || this.collect.tokenManager.getReady() && this.collect.sdkReady && (this.cacheStorgae.removeItem(this.beconKey),
          this.send(this.split(this.merge(e)), !0))
      }
      ,
      e.prototype.reportBecon = function() {
          var e;
          !this.collect.destroy && !this.collect.sdkStop && this.collect.tokenManager.getReady() && this.collect.sdkReady && (e = this.cacheStorgae.getItem(this.beconKey) || []) && e.length && (this.cacheStorgae.removeItem(this.beconKey),
          this.send(this.split(this.merge(e)), !0))
      }
      ,
      e.prototype.report = function(e) {
          var t;
          !this.collect.destroy && !this.collect.sdkStop && this.collect.tokenManager.getReady() && this.collect.sdkReady && (t = this.cacheStorgae.getItem(this.eventKey) || []).length && (this.cacheStorgae.removeItem(this.eventKey),
          this.sliceEvent(t, e))
      }
      ,
      e.prototype.sliceEvent = function(e, t) {
          if (e.length > this.eventLimit)
              for (var r = 0; r < e.length; r += this.eventLimit) {
                  var n = e.slice(r, r + this.eventLimit)
                    , i = this.split(this.merge(n));
                  this.send(i, t)
              }
          else
              i = this.split(this.merge(e)),
              this.send(i, t)
      }
      ,
      e.prototype.handleRefer = function() {
          var e, t = "";
          try {
              t = (this.config.spa || this.config.autotrack) && (e = this.localStorage.getItem(this.refer_key) || {}).routeChange ? e.refer_key : this.configManager.get("referrer")
          } catch (e) {
              t = document.referrer
          }
          return t
      }
      ,
      e.prototype.merge = function(e, t) {
          var r = this
            , n = this.configManager.get()
            , i = n.header
            , o = n.user
            , s = (this.config.enable_pageid && (i.custom.page_id = this.pageId),
          i.referrer = this.handleRefer(),
          i.custom = JSON.stringify(i.custom),
          this.configManager.get("evtParams"))
            , c = this.configManager.get("user_unique_id_type")
            , n = e.map(function(e) {
              try {
                  Object.keys(s).length && !t && (e.params = a({}, s, e.params)),
                  c && (e.params.$user_unique_id_type = c);
                  var n = r.configManager.getAbCache()
                    , i = o[r.config.ab_user_mode] || o.user_unique_id;
                  return n && n.uuid && n.uuid === i && r.configManager.getAbVersion() && (e.ab_sdk_version = r.configManager.getAbVersion()),
                  e.session_id = r.collect.sessionManager.getSessionId(),
                  e.params = JSON.stringify(e.params),
                  e
              } catch (t) {
                  return r.collect.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                      level: "error",
                      time: Date.now(),
                      data: t.message
                  }),
                  e
              }
          })
            , e = JSON.parse(JSON.stringify({
              events: n,
              user: o,
              header: i
          }))
            , n = (e.local_time = Math.floor(Date.now() / 1e3),
          e.user_unique_type = this.config.enable_ttwebid ? this.config.user_unique_type : void 0,
          e.verbose = 1,
          []);
          return n.push(e),
          n
      }
      ,
      e.prototype.split = function(e) {
          return e.map(function(e) {
              var t = [];
              return t.push(e),
              t
          })
      }
      ,
      e.prototype.send = function(e, t) {
          var r = this;
          e.length && !this.config.disable_track_event && e.forEach(function(e) {
              try {
                  var n, i = JSON.parse(JSON.stringify(e)), o = (!r.config.filter || (i = r.config.filter(i)) || console.warn("filter must return data !!"),
                  r.collect.eventFilter && i && ((i = r.collect.eventFilter(i)) || console.warn("filterEvent api must return data !!")),
                  i || e), s = JSON.parse(JSON.stringify(o));
                  r.eventCheck.checkVerify(s),
                  o.length && (n = !0,
                  o.forEach(function(e) {
                      e.events.length || (n = !1)
                  }),
                  n && (r.collect.emit(A.SubmitBefore, o),
                  r.collect.requestManager.useRequest({
                      url: r.reportUrl,
                      data: o,
                      success: function(e, t) {
                          e && 0 !== e.e ? (r.collect.emit(A.SubmitError, {
                              type: "f_data",
                              eventData: t,
                              errorCode: e.e,
                              response: e
                          }),
                          r.collect.emit(S.DEBUGGER_MESSAGE, {
                              type: S.DEBUGGER_MESSAGE_EVENT,
                              info: "\u57CB\u70B9\u4E0A\u62A5\u5931\u8D25",
                              time: Date.now(),
                              data: s,
                              code: e.e,
                              failType: "\u6570\u636E\u5F02\u5E38\u5931\u8D25",
                              status: "fail"
                          })) : (r.collect.emit(A.SubmitScuess, {
                              eventData: t,
                              res: e
                          }),
                          r.collect.emit(S.DEBUGGER_MESSAGE, {
                              type: S.DEBUGGER_MESSAGE_EVENT,
                              info: "\u57CB\u70B9\u4E0A\u62A5\u6210\u529F",
                              time: Date.now(),
                              data: s,
                              code: 200,
                              status: "success"
                          }))
                      },
                      fail: function(e, t) {
                          r.configManager.get("reportErrorCallback")(e, t),
                          r.collect.emit(A.SubmitError, {
                              type: "f_net",
                              eventData: e,
                              errorCode: t
                          }),
                          r.collect.emit(S.DEBUGGER_MESSAGE, {
                              type: S.DEBUGGER_MESSAGE_EVENT,
                              info: "\u57CB\u70B9\u4E0A\u62A5\u7F51\u7EDC\u5F02\u5E38",
                              time: Date.now(),
                              data: s,
                              code: t,
                              failType: "\u7F51\u7EDC\u5F02\u5E38\u5931\u8D25",
                              status: "fail"
                          })
                      },
                      timeout: r.timeout,
                      useBeacon: t,
                      withCredentials: r.enable_ttwebid
                  }),
                  r.collect.emit(A.SubmitAfter, o)))
              } catch (e) {
                  console.warn("something error, " + JSON.stringify(e.stack)),
                  r.collect.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                      level: "error",
                      time: Date.now(),
                      data: e.message
                  })
              }
          })
      }
      ,
      e
  }(), L = function() {
      function e() {
          this.cacheToken = {},
          this.enableCookie = !1,
          this.enable_ttwebid = !1,
          this.enableCustomWebid = !1
      }
      return e.prototype.apply = function(e, t) {
          var r = this;
          this.collect = e,
          this.config = t,
          this.configManager = this.collect.configManager,
          this.storage = new T(!1),
          this.tokenKey = "__tea_cache_tokens_" + t.app_id,
          this.enable_ttwebid = t.enable_ttwebid,
          this.enableCustomWebid = t.enable_custom_webid,
          this.collect.on(A.ConfigUuid, function(e) {
              r.setUuid(e)
          }),
          this.collect.on(A.ConfigWebId, function(e) {
              r.setWebId(e)
          }),
          this.enableCookie = t.cross_subdomain,
          this.expiresTime = t.cookie_expire || 6048e5,
          this.cookieDomain = t.cookie_domain || "",
          this.checkStorage()
      }
      ,
      e.prototype.checkStorage = function() {
          var e, t = this;
          this.enableCookie ? (e = this.storage.getCookie(this.tokenKey, this.cookieDomain),
          this.cacheToken = e && "string" == typeof e ? JSON.parse(e) : {}) : this.cacheToken = this.storage.getItem(this.tokenKey) || {},
          this.tokenType = this.cacheToken && this.cacheToken._type_ ? this.cacheToken._type_ : "default",
          "custom" !== this.tokenType || this.enableCustomWebid ? this.enableCustomWebid ? this.collect.on(A.CustomWebId, function() {
              t.tokenReady = !0,
              t.collect.emit(A.TokenComplete)
          }) : this.checkEnv() || (this.enable_ttwebid ? this.completeTtWid(this.cacheToken) : this.check()) : this.remoteWebid()
      }
      ,
      e.prototype.check = function() {
          this.cacheToken && this.cacheToken.web_id ? this.complete(this.cacheToken) : this.config.disable_webid ? this.complete({
              web_id: m(),
              user_unique_id: this.configManager.get("user_unique_id") || m()
          }) : this.remoteWebid()
      }
      ,
      e.prototype.checkEnv = function() {
          var e = window.navigator.userAgent;
          return (-1 !== e.indexOf("miniProgram") || -1 !== e.indexOf("MiniProgram")) && !(!(e = p(window.location.href)) || !e.Web_ID || (this.complete({
              web_id: "" + e.Web_ID,
              user_unique_id: this.configManager.get("user_unique_id") || "" + e.Web_ID
          }),
          0))
      }
      ,
      e.prototype.remoteWebid = function() {
          var e = this
            , t = this.configManager.getUrl("webid")
            , r = {
              app_key: this.config.app_key,
              app_id: this.config.app_id,
              url: location.href,
              user_agent: window.navigator.userAgent,
              referer: document.referrer,
              user_unique_id: ""
          };
          this.collect.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u53D1\u8D77WEBID\u8BF7\u6C42",
              logType: "fetch",
              level: "info",
              time: Date.now(),
              data: r
          }),
          this.collect.requestManager.useRequest({
              url: t,
              data: r,
              success: function(t) {
                  var r, n;
                  t && 0 === t.e ? (n = t.web_id,
                  e.collect.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "WEBID\u8BF7\u6C42\u6210\u529F",
                      logType: "fetch",
                      level: "info",
                      time: Date.now(),
                      data: t
                  })) : (r = m(),
                  e.collect.configManager.set({
                      localWebId: n = r
                  }),
                  e.collect.emit(A.TokenError),
                  e.collect.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "WEBID\u8BF7\u6C42\u8FD4\u56DE\u503C\u5F02\u5E38",
                      logType: "fetch",
                      level: "warn",
                      time: Date.now(),
                      data: t
                  }),
                  e.collect.logger.warn("appid: " + e.config.app_id + " get webid error, use local webid~")),
                  e.complete({
                      web_id: e.configManager.get("web_id") || n,
                      user_unique_id: e.configManager.get("user_unique_id") || n
                  })
              },
              fail: function() {
                  var t = m();
                  e.complete({
                      web_id: e.configManager.get("web_id") || t,
                      user_unique_id: e.configManager.get("user_unique_id") || t
                  }),
                  e.collect.configManager.set({
                      localWebId: t
                  }),
                  e.collect.emit(A.TokenError),
                  e.collect.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "WEBID\u8BF7\u6C42\u7F51\u7EDC\u5F02\u5E38",
                      logType: "fetch",
                      level: "error",
                      time: Date.now(),
                      data: null
                  }),
                  e.collect.logger.warn("appid: " + e.config.app_id + ", get webid error, use local webid~")
              },
              timeout: 3e5
          })
      }
      ,
      e.prototype.complete = function(e) {
          var t = e.web_id
            , r = e.user_unique_id;
          e.timestamp = Date.now(),
          this.collect.configManager.set({
              web_id: t,
              user_unique_id: r
          }),
          this.setStorage(e),
          this.tokenReady = !0,
          this.collect.emit(A.TokenComplete)
      }
      ,
      e.prototype.completeTtWid = function(e) {
          var t = e.user_unique_id || ""
            , r = this.configManager.get("user_unique_id");
          (r || t) && this.configManager.set({
              user_unique_id: r || t
          }),
          this.setStorage(e),
          this.tokenReady = !0,
          this.collect.emit(A.TokenComplete)
      }
      ,
      e.prototype.setUuid = function(e) {
          var t, r;
          e && -1 === ["null", "undefined", "Null", "None"].indexOf(e) ? (e = String(e),
          t = this.configManager.get("user_unique_id"),
          r = this.cacheToken && this.cacheToken.user_unique_id,
          e === t && e === r || (this.configManager.set({
              user_unique_id: e
          }),
          this.cacheToken || (this.cacheToken = {}),
          this.cacheToken.user_unique_id = e,
          this.cacheToken.timestamp = Date.now(),
          this.setStorage(this.cacheToken),
          this.collect.emit(A.TokenChange, "uuid"),
          this.collect.emit(A.SessionReset))) : this.clearUuid()
      }
      ,
      e.prototype.clearUuid = function() {
          this.config.enable_ttwebid || this.configManager.get("web_id") && this.configManager.get("user_unique_id") !== this.configManager.get("web_id") && (this.configManager.set({
              user_unique_id: this.configManager.get("web_id")
          }),
          this.cacheToken && this.cacheToken.web_id && (this.cacheToken.user_unique_id = this.cacheToken.web_id,
          this.cacheToken.timestamp = Date.now(),
          this.setStorage(this.cacheToken)),
          this.collect.emit(A.TokenReset, "uuid"))
      }
      ,
      e.prototype.setWebId = function(e) {
          var t, r;
          e && !this.config.enable_ttwebid && (this.cacheToken && this.cacheToken.web_id ? this.cacheToken.web_id !== e && (this.cacheToken.user_unique_id = this.cacheToken.web_id === this.cacheToken.user_unique_id ? e : this.cacheToken.user_unique_id,
          this.cacheToken.web_id = e) : (this.cacheToken = {},
          this.cacheToken.web_id = e,
          this.cacheToken.user_unique_id = e),
          this.cacheToken.timestamp = Date.now(),
          t = this.configManager.get("web_id"),
          (r = this.configManager.get("user_unique_id")) && r !== t || (this.configManager.set({
              user_unique_id: e
          }),
          this.collect.emit(A.TokenChange, "uuid")),
          t !== e && (this.configManager.set({
              web_id: e
          }),
          this.collect.emit(A.TokenChange, "webid")),
          this.setStorage(this.cacheToken))
      }
      ,
      e.prototype.setStorage = function(e) {
          e._type_ = this.enableCustomWebid ? "custom" : "default",
          delete e["diss".split("").reverse().join("")],
          this.enableCookie || this.enable_ttwebid ? (this.storage.setCookie(this.tokenKey, e, this.expiresTime, this.cookieDomain),
          this.enable_ttwebid && (delete e.web_id,
          this.storage.setItem(this.tokenKey, e))) : this.storage.setItem(this.tokenKey, e),
          this.cacheToken = e
      }
      ,
      e.prototype.getReady = function() {
          return this.tokenReady
      }
      ,
      e.prototype.getTobId = function() {
          var e = this;
          return new Promise(function(t) {
              e.collect.requestManager.useRequest({
                  url: e.configManager.getUrl("tobid"),
                  data: {
                      app_id: e.config.app_id,
                      user_unique_id: e.configManager.get("user_unique_id"),
                      web_id: e.configManager.get("web_id"),
                      user_unique_id_type: e.configManager.get("user_unique_id_type")
                  },
                  success: function(e) {
                      e && 0 === e.e ? t(e.tobid) : t("")
                  },
                  fail: function() {
                      t("")
                  },
                  time: 3e4,
                  withCredentials: e.enable_ttwebid
              })
          }
          )
      }
      ,
      e
  }(), K = function() {
      function e(e, t) {
          this.collector = e,
          this.config = t,
          this.requestType = t.request_type || "xhr",
          this.supportBeacon = !(!window.navigator || !window.navigator.sendBeacon),
          this.errorCode = {
              NO_URL: 4001,
              IMG_ON: 4e3,
              IMG_CATCH: 4002,
              BEACON_FALSE: 4003,
              XHR_ON: 500,
              RESPONSE: 5001,
              TIMEOUT: 5005
          },
          this.customHeader = t.custom_request_header || {}
      }
      return e.prototype.useFetch = function(e) {
          var t = e.url
            , r = e.data
            , n = e.method
            , i = e.success
            , o = e.fail
            , s = {
              "Content-Type": "application/json; charset=utf-8"
          };
          if (Object.keys(this.customHeader).length)
              for (var a in this.customHeader)
                  s[a] = this.customHeader[a];
          window.fetch ? fetch(t, {
              method: n || "POST",
              headers: s,
              body: JSON.stringify(r)
          }).then(function(e) {
              return e.json()
          }).then(function(e) {
              i && i(e)
          }).catch(function(e) {
              o && o(r, e)
          }) : (this.requestType = "xhr",
          console.log("your brwoser not support fetch, use xhr"),
          this.useRequest({
              url: t,
              data: r,
              method: n,
              success: i,
              fail: o
          }))
      }
      ,
      e.prototype.useBeacon = function(e) {
          var t = e.url
            , r = e.data
            , n = e.success
            , e = e.fail;
          window.navigator.sendBeacon(t, JSON.stringify(r)) ? n && n() : e && e(r, this.errorCode.BEACON_FALSE)
      }
      ,
      e.prototype.useRequest = function(e) {
          var t = this
            , r = e.url
            , n = e.data
            , i = e.method
            , o = e.success
            , s = e.fail
            , a = e.timeout
            , c = e.useBeacon
            , u = e.withCredentials
            , l = e.app_key
            , f = e.forceXhr;
          if (c && this.supportBeacon)
              this.useBeacon({
                  url: r,
                  data: n,
                  method: i,
                  success: o,
                  fail: s
              });
          else if ("fetch" !== this.requestType || f)
              try {
                  var p = new XMLHttpRequest
                    , h = i || "POST";
                  if (p.open(h, "" + r, !0),
                  p.setRequestHeader("Content-Type", "application/json; charset=utf-8"),
                  l && p.setRequestHeader("X-MCS-AppKey", "" + l),
                  Object.keys(this.customHeader).length)
                      for (var d in this.customHeader)
                          p.setRequestHeader(d, this.customHeader[d]);
                  u && (p.withCredentials = !0),
                  a && (p.timeout = a,
                  p.ontimeout = function() {
                      s && s(n, t.errorCode.TIMEOUT)
                  }
                  ),
                  p.onload = function() {
                      if (o) {
                          var e = null;
                          if (p.responseText) {
                              try {
                                  e = JSON.parse(p.responseText)
                              } catch (t) {
                                  e = {}
                              }
                              o(e, n)
                          }
                      }
                  }
                  ,
                  p.onerror = function() {
                      p.abort(),
                      s && s(n, t.errorCode.XHR_ON)
                  }
                  ,
                  p.send(JSON.stringify(n))
              } catch (e) {}
          else
              this.useFetch({
                  url: r,
                  data: n,
                  method: i,
                  success: o,
                  fail: s
              })
      }
      ,
      e
  }(), q = function() {
      function e(e, t) {
          var r;
          this.devToolReady = !1,
          this.devToolOrigin = "*",
          this.sendAlready = !1,
          this.eventVerifyReady = !1,
          t.enable_debug && (r = e.adapters.storage,
          this.collect = e,
          this.config = t,
          this.app_id = t.app_id,
          this.cacheStorgae = new r(!1,"session"),
          this.eventVerifyInfo = [],
          this.sdk_type = I.includes("tob") ? "tob" : "inner",
          this.filterEvent = ["__bav_page", "__bav_beat", "__bav_page_statistics", "__bav_click", "__bav_page_exposure", "bav2b_page", "bav2b_beat", "bav2b_page_statistics", "bav2b_click", "bav2b_page_exposure", "_be_active", "predefine_pageview", "__profile_set", "__profile_set_once", "__profile_increment", "__profile_unset", "__profile_append", "predefine_page_alive", "predefine_page_close", "abtest_exposure"],
          this.load())
      }
      return e.prototype.loadScript = function(e) {
          try {
              var t = document.createElement("script");
              t.src = e,
              t.onerror = function() {
                  console.log("load DevTool render fail")
              }
              ,
              t.onload = function() {
                  console.log("load DevTool render success")
              }
              ,
              document.getElementsByTagName("body")[0].appendChild(t)
          } catch (e) {
              console.log("devTool load fail, " + e.message)
          }
      }
      ,
      e.prototype.parseUrl = function() {
          var e = {};
          try {
              var t = window.location.href.split("?")[1].split("&");
              t.length && t.forEach(function(t) {
                  t = t.split("="),
                  e[decodeURIComponent(t[0])] = decodeURIComponent(t[1])
              })
          } catch (e) {}
          return e
      }
      ,
      e.prototype.load = function() {
          var e, t, r;
          return e = this,
          r = function() {
              var e;
              return function(e, t) {
                  var r, n, i, o = {
                      label: 0,
                      sent: function() {
                          if (1 & i[0])
                              throw i[1];
                          return i[1]
                      },
                      trys: [],
                      ops: []
                  }, s = {
                      next: a(0),
                      throw: a(1),
                      return: a(2)
                  };
                  return "function" == typeof Symbol && (s[Symbol.iterator] = function() {
                      return this
                  }
                  ),
                  s;
                  function a(s) {
                      return function(a) {
                          return function(s) {
                              if (r)
                                  throw TypeError("Generator is already executing.");
                              for (; o; )
                                  try {
                                      if (r = 1,
                                      n && (i = 2 & s[0] ? n.return : s[0] ? n.throw || ((i = n.return) && i.call(n),
                                      0) : n.next) && !(i = i.call(n, s[1])).done)
                                          return i;
                                      switch (n = 0,
                                      (s = i ? [2 & s[0], i.value] : s)[0]) {
                                      case 0:
                                      case 1:
                                          i = s;
                                          break;
                                      case 4:
                                          return o.label++,
                                          {
                                              value: s[1],
                                              done: !1
                                          };
                                      case 5:
                                          o.label++,
                                          n = s[1],
                                          s = [0];
                                          continue;
                                      case 7:
                                          s = o.ops.pop(),
                                          o.trys.pop();
                                          continue;
                                      default:
                                          if (!(i = 0 < (i = o.trys).length && i[i.length - 1]) && (6 === s[0] || 2 === s[0])) {
                                              o = 0;
                                              continue
                                          }
                                          if (3 === s[0] && (!i || s[1] > i[0] && s[1] < i[3]))
                                              o.label = s[1];
                                          else if (6 === s[0] && o.label < i[1])
                                              o.label = i[1],
                                              i = s;
                                          else {
                                              if (!(i && o.label < i[2])) {
                                                  i[2] && o.ops.pop(),
                                                  o.trys.pop();
                                                  continue
                                              }
                                              o.label = i[2],
                                              o.ops.push(s)
                                          }
                                      }
                                      s = t.call(e, o)
                                  } catch (e) {
                                      s = [6, e],
                                      n = 0
                                  } finally {
                                      r = i = 0
                                  }
                              if (5 & s[0])
                                  throw s[1];
                              return {
                                  value: s[0] ? s[1] : void 0,
                                  done: !0
                              }
                          }([s, a])
                      }
                  }
              }(this, function(t) {
                  switch (t.label) {
                  case 0:
                      if (t.trys.push([0, 2, , 3]),
                      (e = this.parseUrl()).open_devtool_web && e.app_id) {
                          if (parseInt(e.app_id) !== this.app_id)
                              return [2]
                      } else if (!this.getStorage())
                          return [2];
                      return this.loadBaseInfo(),
                      this.loadHook(),
                      this.setStorage(),
                      this.addLintener(),
                      this.loadDebuggerModule(),
                      this.loadDevTool(),
                      [4, this.fetchEventInfo()];
                  case 1:
                      return e = t.sent(),
                      this.sendData("devtool:web:verify", e.verifyStatus),
                      this.eventVerifyInfo = e.data,
                      [3, 3];
                  case 2:
                      return console.log("debug fail, " + t.sent().message),
                      [3, 3];
                  case 3:
                      return [2]
                  }
              })
          }
          ,
          new (t = void 0,
          t = Promise)(function(n, i) {
              function o(e) {
                  try {
                      a(r.next(e))
                  } catch (e) {
                      i(e)
                  }
              }
              function s(e) {
                  try {
                      a(r.throw(e))
                  } catch (e) {
                      i(e)
                  }
              }
              function a(e) {
                  e.done ? n(e.value) : new t(function(t) {
                      t(e.value)
                  }
                  ).then(o, s)
              }
              a((r = r.apply(e, [])).next())
          }
          )
      }
      ,
      e.prototype.getStorage = function() {
          var e = this.cacheStorgae.getItem("__applog_devtool_web");
          return e && parseInt(e) === this.app_id
      }
      ,
      e.prototype.setStorage = function() {
          this.cacheStorgae.setItem("__applog_devtool_web", this.app_id)
      }
      ,
      e.prototype.loadDevTool = function() {
          this.loadScript("https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/devtool/debug-web.0.0.2.js")
      }
      ,
      e.prototype.loadBaseInfo = function() {
          var e = this;
          this.info = [{
              title: "\u57FA\u672C\u4FE1\u606F",
              type: 1,
              infoName: {
                  app_id: this.config.app_id,
                  channel: this.config.channel,
                  \u4E0A\u62A5\u57DF\u540D: this.collect.configManager.getDomain(),
                  SDK\u7248\u672C: I,
                  SDK\u5F15\u5165\u65B9\u5F0F: "npm"
              }
          }, {
              title: "\u7528\u6237\u4FE1\u606F",
              type: 2,
              infoName: {
                  uuid: this.collect.configManager.get("user").user_unique_id || "",
                  web_id: this.collect.configManager.get("user").web_id || "",
                  ssid: "\u70B9\u51FB\u83B7\u53D6SSID"
              }
          }, {
              title: "\u516C\u5171\u53C2\u6570\u4FE1\u606F",
              type: 2,
              infoName: {
                  \u6D4F\u89C8\u5668: this.collect.configManager.get("browser"),
                  \u6D4F\u89C8\u5668\u7248\u672C: this.collect.configManager.get("browser_version"),
                  \u5E73\u53F0: this.collect.configManager.get("platform"),
                  \u8BBE\u5907\u578B\u53F7: this.collect.configManager.get("device_model"),
                  \u64CD\u4F5C\u7CFB\u7EDF: this.collect.configManager.get("os_name"),
                  \u64CD\u4F5C\u7CFB\u7EDF\u7248\u672C: this.collect.configManager.get("os_version"),
                  \u5C4F\u5E55\u5206\u8FA8\u7387: this.collect.configManager.get("resolution"),
                  \u6765\u6E90: this.collect.configManager.get("referrer"),
                  \u81EA\u5B9A\u4E49\u4FE1\u606F: ""
              }
          }, {
              title: "\u914D\u7F6E\u4FE1\u606F",
              type: 3,
              infoName: {
                  \u5168\u57CB\u70B9: !!this.config.autotrack,
                  \u505C\u7559\u65F6\u957F: !!this.config.enable_stay_duration
              }
          }, {
              title: "A/B\u914D\u7F6E\u4FE1\u606F",
              type: 4,
              infoName: {
                  "A/B\u5B9E\u9A8C": !!this.config.enable_ab_test
              }
          }, {
              title: "\u5BA2\u6237\u7AEF\u4FE1\u606F",
              type: 3,
              infoName: {
                  \u6253\u901A\u5F00\u5173: !!this.config.Native
              }
          }],
          this.log = [],
          this.event = [],
          this.collect.on(A.Ready, function() {
              e.info[1].infoName.uuid = e.collect.configManager.get("user").user_unique_id,
              e.info[1].infoName.web_id = e.collect.configManager.get("user").web_id,
              e.info[2].infoName["\u81EA\u5B9A\u4E49\u4FE1\u606F"] = JSON.stringify(e.collect.configManager.get("custom")),
              e.config.enable_ab_test && (e.info[4].infoName["\u5DF2\u66DD\u5149VID"] = e.collect.configManager.getAbVersion(),
              e.info[4].infoName["A/B\u57DF\u540D"] = e.config.ab_channel_domain || l(D[e.config.channel]),
              e.info[4].infoName["\u5168\u90E8\u914D\u7F6E"] = e.collect.configManager.getAbData()),
              e.config.Native && (e.info[5].infoName["\u662F\u5426\u6253\u901A"] = !!e.collect.bridgeReport)
          })
      }
      ,
      e.prototype.loadHook = function() {
          var e = this;
          this.collect.stop(),
          this.collect.on(S.DEBUGGER_MESSAGE, function(t) {
              switch (t.type) {
              case S.DEBUGGER_MESSAGE_SDK:
                  var r = {
                      time: t.time,
                      type: t.logType || "sdk",
                      level: t.level,
                      name: t.info,
                      show: !0,
                      levelShow: !0,
                      needDesc: !!t.data
                  };
                  return t.data && (r.desc = {
                      content: JSON.stringify(t.data)
                  }),
                  e.updateLog(r),
                  t.secType && "AB" === t.secType ? (e.info[4].infoName["\u5DF2\u66DD\u5149VID"] = e.collect.configManager.getAbVersion(),
                  e.info[4].infoName["\u5168\u90E8\u914D\u7F6E"] = e.collect.configManager.getAbData()) : "USER" === t.secType && (e.info[1].infoName.uuid = e.collect.configManager.get("user").user_unique_id,
                  e.info[1].infoName.web_id = e.collect.configManager.get("user").web_id),
                  void e.updateInfo();
              case S.DEBUGGER_MESSAGE_EVENT:
                  if (t.data && t.data.length) {
                      var r = t.data[0]
                        , n = r.events
                        , i = r.header;
                      if (i.custom = JSON.parse(i.custom),
                      !n.length)
                          return;
                      n.forEach(function(r) {
                          r.checkShow = !0,
                          r.searchShow = !0,
                          r.type = -1 !== e.filterEvent.indexOf(r.event) ? "sdk" : "cus",
                          r.type = e.collect.bridgeReport ? "bridge" : r.type,
                          r.params = JSON.parse(r.params),
                          "fail" === t.status && (r.info = {
                              message: "code: " + t.code + "\uFF0C msg: " + t.failType
                          },
                          r.failType = t.failType);
                          var n = !1
                            , i = !1
                            , o = [];
                          e.eventVerifyInfo && e.eventVerifyInfo.length && (e.eventVerifyInfo.forEach(function(e) {
                              e.eventStatus = !1
                          }),
                          e.eventVerifyInfo.forEach(function(t) {
                              r.event === t.name && (n = i = !0,
                              r.verifyStatus = t.status,
                              Object.keys(r.params).forEach(function(n) {
                                  var s;
                                  "event_index" !== n && ((s = {}).paramsKey = n,
                                  s.paramsKeyValue = r.params["" + n],
                                  s.paramsStatus = !1,
                                  s.paramsStatusInfo = "\u5C5E\u6027\u672A\u5F55\u5165",
                                  t.params.forEach(function(t) {
                                      n === t.name && (t.checked = !0,
                                      typeof r.params["" + n] !== e.formatParamsType(t.value_type) ? s.paramsStatusInfo = "\u5C5E\u6027\u7C7B\u578B\u9519\u8BEF\uFF0C\u5E94\u4E3A" + e.formatParamsType(t.value_type) : (s.paramsStatus = !0,
                                      s.paramsStatusInfo = ""))
                                  }),
                                  o.push(s),
                                  s.paramsStatusInfo) && (i = !1)
                              }),
                              t.params.forEach(function(e) {
                                  e.checked || (i = !1,
                                  o.push({
                                      paramsKey: e.name,
                                      paramsStatus: !1,
                                      paramsStatusInfo: "\u7F3A\u5C11\u5C5E\u6027" + e.name
                                  }))
                              }))
                          })),
                          r.reportStatus = "success" === t.status,
                          r.paramsInfo = o,
                          r.eventStatus = i && "success" === t.status,
                          r.eventRecord = n
                      }),
                      e.updateEvent(r)
                  }
                  return
              }
          })
      }
      ,
      e.prototype.formatParamsType = function(e) {
          switch (e) {
          case 0:
              return "string";
          case 1:
          case 2:
              return "number";
          case 3:
              return "boolean"
          }
      }
      ,
      e.prototype.fetchEventInfo = function() {
          var e = this;
          try {
              return new Promise(function(t) {
                  var r = l("1fz22z22z1nz21z4mz4bz4bz18z1nz1nz1jz1mz1ez1fz1mz1kz1cz4az19z27z22z1cz1bz18z1lz1az1cz4az1lz1cz22z4bz18z1nz1nz1jz1mz1ez1bz1cz24z22z1mz1mz1jz21z4bz1mz1nz1cz1lz18z1nz1gz4bz24z4dz4bz18z1nz1nz16z1jz1mz1ez16z1kz1cz22z18") + "?app_id=" + e.app_id + "&t=" + e.sdk_type + "&nc=false";
                  e.collect.requestManager.useRequest({
                      url: r,
                      method: "GET",
                      success: function(r) {
                          e.eventVerifyReady = !0,
                          e.collect.reStart(),
                          t({
                              data: r.data,
                              verifyStatus: !0
                          })
                      },
                      fail: function() {
                          e.eventVerifyReady = !0,
                          e.collect.reStart(),
                          t({
                              data: [],
                              verifyStatus: !1
                          })
                      },
                      timeout: 3e3
                  })
              }
              )
          } catch (e) {
              return {
                  data: [],
                  verifyStatus: !1
              }
          }
      }
      ,
      e.prototype.addLintener = function() {
          var e = this;
          window.addEventListener("message", function(t) {
              if (t.origin === location.origin) {
                  if (t && t.data && "devtool:web:ready" === t.data.type) {
                      if (e.devToolOrigin = t.origin,
                      e.devToolReady = !0,
                      e.sendAlready)
                          return;
                      e.sendData("devtool:web:init", {
                          info: e.info,
                          log: e.log,
                          event: e.event,
                          appid: e.app_id
                      }),
                      e.sendAlready = !0
                  }
                  t && t.data && "devtool:web:ssid" === t.data.type && e.collect.getToken(function(t) {
                      e.info[1].infoName.ssid = t.tobid,
                      e.updateInfo()
                  }),
                  t && t.data && t.data.type
              }
          })
      }
      ,
      e.prototype.sendData = function(e, t) {
          try {
              (window.opener || window.parent).postMessage({
                  type: e,
                  payload: t
              }, this.devToolOrigin)
          } catch (e) {}
      }
      ,
      e.prototype.updateInfo = function() {
          this.devToolReady && this.sendData("devtool:web:info", this.info)
      }
      ,
      e.prototype.updateLog = function(e) {
          this.devToolReady ? this.sendData("devtool:web:log", e) : this.log.push(e)
      }
      ,
      e.prototype.updateEvent = function(e) {
          this.devToolReady || this.eventVerifyReady ? this.sendData("devtool:web:event", e) : this.event.push(e)
      }
      ,
      e.prototype.loadDebuggerModule = function() {
          var e = document.head || document.getElementsByTagName("head")[0]
            , t = document.createElement("style")
            , e = (t.appendChild(document.createTextNode("#debugger-applog-web {\n      position: fixed;\n      width: 50px;\n      height: 50px;\n      background-image: url('https://lf-cdn-tos.bytescm.com/obj/static/log-sdk/collect/devtool/applog.png');;\n      bottom: 5%;\n      right: 10%;\n      cursor: pointer;\n      z-index:100;\n      background-size: 50px;\n    }")),
          e.appendChild(t),
          document.createElement("div"))
            , t = (e.innerHTML = '<div id="debugger-applog-web" class="debugger-applog-web"></div>',
          document.createElement("div"));
          t.innerHTML = '<div id="debugger-container" class="debugger-container"></div>',
          document.getElementsByTagName("body")[0].appendChild(e),
          document.getElementsByTagName("body")[0].appendChild(t),
          document.getElementById("debugger-applog-web").addEventListener("click", function() {
              (window.opener || window.parent).postMessage({
                  type: "devtool:web:open-draw"
              }, location.origin)
          })
      }
      ,
      e
  }(), V = {
      autotrack: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/autotrack.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/autotrack.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/autotrack.js"
          },
          object: "LogAutoTrack"
      },
      ab: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/ab.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/ab.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/ab.js"
          },
          object: "LogAb"
      },
      stay: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/stay.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/stay.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/stay.js"
          },
          object: "LogStay"
      },
      route: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/route.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/route.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/route.js"
          },
          object: "LogRoute"
      },
      cep: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/cep.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/cep.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/cep.js"
          },
          object: "LogCep"
      },
      tracer: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/tracer.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/tracer.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/tracer.js"
          },
          object: "LogTracer"
      },
      retry: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/retry.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/retry.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/retry.js"
          },
          object: "LogRetry"
      },
      visual: {
          src: {
              cn: "https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.0/plugin/visual.js",
              sg: "https://sf16-scmcdn-sg.ibytedtos.com/obj/static-sg/log-sdk/collect/5.0/plugin/visual.js",
              va: "https://sf16-scmcdn-va.ibytedtos.com/obj/static-us/log-sdk/collect/5.0/plugin/visual.js"
          },
          object: "LogVisual"
      }
  }, W = ["et", "profile", "heartbeat", "monitor"], J = function() {
      function e(e) {
          this.disableAutoPageView = !1,
          this.bridgeReport = !1,
          this.staging = !1,
          this.pluginInstances = [],
          this.sended = !1,
          this.started = !1,
          this.destroy = !1,
          this.sdkReady = !1,
          this.adapters = {},
          this.loadType = "base",
          this.sdkStop = !1,
          this.name = e,
          this.hook = new x,
          this.remotePlugin = new Map,
          this.Types = A,
          this.adapters.storage = T
      }
      return e.usePlugin = function(t, r, n) {
          if (r) {
              for (var i = !1, o = 0, s = e.plugins.length; o < s; o++)
                  if (e.plugins[o].name === r) {
                      e.plugins[o].plugin = t,
                      e.plugins[o].options = n || {},
                      i = !0;
                      break
                  }
              i || e.plugins.push({
                  name: r,
                  plugin: t,
                  options: n
              })
          } else
              e.plugins.push({
                  plugin: t
              })
      }
      ,
      e.prototype.usePlugin = function(e, t, r) {
          e && ("full" === this.loadType && W.includes(e) ? console.info("your sdk version has " + e + " plugin already ~") : t ? "string" == typeof t ? this.remotePlugin.get(e) || this.remotePlugin.set(e, {
              src: t,
              call: r
          }) : this.remotePlugin.get(e) || this.remotePlugin.set(e, {
              instance: t
          }) : this.remotePlugin.get(e) || this.remotePlugin.set(e, "sdk"))
      }
      ,
      e.prototype.init = function(t) {
          var r, n = this;
          this.logger = new M(this.name,t.log),
          this.inited ? this.logger.warn("[instance: " + this.name + "], every instance's api: init,  can be call only one time!") : t && u(t) ? t.app_id && "number" == typeof (r = t.app_id) && !isNaN(r) ? t.app_key && "string" != typeof t.app_key ? this.logger.warn("app_key param is error, must be string, please check!") : (t.channel_domain || -1 !== ["cn", "sg", "va"].indexOf(t.channel) || (this.logger.warn("channel must be `cn`, `sg`,`va` !"),
          t.channel = "cn"),
          this.spider = new G,
          this.spider.checkSpider(t) ? this.logger.warn("your env may be a spider, can not report!") : (this.appBridge = new F(this,t.enable_native),
          this.requestManager = new K(this,t),
          this.bridgeReport = this.appBridge.bridgeInject(),
          this.configManager = new U(this,t),
          this.debugger = new q(this,t),
          this.initConfig = t,
          this.emit(A.Init),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CINIT",
              data: t,
              level: "info",
              time: Date.now()
          }),
          this.destroy = !1,
          t.disable_auto_pv && (this.disableAutoPageView = !0),
          this.bridgeReport || (this.configManager.set({
              app_id: t.app_id
          }),
          this.eventManager = new H,
          this.tokenManager = new L,
          this.sessionManager = new N,
          Promise.all([new Promise(function(e) {
              n.once(A.TokenComplete, function() {
                  e(!0)
              })
          }
          ), new Promise(function(e) {
              n.once(A.Start, function() {
                  e(!0)
              })
          }
          )]).then(function() {
              try {
                  e.plugins.reduce(function(e, t) {
                      var r = t.plugin
                        , t = t.options
                        , t = Object.assign(n.initConfig, t)
                        , r = new r;
                      return r.apply(n, t),
                      e.push(r),
                      e
                  }, n.pluginInstances)
              } catch (e) {
                  console.warn("load plugin error, " + e.message),
                  n.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                      level: "error",
                      time: Date.now(),
                      data: e.message
                  })
              }
              n.sdkReady = !0,
              n.emit(A.Ready),
              n.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "SDK \u521D\u59CB\u5316\u5B8C\u6210",
                  time: Date.now(),
                  level: "info",
                  data: n.configManager.get("user")
              }),
              n.logger.info("appid: " + t.app_id + ", userInfo:" + JSON.stringify(n.configManager.get("user"))),
              n.logger.info("appid: " + t.app_id + ", sdk is ready, version type is " + n.loadType + ", version is " + I + ", you can report now !!!"),
              t.disable_auto_pv && (n.disableAutoPageView = !0);
              try {
                  "full" === n.loadType && (t.enable_ab_test || t.autotrack) && (window.opener || window.parent).postMessage("[tea-sdk]ready", "*")
              } catch (e) {
                  n.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                      level: "error",
                      time: Date.now(),
                      data: e.message
                  })
              }
              n.pageView(),
              n.on(A.TokenChange, function(e) {
                  "webid" === e && n.pageView(),
                  n.logger.info("appid: " + t.app_id + " token change, new userInfo:" + JSON.stringify(n.configManager.get("user"))),
                  n.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "SDK \u8BBE\u7F6E\u4E86\u7528\u6237\u4FE1\u606F",
                      time: Date.now(),
                      secType: "USER",
                      level: "info",
                      data: n.configManager.get("user")
                  })
              }),
              n.on(A.TokenReset, function() {
                  n.logger.info("appid: " + t.app_id + " token reset, new userInfo:" + JSON.stringify(n.configManager.get("user"))),
                  n.emit(S.DEBUGGER_MESSAGE, {
                      type: S.DEBUGGER_MESSAGE_SDK,
                      info: "SDK \u91CD\u7F6E\u4E86\u7528\u6237\u4FE1\u606F",
                      time: Date.now(),
                      secType: "USER",
                      level: "info",
                      data: n.configManager.get("user")
                  })
              }),
              n.on(A.RouteChange, function(e) {
                  e.init || t.disable_route_report || n.pageView()
              })
          }),
          this.tokenManager.apply(this, t),
          this.eventManager.apply(this, t),
          this.sessionManager.apply(this, t)),
          this.inited = !0)) : this.logger.warn("app_id param is error, must be number, please check!") : this.logger.warn("init params error,please check!")
      }
      ,
      e.prototype.config = function(e) {
          var t, r;
          this.inited ? e && u(e) ? this.bridgeReport ? this.appBridge.setConfig(e) : (e._staging_flag && 1 === e._staging_flag && (this.staging = !0),
          e.disable_auto_pv && (this.disableAutoPageView = !0,
          delete e.disable_auto_pv),
          t = a({}, e),
          r = this.initConfig.configPersist || this.initConfig.config_persist || !1,
          this.initConfig && r && ((r = this.configManager.getStore()) && (t = Object.assign(r, e)),
          this.configManager.setStore(e)),
          t.web_id,
          t.user_unique_id,
          r = function(e, t) {
              var r = {};
              for (i in e)
                  Object.prototype.hasOwnProperty.call(e, i) && 0 > t.indexOf(i) && (r[i] = e[i]);
              if (null != e && "function" == typeof Object.getOwnPropertySymbols)
                  for (var n = 0, i = Object.getOwnPropertySymbols(e); n < i.length; n++)
                      0 > t.indexOf(i[n]) && (r[i[n]] = e[i[n]]);
              return r
          }(t, ["web_id", "user_unique_id"]),
          this.configManager.set(r),
          t.hasOwnProperty("web_id") && this.emit(A.ConfigWebId, t.web_id),
          t.hasOwnProperty("user_unique_id") && this.emit(A.ConfigUuid, t.user_unique_id),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CCONFIG",
              level: "info",
              time: Date.now(),
              data: t
          })) : console.warn("config params is error, please check") : console.warn("config must be use after function init")
      }
      ,
      e.prototype.setUserUniqueID = function(e) {
          this.config({
              user_unique_id: e
          })
      }
      ,
      e.prototype.setHeaderInfo = function(e, t) {
          var r = {};
          r[e] = t,
          this.config(r)
      }
      ,
      e.prototype.removeHeaderInfo = function(e) {
          var t = {};
          t[e] = void 0,
          this.config(t)
      }
      ,
      e.prototype.setDomain = function(e) {
          this.configManager && this.configManager.setDomain(e),
          this.emit(A.ConfigDomain)
      }
      ,
      e.prototype.getConfig = function(e) {
          return this.configManager.get(e)
      }
      ,
      e.prototype.send = function() {
          this.start()
      }
      ,
      e.prototype.start = function() {
          this.inited && !this.sended && (this.sended = !0,
          this.started = !0,
          this.emit(A.Start),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CSTART",
              level: "info",
              time: Date.now()
          }),
          this.bridgeReport) && (this.pageView(),
          this.emit(A.Ready))
      }
      ,
      e.prototype.event = function(e, t) {
          var r = this;
          try {
              var n = [];
              if (Array.isArray(e))
                  e.forEach(function(e) {
                      (e = r.processEvent(e[0], e[1] || {})) && n.push(e)
                  });
              else {
                  var i = this.processEvent(e, t);
                  if (!i)
                      return;
                  n.push(i)
              }
              this.bridgeReport ? n.forEach(function(e) {
                  var t = e.event
                    , e = e.params;
                  r.appBridge.onEventV3(t, JSON.stringify(e))
              }) : n.length && (this.emit(A.Event, n),
              this.emit(A.SessionResetTime))
          } catch (e) {
              this.logger.warn("something error, please check"),
              this.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e.prototype.beconEvent = function(e, t) {
          var r;
          Array.isArray(e) ? console.warn("beconEvent not support batch report, please check") : (r = [],
          (e = this.processEvent(e, t || {})) && (r.push(e),
          r.length) && (this.emit(A.BeconEvent, r),
          this.emit(A.SessionResetTime)))
      }
      ,
      e.prototype.beaconEvent = function(e, t) {
          this.beconEvent(e, t)
      }
      ,
      e.prototype.processEvent = function(e, t) {
          void 0 === t && (t = {});
          try {
              var r, n, i;
              return e ? (/^event\./.test(r = e) && (r = e.slice(6)),
              i = void ((n = "object" != typeof (n = t) ? {} : n).profile ? delete n.profile : n.event_index = _ += 1),
              n.local_ms ? (i = n.local_ms,
              delete n.local_ms) : i = +new Date,
              {
                  event: r,
                  params: n,
                  local_time_ms: i,
                  is_bav: this.initConfig && this.initConfig.autotrack ? 1 : 0
              }) : (console.warn("eventName is null\uFF0C please check"),
              null)
          } catch (r) {
              return this.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: r.message
              }),
              {
                  event: e,
                  params: t
              }
          }
      }
      ,
      e.prototype.filterEvent = function(e) {
          this.eventFilter = e
      }
      ,
      e.prototype.on = function(e, t) {
          this.hook.on(e, t)
      }
      ,
      e.prototype.once = function(e, t) {
          this.hook.once(e, t)
      }
      ,
      e.prototype.off = function(e, t) {
          this.hook.off(e, t)
      }
      ,
      e.prototype.emit = function(e, t, r) {
          this.hook.emit(e, t, r)
      }
      ,
      e.prototype.set = function(e) {
          this.hook.set(e)
      }
      ,
      e.prototype.stop = function() {
          this.sdkStop = !0
      }
      ,
      e.prototype.reStart = function() {
          this.sdkStop = !1
      }
      ,
      e.prototype.pageView = function() {
          this.disableAutoPageView || this.predefinePageView()
      }
      ,
      e.prototype.predefinePageView = function(e) {
          var t;
          void 0 === e && (e = {}),
          this.inited ? (t = {
              title: document.title || location.pathname,
              url: location.href,
              url_path: location.pathname,
              time: Date.now(),
              referrer: window.document.referrer,
              $is_first_time: "" + (this.configManager && this.configManager.is_first_time || !1)
          },
          t = a({}, t, e),
          this.event("predefine_pageview", t)) : console.warn("predefinePageView must be use after function init")
      }
      ,
      e.prototype.clearEventCache = function() {
          this.emit(A.CleanEvents)
      }
      ,
      e.prototype.setWebIDviaUnionID = function(e) {
          var t;
          e && (t = h(e),
          this.config({
              web_id: "" + t,
              wechat_unionid: e
          }),
          this.emit(A.CustomWebId))
      }
      ,
      e.prototype.setWebId = function(e) {
          this.config({
              web_id: "" + e
          })
      }
      ,
      e.prototype.setWebIDviaOpenID = function(e) {
          var t;
          e && (t = h(e),
          this.config({
              web_id: "" + t,
              wechat_openid: e
          }),
          this.emit(A.CustomWebId))
      }
      ,
      e.prototype.setNativeAppId = function(e) {
          this.bridgeReport && this.appBridge.setNativeAppId(e)
      }
      ,
      e.prototype.getSessionId = y,
      e.prototype.setSessionId = function(e) {
          this.emit(A.SessionReset, e)
      }
      ,
      e.prototype.resetStayDuration = function(e, t, r) {
          this.emit(A.ResetStay, {
              url_path: e,
              title: t,
              url: r
          }, A.Stay)
      }
      ,
      e.prototype.resetStayParams = function(e, t, r) {
          this.emit(A.SetStay, {
              url_path: e = void 0 === e ? "" : e,
              title: t = void 0 === t ? "" : t,
              url: r = void 0 === r ? "" : r
          }, A.Stay)
      }
      ,
      e.prototype.getToken = function(e, t) {
          var r, n, i, o = this;
          this.inited ? (r = !1,
          n = function(t) {
              var n;
              if (!r)
                  return r = !0,
                  n = o.configManager.get().user,
                  t && (n.tobid = t,
                  n["diss".split("").reverse().join("")] = t),
                  e(a({}, n))
          }
          ,
          i = function() {
              o.tokenManager.getTobId().then(function(e) {
                  n(e)
              })
          }
          ,
          this.sdkReady ? i() : (t && setTimeout(function() {
              n()
          }, t),
          this.on(A.Ready, function() {
              i()
          }))) : console.warn("getToken must be use after function init")
      }
      ,
      e.prototype.profileSet = function(e) {
          this.bridgeReport ? this.appBridge.profileSet(JSON.stringify(e)) : this.emit(A.ProfileSet, e, A.Profile),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CprofileSet",
              level: "info",
              time: Date.now(),
              data: e
          })
      }
      ,
      e.prototype.profileSetOnce = function(e) {
          this.bridgeReport ? this.appBridge.profileSetOnce(JSON.stringify(e)) : this.emit(A.ProfileSetOnce, e, A.Profile),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CprofileSetOnce",
              level: "info",
              time: Date.now(),
              data: e
          })
      }
      ,
      e.prototype.profileIncrement = function(e) {
          this.bridgeReport ? this.appBridge.profileIncrement(JSON.stringify(e)) : this.emit(A.ProfileIncrement, e, A.Profile),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CprofileIncrement",
              level: "info",
              time: Date.now(),
              data: e
          })
      }
      ,
      e.prototype.profileUnset = function(e) {
          this.bridgeReport ? this.appBridge.profileUnset(e) : this.emit(A.ProfileUnset, e, A.Profile),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CprofileUnset",
              level: "info",
              time: Date.now(),
              data: e
          })
      }
      ,
      e.prototype.profileAppend = function(e) {
          this.bridgeReport ? this.appBridge.profileAppend(JSON.stringify(e)) : this.emit(A.ProfileAppend, e, A.Profile),
          this.emit(S.DEBUGGER_MESSAGE, {
              type: S.DEBUGGER_MESSAGE_SDK,
              info: "SDK \u6267\u884CprofileAppend",
              level: "info",
              time: Date.now(),
              data: e
          })
      }
      ,
      e.prototype.setExternalAbVersion = function(e) {
          this.emit(A.AbExternalVersion, "string" == typeof e && e ? ("" + e).trim() : null, A.Ab)
      }
      ,
      e.prototype.getVar = function(e, t, r) {
          this.emit(A.AbVar, {
              name: e,
              defaultValue: t,
              callback: r
          }, A.Ab)
      }
      ,
      e.prototype.getABconfig = function(e, t) {
          this.emit(A.AbConfig, {
              params: e,
              callback: t
          }, A.Ab)
      }
      ,
      e.prototype.getAbSdkVersion = function() {
          return this.configManager.getAbVersion()
      }
      ,
      e.prototype.onAbSdkVersionChange = function(e) {
          var t = this;
          return this.emit(A.AbVersionChangeOn, e, A.Ab),
          function() {
              t.emit(A.AbVersionChangeOff, e, A.Ab)
          }
      }
      ,
      e.prototype.offAbSdkVersionChange = function(e) {
          this.emit(A.AbVersionChangeOff, e, A.Ab)
      }
      ,
      e.prototype.openOverlayer = function() {
          this.emit(A.AbOpenLayer, "", A.Ab)
      }
      ,
      e.prototype.closeOverlayer = function() {
          this.emit(A.AbCloseLayer, "", A.Ab)
      }
      ,
      e.prototype.getAllVars = function(e) {
          this.emit(A.AbAllVars, e, A.Ab)
      }
      ,
      e.prototype.destoryInstace = function() {
          this.destroy || (this.destroy = !0,
          this.off(A.TokenComplete),
          this.emit(A.DestoryInstance))
      }
      ,
      e.prototype.destroyInstance = function() {
          this.destroy || (this.destroy = !0,
          this.off(A.TokenComplete),
          this.emit(A.DestoryInstance))
      }
      ,
      e.plugins = [],
      e
  }(), t = function() {
      function e() {}
      return e.prototype.apply = function(e, t) {
          var r = this;
          t.event_verify_url && ("string" == typeof t.event_verify_url ? (this.url = t.event_verify_url + "/v1/list_test",
          e.on(e.Types.SubmitBefore, function(t) {
              e.requestManager.useBeacon({
                  url: r.url,
                  data: t
              })
          })) : console.log("please use correct et_test url"))
      }
      ,
      e
  }(), Q = function() {
      function e() {}
      return e.prototype.apply = function(e, t) {
          var r = this
            , n = (this.collect = e,
          this.config = t,
          this.duration = 6e4,
          this.reportUrl = e.configManager.getDomain() + "/profile/list",
          e.Types);
          this.eventCheck = new P(e,t),
          this.cache = {},
          this.collect.on(n.ProfileSet, function(e) {
              r.setProfile(e)
          }),
          this.collect.on(n.ProfileSetOnce, function(e) {
              r.setOnceProfile(e)
          }),
          this.collect.on(n.ProfileUnset, function(e) {
              r.unsetProfile(e)
          }),
          this.collect.on(n.ProfileIncrement, function(e) {
              r.incrementProfile(e)
          }),
          this.collect.on(n.ProfileAppend, function(e) {
              r.appendProfile(e)
          }),
          this.collect.on(n.ProfileClear, function() {
              r.cache = {}
          }),
          this.ready(n.Profile)
      }
      ,
      e.prototype.ready = function(e) {
          var t = this;
          if (this.collect.set(e),
          this.collect.hook._hooksCache.hasOwnProperty(e)) {
              var r = this.collect.hook._hooksCache[e];
              if (Object.keys(r).length)
                  for (var n in r)
                      !function(e) {
                          r[e].length && r[e].forEach(function(r) {
                              t.collect.hook.emit(e, r)
                          })
                      }(n)
          }
      }
      ,
      e.prototype.report = function(e, t) {
          void 0 === t && (t = {});
          try {
              var r, n;
              this.config.disable_track_event || ((r = []).push(this.collect.processEvent(e, t)),
              n = this.collect.eventManager.merge(r),
              this.collect.requestManager.useRequest({
                  url: this.reportUrl,
                  data: n
              }),
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_EVENT,
                  info: "\u57CB\u70B9\u4E0A\u62A5\u6210\u529F",
                  time: Date.now(),
                  data: n,
                  code: 200,
                  status: "success"
              }))
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e.prototype.setProfile = function(e) {
          (e = this.formatParams(e)) && Object.keys(e).length && (this.pushCache(e),
          this.report("__profile_set", a({}, e, {
              profile: !0
          })))
      }
      ,
      e.prototype.setOnceProfile = function(e) {
          (e = this.formatParams(e, !0)) && Object.keys(e).length && (this.pushCache(e),
          this.report("__profile_set_once", a({}, e, {
              profile: !0
          })))
      }
      ,
      e.prototype.incrementProfile = function(e) {
          e ? this.report("__profile_increment", a({}, e, {
              profile: !0
          })) : console.warn("please check the params, must be object!!!")
      }
      ,
      e.prototype.unsetProfile = function(e) {
          var t;
          e ? ((t = {})[e] = "1",
          this.report("__profile_unset", a({}, t, {
              profile: !0
          }))) : console.warn("please check the key, must be string!!!")
      }
      ,
      e.prototype.appendProfile = function(e) {
          if (e) {
              var t, r = {};
              for (t in e)
                  "string" == typeof e[t] || "Array" === Object.prototype.toString.call(e[t]).slice(8, -1) ? r[t] = e[t] : console.warn("please check the value of param: " + t + ", must be string or array !!!");
              Object.keys(r).length && this.report("__profile_append", a({}, r, {
                  profile: !0
              }))
          } else
              console.warn("please check the params, must be object!!!")
      }
      ,
      e.prototype.pushCache = function(e) {
          var t = this;
          Object.keys(e).forEach(function(r) {
              t.cache[r] = {
                  val: t.clone(e[r]),
                  timestamp: Date.now()
              }
          })
      }
      ,
      e.prototype.formatParams = function(e, t) {
          var r = this;
          void 0 === t && (t = !1);
          try {
              if (e && "[object Object]" === Object.prototype.toString.call(e)) {
                  var n, i = {};
                  for (n in e)
                      "string" == typeof e[n] || "number" == typeof e[n] || "Array" === Object.prototype.toString.call(e[n]).slice(8, -1) ? i[n] = e[n] : console.warn("please check the value of params:" + n + ", must be string,number,Array !!!");
                  var o, s = Object.keys(i);
                  if (s.length && this.eventCheck.checkEventParams(i))
                      return o = Date.now(),
                      s.filter(function(n) {
                          var i = r.cache[n];
                          return t ? !i : !(i && r.compare(i.val, e[n]) && o - i.timestamp < r.duration)
                      }).reduce(function(e, t) {
                          return e[t] = i[t],
                          e
                      }, {})
              } else
                  console.warn("please check the params type, must be object !!!")
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              }),
              console.log("error")
          }
      }
      ,
      e.prototype.compare = function(e, t) {
          try {
              return JSON.stringify(e) === JSON.stringify(t)
          } catch (e) {
              return this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              }),
              !1
          }
      }
      ,
      e.prototype.clone = function(e) {
          try {
              return JSON.parse(JSON.stringify(e))
          } catch (t) {
              return this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: t.message
              }),
              e
          }
      }
      ,
      e.prototype.unReady = function() {
          console.warn("sdk is not ready, please use this api after start")
      }
      ,
      e
  }(), X = function() {
      function e() {
          var e = this;
          this.setInterval = function() {
              var t, r, n, i;
              e.clearIntervalFunc = (t = function() {
                  e.isSessionhasEvent && e.endCurrentSession()
              }
              ,
              r = e.sessionInterval,
              void 0 === t && (t = function() {}
              ),
              void 0 === r && (r = 1e3),
              n = Date.now() + r,
              i = window.setTimeout(function e() {
                  var o = Date.now() - n;
                  t(),
                  n += r,
                  i = window.setTimeout(e, Math.max(0, r - o))
              }, r),
              function() {
                  window.clearTimeout(i)
              }
              )
          }
          ,
          this.clearInterval = function() {
              e.clearIntervalFunc && e.clearIntervalFunc()
          }
      }
      return e.prototype.apply = function(e, t) {
          var r = this;
          this.collect = e,
          t.disable_heartbeat || (this.sessionInterval = 6e4,
          this.startTime = 0,
          this.lastTime = 0,
          this.setInterval(),
          e = this.collect.Types,
          this.collect.on(e.SessionResetTime, function() {
              r.process()
          }))
      }
      ,
      e.prototype.endCurrentSession = function() {
          this.collect.event("_be_active", {
              start_time: this.startTime,
              end_time: this.lastTime,
              url: window.location.href,
              referrer: window.document.referrer,
              title: document.title || location.pathname
          }),
          this.isSessionhasEvent = !1,
          this.startTime = 0
      }
      ,
      e.prototype.process = function() {
          this.isSessionhasEvent || (this.isSessionhasEvent = !0,
          this.startTime = +new Date);
          var e = this.lastTime || +new Date;
          this.lastTime = +new Date,
          this.lastTime - e > this.sessionInterval && (this.clearInterval(),
          this.endCurrentSession(),
          this.setInterval())
      }
      ,
      e
  }(), $ = function() {
      function e() {}
      return e.prototype.apply = function(e, t) {
          var r = this;
          t.channel_domain || t.disable_track_event || t.disable_sdk_monitor || (this.collect = e,
          this.config = t,
          this.url = e.configManager.getUrl("event"),
          this.collect.on(e.Types.Ready, function() {
              r.sdkOnload()
          }),
          this.collect.on(e.Types.SubmitError, function(e) {
              var t = e.type
                , n = e.eventData
                , e = e.errorCode;
              "f_data" === t && r.sdkError(n, e)
          }))
      }
      ,
      e.prototype.sdkOnload = function() {
          var e = this;
          try {
              var t = this.collect.configManager.get()
                , r = t.header
                , n = t.user
                , i = r.app_id
                , o = r.app_name
                , s = r.sdk_version
                , a = n.web_id
                , c = {
                  events: [{
                      event: "onload",
                      params: JSON.stringify({
                          app_id: i,
                          app_name: o || "",
                          sdk_version: s,
                          sdk_type: "npm",
                          sdk_config: this.config,
                          sdk_desc: "TOC",
                          url: location.href
                      }),
                      local_time_ms: Date.now()
                  }],
                  user: {
                      user_unique_id: a
                  },
                  header: {}
              };
              setTimeout(function() {
                  e.collect.requestManager.useRequest({
                      url: e.url,
                      data: [c],
                      timeout: 3e4,
                      app_key: "566f58151b0ed37e",
                      forceXhr: !0
                  })
              }, 16)
          } catch (e) {}
      }
      ,
      e.prototype.sdkError = function(e, t) {
          var r = this;
          try {
              var n = e[0]
                , i = n.user
                , o = n.header
                , s = []
                , a = (e.forEach(function(e) {
                  e.events.forEach(function(e) {
                      s.push(e)
                  })
              }),
              {
                  events: s.map(function(e) {
                      return {
                          event: "on_error",
                          params: JSON.stringify({
                              error_code: t,
                              app_id: o.app_id,
                              app_name: o.app_name || "",
                              error_event: e.event,
                              sdk_version: o.sdk_version,
                              local_time_ms: e.local_time_ms,
                              tea_event_index: Date.now(),
                              params: e.params,
                              header: JSON.stringify(o),
                              user: JSON.stringify(i)
                          }),
                          local_time_ms: Date.now()
                      }
                  }),
                  user: {
                      user_unique_id: i.user_unique_id
                  },
                  header: {}
              });
              setTimeout(function() {
                  r.collect.requestManager.useRequest({
                      url: r.url,
                      data: [a],
                      timeout: 3e4,
                      app_key: "566f58151b0ed37e",
                      forceXhr: !0
                  })
              }, 16)
          } catch (e) {}
      }
      ,
      e
  }(), Z = "undefined" != typeof window ? (window.LogPluginObject || (window.LogPluginObject = {}),
  window.LogPluginObject) : null, Y = function() {
      function e() {}
      return e.prototype.apply = function(e, t) {
          this._plugin = {},
          this.config = t,
          this.collect = e,
          this.channel = t.channel || "cn",
          this.loadExtend()
      }
      ,
      e.prototype.loadExtend = function() {
          var e = this;
          try {
              this.collect.remotePlugin.forEach(function(t, r) {
                  var n, i;
                  "sdk" === t ? V.hasOwnProperty(r) ? (n = V[r].object,
                  i = V[r].src[e.channel] + "?query=" + Date.now(),
                  e.exist(r, n, i)) : console.warn("your " + r + " is not exist\uFF0Cplease check plugin name") : "object" == typeof t && (t.src ? e.exist(r, t.call, t.src) : e.process(r, t.instance, "INSTANCE"))
              })
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              }),
              console.log("load extend error")
          }
      }
      ,
      e.prototype.exist = function(e, t, r) {
          var n = this;
          Z[t] ? (this.process(e, Z[t]),
          console.log("\u5DF2\u6709" + e + "\u63D2\u4EF6\uFF0C\u907F\u514D\u91CD\u590D\u52A0\u8F7D~")) : this.loadPlugin(e, r, function() {
              n.process(e, Z[t]),
              console.log(" %c %s %s %s", "color: yellow; background-color: black;", "\u2013", "load plugin:" + e + " success", "-")
          }, function() {
              console.log(" %c %s %s %s", "color: red; background-color: yellow;", "\u2013", "load plugin:" + e + " error", "-")
          })
      }
      ,
      e.prototype.process = function(e, t, r) {
          try {
              var n;
              r ? ((n = new t).apply && n.apply(this.collect, this.config),
              console.log("excude " + e + " success")) : t && t(this.collect, this.config)
          } catch (t) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: t.message
              }),
              console.log("excude " + e + " error, message:" + t.message)
          }
      }
      ,
      e.prototype.loadPlugin = function(e, t, r, n) {
          var i = this;
          try {
              var o = document.createElement("script");
              o.src = t,
              this._plugin[e] || (this._plugin[e] = []),
              this._plugin[e].push(r),
              o.onerror = function() {
                  n(t)
              }
              ,
              o.onload = function() {
                  i._plugin[e].forEach(function(e) {
                      e()
                  })
              }
              ,
              document.getElementsByTagName("head")[0].appendChild(o)
          } catch (e) {
              this.collect.emit(S.DEBUGGER_MESSAGE, {
                  type: S.DEBUGGER_MESSAGE_SDK,
                  info: "\u53D1\u751F\u4E86\u5F02\u5E38",
                  level: "error",
                  time: Date.now(),
                  data: e.message
              })
          }
      }
      ,
      e
  }(), Y = (J.usePlugin(Y, "extend"),
  J.usePlugin(t, "et"),
  J.usePlugin(Q, "profile"),
  J.usePlugin(X, "heartbeat"),
  J.usePlugin($, "monitor"),
  new J("default")), ee = Y, et = {
      selectRoute: 900,
      browserError: 1e3,
      crc32: 1e3,
      preUpload: 1001,
      initUploadID: 1002,
      process: 1003,
      fileMerge: 1004,
      complete: 1005
  }, er = "video", en = "image", ei = "object", eo = {
      video: "video_upload",
      image: "image_upload",
      object: "object_upload"
  }, es = "imagex";
  function ea(e) {
      return (ea = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function ec() {
      return (ec = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function eu(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== ea(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== ea(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === ea(n) ? n : String(n)), i)
      }
  }
  var el = function() {
      var e, t, r;
      function n(e, t) {
          switch (!function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, n),
          this.options = e,
          this.context = t,
          this.teaLog = ee,
          this.tea_app_id = 2562,
          this.tea_channel = "cn",
          this.options.region) {
          case "us-east-1":
          case "us-east-red":
          case "gcp":
          case "US-TTP":
              this.tea_app_id = 2643,
              this.tea_channel = "va";
              break;
          case "boei18n":
          case "ap-singapore-1":
              this.tea_app_id = 2643,
              this.tea_channel = "sg";
              break;
          default:
              this.tea_app_id = 2562,
              this.tea_channel = "cn"
          }
          this.teaLog.init({
              app_id: this.tea_app_id,
              channel: this.tea_channel,
              log: !1,
              disable_sdk_monitor: !0,
              disable_auto_pv: !0
          }),
          this.teaLog.config({
              evtParams: {
                  sdk_version: "2.0.9",
                  line_app_id: this.options.appId
              },
              user_unique_id: this.options.userId
          }),
          this.teaLog.start()
      }
      return e = n,
      t = [{
          key: "send",
          value: function(e) {
              var t = this.context
                , r = e.key
                , t = t.tasks[r]
                , n = et[e.stage] || 999
                , t = e.fileType || t && t.fileType
                , i = e.fileSize || 0
                , r = {
                  log_type: eo[t],
                  stage: n,
                  fk: r,
                  fs: i,
                  req: e.req,
                  res: e.res,
                  ts: Math.round(Date.now() / 1e3),
                  sst: e.stageStartTime,
                  set: e.stageEndTime,
                  dur: e.duration,
                  tdur: e.totalDuration,
                  durs: e.duration / 1e3,
                  tdurs: e.totalDuration / 1e3,
                  eslr: e.enableSelectRoute,
                  ucsrr: e.useClientSelectRouteResult,
                  skipCommit: !!e.skipCommit
              }
                , i = e.type
                , o = "error" === i || "retry" === i ? i : n
                , t = "".concat("image" === t ? "image" : "video", "_").concat(o);
              "success" === i ? this.sendSuccessLog(t, e, r, n) : this.teaLog.event(t, ec({}, r, {
                  type: e.type,
                  oid: e.oid,
                  upload_host: e.tosDomain,
                  errc: e.extra && e.extra.errorCode,
                  ex: JSON.stringify({
                      errc: e.extra && e.extra.errorCode,
                      msg: e.extra && e.extra.message
                  })
              }))
          }
      }, {
          key: "sendSuccessLog",
          value: function(e, t, r, n) {
              switch (r.type = t.type,
              n) {
              case et.selectRoute:
                  this.teaLog.event(e, ec({}, r, {
                      race_info: t.raceInfo,
                      client_ip: t.lastClientIp,
                      uc: t.useCache,
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message
                      })
                  }));
                  break;
              case et.crc32:
                  this.teaLog.event(e, ec({}, r, {
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message,
                          crc32Array: t.crc32Array,
                          isDirect: t.isDirect
                      })
                  }));
                  break;
              case et.preUpload:
                  this.teaLog.event(e, ec({}, r, {
                      oid: t.oid,
                      upload_host: t.tosDomain,
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message,
                          sig: t.signature,
                          stk: t.proxyStsToken
                      })
                  }));
                  break;
              case et.initUploadID:
                  this.teaLog.event(e, ec({}, r, {
                      oid: t.oid,
                      upload_host: t.tosDomain,
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message,
                          upid: t.UploadID
                      })
                  }));
                  break;
              case et.process:
                  t.isAllFinish || t.isDirect || (delete r.sst,
                  delete r.set,
                  delete r.dur),
                  this.teaLog.event(e, ec({}, r, {
                      oid: t.oid,
                      upload_host: t.tosDomain,
                      af: t.isAllFinish,
                      cst: t.crc32StartTime,
                      cet: t.crc32EndTime,
                      cdur: t.crc32Duration,
                      slst: t.sliceStartTime,
                      slet: t.sliceEndTime,
                      sldurs: t.sliceDuration && t.sliceDuration / 1e3,
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message,
                          si: t.sliceIndex,
                          af: t.isAllFinish
                      })
                  }));
                  break;
              case et.fileMerge:
                  this.teaLog.event(e, ec({}, r, {
                      oid: t.oid,
                      upload_host: t.tosDomain,
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message
                      })
                  }));
                  break;
              case et.complete:
                  this.teaLog.event(e, ec({}, r, {
                      oid: t.oid,
                      upload_host: t.tosDomain,
                      speed: Math.round(t.fileSize / (t.totalDuration / 1e3) / 1024),
                      ex: JSON.stringify({
                          msg: t.extra && t.extra.message,
                          vid: t.uploadResult && t.uploadResult.Vid
                      })
                  }))
              }
          }
      }, {
          key: "console",
          value: function(e) {
              function t(t) {
                  return e.apply(this, arguments)
              }
              return t.toString = function() {
                  return e.toString()
              }
              ,
              t
          }(function(e) {
              this.options.debug && console.log(e)
          })
      }],
      eu(e.prototype, t),
      Object.defineProperty(e, "prototype", {
          writable: !1
      }),
      n
  }()
    , t = r(6)
    , ef = r.n(t)
    , Q = r(4)
    , ep = r.n(Q)
    , eh = {
      urlTemplate: function(e, t) {
          var r;
          return Object.keys(t = t || {}).forEach(function(n) {
              r = RegExp("{".concat(n, "}"), "g"),
              e = e.replace(r, t[n])
          }),
          e
      },
      toQueryString: function() {
          var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
          return Object.keys(e).map(function(t) {
              return "".concat(t, "=").concat(encodeURIComponent(e[t]))
          }).join("&")
      },
      supportChunked: function() {
          var e = window.Blob || window.WebKitBlob;
          try {
              var t = e.prototype;
              return !(!FormData || !(t.slice || t.webkitSlice || t.mozSlice))
          } catch (e) {
              return !1
          }
      },
      supportXhr: function() {
          return !!window.FormData || window.ProgressEvent && window.FileReader
      },
      supportCrc32: function() {
          var e = window.FileReader && window.FileReader.prototype.readAsBinaryString;
          return "undefined" != typeof Int32Array && e && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice)
      },
      storage: function(e) {
          var t = e
            , e = {
              removeItem: function(e) {
                  delete t.cache[e]
              },
              setItem: function(e, r) {
                  t.cache[e] = r
              },
              getItem: function(e) {
                  return t.cache[e]
              },
              clear: function() {
                  delete t.cache,
                  t.cache = {}
              }
          };
          if (!(1 < arguments.length && void 0 !== arguments[1]) || arguments[1])
              try {
                  if (window.localStorage)
                      return window.localStorage.setItem("", ""),
                      window.localStorage
              } catch (e) {}
          return e
      },
      noop: function() {},
      getUnique: function(e) {
          return "".concat(e, "_").concat((new Date).getTime(), "_").concat(parseInt(1e6 * Math.random()))
      },
      getFileSliceLength: function(e, t) {
          var r = e.size;
          return t && "function" == typeof t ? 2097152 > t(r) ? 2097152 : t(r) || r : 0xc800000 < r ? 0xa00000 : r <= 0xc800000 && 2097152 <= r ? 5242880 : e.size
      },
      getFileSuffix: function(e) {
          if (e && "[object String]" === Object.prototype.toString.call(e)) {
              var t = e.lastIndexOf(".");
              return 0 < t && (e = ".".concat(e.substring(t + 1))).length <= 8 ? e : ""
          }
      },
      fileSlice: function(e, t, r) {
          return (e.slice || e.webkitSlice || e.mozSlice).call(e, t, r)
      },
      getPathByURL: function(e) {
          return /^(?:(https?:)\/\/)?(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/.exec(e)[5] || "/"
      },
      crypto: {
          hmac: function(e, t) {
              return ef()(t, e)
          },
          sha256: function(e) {
              return ep()(e)
          }
      },
      date: {
          iso8601: function(e) {
              return (e = void 0 === e ? eh.date.getDate() : e).toISOString().replace(/\.\d{3}Z$/, "Z")
          }
      },
      Buffer: Uint8Array,
      generateKey: function(e) {
          for (var t = "", r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = r.length, i = 0; i < e; i++)
              t += r.charAt(Math.floor(Math.random() * n));
          return t
      }
  };
  function ed(e) {
      return (ed = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function eg(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== ed(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== ed(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === ed(n) ? n : String(n)), i)
      }
  }
  function ey(e, t) {
      return (ey = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function em(e) {
      return (em = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var ev = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && ey(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = em(e);
          return function(e, t) {
              if (t && ("object" === ed(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, em(this).constructor) : r.apply(this, arguments))
      }
      );
      function a() {
          var e;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (e = s.call(this)).xhr = new XMLHttpRequest,
          e._data = null,
          e
      }
      return r = a,
      i = [{
          key: "_ajax",
          value: function(e) {
              var t = this
                , r = this.xhr;
              r.upload.onprogress = function(e) {
                  t.emit("progress", e)
              }
              ,
              r.onreadystatechange = function() {
                  4 === r.readyState && (r.upload.onprogress = eh.noop,
                  r.onreadystatechange = eh.noop,
                  r.params = e,
                  t._data && t._data.url && (r.currentUrl = t._data.url),
                  r.status >= 200 && r.status < 300 || 304 === r.status ? t.emit("complete", r) : r.status >= 400 && t.emit("error", r))
              }
              ,
              r.onerror = function() {
                  r.errText = "unknow net error",
                  t.emit("error", r)
              }
              ,
              r.ontimeout = function() {
                  r.errText = "timeout",
                  t.emit("error", r)
              }
              ,
              r.onabort = function() {
                  r.errText = "abort",
                  t.emit("error", r)
              }
              ,
              r.send(e)
          }
      }, {
          key: "send",
          value: function(e) {
              var t = this;
              return this._data = e,
              this.xhr.open(e.method || "POST", e.url || "", !0),
              e.headers && Object.keys(e.headers).forEach(function(r) {
                  t.xhr.setRequestHeader(r, e.headers[r])
              }),
              this.xhr.timeout = e.timeout || 0,
              e.ontimeout && (this.xhr.ontimeout = e.ontimeout),
              e.binary ? this.sendAsBinary(e) : e.custom ? "object" === ed(e.custom) ? this.sendAsCustom(JSON.stringify(e.custom)) : "none" === e.custom ? (delete e.custom,
              this.sendAsCustom()) : this.sendAsCustom(e.custom) : this.sendAsFormData(e)
          }
      }, {
          key: "sendAsBinary",
          value: function(e) {
              return this.xhr.setRequestHeader("Content-Type", "application/octet-stream"),
              this.xhr.setRequestHeader("Content-Disposition", 'attachment; filename="'.concat(encodeURI(e.filename), '"')),
              this._ajax(e.file)
          }
      }, {
          key: "sendAsFormData",
          value: function(e) {
              t = (t = e.formData ? "function" == typeof e.formData ? e.formData() : e.formData : t) || [];
              for (var t, r = new FormData, n = 0, i = t.length; n < i; n++) {
                  var o = r[n];
                  r.append(o.name, o.value)
              }
              return e.file && r.append(e.field, e.file, e.name),
              this._ajax(r)
          }
      }, {
          key: "sendAsCustom",
          value: function(e) {
              return this._ajax(e)
          }
      }, {
          key: "abort",
          value: function() {
              this.xhr.onreadystatechange = eh.noop,
              this.xhr.abort()
          }
      }, {
          key: "getResponse",
          value: function() {
              return this.xhr.response
          }
      }, {
          key: "getText",
          value: function() {
              return this.xhr.responseText
          }
      }, {
          key: "getJson",
          value: function() {
              return JSON.parse(this.xhr.responseText)
          }
      }],
      eg(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }()
    , X = r(1)
    , eb = r.n(X);
  function e_(e) {
      return (e_ = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function eS(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function ex(e) {
      for (var t = 1; t < arguments.length; t++) {
          var r = null != arguments[t] ? arguments[t] : {};
          t % 2 ? eS(Object(r), !0).forEach(function(t) {
              var n, i, o;
              n = e,
              i = t,
              o = r[t],
              (i = eE(i))in n ? Object.defineProperty(n, i, {
                  value: o,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : n[i] = o
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : eS(Object(r)).forEach(function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
          })
      }
      return e
  }
  function ew() {
      return (ew = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function ek(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, eE(n.key), n)
      }
  }
  function eE(e) {
      return e = function(e, t) {
          if ("object" !== e_(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== e_(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === e_(e) ? e : String(e)
  }
  function eO(e, t) {
      return (eO = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function eT(e) {
      return (eT = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var eC = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && eO(e, t)
      }(c, n.a);
      var e, t, r, i, s, a = (e = c,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = eT(e);
          return function(e, t) {
              if (t && ("object" === e_(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, eT(this).constructor) : r.apply(this, arguments))
      }
      );
      function c(e, t) {
          var r;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, c),
          (r = a.call(this)).options = e,
          r.config = t,
          r.uploaderCtx = e.context,
          r.file = e.file,
          r.cacheKey = "__bd_uploader_cache",
          r
      }
      return r = c,
      i = [{
          key: "start",
          value: function(e, t) {
              this._st = Date.now(),
              this.uploaderCtx._broadcast("startSelectRoute", null, !0),
              this.clientIp = e.clientIp,
              this.selectRouteTimeout = e.selectRouteTimeout || 5e3,
              this.selectRouteCacheTime = e.selectRouteCacheTime || 36e5,
              this.selectRouteFileSize = e.selectRouteFileSize || 0x80000000,
              this.completeCallback = t,
              (e = this.checkSelect({
                  clientIp: this.clientIp
              })) ? this.success(e, null, !0) : this.startSelectRoute()
          }
      }, {
          key: "checkSelect",
          value: function(e) {
              var e = e.clientIp
                , t = null;
              try {
                  t = JSON.parse(this.uploaderCtx.storage.getItem(this.cacheKey))
              } catch (e) {
                  return null
              }
              if (t) {
                  var r = t.lastClientIp
                    , n = t.lastSelectRouteTime;
                  if (e && e !== r)
                      return null;
                  if ((new Date).getTime() - n < this.selectRouteCacheTime)
                      return t
              }
              return null
          }
      }, {
          key: "startSelectRoute",
          value: function() {
              var e = this
                , t = this.config.region
                , r = new ev
                , n = (r.on("complete", function(t) {
                  if (t.response)
                      try {
                          var r, n = JSON.parse(t.response);
                          n.ResponseMetadata.Error ? e.fail({
                              xhr: t,
                              errorCode: n.ResponseMetadata.Error.CodeN,
                              error: n.ResponseMetadata.Error.Code,
                              message: n.ResponseMetadata.Error.Message
                          }) : (r = n.Result.Domains,
                          e.race(r, t))
                      } catch (r) {
                          e.fail({
                              error: "catch error: ".concat(r.toString()),
                              xhr: t
                          })
                      }
                  else
                      e.fail({
                          error: "request fail: ".concat(t.statusText || t.errText || "UNKNOWN"),
                          xhr: t
                      })
              }),
              r.on("error", function(t) {
                  var r = {
                      error: "request fail: ".concat(t.statusText || t.errText || "UNKNOWN"),
                      xhr: t
                  };
                  t.response && (t = JSON.parse(t.response)).ResponseMetadata && t.ResponseMetadata.Error && (r.errorCode = t.ResponseMetadata.Error.CodeN,
                  r.error = t.ResponseMetadata.Error.Code,
                  r.message = t.ResponseMetadata.Error.Message),
                  e.fail(r)
              }),
              this.config.videoHost)
                , i = this.config.videoConfig && this.config.videoConfig.spaceName
                , o = {
                  Action: "GetUploadCandidates",
                  Version: "2020-11-19",
                  SpaceName: i = this.options.type === ei && null != (o = this.config.objectConfig) && o.spaceName ? null == (o = this.config.objectConfig) ? void 0 : o.spaceName : i
              }
                , i = this.options.stsToken
                , s = eh.toQueryString(o)
                , a = i.AccessKeyID
                , c = i.AccessKeyId
                , u = i.SecretAccessKey
                , l = i.SessionToken
                , i = i.CurrentTime
                , n = {
                  method: "GET",
                  url: "".concat(n, "?").concat(s),
                  timeout: this.config.gatewayTimeout,
                  region: t,
                  params: o
              }
                , s = new eb.a(n,"vod")
                , t = (this.config.useServerCurrentTime && Math.abs(new Date(i) - new Date) > 6e4 && (this.systemTimeGap = new Date(i) - new Date),
              this.systemTimeGap ? new Date((new Date).getTime() + this.systemTimeGap) : new Date);
              s.addAuthorization({
                  accessKeyId: c || a,
                  secretAccessKey: u,
                  sessionToken: l
              }, t),
              r.send(n)
          }
      }, {
          key: "race",
          value: function(e, t) {
              var r = this
                , n = this.file
                , i = (n.slice || n.webkitSlice || n.mozSlice).call(n, 0, Math.min(this.selectRouteFileSize, n.size))
                , s = e.map(function(e) {
                  return {
                      domainName: e.Name,
                      domainInfo: e,
                      percent: 0,
                      startTime: (new Date).getTime(),
                      endTime: (new Date).getTime(),
                      complete: !1
                  }
              })
                , a = 0
                , c = s.length;
              s.forEach(function(e, n) {
                  var i = new ev;
                  i.on("complete", function() {
                      s[n].endTime = (new Date).getTime(),
                      s[n].complete = !0,
                      s.forEach(function(e, t) {
                          n !== t && e.transport && e.transport.abort()
                      }),
                      r.formatRaceInfo(s, t)
                  }),
                  i.on("error", function(e) {
                      s[n].endTime = (new Date).getTime(),
                      s[n].complete = !0,
                      s[n].error = e.errText,
                      c <= ++a && r.formatRaceInfo(s, t)
                  }),
                  i.on("progress", function(e) {
                      e = e.loaded / e.total,
                      s[n].percent = e
                  }),
                  s[n].transport = i
              }),
              s.forEach(function(e) {
                  var t = e.domainInfo
                    , n = {
                      oid: t.StoreID,
                      tosDomain: "".concat(r.config.schema, "://").concat(t.Name)
                  }
                    , n = "".concat(eh.urlTemplate(o, n), "?speedtest")
                    , t = t.Sign;
                  e.transport.send({
                      method: "post",
                      url: n,
                      headers: {
                          Authorization: t,
                          "Content-CRC32": "ignore"
                      },
                      file: i,
                      binary: 1,
                      timeout: r.selectRouteTimeout
                  })
              })
          }
      }, {
          key: "formatRaceInfo",
          value: function(e, t) {
              e.sort(function(e, t) {
                  return e.percent < t.percent ? 1 : e.percent > t.percent ? -1 : e.error ? 1 : t.error ? -1 : 0
              }),
              e.forEach(function(e) {
                  delete e.transport
              }),
              e = {
                  lastClientIp: this.clientIp,
                  lastSelectRouteTime: (new Date).getTime(),
                  raceInfo: e,
                  type: "success"
              },
              this.uploaderCtx.storage.setItem(this.cacheKey, JSON.stringify(e)),
              this.success(e, t)
          }
      }, {
          key: "success",
          value: function(e, t) {
              var r = 2 < arguments.length && void 0 !== arguments[2] && arguments[2]
                , t = t && this.formatXhr(t);
              this.uploaderCtx.logger.send(ew(ex(ex({
                  stage: "selectRoute",
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  fileSize: this.file && this.file.size
              }, t), {}, {
                  useCache: r
              }), e)),
              this.uploaderCtx._broadcast("completeSelectRoute", ex(ex({}, e), {}, {
                  useCache: r
              }), !0),
              this.completeCallback({
                  selectRouteResult: e.raceInfo
              })
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = {
                  error: e.error,
                  errorCode: e.errorCode,
                  message: e.message
              };
              this.uploaderCtx.logger.send(ew(ex({
                  stage: "selectRoute",
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  fileSize: this.file && this.file.size,
                  extra: t,
                  type: "warn"
              }, this.formatXhr(e.xhr)))),
              this.uploaderCtx._broadcast("completeSelectRoute", ex({
                  type: "warn"
              }, t), !0),
              this.completeCallback()
          }
      }, {
          key: "formatXhr",
          value: function(e) {
              return {
                  req: {
                      url: e.currentUrl,
                      param: e.params
                  },
                  res: {
                      status: e.status,
                      header: e.getAllResponseHeaders(),
                      body: e.responseText
                  }
              }
          }
      }],
      ek(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      c
  }()
    , eD = {
      crc32: function(e, t) {
          for (var r = [0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 936918e3, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d], n = ("undefined" != typeof Int32Array && (r = new Int32Array(r)),
          -1 ^ ~~t), i = (e = new Uint8Array(e)).length, o = 0; o < i; o++)
              n = r[255 & (n ^ e[o])] ^ n >>> 8;
          return (-1 ^ n) >>> 0
      },
      dec2hex: function(e) {
          if (void 0 !== e)
              return function e(t) {
                  return t.length < 8 ? e(t = "0".concat(t)) : t
              }(Number(e).toString(16))
      }
  };
  function ej(e) {
      return (ej = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function eI(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== ej(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== ej(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === ej(n) ? n : String(n)), i)
      }
  }
  var eP = function() {
      var e, t, r;
      function n(e, t, r, i) {
          !function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, n),
          this.file = e,
          this.successProcess = r,
          this.failProcess = i,
          this.sliceLength = t,
          this.retryTime = 0,
          this.fileSize = e.size,
          this.crc32Array = []
      }
      return e = n,
      t = [{
          key: "start",
          value: function() {
              this.readFileCrc32(this.file)
          }
      }, {
          key: "readFileCrc32",
          value: function(e) {
              var t = this
                , r = this.sliceLength
                , n = e.slice || e.webkitSlice || e.mozSlice
                , i = new FileReader
                , o = 0
                , s = 0
                , a = 0;
              (function c() {
                  s < e.size && (s = Math.min(o + r, e.size),
                  e.size > 0x6400000) && (s = e.size),
                  i.readAsArrayBuffer(n.call(e, o, s)),
                  i.onload = function(r) {
                      r = r.target.result,
                      a = eD.crc32(r, 0),
                      t.crc32Array.push({
                          start: o,
                          end: s,
                          crc32: eD.dec2hex(a),
                          buffer: r
                      }),
                      (o = s) < e.size ? c() : t.success(t.crc32Array)
                  }
              }
              )()
          }
      }, {
          key: "success",
          value: function(e) {
              this.successProcess(e)
          }
      }, {
          key: "fail",
          value: function(e, t, r, n) {
              3 <= this.retryTime ? this.failProcess() : (this.readFileCrc32(e, t, r, n),
              this.retryTime++)
          }
      }],
      eI(e.prototype, t),
      Object.defineProperty(e, "prototype", {
          writable: !1
      }),
      n
  }()
    , eA = "The format of stsToken is incorrect.";
  function eR(e) {
      return (eR = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function ez() {
      return (ez = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function eB(e, t) {
      (null == t || t > e.length) && (t = e.length);
      for (var r = 0, n = Array(t); r < t; r++)
          n[r] = e[r];
      return n
  }
  function eU(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== eR(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== eR(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === eR(n) ? n : String(n)), i)
      }
  }
  var eM = function() {
      var e, t, r;
      function n(e) {
          var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
          !function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, n),
          this.context = e.context,
          this.key = e.key,
          this.isDirect = e.isDirect,
          this.isImageBatchUpload = e.isImageBatchUpload,
          this.file = e.file,
          this.type = (this.isImageBatchUpload ? null == (e = this.file[0]) ? void 0 : e.type : null == (e = this.file) ? void 0 : e.type) || "",
          this.sliceLength = eh.getFileSliceLength(this.file, t.getSliceFunc),
          this.config = t
      }
      return e = n,
      t = [{
          key: "start",
          value: function(e, t, r) {
              this.successProcess = t,
              this.failProcess = r,
              this._st = Date.now(),
              this.crc32(this.file, this.sliceLength)
          }
      }, {
          key: "crc32",
          value: function(e, t) {
              var r = this;
              if (this.isImageBatchUpload)
                  for (var n = e.length, i = [], o = function(t) {
                      new eP(e[t],e[t].size,function(e) {
                          i[t] = e[0],
                          i.filter(function(e) {
                              return !!e
                          }).length === n && r.success(i)
                      }
                      ,function(e) {
                          r.fail(e)
                      }
                      ).start()
                  }, s = 0; s < n; s++)
                      o(s);
              else
                  e && e.size && !(e.size <= 0) ? this.isDirect ? new eP(e,e.size,function(e) {
                      r.success(e)
                  }
                  ,function(e) {
                      r.fail({
                          errorCode: 1000003,
                          message: "get crc32 error: ".concat(e && e.message)
                      })
                  }
                  ).start() : this.sliceFile(e, t, function(e) {
                      r.success(e)
                  }, function(e) {
                      r.fail(e)
                  }) : this.fail({
                      errorCode: 1000003,
                      message: "There is a problem with the input file or fileSize."
                  })
          }
      }, {
          key: "sliceFile",
          value: function(e, t, r, n) {
              for (var i = [], o = e.size, s = e.slice || e.webkitSlice || e.mozSlice, a = 0, c = 0, u = 0; c < o; )
                  c = Math.min(a + t, o),
                  0x6400000 < o && o - c <= 5242880 && (c = o),
                  i.push({
                      start: a,
                      end: c,
                      crc32: 0
                  }),
                  a = c;
              try {
                  !function t(a) {
                      var c = new FileReader
                        , l = i[a].start
                        , f = i[a].end;
                      c.readAsArrayBuffer(s.call(e, l, f)),
                      c.onload = function(e) {
                          e = e.target.result,
                          u = eD.dec2hex(eD.crc32(e, 0)),
                          i[a].crc32 = u,
                          f === o ? r(i) : t(i.length - 1)
                      }
                      ,
                      c.onerror = function(e) {
                          var t = e.target.error.name
                            , e = e.target.error.message;
                          n({
                              crc32Array: i,
                              errorCode: 1000003,
                              message: "".concat(t, ": ").concat(e)
                          })
                      }
                  }(0)
              } catch (e) {
                  n({
                      message: e && e.toString()
                  })
              }
          }
      }, {
          key: "getCrc32Key",
          value: function(e, t) {
              var r;
              return (t = "[object Array]" === Object.prototype.toString.call(t) ? function(e) {
                  if (Array.isArray(e))
                      return eB(e)
              }(r = t) || function(e) {
                  if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
                      return Array.from(e)
              }(r) || function(e, t) {
                  var r;
                  if (e)
                      return "string" == typeof e ? eB(e, void 0) : "Map" === (r = "Object" === (r = Object.prototype.toString.call(e).slice(8, -1)) && e.constructor ? e.constructor.name : r) || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? eB(e, t) : void 0
              }(r) || function() {
                  throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
              }() : [t]).push(e[0].crc32, e[e.length - 1].crc32),
              this.config.instanceId && t.push(this.config.instanceId),
              t.join("_")
          }
      }, {
          key: "success",
          value: function(e) {
              var t = this.context
                , r = this.key
                , n = []
                , i = [];
              if (this.isImageBatchUpload)
                  for (var o = 0; o < this.file.length; o++)
                      n.push(this.file[o].size),
                      i.push(this.file[o].name);
              else
                  n = this.file.size,
                  i = this.file.name;
              var s = this.getCrc32Key(e, n)
                , t = t.tasks[r];
              t && this.successProcess(ez(t, {
                  key: r,
                  crc32Array: e,
                  crc32Key: s,
                  sdkVersion: "2.0.9",
                  sliceLength: this.sliceLength,
                  extra: {
                      message: "get crc32 success"
                  },
                  stage: "crc32",
                  type: "success",
                  fileSize: n,
                  fileName: i,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st,
                  isDirect: this.isDirect,
                  isImageBatchUpload: this.isImageBatchUpload
              }))
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = this.context
                , r = this.key
                , n = e && e.message ? e.message : "get crc32 error"
                , i = e && e.errorCode
                , e = e && e.crc32Array
                , t = ez(t.tasks[r], {
                  crc32Array: e,
                  extra: {
                      message: n,
                      errorCode: i
                  },
                  type: "error",
                  stage: "crc32",
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st
              });
              this.failProcess(t)
          }
      }],
      eU(e.prototype, t),
      Object.defineProperty(e, "prototype", {
          writable: !1
      }),
      n
  }()
    , eG = {
      checkStsToken: function(e) {
          return !e || e.SessionToken && e.SecretAccessKey && (e.AccessKeyId || e.AccessKeyID)
      },
      checkServiceName: function(e, t, r) {
          if ("vod" === r || r === es)
              return r;
          if (e !== er) {
              if (e === en)
                  return es;
              if (e === ei) {
                  if (t.objectConfig && t.objectConfig.spaceName)
                      return "vod";
                  if (t.objectConfig && t.objectConfig.serviceId)
                      return es;
                  if (t.videoConfig && t.videoConfig.spaceName)
                      return "vod";
                  if (t.imageConfig && t.imageConfig.serviceId)
                      return es
              }
          }
          return "vod"
      }
  };
  function eF(e) {
      return (eF = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function eN(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function eH() {
      return (eH = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function eL(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, eK(n.key), n)
      }
  }
  function eK(e) {
      return e = function(e, t) {
          if ("object" !== eF(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== eF(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === eF(e) ? e : String(e)
  }
  function eq(e, t) {
      return (eq = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function eV(e) {
      return (eV = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var eW = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && eq(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = eV(e);
          return function(e, t) {
              if (t && ("object" === eF(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, eV(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e, t) {
          var r;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (r = s.call(this)).options = e,
          r.config = t,
          r.uploaderCtx = e.context,
          r.currFileCtx = e.context.tasks[e.key],
          r.systemTimeGap = 0,
          r.retryTime = t.retryTaskTime,
          r.hasRetryTime = 0,
          r.isImageBatchUpload = !!r.options.isImageBatchUpload,
          r.isDirect = r.options.isDirect,
          r.serviceName = eG.checkServiceName(r.options.type, r.config, r.options.serviceType),
          r
      }
      return r = a,
      i = [{
          key: "start",
          value: function(e, t, r) {
              this.startOptions = e,
              this.failProcess = r,
              this.successProcess = t,
              this._st = Date.now(),
              r = (e = this.uploaderCtx._getCache(this.currFileCtx.crc32Key)) ? JSON.parse(e) : {},
              !this.isDirect && r.oid && r.UploadID ? this.resumeFromCache(r) : this.startPreUpload()
          }
      }, {
          key: "startPreUpload",
          value: function() {
              var e = this
                , t = this.config.region
                , r = new ev
                , n = (r.on("complete", function(t) {
                  e.success(t)
              }),
              r.on("error", function(t) {
                  e.handleError(t)
              }),
              "")
                , i = {}
                , o = this.uploaderCtx.useBackupDomain
                , s = eG.checkServiceName(this.options.type, this.config, this.options.serviceType)
                , i = s === es ? (n = o ? this.config.imageFallbackHost : this.config.imageHost,
              this.createImageXParams()) : (n = o ? this.config.videoFallbackHost : this.config.videoHost,
              this.createVodParams())
                , o = (this.currFileCtx.fileSize && (i.FileSize = this.currFileCtx.fileSize),
              this.config.useFileExtension && this.currFileCtx.fileName && (this.options.type === ei || this.options.type === en) && (o = this.currFileCtx.fileName,
              o = eh.getFileSuffix(o)) && (i.FileExtension = o),
              this.options.fileExtension && (i.FileExtension = this.options.fileExtension),
              this.config.accountId && (i["X-Account-Id"] = this.config.accountId),
              this.options.type !== er && this.config.bizType && (i.BizType = this.config.bizType,
              i.AppID = this.config.appId,
              i.UserID = this.config.userId),
              this.config.openExperiment && (i.app_id = this.config.appId,
              i.user_id = this.config.userId),
              i.s = Math.random().toString(36).substring(2),
              this.options.fileSize && (i.FileSize = this.options.fileSize),
              this.currFileCtx.proxyStsToken || this.config.stsToken)
                , a = eh.toQueryString(i)
                , c = o.AccessKeyID
                , u = o.AccessKeyId
                , l = o.SecretAccessKey
                , f = o.SessionToken
                , o = o.CurrentTime
                , a = {
                  method: "GET",
                  url: "".concat(n, "?").concat(a),
                  timeout: this.config.gatewayTimeout || 0,
                  region: t,
                  params: i,
                  pathname: eh.getPathByURL(n)
              }
                , t = new eb.a(a,s)
                , i = (this.config.useServerCurrentTime && Math.abs(new Date(o) - new Date) > 6e4 && (this.systemTimeGap = new Date(o) - new Date),
              this.systemTimeGap ? new Date((new Date).getTime() + this.systemTimeGap) : new Date);
              t.addAuthorization({
                  accessKeyId: u || c,
                  secretAccessKey: l,
                  sessionToken: f
              }, i),
              r.send(a)
          }
      }, {
          key: "createImageXParams",
          value: function() {
              var e, t = {
                  Action: "ApplyImageUpload",
                  Version: "2018-08-01"
              };
              return this.options.type === en && (this.config.imageConfig && this.config.imageConfig.serviceId ? t.ServiceId = this.config.imageConfig.serviceId : t.SpaceName = this.config.videoConfig && this.config.videoConfig.spaceName),
              this.options.type === ei && (t.ServiceId = this.config.objectConfig && this.config.objectConfig.serviceId || this.config.imageConfig && this.config.imageConfig.serviceId),
              this.currFileCtx.fileSize && 1 < this.currFileCtx.fileSize.length && (t.UploadNum = this.currFileCtx.fileSize.length),
              this.options.storeKey && (e = this.options.storeKey,
              "[object Array]" === Object.prototype.toString.call(e) ? t.StoreKeys = e : "[object String]" === Object.prototype.toString.call(e) && (t.StoreKeys = [e])),
              t
          }
      }, {
          key: "createVodParams",
          value: function() {
              var e = this.config.videoConfig && this.config.videoConfig.spaceName
                , t = {
                  Action: "ApplyUploadInner",
                  Version: "2020-11-19",
                  SpaceName: e = this.options.type === ei && null != (t = this.config.objectConfig) && t.spaceName ? null == (t = this.config.objectConfig) ? void 0 : t.spaceName : e,
                  FileType: this.options.type,
                  IsInner: 1
              };
              return this.config.enOID && (t.EnOID = 1),
              (this.options.testHost || this.config.testHost) && (t.TestHost = this.options.testHost || this.config.testHost),
              this.startOptions && this.startOptions.selectRouteResult && (e = this.startOptions.selectRouteResult,
              t.ClientBestHosts = e.map(function(e) {
                  return e.domainName
              }).join(",")),
              t
          }
      }, {
          key: "resumeFromCache",
          value: function(e) {
              var t = this
                , r = this.options.key
                , n = new ev
                , i = (n.on("complete", function(n) {
                  var i = null;
                  try {
                      var o = JSON.parse(n.response);
                      if (!(2e3 === o.code && 0 < o.data.partlist.length))
                          return t.startPreUpload();
                      var s = t.confirmCache(o.data.partlist)
                        , a = e.hasMerge ? 5 : s.isAllFinished ? 4 : 3
                        , i = eH(t.currFileCtx, e, {
                          key: r,
                          xhr: n,
                          extra: {
                              message: "prepare upload from cache success"
                          },
                          stage: "preUpload",
                          type: "success",
                          percent: 0,
                          cacheTask: a,
                          proxyStsToken: t.options.stsToken,
                          currentTask: 1,
                          status: 1,
                          isBreak: 1,
                          crc32Array: s.crc32Array,
                          stageStartTime: t._st,
                          stageEndTime: Date.now(),
                          duration: Date.now() - t._st,
                          totalDuration: Date.now() - t._st + t.currFileCtx.totalDuration
                      })
                  } catch (e) {
                      return t.startPreUpload()
                  }
                  t.successProcess(i)
              }),
              n.on("error", function(e) {
                  e.status >= 400 ? t.startPreUpload() : t.fail({
                      error: "request error",
                      xhr: e
                  })
              }),
              this.config.userId);
              n.send({
                  method: "get",
                  url: eh.urlTemplate("{tosDomain}/upload/v1/{oid}?uploadid={uploadId}&action=part_list", {
                      tosDomain: e.tosDomain,
                      oid: e.oid,
                      uploadId: e.UploadID
                  }),
                  headers: function(e) {
                      for (var t = 1; t < arguments.length; t++) {
                          var r = null != arguments[t] ? arguments[t] : {};
                          t % 2 ? eN(Object(r), !0).forEach(function(t) {
                              var n, i, o;
                              n = e,
                              i = t,
                              o = r[t],
                              (i = eK(i))in n ? Object.defineProperty(n, i, {
                                  value: o,
                                  enumerable: !0,
                                  configurable: !0,
                                  writable: !0
                              }) : n[i] = o
                          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : eN(Object(r)).forEach(function(t) {
                              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
                          })
                      }
                      return e
                  }({
                      Authorization: e.signature,
                      "X-Storage-U": encodeURIComponent(i)
                  }, e.UploadHeader),
                  timeout: 3e4
              })
          }
      }, {
          key: "confirmCache",
          value: function(e) {
              var t = this.currFileCtx.crc32Array
                , r = {}
                , n = (e.forEach(function(e) {
                  void 0 === r[e.num - 1] && (r[e.num - 1] = {
                      tag: !0,
                      crc32: e.crc32
                  })
              }),
              !0)
                , e = t.map(function(e, t) {
                  return r[t] && r[t].tag && r[t].crc32 ? (e.crc32 = r[t].crc32,
                  e.finished = !0,
                  e.loaded = e.end - e.start) : n = !1,
                  e
              });
              return {
                  isAllFinished: n,
                  crc32Array: e
              }
          }
      }, {
          key: "handleError",
          value: function(e) {
              if ((this.options.type === en && this.config.imageFallbackHost || this.options.type === er && this.config.videoFallbackHost) && !this.uploaderCtx.useBackupDomain)
                  this.hasRetryTime < this.retryTime - 1 ? this.hasRetryTime++ : this.uploaderCtx.useBackupDomain = !0,
                  this.startPreUpload();
              else {
                  var t = {
                      error: "request fail: ".concat(e.statusText || e.errText || "UNKNOWN"),
                      xhr: e
                  };
                  if (e.response)
                      try {
                          var r = JSON.parse(e.response);
                          r.ResponseMetadata && r.ResponseMetadata.Error && (t.errorCode = r.ResponseMetadata.Error.CodeN,
                          t.error = r.ResponseMetadata.Error.Code,
                          t.message = r.ResponseMetadata.Error.Message)
                      } catch (r) {
                          t.error = e.response.toString(),
                          t.message = e.response.toString()
                      }
                  this.fail(t)
              }
          }
      }, {
          key: "success",
          value: function(e) {
              if (e.response) {
                  var t = null;
                  try {
                      var r = JSON.parse(e.response);
                      if (r.ResponseMetadata.Error)
                          return this.fail({
                              xhr: e,
                              errorCode: r.ResponseMetadata.Error.CodeN,
                              error: r.ResponseMetadata.Error.Code,
                              message: r.ResponseMetadata.Error.Message
                          });
                      var n, i, o, s, a, c, u, l = this.serviceName, f = r.Result, p = l === es ? f.UploadAddress : f.InnerUploadAddress.UploadNodes[0], h = p.StoreInfos, d = p.UploadHosts, g = p.SessionKey, y = p.UploadHeader, m = l === es ? d[0] : p.UploadHost, v = null == (n = h[0]) ? void 0 : n.UploadID, b = [], _ = [];
                      this.isImageBatchUpload && 1 < h.length ? h.forEach(function(e) {
                          b.push(e.Auth),
                          _.push(e.StoreUri)
                      }) : (b = h[0].Auth,
                      _ = h[0].StoreUri),
                      "vod" === l && (i = f.InnerUploadAddress.UploadNodes).length && 1 < i.length && (s = {
                          SessionKey: (o = i[1]).SessionKey,
                          UploadHeader: o.UploadHeader,
                          StoreInfo: o.StoreInfos[0],
                          UploadHost: o.UploadHost
                      }),
                      this.startOptions && this.startOptions.enableSelectRoute && (u = !0,
                      this.startOptions.selectRouteResult) && (c = !(((a = this.startOptions.selectRouteResult)[0] && a[0].domainName) !== m)),
                      t = eH(this.currFileCtx, {
                          key: this.options.key,
                          useBackupDomain: this.uploaderCtx.useBackupDomain,
                          signature: b,
                          type: "success",
                          extra: {
                              message: "prepare upload success"
                          },
                          stage: "preUpload",
                          oid: _,
                          systemTimeGap: this.systemTimeGap,
                          tosDomain: "".concat(this.config.schema, "://").concat(m),
                          xhr: e,
                          UploadHeader: void 0 === y ? {} : y,
                          SessionKey: g,
                          UploadID: v,
                          fallbackStoreInfo: s,
                          stageStartTime: this._st,
                          stageEndTime: Date.now(),
                          duration: Date.now() - this._st,
                          totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration,
                          useClientSelectRouteResult: c,
                          enableSelectRoute: u
                      })
                  } catch (t) {
                      return this.fail({
                          error: "catch error: ".concat(t.message || t.toString()),
                          xhr: e
                      })
                  }
                  return this.successProcess(t)
              }
              return this.fail({
                  error: "request fail: ".concat(e.statusText || e.errText || "UNKNOWN"),
                  xhr: e
              })
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = this
                , r = e.xhr
                , n = e.errorCode || 1001e3
                , i = "prepare upload error: UNKNOWN"
                , i = (r && (i = 0 === r.status ? "prepare upload error: NETERROR" : e.message || "prepare upload error: ".concat(r.status)),
              eH(this.currFileCtx, {
                  extra: {
                      message: i,
                      error: e.error,
                      errorCode: n
                  },
                  type: "error",
                  stage: "preUpload",
                  xhr: r,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration
              }));
              this.isImageBatchUpload && (i.successImage = [],
              i.failImage = null == (e = this.currFileCtx) ? void 0 : e.crc32Array.map(function(e, r) {
                  return {
                      crc32: e.crc32,
                      fileSize: null == (e = t.currFileCtx) ? void 0 : e.fileSize[r],
                      fileName: null == (e = t.currFileCtx) ? void 0 : e.fileName[r],
                      finishSize: 0,
                      success: !1
                  }
              })),
              this.uploaderCtx._removeTaskCache(this.options.key),
              this.failProcess(i)
          }
      }],
      eL(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }();
  function eJ(e) {
      return (eJ = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function eQ(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function eX() {
      return (eX = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function e$(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, eZ(n.key), n)
      }
  }
  function eZ(e) {
      return e = function(e, t) {
          if ("object" !== eJ(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== eJ(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === eJ(e) ? e : String(e)
  }
  function eY(e, t) {
      return (eY = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function e0(e) {
      return (e0 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var e1 = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && eY(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = e0(e);
          return function(e, t) {
              if (t && ("object" === eJ(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, e0(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e, t) {
          var r;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (r = s.call(this)).options = e,
          r.config = t,
          r.transport = new ev,
          r.uploaderCtx = e.context,
          r.currFileCtx = e.context.tasks[e.key],
          r.eventInit(),
          r
      }
      return r = a,
      i = [{
          key: "initUpload",
          value: function(e) {
              e && (e = this.currFileCtx.fallbackStoreInfo) && eX(this.currFileCtx, {
                  oid: e.StoreInfo.StoreUri,
                  tosDomain: "".concat(this.config.schema, "://").concat(e.UploadHost),
                  signature: e.StoreInfo.Auth,
                  UploadHeader: e.UploadHeader,
                  SessionKey: e.SessionKey
              });
              var e = {
                  oid: this.currFileCtx.oid,
                  tosDomain: this.currFileCtx.tosDomain
              }
                , e = eh.urlTemplate("{tosDomain}/upload/v1/{oid}?uploadmode=part&phase=init", e)
                , t = this.config.userId;
              this.transport.send({
                  method: "post",
                  url: e,
                  headers: function(e) {
                      for (var t = 1; t < arguments.length; t++) {
                          var r = null != arguments[t] ? arguments[t] : {};
                          t % 2 ? eQ(Object(r), !0).forEach(function(t) {
                              var n, i, o;
                              n = e,
                              i = t,
                              o = r[t],
                              (i = eZ(i))in n ? Object.defineProperty(n, i, {
                                  value: o,
                                  enumerable: !0,
                                  configurable: !0,
                                  writable: !0
                              }) : n[i] = o
                          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : eQ(Object(r)).forEach(function(t) {
                              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
                          })
                      }
                      return e
                  }({
                      Authorization: this.currFileCtx.signature,
                      "X-Storage-U": encodeURIComponent(t)
                  }, this.currFileCtx.UploadHeader),
                  timeout: this.config.gatewayTimeout
              })
          }
      }, {
          key: "start",
          value: function(e, t, r) {
              this.successProcess = t,
              this.failProcess = r,
              this._st = Date.now(),
              this.initUpload(e && e.changeNodeRetry)
          }
      }, {
          key: "eventInit",
          value: function() {
              var e = this;
              this.transport.on("complete", function(t) {
                  var r = null;
                  try {
                      var n, i = JSON.parse(t.response), o = null == (n = i.data) ? void 0 : n.uploadid;
                      if (2e3 !== i.code || !o)
                          return e.fail({
                              error: "fail! response.code: ".concat(i.code, ", fail message: ").concat(i.message),
                              xhr: t,
                              errorCode: null == i ? void 0 : i.code
                          });
                      r = eX(e.currFileCtx, {
                          UploadID: o,
                          percent: 0,
                          type: "success",
                          extra: {
                              message: "init upload id success"
                          },
                          stage: "initUploadID",
                          xhr: t,
                          stageStartTime: e._st,
                          stageEndTime: Date.now(),
                          duration: Date.now() - e._st,
                          totalDuration: Date.now() - e._st + e.currFileCtx.totalDuration
                      })
                  } catch (r) {
                      return e.fail({
                          error: "catch error: ".concat(r.message || JSON.stringify(r)),
                          xhr: t
                      })
                  }
                  return e.successProcess(r)
              }),
              this.transport.on("error", function(t) {
                  e.fail({
                      error: "request fail: ".concat(t.statusText || t.errText || "UNKNOWN"),
                      xhr: t
                  })
              })
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = this.options.context
                , r = this.options.key
                , t = eX(t.tasks[r], {
                  extra: {
                      message: "init upload id error, ".concat(e.error),
                      errorCode: e.errorCode || 1002e3
                  },
                  type: "error",
                  stage: "initUploadID",
                  xhr: e.xhr,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration
              });
              this.uploaderCtx._removeTaskCache(this.options.key),
              this.failProcess(t)
          }
      }],
      e$(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }();
  function e2(e) {
      return (e2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function e3(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function e4(e) {
      for (var t = 1; t < arguments.length; t++) {
          var r = null != arguments[t] ? arguments[t] : {};
          t % 2 ? e3(Object(r), !0).forEach(function(t) {
              var n, i, o;
              n = e,
              i = t,
              o = r[t],
              (i = e6(i))in n ? Object.defineProperty(n, i, {
                  value: o,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : n[i] = o
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : e3(Object(r)).forEach(function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
          })
      }
      return e
  }
  function e5(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, e6(n.key), n)
      }
  }
  function e6(e) {
      return e = function(e, t) {
          if ("object" !== e2(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== e2(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === e2(e) ? e : String(e)
  }
  function e8(e, t) {
      return (e8 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function e7(e) {
      return (e7 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var e9 = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && e8(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = e7(e);
          return function(e, t) {
              if (t && ("object" === e2(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, e7(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e) {
          var t, r = e.sliceItem, n = e.crc32, i = e.url, o = e.signature, c = e.uploadHeader, u = e.userId, l = e.retryTime, f = e.timeout, e = e.method, e = void 0 === e ? "POST" : e;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (t = s.call(this)).fileSlice = r,
          t.crc32 = n,
          t.uploadUrl = i,
          t.uploadHeader = c,
          t.signature = o,
          t.userId = u,
          t.retryTime = l || 0,
          t.method = e,
          t.retryCount = 0,
          t.timeout = f,
          t.ready = !1,
          t.cancel = !1,
          t.transport = new ev,
          t.eventInit(),
          t
      }
      return r = a,
      i = [{
          key: "upload",
          value: function(e, t) {
              this.isParamsValid() && (this._st = Date.now(),
              this.transport && this.transport.send({
                  method: this.method,
                  url: this.uploadUrl,
                  headers: e4({
                      Authorization: this.signature,
                      "Content-CRC32": this.crc32,
                      "X-Storage-U": encodeURIComponent(this.userId)
                  }, this.uploadHeader),
                  file: this.fileSlice,
                  binary: 1,
                  timeout: this.timeout
              }),
              e) && this.emit("retry", t)
          }
      }, {
          key: "isParamsValid",
          value: function() {
              return this.fileSlice && (this.fileSlice.size || this.fileSlice.byteLength) ? this.crc32 ? !!this.uploadUrl || (this.emit("error", {
                  message: "slice upload failed: NOURL",
                  crc32: this.crc32,
                  size: this.fileSlice.size || this.fileSlice.byteLength
              }),
              !1) : (this.emit("error", {
                  message: "slice upload failed: NOCRC32",
                  crc32: this.crc32,
                  size: this.fileSlice.size || this.fileSlice.byteLength
              }),
              !1) : (this.emit("error", {
                  message: "slice upload failed: NOCONTENT",
                  crc32: this.crc32
              }),
              !1)
          }
      }, {
          key: "eventInit",
          value: function() {
              var e = this;
              this.transport.on("complete", function(t) {
                  try {
                      var r = JSON.parse(t.response);
                      2e3 === r.code ? e.success(t) : e.fail(t, r)
                  } catch (r) {
                      e.fail(t)
                  }
              }),
              this.transport.on("error", function(t) {
                  e.fail(t)
              }),
              this.transport.on("progress", function(t) {
                  e.process(t)
              })
          }
      }, {
          key: "success",
          value: function(e) {
              this.ready = !0;
              var t = Date.now() - this._st
                , r = this.fileSlice.size || this.fileSlice.byteLength;
              this.emit("complete", {
                  crc32: this.crc32,
                  size: r,
                  speed: r / t,
                  xhr: e,
                  sliceStartTime: this._st,
                  sliceEndTime: Date.now(),
                  sliceDuration: Date.now() - this._st
              })
          }
      }, {
          key: "fail",
          value: function(e) {
              var t, r, n = this, i = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
              this.cancel || (t = {
                  crc32: this.crc32,
                  size: this.fileSlice.size || this.fileSlice.byteLength,
                  xhr: e,
                  sliceStartTime: this._st,
                  sliceEndTime: Date.now(),
                  sliceDuration: Date.now() - this._st
              },
              e && 401 === e.status ? this.emit("error", e4({
                  message: "slice upload failed: UNAUTHORIZED"
              }, t)) : (r = "slice upload failed: UNKNOWN",
              e && (r = e.status ? "slice upload failed: ".concat((null == i ? void 0 : i.message) || e.status) : "slice upload failed: NETERROR"),
              this.retryCount < this.retryTime ? (setTimeout(function() {
                  n.upload(!0, e4({
                      message: r
                  }, t))
              }, 1e3),
              this.retryCount++) : this.emit("error", e4({
                  message: r,
                  errorCode: null == i ? void 0 : i.code
              }, t))))
          }
      }, {
          key: "process",
          value: function(e) {
              this.cancel || this.emit("progress", {
                  crc32: this.crc32,
                  loaded: e.loaded || 0,
                  total: e.total || 0
              })
          }
      }, {
          key: "abort",
          value: function() {
              this.transport && (this.cancel = !0,
              this.transport.abort())
          }
      }, {
          key: "destroy",
          value: function() {
              this.transport = null
          }
      }],
      e5(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }()
    , $ = r(2)
    , te = r.n($);
  function tt(e) {
      return (tt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tr() {
      return (tr = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tn(e, t) {
      (null == t || t > e.length) && (t = e.length);
      for (var r = 0, n = Array(t); r < t; r++)
          n[r] = e[r];
      return n
  }
  function ti(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== tt(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== tt(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === tt(n) ? n : String(n)), i)
      }
  }
  function to(e, t) {
      return (to = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function ts(e) {
      return (ts = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var ta = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && to(e, t)
      }(c, n.a);
      var e, t, r, o, s, a = (e = c,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = ts(e);
          return function(e, t) {
              if (t && ("object" === tt(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, ts(this).constructor) : r.apply(this, arguments))
      }
      );
      function c(e) {
          var t, r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, c),
          (t = a.call(this)).file = e.file,
          t.context = e.context,
          t.key = e.key,
          t.config = r,
          t.finishArr = [],
          t.errorLength = 0,
          t.finishSize = 0,
          t.retryUploadTime = Number(r.retryUploadTime),
          t.progressMonitorTime = Number(r.progressMonitorTime),
          t.progressMonitorSpeed = Number(r.progressMonitorSpeed),
          t.uploadSliceCount = Number(r.uploadSliceCount),
          t.realtimeSpeedInterval = Number(r.realtimeSpeedInterval),
          t.processRetry = 0,
          t.lastFinishSize = -1,
          t.lastProcessPercent = -1,
          t.lastIntervalSize = -1,
          t.lastCalculateSpeedTime = -1,
          t.lastCalculateSpeedSize = 0,
          t.uploadHandlers = {},
          t
      }
      return r = c,
      o = [{
          key: "start",
          value: function(e, t, r) {
              this.failProcess = r,
              this.successProcess = t,
              this.errorLength = 0,
              this.currentCtx = this.context.tasks[this.key],
              this.crc32Array = this.context.tasks[this.key].crc32Array,
              this.uploadSliceCount = this.uploadSliceCount > this.crc32Array.length ? this.crc32Array.length : this.uploadSliceCount,
              this.lastIndex = 0,
              this.uploading = [],
              this._uploadSize = this.crc32Array.reduce(function(e, t) {
                  return e + (t.finished ? 0 : t.end - t.start)
              }, 0),
              this._st = Date.now(),
              this._lastSaveTime = Date.now(),
              this.lastCalculateSpeedTime = this._st,
              this.initWorker(),
              this.setProgressMonitor(),
              this.threadUpload()
          }
      }, {
          key: "initWorker",
          value: function() {
              var e, t = this;
              this.worker || (e = this.crc32Array,
              this.worker = new te.a,
              this.worker.onmessage = function(r) {
                  var n, i, r = (n = r.data,
                  i = 4,
                  function(e) {
                      if (Array.isArray(e))
                          return e
                  }(n) || function(e, t) {
                      var r = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
                      if (null != r) {
                          var n, i, o, s, a = [], c = !0, u = !1;
                          try {
                              if (o = (r = r.call(e)).next,
                              0 === t) {
                                  if (Object(r) !== r)
                                      return;
                                  c = !1
                              } else
                                  for (; !(c = (n = o.call(r)).done) && (a.push(n.value),
                                  a.length !== t); c = !0)
                                      ;
                          } catch (e) {
                              u = !0,
                              i = e
                          } finally {
                              try {
                                  if (!c && null != r.return && (s = r.return(),
                                  Object(s) !== s))
                                      return
                              } finally {
                                  if (u)
                                      throw i
                              }
                          }
                          return a
                      }
                  }(n, 4) || function(e, t) {
                      var r;
                      if (e)
                          return "string" == typeof e ? tn(e, t) : "Map" === (r = "Object" === (r = Object.prototype.toString.call(e).slice(8, -1)) && e.constructor ? e.constructor.name : r) || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? tn(e, t) : void 0
                  }(n, i) || function() {
                      throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                  }()), o = r[0], s = r[1], a = r[2], r = r[3], c = (new Date).getTime(), u = e[a];
                  u.crc32 = s,
                  u.crc32StartTime = r,
                  u.crc32EndTime = c,
                  u.crc32Duration = c - r,
                  t.upload(u, o, a)
              }
              )
          }
      }, {
          key: "read",
          value: function(e, t) {
              var r = this
                , n = this.file
                , i = n.slice || n.webkitSlice || n.mozSlice
                , o = new FileReader;
              o.onload = function(e) {
                  var n = (new Date).getTime();
                  r.worker.postMessage([e.target.result, t, n, !!r.config.clientEncrypt, r.currentCtx.clientEncryptKey, r.crc32Array.length - 1 === t], [e.target.result])
              }
              ,
              o.onerror = function() {
                  r.stop(),
                  r.fail({
                      extra: {
                          message: "An error occurred reading the file",
                          errorCode: 1003003
                      }
                  })
              }
              ,
              o.readAsArrayBuffer(i.call(n, e.start, e.end))
          }
      }, {
          key: "threadUpload",
          value: function() {
              if (this.uploading.length < this.uploadSliceCount) {
                  var e = this.lastIndex
                    , t = this.crc32Array[e];
                  if (t) {
                      if (t.finished) {
                          if (-1 === this.finishArr.indexOf(t.start) && (this.finishArr.push(t.start),
                          this.finishArr.length >= this.crc32Array.length))
                              return this.stop(),
                              void this.success()
                      } else
                          t.loaded = 0,
                          this.uploading.push(e),
                          this.read(t, e);
                      this.lastIndex++,
                      this.threadUpload()
                  }
              }
          }
      }, {
          key: "stop",
          value: function() {
              var e = this;
              Object.keys(this.uploadHandlers).forEach(function(t) {
                  e.uploadHandlers[t].abort(),
                  e.uploadHandlers[t].destroy()
              }),
              this.uploadHandlers = {},
              this.worker && this.worker.terminate(),
              this.worker = null,
              this.clearMonitor()
          }
      }, {
          key: "setProgressMonitor",
          value: function() {
              var e = this;
              this.progressMonitorInterval = setInterval(function() {
                  var t, r = e.finishSize;
                  r - e.lastIntervalSize < e.progressMonitorTime / 1e3 * e.progressMonitorSpeed * 1024 ? (t = tr(e.currentCtx, {
                      stage: "process",
                      type: "warn",
                      extra: {
                          message: "percent are not updated in ".concat(e.progressMonitorTime, " seconds")
                      }
                  }),
                  e.context.logger.send(t),
                  e.context._broadcast("slowProgress", t),
                  e.clearMonitor()) : e.lastIntervalSize = r
              }, this.progressMonitorTime)
          }
      }, {
          key: "clearMonitor",
          value: function() {
              this.progressMonitorInterval && clearInterval(this.progressMonitorInterval)
          }
      }, {
          key: "upload",
          value: function(e, t, r) {
              var n = this
                , o = e.crc32
                , s = {
                  part_number: r + 1,
                  uploadId: this.currentCtx.UploadID,
                  oid: this.currentCtx.oid,
                  tosDomain: this.currentCtx.tosDomain
              }
                , s = eh.urlTemplate(i, s)
                , a = this.config.userId
                , t = (this.config.clientEncrypt || (t = eh.fileSlice(this.file, e.start, e.end)),
              new e9({
                  sliceItem: t,
                  crc32: o,
                  url: s,
                  signature: this.currentCtx.signature,
                  uploadHeader: this.currentCtx.UploadHeader,
                  userId: a,
                  method: "POST",
                  retryTime: this.retryUploadTime,
                  timeout: this.config.uploadTimeout
              }));
              t.on("complete", function(t) {
                  1 === n.currentCtx.status && (t.start = e.start,
                  t.crc32StartTime = e.crc32StartTime,
                  t.crc32EndTime = e.crc32EndTime,
                  t.crc32Duration = e.crc32Duration,
                  t.index = r,
                  n.fileSliceSuccess(t))
              }),
              t.on("error", function(t) {
                  1 === n.currentCtx.status && (t.start = e.start,
                  t.crc32StartTime = e.crc32StartTime,
                  t.crc32EndTime = e.crc32EndTime,
                  t.crc32Duration = e.crc32Duration,
                  t.index = r,
                  n.fail(t))
              }),
              t.on("progress", function(t) {
                  1 === n.currentCtx.status && (t.start = e.start,
                  t.index = r,
                  n.process(t))
              }),
              t.on("retry", function(t) {
                  1 === n.currentCtx.status && (t.start = e.start,
                  t.index = r,
                  n.retry(t))
              }),
              t.upload(),
              this.uploadHandlers[r] = t
          }
      }, {
          key: "success",
          value: function(e) {
              this.finishArr = [];
              var t = Date.now() - this._st
                , t = this._uploadSize / t
                , t = tr(this.currentCtx, {
                  type: "success",
                  stage: "process",
                  percent: 100,
                  extra: {
                      message: "upload all success"
                  },
                  speed: t,
                  xhr: e,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._lastSaveTime + this.currentCtx.totalDuration,
                  isAllFinish: !0
              });
              this.worker && this.worker.terminate(),
              this.successProcess(t)
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = this.errorFormat(e);
              t.type = "error",
              void 0 !== e.statusCode && tr(this.currentCtx, {
                  statusCode: e.statusCode
              }),
              this.errorLength || (this.context.logger.send(tr({}, t)),
              this.stop(),
              this.context._broadcast("error", t),
              this.currentCtx.isBreak ? this.context._cancel(this.key) : this.context._pause(this.key),
              this.errorLength++)
          }
      }, {
          key: "retry",
          value: function(e) {
              e = this.errorFormat(e),
              this.context.logger.send(tr({}, e, {
                  type: "retry"
              }))
          }
      }, {
          key: "fileSliceSuccess",
          value: function(e) {
              var t, r = e.index, n = Date.now(), i = (-1 === this.finishArr.indexOf(e.start) && this.finishArr.push(e.start),
              this.crc32Array[r].finished = !0,
              this.crc32Array[r].speed = e.speed,
              {
                  message: "slice upload success"
              });
              e.xhr && (t = e.xhr,
              i.currentUrl = t.currentUrl || "",
              tr(this.currentCtx, {
                  req: {
                      url: t.currentUrl,
                      param: t.params
                  },
                  res: {
                      status: t.status,
                      body: t.responseText,
                      header: t.getAllResponseHeaders()
                  }
              }),
              delete e.xhr),
              this.context.logger.send(tr(this.currentCtx, {
                  stage: "process",
                  type: "success",
                  sliceIndex: r,
                  extra: i,
                  totalDuration: n - this._lastSaveTime + this.currentCtx.totalDuration,
                  sliceStartTime: e.sliceStartTime,
                  sliceEndTime: e.sliceEndTime,
                  sliceDuration: e.sliceDuration,
                  crc32StartTime: e.crc32StartTime,
                  crc32EndTime: e.crc32EndTime,
                  crc32Duration: e.crc32Duration
              })),
              this._lastSaveTime = n,
              this.uploading.splice(this.uploading.indexOf(r), 1),
              this.uploadHandlers[r] && delete this.uploadHandlers[r],
              this.finishArr.length >= this.crc32Array.length ? (this.stop(),
              this.success(e.xhr)) : this.threadUpload()
          }
      }, {
          key: "getFinishSize",
          value: function(e, t) {
              var r = t.crc32
                , n = 0;
              return e.forEach(function(e) {
                  e.crc32 === r ? (e.loaded = t.loaded,
                  n += t.loaded) : (e.loaded || (e.loaded = 0),
                  n += e.loaded)
              }),
              n
          }
      }, {
          key: "process",
          value: function(e) {
              var t = this.currentCtx.realtimeSpeed || 0
                , r = this.currentCtx.fileSize
                , n = (this.finishSize = this.getFinishSize(this.crc32Array, e),
              this.finishSize > this.lastFinishSize && ((e = new Date).getTime() - this.lastCalculateSpeedTime > this.realtimeSpeedInterval && (i = e.getTime() - this.lastCalculateSpeedTime,
              t = Math.floor((n = this.finishSize - this.lastCalculateSpeedSize) / i),
              this.lastCalculateSpeedTime = e.getTime(),
              this.lastCalculateSpeedSize = this.finishSize),
              this.lastFinishSize = this.finishSize),
              Math.floor(this.finishSize / r * 100) || 0)
                , i = tr(this.currentCtx, {
                  stage: "process",
                  percent: n,
                  realtimeSpeed: t
              });
              n > this.lastProcessPercent && 100 !== n && (this.lastProcessPercent = n,
              this.context._broadcast("progress", i))
          }
      }, {
          key: "errorFormat",
          value: function(e) {
              var t = this.currentCtx.totalDuration
                , r = Date.now() - this._st
                , n = e.index
                , i = e.crc32 ? {
                  message: e.message,
                  data: e.crc32,
                  size: e.size
              } : e.extra
                , o = (i.errorCode = (null == (o = e.extra) ? void 0 : o.errorCode) || e.errorCode || 1003e3,
              tr(this.currentCtx, {
                  extra: i,
                  sliceIndex: n,
                  stage: "process",
                  req: {},
                  res: {},
                  totalDuration: r + t,
                  sliceStartTime: e.sliceStartTime,
                  sliceEndTime: e.sliceEndTime,
                  sliceDuration: e.sliceDuration,
                  crc32StartTime: e.crc32StartTime,
                  crc32EndTime: e.crc32EndTime,
                  crc32Duration: e.crc32Duration
              }));
              return e.xhr && (i = e.xhr,
              o.req = {
                  url: e.xhr.currentUrl
              },
              o.res = {
                  status: i.status,
                  body: i.responseText,
                  header: i.getAllResponseHeaders()
              },
              delete e.xhr),
              o
          }
      }],
      ti(r.prototype, o),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      c
  }();
  function tc(e) {
      return (tc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tu() {
      return (tu = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tl(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function tf(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, tp(n.key), n)
      }
  }
  function tp(e) {
      return e = function(e, t) {
          if ("object" !== tc(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== tc(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === tc(e) ? e : String(e)
  }
  function th(e, t) {
      return (th = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function td(e) {
      return (td = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var tg = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && th(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = td(e);
          return function(e, t) {
              if (t && ("object" === tc(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, td(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e, t) {
          var r;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (r = s.call(this)).options = e,
          r.config = t,
          r.transport = new ev,
          r.eventInit(),
          r.errorCount = 0,
          r.uploaderCtx = e.context,
          r.currFileCtx = e.context.tasks[e.key],
          r
      }
      return r = a,
      i = [{
          key: "mergeFile",
          value: function() {
              for (var e = {
                  oid: this.currFileCtx.oid,
                  uploadId: this.currFileCtx.UploadID,
                  tosDomain: this.currFileCtx.tosDomain
              }, t = this.currFileCtx.crc32Array, r = "", n = 0; n < t.length; n++)
                  r = (r ? "".concat(r, ",") : "").concat(n + 1, ":").concat(t[n].crc32);
              var e = eh.urlTemplate("{tosDomain}/upload/v1/{oid}?uploadmode=part&phase=finish&uploadid={uploadId}", e)
                , i = this.config.userId
                , i = function(e) {
                  for (var t = 1; t < arguments.length; t++) {
                      var r = null != arguments[t] ? arguments[t] : {};
                      t % 2 ? tl(Object(r), !0).forEach(function(t) {
                          var n, i, o;
                          n = e,
                          i = t,
                          o = r[t],
                          (i = tp(i))in n ? Object.defineProperty(n, i, {
                              value: o,
                              enumerable: !0,
                              configurable: !0,
                              writable: !0
                          }) : n[i] = o
                      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : tl(Object(r)).forEach(function(t) {
                          Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
                      })
                  }
                  return e
              }({
                  Authorization: this.currFileCtx.signature,
                  "X-Storage-U": encodeURIComponent(i)
              }, this.currFileCtx.UploadHeader);
              this.config.clientEncrypt && (i["x-upload-encryption-mode"] = 2,
              i["x-upload-encryption-key"] = btoa(this.currFileCtx.clientEncryptKey)),
              this.transport.send({
                  method: "post",
                  url: e,
                  headers: i,
                  custom: r
              })
          }
      }, {
          key: "start",
          value: function(e, t, r) {
              this.successProcess = t,
              this.failProcess = r,
              this._st = Date.now(),
              this.mergeFile()
          }
      }, {
          key: "eventInit",
          value: function() {
              var e = this
                , t = this.options.stage;
              this.transport.on("complete", function(r) {
                  var n = null;
                  try {
                      var i, o = JSON.parse(r.response);
                      if (2e3 !== o.code || null == (i = o.data) || !i.key)
                          return e.fail({
                              error: "fail! response.code: ".concat(o.code, ", fail message: ").concat(o.message),
                              xhr: r,
                              errorCode: o.code
                          });
                      n = tu(e.currFileCtx, {
                          stage: t,
                          type: "success",
                          hasMerge: !0,
                          extra: {
                              message: "merge file success"
                          },
                          xhr: r,
                          stageStartTime: e._st,
                          stageEndTime: Date.now(),
                          duration: Date.now() - e._st,
                          totalDuration: Date.now() - e._st + e.currFileCtx.totalDuration
                      })
                  } catch (t) {
                      return e.fail({
                          error: "response parse error: ".concat(t.message || JSON.stringify(t)),
                          xhr: r
                      })
                  }
                  return e.successProcess(n)
              }),
              this.transport.on("error", function(t) {
                  e.fail({
                      error: "request fail: ".concat(t.statusText || t.errText),
                      xhr: t
                  })
              })
          }
      }, {
          key: "getProcessIndex",
          value: function(e) {
              var t = 0;
              return e.forEach(function(e, r) {
                  "process" === e.stage && (t = r)
              }),
              t
          }
      }, {
          key: "fail",
          value: function(e) {
              e = tu(this.currFileCtx, {
                  extra: {
                      message: "merge file error, ".concat(e.error),
                      errorCode: e.errorCode || 1004e3
                  },
                  type: "error",
                  stage: this.options.stage,
                  xhr: e.xhr,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration
              }),
              this.failProcess(e)
          }
      }],
      tf(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }();
  function ty(e) {
      return (ty = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tm() {
      return (tm = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tv(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== ty(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== ty(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === ty(n) ? n : String(n)), i)
      }
  }
  function tb(e, t) {
      return (tb = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function t_(e) {
      return (t_ = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var tS = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && tb(e, t)
      }(c, n.a);
      var e, t, r, i, s, a = (e = c,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = t_(e);
          return function(e, t) {
              if (t && ("object" === ty(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, t_(this).constructor) : r.apply(this, arguments))
      }
      );
      function c(e) {
          var t, r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, c),
          (t = a.call(this)).options = e,
          t.file = e.file,
          t.context = e.context,
          t.key = e.key,
          t.isImageBatchUpload = e.isImageBatchUpload,
          t.config = r,
          t.finishArr = [],
          t.errorLength = 0,
          t.finishSize = 0,
          t.retryUploadTime = t.config.retryUploadTime || 0,
          t.processRetry = 0,
          t.lastFinishSize = -1,
          t.lastProcessPercent = -1,
          t.lastIntervalSize = -1,
          t.uploader = {},
          t._uploadProcessMap = {},
          t
      }
      return r = c,
      i = [{
          key: "start",
          value: function(e, t, r) {
              this.failProcess = r,
              this.successProcess = t,
              this.currentCtx = this.context.tasks[this.key],
              this.crc32Array = this.context.tasks[this.key].crc32Array,
              this._uploadSize = this.isImageBatchUpload ? this.currentCtx.fileSize.reduce(function(e, t) {
                  return e + t
              }) : this.file.size,
              this._st = Date.now(),
              this.upload()
          }
      }, {
          key: "stop",
          value: function() {
              var e = this;
              this.uploader && Object.keys(this.uploader).forEach(function(t) {
                  e.uploader[t] && (e.uploader[t].abort(),
                  e.uploader[t].destroy())
              })
          }
      }, {
          key: "upload",
          value: function() {
              for (var e = this, t = this.crc32Array.length, r = 0, n = 0, i = 0; i < t; i++) {
                  var s = this.crc32Array[i]
                    , a = s.buffer
                    , s = s.crc32
                    , c = this.currentCtx.signature
                    , c = "[object Array]" === Object.prototype.toString.call(c) ? c[i] : c
                    , u = this.currentCtx.oid
                    , u = "[object Array]" === Object.prototype.toString.call(u) ? u[i] : u
                    , l = {
                      oid: u,
                      tosDomain: this.currentCtx.tosDomain
                  }
                    , l = eh.urlTemplate(o, l)
                    , f = this.config.userId
                    , p = void 0
                    , h = this.isImageBatchUpload ? (p = this.currentCtx.fileSize[i],
                  this.currentCtx.fileName[i]) : (p = this.file.size,
                  this.file.name);
                  this._uploadProcessMap[s] && this._uploadProcessMap[s].success ? r += 1 : (this._uploadProcessMap[s] = {
                      crc32: s,
                      fileSize: p,
                      fileName: h,
                      oid: u,
                      finishSize: 0,
                      success: !1
                  },
                  (p = new e9({
                      sliceItem: a,
                      crc32: s,
                      url: l,
                      signature: c,
                      uploadHeader: this.currentCtx.UploadHeader,
                      userId: f,
                      retryTime: this.retryUploadTime,
                      method: "POST",
                      timeout: this.config.uploadTimeout
                  })).on("complete", function(i) {
                      r++,
                      e._uploadProcessMap[i.crc32].finishSize = i.size,
                      e._uploadProcessMap[i.crc32].success = !0,
                      n + r === t && e.success(i.xhr)
                  }),
                  p.on("error", function(r) {
                      ++n === t && e.fail(r)
                  }),
                  p.on("progress", function(t) {
                      e.process(t)
                  }),
                  p.upload(),
                  this.uploader[s] = p)
              }
          }
      }, {
          key: "success",
          value: function(e) {
              this.finishArr = [];
              var t = Date.now() - this._st
                , t = this._uploadSize / t
                , r = tm(this.currentCtx, {
                  type: "success",
                  stage: "process",
                  percent: 99,
                  extra: {
                      message: "direct upload success"
                  },
                  speed: t,
                  xhr: e,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currentCtx.totalDuration
              });
              this.isImageBatchUpload && (r.successImage = [],
              r.failImage = [],
              Object.values(this._uploadProcessMap).forEach(function(e) {
                  (e.success ? r.successImage : r.failImage).push(e)
              })),
              this.uploader = null,
              this._uploadProcessMap = null,
              this.successProcess(r)
          }
      }, {
          key: "fail",
          value: function(e) {
              e = tm(this.currentCtx, {
                  extra: {
                      message: "direct upload error: ".concat(e.message || e.xhr.errText),
                      errorCode: e.errorCode || 1003e3
                  },
                  type: "error",
                  stage: "process",
                  xhr: e.xhr,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currentCtx.totalDuration
              }),
              this.isImageBatchUpload && (e.failImage = Object.values(this._uploadProcessMap)),
              this.uploader = null,
              this._uploadProcessMap = null,
              this.failProcess(e)
          }
      }, {
          key: "process",
          value: function(e) {
              var t = this._uploadSize
                , e = (this._uploadProcessMap[e.crc32].finishSize = Math.max(this._uploadProcessMap[e.crc32].finishSize, e.loaded),
              this.finishSize = Object.values(this._uploadProcessMap).reduce(function(e, t) {
                  return e + t.finishSize
              }, 0),
              this.finishSize > this.lastFinishSize && (this.lastFinishSize = this.finishSize),
              Math.floor(this.finishSize / t * 100) || 0)
                , t = tm(this.currentCtx, {
                  stage: "process",
                  percent: e
              });
              e > this.lastProcessPercent && 100 !== e && (this.lastProcessPercent = e,
              this.context._broadcast("progress", t))
          }
      }],
      tv(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      c
  }();
  function tx(e) {
      return (tx = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tw() {
      return (tw = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tk(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== tx(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== tx(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === tx(n) ? n : String(n)), i)
      }
  }
  function tE(e, t) {
      return (tE = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function tO(e) {
      return (tO = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var tT = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && tE(e, t)
      }(c, n.a);
      var e, t, r, o, s, a = (e = c,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = tO(e);
          return function(e, t) {
              if (t && ("object" === tx(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, tO(this).constructor) : r.apply(this, arguments))
      }
      );
      function c(e) {
          var t, r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, c),
          (t = a.call(this)).options = e,
          t.file = e.file,
          t.context = e.context,
          t.key = e.key,
          t.config = r,
          t.errorLength = 0,
          t.retryUploadTime = Number(r.retryUploadTime),
          t.maxUploadSliceCount = Number(r.uploadSliceCount),
          t.uploadQueue = [],
          t.crc32Array = [],
          t.uploadSliceCount = 0,
          t.isCalcCrc32 = !1,
          t.isFileReading = !1,
          t.hasStarted = !1,
          t.hasCompleteUpload = !1,
          t
      }
      return r = c,
      o = [{
          key: "start",
          value: function(e, t, r) {
              this.failProcess = r,
              this.successProcess = t,
              this.currentCtx = this.context.tasks[this.key],
              this.hasStarted = !0,
              this._st = Date.now(),
              this.initWorker()
          }
      }, {
          key: "initWorker",
          value: function() {
              var e = this;
              this.worker || (this.worker = new te.a,
              this.worker.onmessage = function(t) {
                  e.isCalcCrc32 = !1;
                  var r = t.data[0]
                    , n = t.data[2]
                    , i = t.data[1];
                  e.uploadQueue.forEach(function(t, o) {
                      t.index === n && (e.uploadQueue[o].crc32 = i,
                      e.uploadQueue[o].fileSliceBuffer = r,
                      e.crc32Array[n] = {
                          crc32: i
                      })
                  }),
                  e.startUploadQueue()
              }
              ,
              this.startUploadQueue())
          }
      }, {
          key: "addStreamSlice",
          value: function(e) {
              var t = this
                , r = e.fileSlice
                , n = e.index
                , e = (this.isFileReading = !0,
              new FileReader);
              e.readAsArrayBuffer(r),
              e.onload = function(e) {
                  t.isFileReading = !1,
                  e = e.target.result,
                  t.uploadQueue.push({
                      fileSliceBuffer: e,
                      index: n
                  }),
                  t.hasStarted && t.startUploadQueue()
              }
          }
      }, {
          key: "completeStreamUpload",
          value: function() {
              this.hasCompleteUpload = !0,
              0 !== this.uploadQueue.length || this.isFileReading || this.success()
          }
      }, {
          key: "startUploadQueue",
          value: function() {
              var e;
              this.uploadSliceCount <= this.maxUploadSliceCount && 0 < this.uploadQueue.length && this.uploadQueue[0].crc32 ? (e = this.uploadQueue.shift(),
              this.uploadSliceCount++,
              this.upload({
                  sliceItem: e.fileSliceBuffer,
                  index: e.index,
                  crc32: e.crc32
              })) : 0 < this.uploadQueue.length && !this.uploadQueue[0].crc32 && this.startCrc32Queue()
          }
      }, {
          key: "startCrc32Queue",
          value: function() {
              if (!this.isCalcCrc32)
                  for (var e = 0; e < this.uploadQueue.length; e++) {
                      var t = this.uploadQueue[e];
                      if (!t.crc32) {
                          this.isCalcCrc32 = !0,
                          this.worker.postMessage([t.fileSliceBuffer, t.index], [t.fileSliceBuffer]);
                          break
                      }
                  }
          }
      }, {
          key: "upload",
          value: function(e) {
              var t = this
                , r = e.sliceItem
                , n = e.index
                , e = e.crc32
                , o = this.currentCtx.signature
                , s = {
                  part_number: n + 1,
                  uploadId: this.currentCtx.UploadID,
                  oid: this.currentCtx.oid,
                  tosDomain: this.currentCtx.tosDomain
              }
                , s = eh.urlTemplate(i, s)
                , a = this.config.userId
                , r = new e9({
                  sliceItem: r,
                  crc32: e,
                  url: s,
                  signature: o,
                  uploadHeader: this.currentCtx.UploadHeader,
                  userId: a,
                  retryTime: this.retryUploadTime,
                  method: "POST",
                  timeout: this.config.uploadTimeout
              });
              r.on("complete", function(e) {
                  1 === t.currentCtx.status && (e.index = n,
                  t.fileSliceSuccess(e))
              }),
              r.on("error", function(e) {
                  1 === t.currentCtx.status && (e.index = n,
                  t.fail(e))
              }),
              r.upload()
          }
      }, {
          key: "fileSliceSuccess",
          value: function(e) {
              var t = e.index
                , r = Date.now()
                , n = {
                  message: "stream slice upload success"
              }
                , i = (e.xhr && (i = e.xhr,
              n.currentUrl = i.currentUrl || "",
              tw(this.currentCtx, {
                  req: {
                      url: i.currentUrl,
                      param: i.params
                  },
                  res: {
                      status: i.status,
                      body: i.responseText,
                      header: i.getAllResponseHeaders()
                  }
              }),
              delete e.xhr),
              this.context.logger.send(tw(this.currentCtx, {
                  stage: "process",
                  type: "success",
                  sliceIndex: t,
                  extra: n,
                  totalDuration: r - this._lastSaveTime + this.currentCtx.totalDuration
              })),
              tw(this.currentCtx, {
                  uploadQueueLength: this.uploadQueue.length,
                  sliceIndex: t
              }));
              this.context._broadcast("stream-progress", i),
              this.uploadSliceCount--,
              this.hasCompleteUpload && 0 === this.uploadQueue.length ? this.success(e.xhr) : this.startUploadQueue()
          }
      }, {
          key: "success",
          value: function(e) {
              this.isAllSuccess || (e = tw(this.currentCtx, {
                  type: "success",
                  stage: "process",
                  percent: 100,
                  extra: {
                      message: "all slice upload success"
                  },
                  crc32Array: this.crc32Array,
                  xhr: e,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currentCtx.totalDuration
              }),
              this.successProcess(e))
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = e.index
                , e = tw(this.currentCtx, {
                  extra: {
                      message: "stream slice upload error"
                  },
                  type: "error",
                  stage: "process",
                  xhr: e.xhr,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currentCtx.totalDuration,
                  sliceIndex: t
              });
              this.context.logger.send(tw({}, e)),
              this.context._broadcast("error", e)
          }
      }],
      tk(r.prototype, o),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      c
  }();
  function tC(e) {
      return (tC = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tD(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function tj(e) {
      for (var t = 1; t < arguments.length; t++) {
          var r = null != arguments[t] ? arguments[t] : {};
          t % 2 ? tD(Object(r), !0).forEach(function(t) {
              var n, i, o;
              n = e,
              i = t,
              o = r[t],
              (i = tz(i))in n ? Object.defineProperty(n, i, {
                  value: o,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : n[i] = o
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : tD(Object(r)).forEach(function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
          })
      }
      return e
  }
  function tI() {
      return (tI = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tP(e, t) {
      return function(e) {
          if (Array.isArray(e))
              return e
      }(e) || function(e, t) {
          var r = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
          if (null != r) {
              var n, i, o, s, a = [], c = !0, u = !1;
              try {
                  if (o = (r = r.call(e)).next,
                  0 === t) {
                      if (Object(r) !== r)
                          return;
                      c = !1
                  } else
                      for (; !(c = (n = o.call(r)).done) && (a.push(n.value),
                      a.length !== t); c = !0)
                          ;
              } catch (e) {
                  u = !0,
                  i = e
              } finally {
                  try {
                      if (!c && null != r.return && (s = r.return(),
                      Object(s) !== s))
                          return
                  } finally {
                      if (u)
                          throw i
                  }
              }
              return a
          }
      }(e, t) || function(e, t) {
          var r;
          if (e)
              return "string" == typeof e ? tA(e, t) : "Map" === (r = "Object" === (r = Object.prototype.toString.call(e).slice(8, -1)) && e.constructor ? e.constructor.name : r) || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? tA(e, t) : void 0
      }(e, t) || function() {
          throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
      }()
  }
  function tA(e, t) {
      (null == t || t > e.length) && (t = e.length);
      for (var r = 0, n = Array(t); r < t; r++)
          n[r] = e[r];
      return n
  }
  function tR(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, tz(n.key), n)
      }
  }
  function tz(e) {
      return e = function(e, t) {
          if ("object" !== tC(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== tC(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === tC(e) ? e : String(e)
  }
  function tB(e, t) {
      return (tB = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function tU(e) {
      return (tU = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var tM = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && tB(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = tU(e);
          return function(e, t) {
              if (t && ("object" === tC(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, tU(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e, t) {
          var r;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (r = s.call(this)).options = e,
          r.config = t,
          r.uploaderCtx = e.context,
          r.currFileCtx = e.context.tasks[e.key],
          r.isImageBatchUpload = !!r.options.isImageBatchUpload,
          r.skipCommit = e.skipCommit,
          r.transport = new ev,
          r.eventInit(),
          r
      }
      return r = a,
      i = [{
          key: "commitUpload",
          value: function() {
              var e, t, r = this.config.region, n = "", i = {}, o = this.uploaderCtx.useBackupDomain, s = eG.checkServiceName(this.options.type, this.config, this.options.serviceType), o = (s === es && (n = o ? this.config.imageFallbackHost : this.config.imageHost,
              i = (t = tP(this.createImageXParams(), 3))[0],
              e = t[1],
              t = t[2]),
              "vod" === s && (n = o ? this.config.videoFallbackHost : this.config.videoHost,
              i = (o = tP(this.createVodParams(), 3))[0],
              e = o[1],
              t = o[2]),
              this.config.accountId && (i["X-Account-Id"] = this.config.accountId),
              this.config.openExperiment && (i.app_id = this.config.appId,
              i.user_id = this.config.userId),
              eh.toQueryString(i)), a = this.currFileCtx.proxyStsToken || this.config.stsToken, c = a.AccessKeyID, u = a.AccessKeyId, l = a.SecretAccessKey, a = a.SessionToken, o = {
                  method: "POST",
                  url: "".concat(n, "?").concat(o),
                  timeout: this.config.gatewayTimeout,
                  region: r,
                  params: i,
                  headers: {},
                  pathname: eh.getPathByURL(n)
              }, r = (o.custom = t,
              o.body = e,
              s === es && (o.headers["Content-Type"] = "application/json"),
              new eb.a(o,s)), i = this.currFileCtx.systemTimeGap, n = i ? new Date((new Date).getTime() + i) : new Date;
              r.addAuthorization({
                  accessKeyId: u || c,
                  secretAccessKey: l,
                  sessionToken: a
              }, n),
              this.transport.send(o)
          }
      }, {
          key: "createImageXParams",
          value: function() {
              var e = {
                  Action: "CommitImageUpload",
                  Version: "2018-08-01"
              }
                , t = {
                  SessionKey: this.currFileCtx.SessionKey
              }
                , r = (this.options.type === en && (this.config.imageConfig && this.config.imageConfig.serviceId ? e.ServiceId = this.config.imageConfig.serviceId : e.SpaceName = this.config.videoConfig && this.config.videoConfig.spaceName,
              Array.isArray(r = this.config.imageConfig && this.config.imageConfig.processAction) && 0 < r.length && (t.Functions = r),
              this.config.skipMeta) && (e.SkipMeta = !0),
              this.options.type === ei && (e.ServiceId = this.config.objectConfig && this.config.objectConfig.serviceId || this.config.imageConfig && this.config.imageConfig.serviceId),
              JSON.stringify(t));
              return [e, t, r]
          }
      }, {
          key: "createVodParams",
          value: function() {
              var e = null == (e = this.config.videoConfig) ? void 0 : e.spaceName
                , t = {
                  Action: "CommitUploadInner",
                  Version: "2020-11-19",
                  SpaceName: e = this.options.type === ei && null != (t = this.config.objectConfig) && t.spaceName ? null == (t = this.config.objectConfig) ? void 0 : t.spaceName : e
              }
                , e = {
                  SessionKey: this.currFileCtx.SessionKey,
                  Functions: []
              }
                , r = this.config.videoConfig && this.config.videoConfig.processAction
                , n = (this.options.type === ei && null != (n = this.config.objectConfig) && n.processAction && (r = null == (n = this.config.objectConfig) ? void 0 : n.processAction),
              Array.isArray(r) && 0 < r.length && (e.Functions = r),
              (this.config.videoConfig && this.config.videoConfig.callbackArgs || this.options.callbackArgs) && (e.CallbackArgs = this.options.callbackArgs || this.config.videoConfig.callbackArgs),
              this.options.type === er && this.config.skipDownload && (t.SkipDownload = !0),
              this.options.type === ei && this.options.objectSync && (e.ObjectSync = this.options.objectSync),
              this.options.type === er && this.options.needExactFormat && (e.needExactFormat = this.options.needExactFormat),
              JSON.stringify(e));
              return [t, e, n]
          }
      }, {
          key: "start",
          value: function(e, t, r) {
              if (this.successProcess = t,
              this.failProcess = r,
              this._st = Date.now(),
              this.skipCommit)
                  return this.successProcess(tI(this.currFileCtx, {
                      stage: "complete",
                      type: "success",
                      percent: 100,
                      extra: {
                          message: "upload successful, skip commit"
                      },
                      stageStartTime: this._st,
                      stageEndTime: Date.now(),
                      duration: Date.now() - this._st,
                      totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration,
                      skipCommit: this.skipCommit
                  }));
              try {
                  this.commitUpload()
              } catch (e) {
                  this.fail({
                      error: "catch error: ".concat(e.toString())
                  })
              }
          }
      }, {
          key: "eventInit",
          value: function() {
              var e = this;
              this.transport.on("complete", function(t) {
                  var r = null;
                  try {
                      var n = JSON.parse(t.response);
                      if (n.ResponseMetadata.Error)
                          return e.fail({
                              xhr: t,
                              errorCode: n.ResponseMetadata.Error.CodeN,
                              error: n.ResponseMetadata.Error.Code,
                              message: n.ResponseMetadata.Error.Message
                          });
                      var i, o, s = eG.checkServiceName(e.options.type, e.config, e.options.serviceType), a = n.Result, c = {};
                      s === es ? e.isImageBatchUpload ? (i = a.Results,
                      o = a.PluginResult || [],
                      i.forEach(function(e, t) {
                          i[t] = tj(tj({}, i[t]), o[t])
                      }),
                      c = i) : tI(c = a.Results[0], a.PluginResult && a.PluginResult[0]) : c = a.Results[0],
                      r = tI(e.currFileCtx, {
                          stage: "complete",
                          type: "success",
                          percent: 100,
                          extra: {
                              message: "upload successful"
                          },
                          uploadResult: c,
                          xhr: t,
                          stageStartTime: e._st,
                          stageEndTime: Date.now(),
                          duration: Date.now() - e._st,
                          totalDuration: Date.now() - e._st + e.currFileCtx.totalDuration,
                          skipCommit: e.skipCommit
                      })
                  } catch (r) {
                      return e.fail({
                          error: "catch error: ".concat(r.message || r.toString()),
                          xhr: t
                      })
                  }
                  return e.successProcess(r)
              }),
              this.transport.on("error", function(t) {
                  var r = {
                      error: "request fail: ".concat(t.statusText || t.errText || "UNKNOWN"),
                      xhr: t
                  };
                  if (t.response)
                      try {
                          var n = JSON.parse(t.response);
                          n.ResponseMetadata && n.ResponseMetadata.Error && (r.errorCode = n.ResponseMetadata.Error.CodeN,
                          r.error = n.ResponseMetadata.Error.Code,
                          r.message = n.ResponseMetadata.Error.Message)
                      } catch (e) {
                          r.error = t.response.toString(),
                          r.message = t.response.toString()
                      }
                  e.fail(r)
              })
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = e.xhr
                , r = e.errorCode || 1005e3
                , n = "commit upload error: UNKNOWN"
                , n = (t && (n = 0 === t.status ? "commit upload error: NETERROR" : e.message || "commit upload error: ".concat(t.status)),
              tI(this.currFileCtx, {
                  extra: {
                      message: n,
                      error: e.error,
                      errorCode: r
                  },
                  type: "error",
                  stage: "complete",
                  xhr: t,
                  stageStartTime: this._st,
                  stageEndTime: Date.now(),
                  duration: Date.now() - this._st,
                  totalDuration: Date.now() - this._st + this.currFileCtx.totalDuration,
                  skipCommit: this.skipCommit
              }));
              this.failProcess(n)
          }
      }],
      tR(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }();
  function tG(e) {
      return (tG = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tF(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function tN(e) {
      for (var t = 1; t < arguments.length; t++) {
          var r = null != arguments[t] ? arguments[t] : {};
          t % 2 ? tF(Object(r), !0).forEach(function(t) {
              var n, i, o;
              n = e,
              i = t,
              o = r[t],
              (i = tK(i))in n ? Object.defineProperty(n, i, {
                  value: o,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : n[i] = o
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : tF(Object(r)).forEach(function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
          })
      }
      return e
  }
  function tH() {
      return (tH = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tL(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, tK(n.key), n)
      }
  }
  function tK(e) {
      return e = function(e, t) {
          if ("object" !== tG(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== tG(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === tG(e) ? e : String(e)
  }
  function tq(e, t) {
      return (tq = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function tV(e) {
      return (tV = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var tW = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && tq(e, t)
      }(a, n.a);
      var e, t, r, i, o, s = (e = a,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = tV(e);
          return function(e, t) {
              if (t && ("object" === tG(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, tV(this).constructor) : r.apply(this, arguments))
      }
      );
      function a(e, t, r, n) {
          var i;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, a),
          (i = s.call(this, e)).tasks = e,
          i.config = t,
          i.key = n,
          i.uploaderCtx = r,
          i.current = 0,
          i.length = i.tasks.length,
          i.taskError = {},
          i.uploadList = [],
          i.retryTaskTime = t.retryTaskTime,
          i
      }
      return r = a,
      i = [{
          key: "start",
          value: function(e) {
              var t = this.tasks.shift();
              t && (this.current = t.index,
              this.execTask(t, e))
          }
      }, {
          key: "execTask",
          value: function(e, t) {
              var r, n, i = this, o = e.key, s = this.uploaderCtx, a = s.tasks[o];
              a && (r = a.cacheTask,
              n = s.taskList[o].length,
              r && 0 < e.index && e.index < r ? this.start() : (a.currentTask = e.index,
              1 === a.status && (1 !== e.index && "initUploadID" !== e.stage || (e.arg = tH(e.arg, t)),
              e) && e.func.call(e.context, e.arg, function(r) {
                  var c;
                  s.taskList[o] && ((c = s.taskList[o][e.index + 1]) && 0 !== e.index && !a.isDirect && i.config.enableDiskBreakpoint ? s._saveTask(o, {
                      currentTask: c.index,
                      stage: c.stage
                  }) : e.index === n - 1 && s._removeTaskCache(o),
                  i.success(r),
                  0 < i.tasks.length ? i.start(t) : s._queueSuccess(o))
              }, function(r) {
                  var n;
                  r.xhr && r.xhr.status >= 400 || 3 === e.index && r.isDirect ? i.fail(r) : !i.taskError[o] || i.taskError[o] < i.retryTaskTime ? (i.taskError[o] ? i.taskError[o]++ : i.taskError[o] = 1,
                  n = i.errorFormat(r, !0),
                  i.uploaderCtx.logger.send(n),
                  "initUploadID" === e.stage ? i.execTask(e, tN(tN({}, t), {}, {
                      changeNodeRetry: !0
                  })) : i.execTask(e, t)) : (r.key = o,
                  i.fail(r))
              })))
          }
      }, {
          key: "addTask",
          value: function(e) {
              this.tasks.push(e)
          }
      }, {
          key: "success",
          value: function(e) {
              var t;
              e.xhr && (t = e.xhr,
              e.req = {
                  url: t.currentUrl,
                  param: t.params
              },
              e.res = {
                  status: t.status,
                  header: t.getAllResponseHeaders(),
                  body: t.responseText
              },
              delete e.xhr),
              tH(e, {
                  type: "success"
              });
              try {
                  this.uploaderCtx._broadcast(e.stage, e)
              } catch (e) {
                  console.error(e)
              }
              this.uploaderCtx.logger.send(e)
          }
      }, {
          key: "fail",
          value: function(e) {
              var t = this.uploaderCtx
                , r = e.key
                , e = this.errorFormat(e);
              try {
                  t._broadcast("error", e)
              } catch (e) {}
              t.tasks[r].isBreak ? t._cancel(r) : t._pause(r),
              t.logger.send(e)
          }
      }, {
          key: "cancel",
          value: function(e) {
              var t, r = this.key, n = this.uploaderCtx.tasks[r].currentTask;
              this.uploaderCtx.taskList[r].forEach(function(e) {
                  n === e.index && (t = e)
              }),
              e ? 3 === n && this.uploaderCtx.tasks[r].isDirect && t && null != (e = t) && null != (e = e.context) && e.stop() : (this.tasks = [],
              t && 3 === t.index && t.context.stop(),
              this.uploaderCtx._removeTaskCache(r))
          }
      }, {
          key: "restart",
          value: function() {
              this.uploadList.forEach(function(e) {
                  e.cancel = !1
              }),
              this.start()
          }
      }, {
          key: "errorFormat",
          value: function(e, t) {
              var r, t = {
                  type: t ? "retry" : "error"
              };
              return e.xhr && (r = e.xhr,
              e.req = {
                  url: r.currentUrl,
                  param: r.params
              },
              e.res = {
                  status: r.status,
                  header: r.getAllResponseHeaders(),
                  body: r.responseText
              },
              e.extra && (e.extra.req = e.req,
              e.extra.res = e.res),
              delete e.xhr),
              tH(e, t)
          }
      }],
      tL(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      a
  }();
  function tJ(e) {
      return (tJ = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function tQ() {
      return (tQ = Object.assign ? Object.assign.bind() : function(e) {
          for (var t = 1; t < arguments.length; t++) {
              var r, n = arguments[t];
              for (r in n)
                  Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
      }
      ).apply(this, arguments)
  }
  function tX(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n, i = t[r];
          i.enumerable = i.enumerable || !1,
          i.configurable = !0,
          "value"in i && (i.writable = !0),
          Object.defineProperty(e, (n = function(e, t) {
              if ("object" !== tJ(e) || null === e)
                  return e;
              var r = e[Symbol.toPrimitive];
              if (void 0 === r)
                  return ("string" === t ? String : Number)(e);
              if (r = r.call(e, t || "default"),
              "object" !== tJ(r))
                  return r;
              throw TypeError("@@toPrimitive must return a primitive value.")
          }(n = i.key, "string"),
          "symbol" === tJ(n) ? n : String(n)), i)
      }
  }
  function t$(e, t) {
      return (t$ = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function tZ(e) {
      if (void 0 === e)
          throw ReferenceError("this hasn't been initialised - super() hasn't been called");
      return e
  }
  function tY(e) {
      return (tY = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var t0 = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && t$(e, t)
      }(c, n.a);
      var e, t, r, i, o, a = (e = c,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = tY(e);
          return function(e, t) {
              if (t && ("object" === tJ(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return tZ(e)
          }(this, t ? Reflect.construct(r, arguments, tY(this).constructor) : r.apply(this, arguments))
      }
      );
      function c(e) {
          var t;
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, c),
          (t = a.call(this, e)).config = tQ({}, s),
          t._mergeOptions(t.config, e),
          t.tasks = {},
          t.taskList = {},
          t.cache = {},
          t.storage = eh.storage(tZ(t), t.config.enableDiskBreakpoint),
          t.logger = t.config.noLog ? {
              send: function() {
                  return !0
              }
          } : new el(t.config,tZ(t)),
          t
      }
      return r = c,
      i = [{
          key: "_mergeOptions",
          value: function(e, t) {
              t && "object" === tJ(t) && (tQ(e, t),
              Object.keys(t).forEach(function(r) {
                  "vodDomain" === r && (e.replace[r] = t[r])
              }))
          }
      }, {
          key: "_setCache",
          value: function(e, t) {
              this.storage.setItem(e, t)
          }
      }, {
          key: "_getCache",
          value: function(e) {
              return this.storage.getItem(e)
          }
      }, {
          key: "_removeCache",
          value: function(e) {
              e ? this.storage.removeItem(e) : this.storage.clear()
          }
      }, {
          key: "_addTask",
          value: function(e, t) {
              var r = this.tasks
                , n = this.taskList;
              r[e] && r[e].task ? n[e].push(t) : (n[e] = [],
              n[e].push(t),
              r[e] = r[e] || {},
              r[e].task = new tW([],this.config,this,e)),
              r[e].task.addTask(t)
          }
      }, {
          key: "_broadcast",
          value: function(e, t, r) {
              (r || 1 === (r = this.tasks[t.key].status) || 0 === r) && this.emit(e, t)
          }
      }, {
          key: "_addCrc32ProcessTask",
          value: function(e, t) {
              var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}
                , n = r.isDirect
                , r = r.isImageBatchUpload
                , e = new eM({
                  file: e.file,
                  context: this,
                  key: t,
                  isDirect: n,
                  isImageBatchUpload: void 0 !== r && r
              },this.config)
                , n = {
                  context: e,
                  func: e.start,
                  arg: {},
                  key: t,
                  index: 0,
                  stage: "crc32"
              };
              this._addTask(t, n)
          }
      }, {
          key: "_addPreUploadTask",
          value: function(e, t) {
              var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}
                , n = r.isDirect
                , r = r.isImageBatchUpload
                , n = {
                  file: e.file,
                  stsToken: e.stsToken,
                  context: this,
                  type: e.type || er,
                  preUploadUriParams: e.preUploadUriParams || {},
                  storeKey: e.storeKey,
                  testHost: e.testHost,
                  key: t,
                  isDirect: n,
                  isImageBatchUpload: void 0 !== r && r,
                  fileSize: e.fileSize,
                  serviceType: e.serviceType || null,
                  fileExtension: e.fileExtension
              }
                , r = new eW(n,this.config)
                , e = {
                  context: r,
                  func: r.start,
                  arg: {},
                  key: t,
                  index: 1,
                  stage: "preUpload"
              };
              this._addTask(t, e)
          }
      }, {
          key: "_addDirectUploadTask",
          value: function(e, t) {
              var r = (2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).isImageBatchUpload
                , e = new tS({
                  file: e.file,
                  context: this,
                  key: t,
                  isImageBatchUpload: void 0 !== r && r
              },this.config)
                , r = {
                  context: e,
                  func: e.start,
                  arg: {},
                  key: t,
                  index: 3,
                  stage: "process"
              };
              this._addTask(t, r)
          }
      }, {
          key: "_addInitUploadIDTask",
          value: function(e, t) {
              e = {
                  context: e = new e1({
                      file: e.file,
                      context: this,
                      key: t
                  },this.config),
                  func: e.start,
                  arg: {},
                  key: t,
                  index: 2,
                  stage: "initUploadID"
              },
              this._addTask(t, e)
          }
      }, {
          key: "_addUploadProcessTask",
          value: function(e, t) {
              e = {
                  context: e = new ta({
                      file: e.file,
                      context: this,
                      key: t
                  },this.config),
                  func: e.start,
                  arg: {},
                  key: t,
                  index: 3,
                  stage: "process"
              },
              this._addTask(t, e)
          }
      }, {
          key: "_addStreamUploadTask",
          value: function(e, t) {
              this.streamUploadTask = new tT({
                  context: this,
                  key: t
              },this.config);
              var r = {
                  context: this.streamUploadTask,
                  func: this.streamUploadTask.start,
                  arg: {},
                  key: t,
                  index: 3,
                  stage: "process"
              };
              this._addTask(t, r)
          }
      }, {
          key: "_mergeFileTask",
          value: function(e, t) {
              e = {
                  context: e = new tg({
                      file: e.file,
                      context: this,
                      stage: "fileMerge",
                      key: t
                  },this.config),
                  func: e.start,
                  arg: {},
                  key: t,
                  index: 4,
                  stage: "fileMerge"
              },
              this._addTask(t, e)
          }
      }, {
          key: "_getMetaInfoTask",
          value: function(e, t) {
              var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}
                , n = r.isImageBatchUpload
                , r = r.skipCommit
                , n = {
                  file: e.file,
                  context: this,
                  data: e.data,
                  type: e.type || er,
                  callbackArgs: e.callbackArgs,
                  objectSync: e.objectSync,
                  needExactFormat: e.needExactFormat,
                  key: t,
                  isImageBatchUpload: void 0 !== n && n,
                  skipCommit: void 0 !== r && r,
                  serviceType: e.serviceType || null
              }
                , r = new tM(n,this.config)
                , e = {
                  context: r,
                  func: r.start,
                  arg: {},
                  key: t,
                  index: 5,
                  stage: "complete"
              };
              this._addTask(t, e)
          }
      }, {
          key: "_addAllUploadProcess",
          value: function(e, t) {
              var r = e.type === en && "[object Array]" === Object.prototype.toString.call(e.file)
                , n = (this.tasks[t] = this.tasks[t] || {},
              this.tasks[t].fileType = e.type || er,
              this.tasks[t].fileSize = e.file && e.file.size,
              this.tasks[t].proxyStsToken = e.stsToken,
              this.lastStsToken = e.stsToken,
              this.lastFile = e.file,
              e.file.size <= eh.getFileSliceLength(e.file) || r)
                , n = (e.useDirectUpload && (n = !0),
              this._addCrc32ProcessTask(e, t, {
                  isDirect: n,
                  isImageBatchUpload: r
              }),
              this._addPreUploadTask(e, t, {
                  isDirect: n,
                  isImageBatchUpload: r
              }),
              n ? this._addDirectUploadTask(e, t, {
                  isImageBatchUpload: r
              }) : (this._addInitUploadIDTask(e, t),
              this._addUploadProcessTask(e, t),
              this._mergeFileTask(e, t)),
              !(!this.config.skipCommit || eG.checkServiceName(e.type, this.config) !== es));
              this._getMetaInfoTask(e, t, {
                  isImageBatchUpload: r,
                  skipCommit: n
              })
          }
      }, {
          key: "_addAllUploadProcessClientEncrypt",
          value: function(e) {
              var t, r = this;
              return e.type === en && Array.isArray(e.file) ? (t = [],
              e.file.forEach(function(n) {
                  t.push(r._createClientEncryptTask({
                      stsToken: e.stsToken,
                      type: e.type,
                      file: n
                  }))
              }),
              t) : this._createClientEncryptTask(e)
          }
      }, {
          key: "_createClientEncryptTask",
          value: function(e) {
              var t = eh.getUnique("file")
                , r = (this.tasks[t] = this.tasks[t] || {},
              this.tasks[t].fileType = e.type || er,
              this.tasks[t].fileSize = e.file && e.file.size,
              this.tasks[t].proxyStsToken = e.stsToken,
              this.tasks[t].clientEncryptKey = eh.generateKey(16),
              this._addCrc32ProcessTask(e, t, {
                  isDirect: !1,
                  isImageBatchUpload: !1
              }),
              this._addPreUploadTask(e, t, {
                  isDirect: !1,
                  isImageBatchUpload: !1
              }),
              this._addInitUploadIDTask(e, t),
              this._addUploadProcessTask(e, t),
              this._mergeFileTask(e, t),
              !(!this.config.skipCommit || eG.checkServiceName(e.type, this.config) !== es));
              return this._getMetaInfoTask(e, t, {
                  isImageBatchUpload: !1,
                  skipCommit: r
              }),
              t
          }
      }, {
          key: "_addAllStreamUploadProcess",
          value: function(e, t) {
              this.tasks[t] = this.tasks[t] || {},
              this.tasks[t].fileType = e.type || er,
              this.tasks[t].proxyStsToken = e.stsToken,
              this._addPreUploadTask(e, t),
              this._addInitUploadIDTask(e, t),
              this._addStreamUploadTask(e, t),
              this._mergeFileTask(e, t),
              this._getMetaInfoTask(e, t)
          }
      }, {
          key: "_addStreamSlice",
          value: function(e) {
              var t = e.fileSlice
                , e = e.index;
              this.streamUploadTask.addStreamSlice({
                  fileSlice: t,
                  index: e
              })
          }
      }, {
          key: "_completeStreamUpload",
          value: function() {
              this.streamUploadTask.completeStreamUpload()
          }
      }, {
          key: "_run",
          value: function(e, t) {
              var r = this.tasks
                , n = navigator.userAgent.toLowerCase().match(/msie ([\d.]+)/);
              n && n[1] && 9 >= Number(n[1]) ? (this._broadcast("error", tQ(r[e], {
                  key: e,
                  status: 0,
                  stage: "browserError",
                  extra: {
                      message: "cannot support the browser below ie10"
                  },
                  type: "error"
              })),
              this.logger.send(r[e]),
              this._cancel(e)) : r[e] ? 3 === r[e].status ? this._restart(e) : (r[e].startTime = (new Date).getTime(),
              r[e].task && 1 !== r[e].status && r[e].task.tasks.length && (r[e].status = 1,
              this.logger.send(tQ({}, r[e], {
                  extra: {
                      message: "start upload"
                  },
                  type: "start",
                  key: e
              })),
              r[e].task.start(t))) : console.warn("".concat(e, " is not exit in object tasks, stop running..."))
          }
      }, {
          key: "_selectRoute",
          value: function(e, t) {
              new eC({
                  stsToken: this.lastStsToken,
                  context: this,
                  type: er,
                  file: this.lastFile
              },this.config).start(e, t)
          }
      }, {
          key: "_restart",
          value: function(e) {
              var t, r, n = this, i = this.tasks;
              i[e] ? (t = i[e].task,
              r = i[e].currentTask || 0,
              this.taskList[e].forEach(function(i, o) {
                  i.index === r && (t.tasks = n.taskList[e].slice(o))
              }),
              t && 1 !== i[e].status && t.tasks.length && (i[e].status = 1,
              t.restart())) : console.warn("".concat(e, " is not exit in object tasks"))
          }
      }, {
          key: "_cancel",
          value: function(e) {
              var t = this.tasks;
              t[e] ? (t[e].status = 2,
              t[e].task.cancel(),
              delete this.taskList[e]) : console.warn("".concat(e, " is not exit in object tasks"))
          }
      }, {
          key: "_pause",
          value: function(e) {
              var t = this.tasks;
              t[e] ? (t[e].status = 3,
              t[e].task.cancel(!0),
              t[e].isDirect || this._saveTask(e)) : console.warn("".concat(e, " is not exit in object tasks"))
          }
      }, {
          key: "_removeTaskCache",
          value: function(e) {
              var t = this.tasks;
              t[e] ? (t = t[e].crc32Key) && this._removeCache(t) : console.warn("".concat(e, " is not exit in object tasks"))
          }
      }, {
          key: "_saveTask",
          value: function(e, t) {
              t = (e = tQ({}, this.tasks[e], t || {})).crc32Key;
              try {
                  t && this._setCache(t, this.serializeCacheInfo(e))
              } catch (e) {
                  console.warn(e)
              }
          }
      }, {
          key: "serializeCacheInfo",
          value: function(e) {
              var t = "";
              delete e.task,
              delete e.xhr,
              delete e.crc32Array;
              try {
                  t = JSON.stringify(e)
              } catch (n) {
                  var r = {};
                  Object.keys(e).forEach(function(t) {
                      "task" !== t && "xhr" !== t && "crc32Array" !== t && (r[t] = e[t])
                  }),
                  t = JSON.stringify(r)
              }
              return t
          }
      }, {
          key: "_queueSuccess",
          value: function(e) {
              var t, r = this.tasks;
              r[e] ? (t = new Date,
              r[e].endTime = t.getTime(),
              r[e].time = r[e].endTime - r[e].startTime,
              r[e].status = 0,
              delete this.taskList[e],
              delete r[e]) : console.warn("".concat(e, " is not exit in object tasks"))
          }
      }, {
          key: "_removeFile",
          value: function(e) {
              delete this.tasks[e]
          }
      }, {
          key: "_batchAction",
          value: function(e, t) {
              Object.keys(this.tasks).forEach(function(r) {
                  e && e(r, t)
              })
          }
      }, {
          key: "_refreshSTSToken",
          value: function(e) {
              var t = this
                , r = this.tasks;
              Object.keys(r).forEach(function(n) {
                  var n = r[n]
                    , i = tQ({}, n, {
                      proxyStsToken: e
                  })
                    , o = (n.proxyStsToken = e,
                  i.crc32Key);
                  o && (n.proxyStsToken = e,
                  t._setCache(o, t.serializeCacheInfo(i)))
              })
          }
      }, {
          key: "_setOption",
          value: function(e) {
              this._mergeOptions(this.config, e)
          }
      }, {
          key: "_getOption",
          value: function(e) {
              var t = tQ({}, this.config);
              return Object.keys(t).forEach(function(e) {
                  (-1 < e.indexOf("Url") || "replace" === e || "log" === e) && delete t[e]
              }),
              e ? t[e] : t
          }
      }, {
          key: "_userCancel",
          value: function(e) {
              var t = this
                , r = this.tasks;
              e ? (this._cancel(e),
              this.logger.send(tQ({}, r[e], {
                  type: "cancel"
              })),
              delete this.tasks[e]) : Object.keys(r).forEach(function(e) {
                  t._cancel(e),
                  t.logger.send(tQ({}, r[e], {
                      type: "cancel"
                  })),
                  delete t.tasks[e]
              })
          }
      }, {
          key: "_userPause",
          value: function(e) {
              var t = this
                , r = this.tasks;
              e ? (this._pause(e),
              this.logger.send(tQ({}, r[e], {
                  type: "pause"
              }))) : Object.keys(r).forEach(function(e) {
                  t._pause(e),
                  t.logger.send(tQ({}, r[e], {
                      type: "pause"
                  }))
              })
          }
      }],
      tX(r.prototype, i),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      c
  }();
  function t1(e) {
      return (t1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
          return typeof e
      }
      : function(e) {
          return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
      }
      )(e)
  }
  function t2(e, t) {
      var r, n = Object.keys(e);
      return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(e),
      t && (r = r.filter(function(t) {
          return Object.getOwnPropertyDescriptor(e, t).enumerable
      })),
      n.push.apply(n, r)),
      n
  }
  function t3(e) {
      for (var t = 1; t < arguments.length; t++) {
          var r = null != arguments[t] ? arguments[t] : {};
          t % 2 ? t2(Object(r), !0).forEach(function(t) {
              var n, i, o;
              n = e,
              i = t,
              o = r[t],
              (i = t5(i))in n ? Object.defineProperty(n, i, {
                  value: o,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : n[i] = o
          }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : t2(Object(r)).forEach(function(t) {
              Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t))
          })
      }
      return e
  }
  function t4(e, t) {
      for (var r = 0; r < t.length; r++) {
          var n = t[r];
          n.enumerable = n.enumerable || !1,
          n.configurable = !0,
          "value"in n && (n.writable = !0),
          Object.defineProperty(e, t5(n.key), n)
      }
  }
  function t5(e) {
      return e = function(e, t) {
          if ("object" !== t1(e) || null === e)
              return e;
          var r = e[Symbol.toPrimitive];
          if (void 0 === r)
              return ("string" === t ? String : Number)(e);
          if (r = r.call(e, t || "default"),
          "object" !== t1(r))
              return r;
          throw TypeError("@@toPrimitive must return a primitive value.")
      }(e, "string"),
      "symbol" === t1(e) ? e : String(e)
  }
  function t6(e, t) {
      return (t6 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
          return e.__proto__ = t,
          e
      }
      )(e, t)
  }
  function t8(e) {
      return (t8 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
          return e.__proto__ || Object.getPrototypeOf(e)
      }
      )(e)
  }
  var t7 = function() {
      !function(e, t) {
          if ("function" != typeof t && null !== t)
              throw TypeError("Super expression must either be null or a function");
          e.prototype = Object.create(t && t.prototype, {
              constructor: {
                  value: e,
                  writable: !0,
                  configurable: !0
              }
          }),
          Object.defineProperty(e, "prototype", {
              writable: !1
          }),
          t && t6(e, t)
      }(s, t0);
      var e, t, r, n, i, o = (e = s,
      t = function() {
          if ("undefined" == typeof Reflect || !Reflect.construct || Reflect.construct.sham)
              return !1;
          if ("function" == typeof Proxy)
              return !0;
          try {
              return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})),
              !0
          } catch (e) {
              return !1
          }
      }(),
      function() {
          var r = t8(e);
          return function(e, t) {
              if (t && ("object" === t1(t) || "function" == typeof t))
                  return t;
              if (void 0 !== t)
                  throw TypeError("Derived constructors may only return object or undefined");
              return function(e) {
                  if (void 0 !== e)
                      return e;
                  throw ReferenceError("this hasn't been initialised - super() hasn't been called")
              }(e)
          }(this, t ? Reflect.construct(r, arguments, t8(this).constructor) : r.apply(this, arguments))
      }
      );
      function s() {
          return function(e, t) {
              if (!(e instanceof t))
                  throw TypeError("Cannot call a class as a function")
          }(this, s),
          o.apply(this, arguments)
      }
      return r = s,
      n = [{
          key: "start",
          value: function(e) {
              var t = this
                , r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
              this.abort = !1,
              r.selectRoute ? this._selectRoute(r, function(r) {
                  r = t3(t3({}, r), {}, {
                      enableSelectRoute: !0
                  }),
                  e ? t._run(e, r) : t._batchAction(t._run.bind(t), r)
              }) : e ? this._run(e) : this._batchAction(this._run.bind(this))
          }
      }, {
          key: "addFile",
          value: function(e) {
              var t;
              return e && eG.checkStsToken(e.stsToken) ? e.file && this.config.clientEncrypt ? this._addAllUploadProcessClientEncrypt(e) : e.file ? (t = eh.getUnique("file"),
              this._addAllUploadProcess(e, t),
              t) : null : (this.emit("error", {
                  extra: {
                      message: eA,
                      errorCode: 1000002
                  }
              }),
              null)
          }
      }, {
          key: "addImageFile",
          value: function(e) {
              var t;
              return e && eG.checkStsToken(e.stsToken) ? e.file ? (e.type = e.type || en,
              t = eh.getUnique("file"),
              this._addAllUploadProcess(e, t),
              t) : null : (this.emit("error", {
                  extra: {
                      message: eA,
                      errorCode: 1000002
                  }
              }),
              null)
          }
      }, {
          key: "addStreamUploadTask",
          value: function(e) {
              var t;
              return e && eG.checkStsToken(e.stsToken) ? (t = eh.getUnique("file"),
              this._addAllStreamUploadProcess(e, t),
              t) : (this.emit("error", {
                  extra: {
                      message: eA,
                      errorCode: 1000002
                  }
              }),
              null)
          }
      }, {
          key: "addStreamSlice",
          value: function(e) {
              var t = e.fileSlice
                , e = e.index;
              this._addStreamSlice({
                  fileSlice: t,
                  index: e
              })
          }
      }, {
          key: "completeStreamUpload",
          value: function() {
              this._completeStreamUpload()
          }
      }, {
          key: "removeFile",
          value: function(e) {
              e && this._removeFile(e)
          }
      }, {
          key: "cancel",
          value: function(e) {
              e ? this._userCancel(e) : this._batchAction(this._userCancel.bind(this))
          }
      }, {
          key: "pause",
          value: function(e) {
              this._userPause(e)
          }
      }, {
          key: "restart",
          value: function(e) {
              e ? this._restart(e) : this._batchAction(this._restart.bind(this))
          }
      }, {
          key: "refreshSTSToken",
          value: function(e) {
              this._refreshSTSToken(e)
          }
      }, {
          key: "setOption",
          value: function(e) {
              this._setOption(e)
          }
      }, {
          key: "getOption",
          value: function(e) {
              return this._getOption(e)
          }
      }],
      t4(r.prototype, n),
      Object.defineProperty(r, "prototype", {
          writable: !1
      }),
      s
  }()
}


// 1. 创建一个模拟的 module 对象
var myTempModule = { exports: {} };

// 2. 获取全局上下文 (通常是 window)
var globalCtx = (typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : globalThis);
var fncache = {};

T499845(window.tttt.e)
T984826(window.tttt.e, window.tttt.t, window.tttt.i)
T203960(window.tttt.e, window.tttt.t, window.tttt.i)

// TEST(myTempModule, globalCtx, (num)=>{
//   fncache[num] = myTempModule.exports;
// });
// TEST2(myTempModule, globalCtx, (num)=>{
//   fncache[num] = myTempModule.exports;
// });
// TEST3(myTempModule, globalCtx, (num)=>{
//   fncache[num] = myTempModule.exports;
// });
// TEST4(myTempModule, globalCtx, (num)=>{
//   fncache[num] = myTempModule.exports;
// });
// TEST5(myTempModule, globalCtx, (num)=>{
//   fncache[num] = myTempModule.exports;
// });
// console.log(fncache);