var n;
(n =
  "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
    ? function (n) {
        return typeof n;
      }
    : function (n) {
        return n &&
          "function" == typeof Symbol &&
          n.constructor === Symbol &&
          n !== Symbol.prototype
          ? "symbol"
          : typeof n;
      }),
  function () {
    function r(n) {
      function r(r, t, e, u, i, o) {
        for (; i >= 0 && i < o; i += n) {
          var a = u ? u[i] : i;
          e = t(e, r[a], a, r);
        }
        return e;
      }
      return function (t, e, u, i) {
        e = g(e, i, 4);
        var o = !_(t) && d.keys(t),
          a = (o || t).length,
          c = n > 0 ? 0 : a - 1;
        return (
          arguments.length < 3 && ((u = t[o ? o[c] : c]), (c += n)),
          r(t, e, u, o, c, a)
        );
      };
    }
    function t(n) {
      return function (r, t, e) {
        t = m(t, e);
        for (
          var u = null != r && r.length, i = n > 0 ? 0 : u - 1;
          i >= 0 && i < u;
          i += n
        )
          if (t(r[i], i, r)) return i;
        return -1;
      };
    }
    function e(n, r) {
      var t = S.length,
        e = n.constructor,
        u = (d.isFunction(e) && e.prototype) || i,
        o = "constructor";
      for (d.has(n, o) && !d.contains(r, o) && r.push(o); t--; )
        (o = S[t]) in n && n[o] !== u[o] && !d.contains(r, o) && r.push(o);
    }
    var u = Array.prototype,
      i = Object.prototype,
      o = Function.prototype,
      a = u.push,
      c = u.slice,
      l = i.toString,
      f = i.hasOwnProperty,
      s = Array.isArray,
      p = Object.keys,
      h = o.bind,
      v = Object.create,
      y = function () {},
      d = function n(r) {
        return r instanceof n
          ? r
          : this instanceof n
          ? void (this._wrapped = r)
          : new n(r);
      };
    (module.exports = d), (d.VERSION = "1.8.2");
    var g = function (n, r, t) {
        if (void 0 === r) return n;
        switch (null == t ? 3 : t) {
          case 1:
            return function (t) {
              return n.call(r, t);
            };
          case 2:
            return function (t, e) {
              return n.call(r, t, e);
            };
          case 3:
            return function (t, e, u) {
              return n.call(r, t, e, u);
            };
          case 4:
            return function (t, e, u, i) {
              return n.call(r, t, e, u, i);
            };
        }
        return function () {
          return n.apply(r, arguments);
        };
      },
      m = function (n, r, t) {
        return null == n
          ? d.identity
          : d.isFunction(n)
          ? g(n, r, t)
          : d.isObject(n)
          ? d.matcher(n)
          : d.property(n);
      };
    d.iteratee = function (n, r) {
      return m(n, r, 1 / 0);
    };
    var b = function (n, r) {
        return function (t) {
          var e = arguments.length;
          if (e < 2 || null == t) return t;
          for (var u = 1; u < e; u++)
            for (
              var i = arguments[u], o = n(i), a = o.length, c = 0;
              c < a;
              c++
            ) {
              var l = o[c];
              (r && void 0 !== t[l]) || (t[l] = i[l]);
            }
          return t;
        };
      },
      j = function (n) {
        if (!d.isObject(n)) return {};
        if (v) return v(n);
        y.prototype = n;
        var r = new y();
        return (y.prototype = null), r;
      },
      x = Math.pow(2, 53) - 1,
      _ = function (n) {
        var r = null != n && n.length;
        return "number" == typeof r && r >= 0 && r <= x;
      };
    (d.each = d.forEach =
      function (n, r, t) {
        var e, u;
        if (((r = g(r, t)), _(n)))
          for (e = 0, u = n.length; e < u; e++) r(n[e], e, n);
        else {
          var i = d.keys(n);
          for (e = 0, u = i.length; e < u; e++) r(n[i[e]], i[e], n);
        }
        return n;
      }),
      (d.map = d.collect =
        function (n, r, t) {
          r = m(r, t);
          for (
            var e = !_(n) && d.keys(n),
              u = (e || n).length,
              i = Array(u),
              o = 0;
            o < u;
            o++
          ) {
            var a = e ? e[o] : o;
            i[o] = r(n[a], a, n);
          }
          return i;
        }),
      (d.reduce = d.foldl = d.inject = r(1)),
      (d.reduceRight = d.foldr = r(-1)),
      (d.find = d.detect =
        function (n, r, t) {
          var e;
          if (
            void 0 !== (e = _(n) ? d.findIndex(n, r, t) : d.findKey(n, r, t)) &&
            -1 !== e
          )
            return n[e];
        }),
      (d.filter = d.select =
        function (n, r, t) {
          var e = [];
          return (
            (r = m(r, t)),
            d.each(n, function (n, t, u) {
              r(n, t, u) && e.push(n);
            }),
            e
          );
        }),
      (d.reject = function (n, r, t) {
        return d.filter(n, d.negate(m(r)), t);
      }),
      (d.every = d.all =
        function (n, r, t) {
          r = m(r, t);
          for (
            var e = !_(n) && d.keys(n), u = (e || n).length, i = 0;
            i < u;
            i++
          ) {
            var o = e ? e[i] : i;
            if (!r(n[o], o, n)) return !1;
          }
          return !0;
        }),
      (d.some = d.any =
        function (n, r, t) {
          r = m(r, t);
          for (
            var e = !_(n) && d.keys(n), u = (e || n).length, i = 0;
            i < u;
            i++
          ) {
            var o = e ? e[i] : i;
            if (r(n[o], o, n)) return !0;
          }
          return !1;
        }),
      (d.contains =
        d.includes =
        d.include =
          function (n, r, t) {
            return (
              _(n) || (n = d.values(n)),
              d.indexOf(n, r, "number" == typeof t && t) >= 0
            );
          }),
      (d.invoke = function (n, r) {
        var t = c.call(arguments, 2),
          e = d.isFunction(r);
        return d.map(n, function (n) {
          var u = e ? r : n[r];
          return null == u ? u : u.apply(n, t);
        });
      }),
      (d.pluck = function (n, r) {
        return d.map(n, d.property(r));
      }),
      (d.where = function (n, r) {
        return d.filter(n, d.matcher(r));
      }),
      (d.findWhere = function (n, r) {
        return d.find(n, d.matcher(r));
      }),
      (d.max = function (n, r, t) {
        var e,
          u,
          i = -1 / 0,
          o = -1 / 0;
        if (null == r && null != n)
          for (var a = 0, c = (n = _(n) ? n : d.values(n)).length; a < c; a++)
            (e = n[a]) > i && (i = e);
        else
          (r = m(r, t)),
            d.each(n, function (n, t, e) {
              ((u = r(n, t, e)) > o || (u === -1 / 0 && i === -1 / 0)) &&
                ((i = n), (o = u));
            });
        return i;
      }),
      (d.min = function (n, r, t) {
        var e,
          u,
          i = 1 / 0,
          o = 1 / 0;
        if (null == r && null != n)
          for (var a = 0, c = (n = _(n) ? n : d.values(n)).length; a < c; a++)
            (e = n[a]) < i && (i = e);
        else
          (r = m(r, t)),
            d.each(n, function (n, t, e) {
              ((u = r(n, t, e)) < o || (u === 1 / 0 && i === 1 / 0)) &&
                ((i = n), (o = u));
            });
        return i;
      }),
      (d.shuffle = function (n) {
        for (
          var r, t = _(n) ? n : d.values(n), e = t.length, u = Array(e), i = 0;
          i < e;
          i++
        )
          (r = d.random(0, i)) !== i && (u[i] = u[r]), (u[r] = t[i]);
        return u;
      }),
      (d.sample = function (n, r, t) {
        return null == r || t
          ? (_(n) || (n = d.values(n)), n[d.random(n.length - 1)])
          : d.shuffle(n).slice(0, Math.max(0, r));
      }),
      (d.sortBy = function (n, r, t) {
        return (
          (r = m(r, t)),
          d.pluck(
            d
              .map(n, function (n, t, e) {
                return { value: n, index: t, criteria: r(n, t, e) };
              })
              .sort(function (n, r) {
                var t = n.criteria,
                  e = r.criteria;
                if (t !== e) {
                  if (t > e || void 0 === t) return 1;
                  if (t < e || void 0 === e) return -1;
                }
                return n.index - r.index;
              }),
            "value"
          )
        );
      });
    var w = function (n) {
      return function (r, t, e) {
        var u = {};
        return (
          (t = m(t, e)),
          d.each(r, function (e, i) {
            var o = t(e, i, r);
            n(u, e, o);
          }),
          u
        );
      };
    };
    (d.groupBy = w(function (n, r, t) {
      d.has(n, t) ? n[t].push(r) : (n[t] = [r]);
    })),
      (d.indexBy = w(function (n, r, t) {
        n[t] = r;
      })),
      (d.countBy = w(function (n, r, t) {
        d.has(n, t) ? n[t]++ : (n[t] = 1);
      })),
      (d.toArray = function (n) {
        return n
          ? d.isArray(n)
            ? c.call(n)
            : _(n)
            ? d.map(n, d.identity)
            : d.values(n)
          : [];
      }),
      (d.size = function (n) {
        return null == n ? 0 : _(n) ? n.length : d.keys(n).length;
      }),
      (d.partition = function (n, r, t) {
        r = m(r, t);
        var e = [],
          u = [];
        return (
          d.each(n, function (n, t, i) {
            (r(n, t, i) ? e : u).push(n);
          }),
          [e, u]
        );
      }),
      (d.first =
        d.head =
        d.take =
          function (n, r, t) {
            if (null != n)
              return null == r || t ? n[0] : d.initial(n, n.length - r);
          }),
      (d.initial = function (n, r, t) {
        return c.call(n, 0, Math.max(0, n.length - (null == r || t ? 1 : r)));
      }),
      (d.last = function (n, r, t) {
        if (null != n)
          return null == r || t
            ? n[n.length - 1]
            : d.rest(n, Math.max(0, n.length - r));
      }),
      (d.rest =
        d.tail =
        d.drop =
          function (n, r, t) {
            return c.call(n, null == r || t ? 1 : r);
          }),
      (d.compact = function (n) {
        return d.filter(n, d.identity);
      });
    var A = function n(r, t, e, u) {
      for (var i = [], o = 0, a = u || 0, c = r && r.length; a < c; a++) {
        var l = r[a];
        if (_(l) && (d.isArray(l) || d.isArguments(l))) {
          t || (l = n(l, t, e));
          var f = 0,
            s = l.length;
          for (i.length += s; f < s; ) i[o++] = l[f++];
        } else e || (i[o++] = l);
      }
      return i;
    };
    (d.flatten = function (n, r) {
      return A(n, r, !1);
    }),
      (d.without = function (n) {
        return d.difference(n, c.call(arguments, 1));
      }),
      (d.uniq = d.unique =
        function (n, r, t, e) {
          if (null == n) return [];
          d.isBoolean(r) || ((e = t), (t = r), (r = !1)),
            null != t && (t = m(t, e));
          for (var u = [], i = [], o = 0, a = n.length; o < a; o++) {
            var c = n[o],
              l = t ? t(c, o, n) : c;
            r
              ? ((o && i === l) || u.push(c), (i = l))
              : t
              ? d.contains(i, l) || (i.push(l), u.push(c))
              : d.contains(u, c) || u.push(c);
          }
          return u;
        }),
      (d.union = function () {
        return d.uniq(A(arguments, !0, !0));
      }),
      (d.intersection = function (n) {
        if (null == n) return [];
        for (
          var r = [], t = arguments.length, e = 0, u = n.length;
          e < u;
          e++
        ) {
          var i = n[e];
          if (!d.contains(r, i)) {
            for (var o = 1; o < t && d.contains(arguments[o], i); o++);
            o === t && r.push(i);
          }
        }
        return r;
      }),
      (d.difference = function (n) {
        var r = A(arguments, !0, !0, 1);
        return d.filter(n, function (n) {
          return !d.contains(r, n);
        });
      }),
      (d.zip = function () {
        return d.unzip(arguments);
      }),
      (d.unzip = function (n) {
        for (
          var r = (n && d.max(n, "length").length) || 0, t = Array(r), e = 0;
          e < r;
          e++
        )
          t[e] = d.pluck(n, e);
        return t;
      }),
      (d.object = function (n, r) {
        for (var t = {}, e = 0, u = n && n.length; e < u; e++)
          r ? (t[n[e]] = r[e]) : (t[n[e][0]] = n[e][1]);
        return t;
      }),
      (d.indexOf = function (n, r, t) {
        var e = 0,
          u = n && n.length;
        if ("number" == typeof t) e = t < 0 ? Math.max(0, u + t) : t;
        else if (t && u) return n[(e = d.sortedIndex(n, r))] === r ? e : -1;
        if (r != r) return d.findIndex(c.call(n, e), d.isNaN);
        for (; e < u; e++) if (n[e] === r) return e;
        return -1;
      }),
      (d.lastIndexOf = function (n, r, t) {
        var e = n ? n.length : 0;
        if (
          ("number" == typeof t && (e = t < 0 ? e + t + 1 : Math.min(e, t + 1)),
          r != r)
        )
          return d.findLastIndex(c.call(n, 0, e), d.isNaN);
        for (; --e >= 0; ) if (n[e] === r) return e;
        return -1;
      }),
      (d.findIndex = t(1)),
      (d.findLastIndex = t(-1)),
      (d.sortedIndex = function (n, r, t, e) {
        for (var u = (t = m(t, e, 1))(r), i = 0, o = n.length; i < o; ) {
          var a = Math.floor((i + o) / 2);
          t(n[a]) < u ? (i = a + 1) : (o = a);
        }
        return i;
      }),
      (d.range = function (n, r, t) {
        arguments.length <= 1 && ((r = n || 0), (n = 0)), (t = t || 1);
        for (
          var e = Math.max(Math.ceil((r - n) / t), 0), u = Array(e), i = 0;
          i < e;
          i++, n += t
        )
          u[i] = n;
        return u;
      });
    var O = function (n, r, t, e, u) {
      if (!(e instanceof r)) return n.apply(t, u);
      var i = j(n.prototype),
        o = n.apply(i, u);
      return d.isObject(o) ? o : i;
    };
    (d.bind = function (n, r) {
      if (h && n.bind === h) return h.apply(n, c.call(arguments, 1));
      if (!d.isFunction(n))
        throw new TypeError("Bind must be called on a function");
      var t = c.call(arguments, 2);
      return function e() {
        return O(n, e, r, this, t.concat(c.call(arguments)));
      };
    }),
      (d.partial = function (n) {
        var r = c.call(arguments, 1);
        return function t() {
          for (var e = 0, u = r.length, i = Array(u), o = 0; o < u; o++)
            i[o] = r[o] === d ? arguments[e++] : r[o];
          for (; e < arguments.length; ) i.push(arguments[e++]);
          return O(n, t, this, this, i);
        };
      }),
      (d.bindAll = function (n) {
        var r,
          t,
          e = arguments.length;
        if (e <= 1) throw new Error("bindAll must be passed function names");
        for (r = 1; r < e; r++) n[(t = arguments[r])] = d.bind(n[t], n);
        return n;
      }),
      (d.memoize = function (n, r) {
        var t = function t(e) {
          var u = t.cache,
            i = "" + (r ? r.apply(this, arguments) : e);
          return d.has(u, i) || (u[i] = n.apply(this, arguments)), u[i];
        };
        return (t.cache = {}), t;
      }),
      (d.delay = function (n, r) {
        var t = c.call(arguments, 2);
        return setTimeout(function () {
          return n.apply(null, t);
        }, r);
      }),
      (d.defer = d.partial(d.delay, d, 1)),
      (d.throttle = function (n, r, t) {
        var e,
          u,
          i,
          o = null,
          a = 0;
        t || (t = {});
        var c = function () {
          (a = !1 === t.leading ? 0 : d.now()),
            (o = null),
            (i = n.apply(e, u)),
            o || (e = u = null);
        };
        return function () {
          var l = d.now();
          a || !1 !== t.leading || (a = l);
          var f = r - (l - a);
          return (
            (e = this),
            (u = arguments),
            f <= 0 || f > r
              ? (o && (clearTimeout(o), (o = null)),
                (a = l),
                (i = n.apply(e, u)),
                o || (e = u = null))
              : o || !1 === t.trailing || (o = setTimeout(c, f)),
            i
          );
        };
      }),
      (d.debounce = function (n, r, t) {
        var e,
          u,
          i,
          o,
          a,
          c = function c() {
            var l = d.now() - o;
            l < r && l >= 0
              ? (e = setTimeout(c, r - l))
              : ((e = null), t || ((a = n.apply(i, u)), e || (i = u = null)));
          };
        return function () {
          (i = this), (u = arguments), (o = d.now());
          var l = t && !e;
          return (
            e || (e = setTimeout(c, r)),
            l && ((a = n.apply(i, u)), (i = u = null)),
            a
          );
        };
      }),
      (d.wrap = function (n, r) {
        return d.partial(r, n);
      }),
      (d.negate = function (n) {
        return function () {
          return !n.apply(this, arguments);
        };
      }),
      (d.compose = function () {
        var n = arguments,
          r = n.length - 1;
        return function () {
          for (var t = r, e = n[r].apply(this, arguments); t--; )
            e = n[t].call(this, e);
          return e;
        };
      }),
      (d.after = function (n, r) {
        return function () {
          if (--n < 1) return r.apply(this, arguments);
        };
      }),
      (d.before = function (n, r) {
        var t;
        return function () {
          return (
            --n > 0 && (t = r.apply(this, arguments)), n <= 1 && (r = null), t
          );
        };
      }),
      (d.once = d.partial(d.before, 2));
    var k = !{ toString: null }.propertyIsEnumerable("toString"),
      S = [
        "valueOf",
        "isPrototypeOf",
        "toString",
        "propertyIsEnumerable",
        "hasOwnProperty",
        "toLocaleString",
      ];
    (d.keys = function (n) {
      if (!d.isObject(n)) return [];
      if (p) return p(n);
      var r = [];
      for (var t in n) d.has(n, t) && r.push(t);
      return k && e(n, r), r;
    }),
      (d.allKeys = function (n) {
        if (!d.isObject(n)) return [];
        var r = [];
        for (var t in n) r.push(t);
        return k && e(n, r), r;
      }),
      (d.values = function (n) {
        for (var r = d.keys(n), t = r.length, e = Array(t), u = 0; u < t; u++)
          e[u] = n[r[u]];
        return e;
      }),
      (d.mapObject = function (n, r, t) {
        r = m(r, t);
        for (var e, u = d.keys(n), i = u.length, o = {}, a = 0; a < i; a++)
          o[(e = u[a])] = r(n[e], e, n);
        return o;
      }),
      (d.pairs = function (n) {
        for (var r = d.keys(n), t = r.length, e = Array(t), u = 0; u < t; u++)
          e[u] = [r[u], n[r[u]]];
        return e;
      }),
      (d.invert = function (n) {
        for (var r = {}, t = d.keys(n), e = 0, u = t.length; e < u; e++)
          r[n[t[e]]] = t[e];
        return r;
      }),
      (d.functions = d.methods =
        function (n) {
          var r = [];
          for (var t in n) d.isFunction(n[t]) && r.push(t);
          return r.sort();
        }),
      (d.extend = b(d.allKeys)),
      (d.extendOwn = d.assign = b(d.keys)),
      (d.findKey = function (n, r, t) {
        r = m(r, t);
        for (var e, u = d.keys(n), i = 0, o = u.length; i < o; i++)
          if (r(n[(e = u[i])], e, n)) return e;
      }),
      (d.pick = function (n, r, t) {
        var e,
          u,
          i = {},
          o = n;
        if (null == o) return i;
        d.isFunction(r)
          ? ((u = d.allKeys(o)), (e = g(r, t)))
          : ((u = A(arguments, !1, !1, 1)),
            (e = function (n, r, t) {
              return r in t;
            }),
            (o = Object(o)));
        for (var a = 0, c = u.length; a < c; a++) {
          var l = u[a],
            f = o[l];
          e(f, l, o) && (i[l] = f);
        }
        return i;
      }),
      (d.omit = function (n, r, t) {
        if (d.isFunction(r)) r = d.negate(r);
        else {
          var e = d.map(A(arguments, !1, !1, 1), String);
          r = function (n, r) {
            return !d.contains(e, r);
          };
        }
        return d.pick(n, r, t);
      }),
      (d.defaults = b(d.allKeys, !0)),
      (d.create = function (n, r) {
        var t = j(n);
        return r && d.extendOwn(t, r), t;
      }),
      (d.clone = function (n) {
        return d.isObject(n) ? (d.isArray(n) ? n.slice() : d.extend({}, n)) : n;
      }),
      (d.tap = function (n, r) {
        return r(n), n;
      }),
      (d.isMatch = function (n, r) {
        var t = d.keys(r),
          e = t.length;
        if (null == n) return !e;
        for (var u = Object(n), i = 0; i < e; i++) {
          var o = t[i];
          if (r[o] !== u[o] || !(o in u)) return !1;
        }
        return !0;
      });
    var F = function r(t, e, u, i) {
      if (t === e) return 0 !== t || 1 / t == 1 / e;
      if (null == t || null == e) return t === e;
      t instanceof d && (t = t._wrapped), e instanceof d && (e = e._wrapped);
      var o = l.call(t);
      if (o !== l.call(e)) return !1;
      switch (o) {
        case "[object RegExp]":
        case "[object String]":
          return "" + t == "" + e;
        case "[object Number]":
          return +t != +t ? +e != +e : 0 == +t ? 1 / +t == 1 / e : +t == +e;
        case "[object Date]":
        case "[object Boolean]":
          return +t == +e;
      }
      var a = "[object Array]" === o;
      if (!a) {
        if (
          "object" != (void 0 === t ? "undefined" : n(t)) ||
          "object" != (void 0 === e ? "undefined" : n(e))
        )
          return !1;
        var c = t.constructor,
          f = e.constructor;
        if (
          c !== f &&
          !(
            d.isFunction(c) &&
            c instanceof c &&
            d.isFunction(f) &&
            f instanceof f
          ) &&
          "constructor" in t &&
          "constructor" in e
        )
          return !1;
      }
      i = i || [];
      for (var s = (u = u || []).length; s--; )
        if (u[s] === t) return i[s] === e;
      if ((u.push(t), i.push(e), a)) {
        if ((s = t.length) !== e.length) return !1;
        for (; s--; ) if (!r(t[s], e[s], u, i)) return !1;
      } else {
        var p,
          h = d.keys(t);
        if (((s = h.length), d.keys(e).length !== s)) return !1;
        for (; s--; )
          if (((p = h[s]), !d.has(e, p) || !r(t[p], e[p], u, i))) return !1;
      }
      return u.pop(), i.pop(), !0;
    };
    (d.isEqual = function (n, r) {
      return F(n, r);
    }),
      (d.isEmpty = function (n) {
        return (
          null == n ||
          (_(n) && (d.isArray(n) || d.isString(n) || d.isArguments(n))
            ? 0 === n.length
            : 0 === d.keys(n).length)
        );
      }),
      (d.isElement = function (n) {
        return !(!n || 1 !== n.nodeType);
      }),
      (d.isArray =
        s ||
        function (n) {
          return "[object Array]" === l.call(n);
        }),
      (d.isObject = function (r) {
        var t = void 0 === r ? "undefined" : n(r);
        return "function" === t || ("object" === t && !!r);
      }),
      d.each(
        [
          "Arguments",
          "Function",
          "String",
          "Number",
          "Date",
          "RegExp",
          "Error",
        ],
        function (n) {
          d["is" + n] = function (r) {
            return l.call(r) === "[object " + n + "]";
          };
        }
      ),
      d.isArguments(arguments) ||
        (d.isArguments = function (n) {
          return d.has(n, "callee");
        }),
      "function" != typeof /./ &&
        "object" !=
          ("undefined" == typeof Int8Array ? "undefined" : n(Int8Array)) &&
        (d.isFunction = function (n) {
          return "function" == typeof n || !1;
        }),
      (d.isFinite = function (n) {
        return isFinite(n) && !isNaN(parseFloat(n));
      }),
      (d.isNaN = function (n) {
        return d.isNumber(n) && n !== +n;
      }),
      (d.isBoolean = function (n) {
        return !0 === n || !1 === n || "[object Boolean]" === l.call(n);
      }),
      (d.isNull = function (n) {
        return null === n;
      }),
      (d.isUndefined = function (n) {
        return void 0 === n;
      }),
      (d.has = function (n, r) {
        return null != n && f.call(n, r);
      }),
      (d.noConflict = function () {
        return (root._ = previousUnderscore), this;
      }),
      (d.identity = function (n) {
        return n;
      }),
      (d.constant = function (n) {
        return function () {
          return n;
        };
      }),
      (d.noop = function () {}),
      (d.property = function (n) {
        return function (r) {
          return null == r ? void 0 : r[n];
        };
      }),
      (d.propertyOf = function (n) {
        return null == n
          ? function () {}
          : function (r) {
              return n[r];
            };
      }),
      (d.matcher = d.matches =
        function (n) {
          return (
            (n = d.extendOwn({}, n)),
            function (r) {
              return d.isMatch(r, n);
            }
          );
        }),
      (d.times = function (n, r, t) {
        var e = Array(Math.max(0, n));
        r = g(r, t, 1);
        for (var u = 0; u < n; u++) e[u] = r(u);
        return e;
      }),
      (d.random = function (n, r) {
        return (
          null == r && ((r = n), (n = 0)),
          n + Math.floor(Math.random() * (r - n + 1))
        );
      }),
      (d.now =
        Date.now ||
        function () {
          return new Date().getTime();
        });
    var E = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#x27;",
        "`": "&#x60;",
      },
      I = d.invert(E),
      M = function (n) {
        var r = function (r) {
            return n[r];
          },
          t = "(?:" + d.keys(n).join("|") + ")",
          e = RegExp(t),
          u = RegExp(t, "g");
        return function (n) {
          return (n = null == n ? "" : "" + n), e.test(n) ? n.replace(u, r) : n;
        };
      };
    (d.escape = M(E)),
      (d.unescape = M(I)),
      (d.result = function (n, r, t) {
        var e = null == n ? void 0 : n[r];
        return void 0 === e && (e = t), d.isFunction(e) ? e.call(n) : e;
      });
    var N = 0;
    (d.uniqueId = function (n) {
      var r = ++N + "";
      return n ? n + r : r;
    }),
      (d.templateSettings = {
        evaluate: /<%([\s\S]+?)%>/g,
        interpolate: /<%=([\s\S]+?)%>/g,
        escape: /<%-([\s\S]+?)%>/g,
      });
    var B = /(.)^/,
      T = {
        "'": "'",
        "\\": "\\",
        "\r": "r",
        "\n": "n",
        "\u2028": "u2028",
        "\u2029": "u2029",
      },
      R = /\\|'|\r|\n|\u2028|\u2029/g,
      q = function (n) {
        return "\\" + T[n];
      };
    (d.template = function (n, r, t) {
      !r && t && (r = t), (r = d.defaults({}, r, d.templateSettings));
      var e = RegExp(
          [
            (r.escape || B).source,
            (r.interpolate || B).source,
            (r.evaluate || B).source,
          ].join("|") + "|$",
          "g"
        ),
        u = 0,
        i = "__p+='";
      n.replace(e, function (r, t, e, o, a) {
        return (
          (i += n.slice(u, a).replace(R, q)),
          (u = a + r.length),
          t
            ? (i += "'+\n((__t=(" + t + "))==null?'':_.escape(__t))+\n'")
            : e
            ? (i += "'+\n((__t=(" + e + "))==null?'':__t)+\n'")
            : o && (i += "';\n" + o + "\n__p+='"),
          r
        );
      }),
        (i += "';\n"),
        r.variable || (i = "with(obj||{}){\n" + i + "}\n"),
        (i =
          "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" +
          i +
          "return __p;\n");
      try {
        var o = new Function(r.variable || "obj", "_", i);
      } catch (n) {
        throw ((n.source = i), n);
      }
      var a = function (n) {
          return o.call(this, n, d);
        },
        c = r.variable || "obj";
      return (a.source = "function(" + c + "){\n" + i + "}"), a;
    }),
      (d.chain = function (n) {
        var r = d(n);
        return (r._chain = !0), r;
      });
    var K = function (n, r) {
      return n._chain ? d(r).chain() : r;
    };
    (d.mixin = function (n) {
      d.each(d.functions(n), function (r) {
        var t = (d[r] = n[r]);
        d.prototype[r] = function () {
          var n = [this._wrapped];
          return a.apply(n, arguments), K(this, t.apply(d, n));
        };
      });
    }),
      d.mixin(d),
      d.each(
        ["pop", "push", "reverse", "shift", "sort", "splice", "unshift"],
        function (n) {
          var r = u[n];
          d.prototype[n] = function () {
            var t = this._wrapped;
            return (
              r.apply(t, arguments),
              ("shift" !== n && "splice" !== n) ||
                0 !== t.length ||
                delete t[0],
              K(this, t)
            );
          };
        }
      ),
      d.each(["concat", "join", "slice"], function (n) {
        var r = u[n];
        d.prototype[n] = function () {
          return K(this, r.apply(this._wrapped, arguments));
        };
      }),
      (d.prototype.value = function () {
        return this._wrapped;
      }),
      (d.prototype.valueOf = d.prototype.toJSON = d.prototype.value),
      (d.prototype.toString = function () {
        return "" + this._wrapped;
      });
  }.call(void 0);
