if (
  (!(function (f, T) {
    function t(e, t) {
      return t.toUpperCase();
    }
    function n(e) {
      (!m.addEventListener &&
        "load" !== e.type &&
        "complete" !== m.readyState) ||
        (O(), ke.ready());
    }
    var i,
      o,
      v = typeof T,
      e = f.location,
      m = f.document,
      s = m.documentElement,
      r = f.jQuery,
      a = f.$,
      l = {},
      u = [],
      c = "1.10.1",
      g = u.concat,
      d = u.push,
      p = u.slice,
      h = u.indexOf,
      y = l.toString,
      w = l.hasOwnProperty,
      b = c.trim,
      ke = function (e, t) {
        return new ke.fn.init(e, t, o);
      },
      x = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
      C = /\S+/g,
      k = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      S = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
      z = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
      E = /^[\],:{}\s]*$/,
      W = /(?:^|:|,)(?:\s*\[)+/g,
      L = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
      A = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
      $ = /^-ms-/,
      F = /-([\da-z])/gi,
      O = function () {
        m.addEventListener
          ? (m.removeEventListener("DOMContentLoaded", n, !1),
            f.removeEventListener("load", n, !1))
          : (m.detachEvent("onreadystatechange", n),
            f.detachEvent("onload", n));
      };
    function H(e) {
      var t = e.length,
        o = ke.type(e);
      return (
        !ke.isWindow(e) &&
        (!(1 !== e.nodeType || !t) ||
          "array" === o ||
          ("function" !== o &&
            (0 === t || ("number" == typeof t && 0 < t && t - 1 in e))))
      );
    }
    (ke.fn = ke.prototype =
      {
        jquery: c,
        constructor: ke,
        init: function (e, t, o) {
          var n, i;
          if (!e) return this;
          if ("string" != typeof e)
            return e.nodeType
              ? ((this.context = this[0] = e), (this.length = 1), this)
              : ke.isFunction(e)
              ? o.ready(e)
              : (e.selector !== T &&
                  ((this.selector = e.selector), (this.context = e.context)),
                ke.makeArray(e, this));
          if (
            !(n =
              "<" === e.charAt(0) &&
              ">" === e.charAt(e.length - 1) &&
              3 <= e.length
                ? [null, e, null]
                : S.exec(e)) ||
            (!n[1] && t)
          )
            return !t || t.jquery
              ? (t || o).find(e)
              : this.constructor(t).find(e);
          if (n[1]) {
            if (
              ((t = t instanceof ke ? t[0] : t),
              ke.merge(
                this,
                ke.parseHTML(
                  n[1],
                  t && t.nodeType ? t.ownerDocument || t : m,
                  !0
                )
              ),
              z.test(n[1]) && ke.isPlainObject(t))
            )
              for (n in t)
                ke.isFunction(this[n]) ? this[n](t[n]) : this.attr(n, t[n]);
            return this;
          }
          if ((i = m.getElementById(n[2])) && i.parentNode) {
            if (i.id !== n[2]) return o.find(e);
            (this.length = 1), (this[0] = i);
          }
          return (this.context = m), (this.selector = e), this;
        },
        selector: "",
        length: 0,
        toArray: function () {
          return p.call(this);
        },
        get: function (e) {
          return null == e
            ? this.toArray()
            : e < 0
            ? this[this.length + e]
            : this[e];
        },
        pushStack: function (e) {
          var t = ke.merge(this.constructor(), e);
          return (t.prevObject = this), (t.context = this.context), t;
        },
        each: function (e, t) {
          return ke.each(this, e, t);
        },
        ready: function (e) {
          return ke.ready.promise().done(e), this;
        },
        slice: function () {
          return this.pushStack(p.apply(this, arguments));
        },
        first: function () {
          return this.eq(0);
        },
        last: function () {
          return this.eq(-1);
        },
        eq: function (e) {
          var t = this.length,
            o = +e + (e < 0 ? t : 0);
          return this.pushStack(0 <= o && o < t ? [this[o]] : []);
        },
        map: function (o) {
          return this.pushStack(
            ke.map(this, function (e, t) {
              return o.call(e, t, e);
            })
          );
        },
        end: function () {
          return this.prevObject || this.constructor(null);
        },
        push: d,
        sort: [].sort,
        splice: [].splice,
      }),
      (ke.fn.init.prototype = ke.fn),
      (ke.extend = ke.fn.extend =
        function () {
          var e,
            t,
            o,
            n,
            i,
            s,
            r = arguments[0] || {},
            a = 1,
            l = arguments.length,
            c = !1;
          for (
            "boolean" == typeof r &&
              ((c = r), (r = arguments[1] || {}), (a = 2)),
              "object" == typeof r || ke.isFunction(r) || (r = {}),
              l === a && ((r = this), --a);
            a < l;
            a++
          )
            if (null != (i = arguments[a]))
              for (n in i)
                (e = r[n]),
                  r !== (o = i[n]) &&
                    (c && o && (ke.isPlainObject(o) || (t = ke.isArray(o)))
                      ? ((s = t
                          ? ((t = !1), e && ke.isArray(e) ? e : [])
                          : e && ke.isPlainObject(e)
                          ? e
                          : {}),
                        (r[n] = ke.extend(c, s, o)))
                      : o !== T && (r[n] = o));
          return r;
        }),
      ke.extend({
        expando: "jQuery" + (c + Math.random()).replace(/\D/g, ""),
        noConflict: function (e) {
          return (
            f.$ === ke && (f.$ = a), e && f.jQuery === ke && (f.jQuery = r), ke
          );
        },
        isReady: !1,
        readyWait: 1,
        holdReady: function (e) {
          e ? ke.readyWait++ : ke.ready(!0);
        },
        ready: function (e) {
          if (!0 === e ? !--ke.readyWait : !ke.isReady) {
            if (!m.body) return setTimeout(ke.ready);
            ((ke.isReady = !0) !== e && 0 < --ke.readyWait) ||
              (i.resolveWith(m, [ke]),
              ke.fn.trigger && ke(m).trigger("ready").off("ready"));
          }
        },
        isFunction: function (e) {
          return "function" === ke.type(e);
        },
        isArray:
          Array.isArray ||
          function (e) {
            return "array" === ke.type(e);
          },
        isWindow: function (e) {
          return null != e && e == e.window;
        },
        isNumeric: function (e) {
          return !isNaN(parseFloat(e)) && isFinite(e);
        },
        type: function (e) {
          return null == e
            ? e + ""
            : "object" == typeof e || "function" == typeof e
            ? l[y.call(e)] || "object"
            : typeof e;
        },
        isPlainObject: function (e) {
          var t;
          if (!e || "object" !== ke.type(e) || e.nodeType || ke.isWindow(e))
            return !1;
          try {
            if (
              e.constructor &&
              !w.call(e, "constructor") &&
              !w.call(e.constructor.prototype, "isPrototypeOf")
            )
              return !1;
          } catch (e) {
            return !1;
          }
          if (ke.support.ownLast) for (t in e) return w.call(e, t);
          for (t in e);
          return t === T || w.call(e, t);
        },
        isEmptyObject: function (e) {
          var t;
          for (t in e) return !1;
          return !0;
        },
        error: function (e) {
          throw Error(e);
        },
        parseHTML: function (e, t, o) {
          if (!e || "string" != typeof e) return null;
          "boolean" == typeof t && ((o = t), (t = !1)), (t = t || m);
          var n = z.exec(e),
            i = !o && [];
          return n
            ? [t.createElement(n[1])]
            : ((n = ke.buildFragment([e], t, i)),
              i && ke(i).remove(),
              ke.merge([], n.childNodes));
        },
        parseJSON: function (e) {
          return f.JSON && f.JSON.parse
            ? f.JSON.parse(e)
            : null === e
            ? e
            : "string" == typeof e &&
              (e = ke.trim(e)) &&
              E.test(e.replace(L, "@").replace(A, "]").replace(W, ""))
            ? Function("return " + e)()
            : (ke.error("Invalid JSON: " + e), T);
        },
        parseXML: function (e) {
          var t;
          if (!e || "string" != typeof e) return null;
          try {
            f.DOMParser
              ? (t = new DOMParser().parseFromString(e, "text/xml"))
              : (((t = new ActiveXObject("Microsoft.XMLDOM")).async = "false"),
                t.loadXML(e));
          } catch (e) {
            t = T;
          }
          return (
            (t &&
              t.documentElement &&
              !t.getElementsByTagName("parsererror").length) ||
              ke.error("Invalid XML: " + e),
            t
          );
        },
        noop: function () {},
        globalEval: function (e) {
          e &&
            ke.trim(e) &&
            (
              f.execScript ||
              function (e) {
                f.eval.call(f, e);
              }
            )(e);
        },
        camelCase: function (e) {
          return e.replace($, "ms-").replace(F, t);
        },
        nodeName: function (e, t) {
          return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase();
        },
        each: function (e, t, o) {
          var n = 0,
            i = e.length,
            s = H(e);
          if (o) {
            if (s) for (; n < i && !1 !== t.apply(e[n], o); n++);
            else for (n in e) if (!1 === t.apply(e[n], o)) break;
          } else if (s) for (; n < i && !1 !== t.call(e[n], n, e[n]); n++);
          else for (n in e) if (!1 === t.call(e[n], n, e[n])) break;
          return e;
        },
        trim:
          b && !b.call("\ufeffÂ ")
            ? function (e) {
                return null == e ? "" : b.call(e);
              }
            : function (e) {
                return null == e ? "" : (e + "").replace(k, "");
              },
        makeArray: function (e, t) {
          var o = t || [];
          return (
            null != e &&
              (H(Object(e))
                ? ke.merge(o, "string" == typeof e ? [e] : e)
                : d.call(o, e)),
            o
          );
        },
        inArray: function (e, t, o) {
          var n;
          if (t) {
            if (h) return h.call(t, e, o);
            for (
              n = t.length, o = o ? (o < 0 ? Math.max(0, n + o) : o) : 0;
              o < n;
              o++
            )
              if (o in t && t[o] === e) return o;
          }
          return -1;
        },
        merge: function (e, t) {
          var o = t.length,
            n = e.length,
            i = 0;
          if ("number" == typeof o) for (; i < o; i++) e[n++] = t[i];
          else for (; t[i] !== T; ) e[n++] = t[i++];
          return (e.length = n), e;
        },
        grep: function (e, t, o) {
          var n = [],
            i = 0,
            s = e.length;
          for (o = !!o; i < s; i++) o !== !!t(e[i], i) && n.push(e[i]);
          return n;
        },
        map: function (e, t, o) {
          var n,
            i = 0,
            s = e.length,
            r = [];
          if (H(e))
            for (; i < s; i++) null != (n = t(e[i], i, o)) && (r[r.length] = n);
          else for (i in e) null != (n = t(e[i], i, o)) && (r[r.length] = n);
          return g.apply([], r);
        },
        guid: 1,
        proxy: function (e, t) {
          var o, n, i;
          return (
            "string" == typeof t && ((i = e[t]), (t = e), (e = i)),
            ke.isFunction(e)
              ? ((o = p.call(arguments, 2)),
                ((n = function () {
                  return e.apply(t || this, o.concat(p.call(arguments)));
                }).guid = e.guid =
                  e.guid || ke.guid++),
                n)
              : T
          );
        },
        access: function (e, t, o, n, i, s, r) {
          var a = 0,
            l = e.length,
            c = null == o;
          if ("object" === ke.type(o))
            for (a in ((i = !0), o)) ke.access(e, t, a, o[a], !0, s, r);
          else if (
            n !== T &&
            ((i = !0),
            ke.isFunction(n) || (r = !0),
            c &&
              (t = r
                ? (t.call(e, n), null)
                : ((c = t),
                  function (e, t, o) {
                    return c.call(ke(e), o);
                  })),
            t)
          )
            for (; a < l; a++) t(e[a], o, r ? n : n.call(e[a], a, t(e[a], o)));
          return i ? e : c ? t.call(e) : l ? t(e[0], o) : s;
        },
        now: function () {
          return new Date().getTime();
        },
        swap: function (e, t, o, n) {
          var i,
            s,
            r = {};
          for (s in t) (r[s] = e.style[s]), (e.style[s] = t[s]);
          for (s in ((i = o.apply(e, n || [])), t)) e.style[s] = r[s];
          return i;
        },
      }),
      (ke.ready.promise = function (e) {
        if (!i)
          if (((i = ke.Deferred()), "complete" === m.readyState))
            setTimeout(ke.ready);
          else if (m.addEventListener)
            m.addEventListener("DOMContentLoaded", n, !1),
              f.addEventListener("load", n, !1);
          else {
            m.attachEvent("onreadystatechange", n), f.attachEvent("onload", n);
            var o = !1;
            try {
              o = null == f.frameElement && m.documentElement;
            } catch (e) {}
            o &&
              o.doScroll &&
              (function t() {
                if (!ke.isReady) {
                  try {
                    o.doScroll("left");
                  } catch (e) {
                    return setTimeout(t, 50);
                  }
                  O(), ke.ready();
                }
              })();
          }
        return i.promise(e);
      }),
      ke.each(
        "Boolean Number String Function Array Date RegExp Object Error".split(
          " "
        ),
        function (e, t) {
          l["[object " + t + "]"] = t.toLowerCase();
        }
      ),
      (o = ke(m)),
      (function (o, i) {
        var e,
          f,
          x,
          k,
          s,
          n,
          m,
          T,
          c,
          g,
          C,
          r,
          v,
          y,
          a,
          d,
          w,
          b = "sizzle" + -new Date(),
          S = o.document,
          z = 0,
          u = 0,
          l = se(),
          p = se(),
          h = se(),
          E = !1,
          W = function () {
            return 0;
          },
          L = typeof i,
          A = {}.hasOwnProperty,
          t = [],
          $ = t.pop,
          F = t.push,
          O = t.push,
          H = t.slice,
          D =
            t.indexOf ||
            function (e) {
              for (var t = 0, o = this.length; t < o; t++)
                if (this[t] === e) return t;
              return -1;
            },
          I =
            "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
          N = "[\\x20\\t\\r\\n\\f]",
          M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
          P = M.replace("w", "w#"),
          j =
            "\\[" +
            N +
            "*(" +
            M +
            ")" +
            N +
            "*(?:([*^$|!~]?=)" +
            N +
            "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" +
            P +
            ")|)|)" +
            N +
            "*\\]",
          R =
            ":(" +
            M +
            ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" +
            j.replace(3, 8) +
            ")*)|.*)\\)|)",
          B = RegExp("^" + N + "+|((?:^|[^\\\\])(?:\\\\.)*)" + N + "+$", "g"),
          _ = RegExp("^" + N + "*," + N + "*"),
          q = RegExp("^" + N + "*([>+~]|" + N + ")" + N + "*"),
          U = RegExp(N + "*[+~]"),
          X = RegExp("=" + N + "*([^\\]'\"]*)" + N + "*\\]", "g"),
          Z = RegExp(R),
          Y = RegExp("^" + P + "$"),
          Q = {
            ID: RegExp("^#(" + M + ")"),
            CLASS: RegExp("^\\.(" + M + ")"),
            TAG: RegExp("^(" + M.replace("w", "w*") + ")"),
            ATTR: RegExp("^" + j),
            PSEUDO: RegExp("^" + R),
            CHILD: RegExp(
              "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
                N +
                "*(even|odd|(([+-]|)(\\d*)n|)" +
                N +
                "*(?:([+-]|)" +
                N +
                "*(\\d+)|))" +
                N +
                "*\\)|)",
              "i"
            ),
            bool: RegExp("^(?:" + I + ")$", "i"),
            needsContext: RegExp(
              "^" +
                N +
                "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
                N +
                "*((?:-\\d)?\\d*)" +
                N +
                "*\\)|)(?=[^-]|$)",
              "i"
            ),
          },
          V = /^[^{]+\{\s*\[native \w/,
          G = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
          K = /^(?:input|select|textarea|button)$/i,
          J = /^h\d$/i,
          ee = /'|\\/g,
          te = RegExp("\\\\([\\da-f]{1,6}" + N + "?|(" + N + ")|.)", "ig"),
          oe = function (e, t, o) {
            var n = "0x" + t - 65536;
            return n != n || o
              ? t
              : n < 0
              ? String.fromCharCode(65536 + n)
              : String.fromCharCode(55296 | (n >> 10), 56320 | (1023 & n));
          };
        try {
          O.apply((t = H.call(S.childNodes)), S.childNodes),
            t[S.childNodes.length].nodeType;
        } catch (e) {
          O = {
            apply: t.length
              ? function (e, t) {
                  F.apply(e, H.call(t));
                }
              : function (e, t) {
                  for (var o = e.length, n = 0; (e[o++] = t[n++]); );
                  e.length = o - 1;
                },
          };
        }
        function ne(e, t, o, n) {
          var i, s, r, a, l, c, d, u, p, h;
          if (
            ((t ? t.ownerDocument || t : S) !== C && g(t),
            (o = o || []),
            !e || "string" != typeof e)
          )
            return o;
          if (1 !== (a = (t = t || C).nodeType) && 9 !== a) return [];
          if (v && !n) {
            if ((i = G.exec(e)))
              if ((r = i[1])) {
                if (9 === a) {
                  if (!(s = t.getElementById(r)) || !s.parentNode) return o;
                  if (s.id === r) return o.push(s), o;
                } else if (
                  t.ownerDocument &&
                  (s = t.ownerDocument.getElementById(r)) &&
                  w(t, s) &&
                  s.id === r
                )
                  return o.push(s), o;
              } else {
                if (i[2]) return O.apply(o, t.getElementsByTagName(e)), o;
                if (
                  (r = i[3]) &&
                  f.getElementsByClassName &&
                  t.getElementsByClassName
                )
                  return O.apply(o, t.getElementsByClassName(r)), o;
              }
            if (f.qsa && (!y || !y.test(e))) {
              if (
                ((u = d = b),
                (p = t),
                (h = 9 === a && e),
                1 === a && "object" !== t.nodeName.toLowerCase())
              ) {
                for (
                  c = fe(e),
                    (d = t.getAttribute("id"))
                      ? (u = d.replace(ee, "\\$&"))
                      : t.setAttribute("id", u),
                    u = "[id='" + u + "'] ",
                    l = c.length;
                  l--;

                )
                  c[l] = u + me(c[l]);
                (p = (U.test(e) && t.parentNode) || t), (h = c.join(","));
              }
              if (h)
                try {
                  return O.apply(o, p.querySelectorAll(h)), o;
                } catch (e) {
                } finally {
                  d || t.removeAttribute("id");
                }
            }
          }
          return (function (e, t, o, n) {
            var i,
              s,
              r,
              a,
              l,
              c = fe(e);
            if (!n && 1 === c.length) {
              if (
                2 < (s = c[0] = c[0].slice(0)).length &&
                "ID" === (r = s[0]).type &&
                f.getById &&
                9 === t.nodeType &&
                v &&
                k.relative[s[1].type]
              ) {
                if (
                  !(t = (k.find.ID(r.matches[0].replace(te, oe), t) || [])[0])
                )
                  return o;
                e = e.slice(s.shift().value.length);
              }
              for (
                i = Q.needsContext.test(e) ? 0 : s.length;
                i-- && ((r = s[i]), !k.relative[(a = r.type)]);

              )
                if (
                  (l = k.find[a]) &&
                  (n = l(
                    r.matches[0].replace(te, oe),
                    (U.test(s[0].type) && t.parentNode) || t
                  ))
                ) {
                  if ((s.splice(i, 1), !(e = n.length && me(s))))
                    return O.apply(o, n), o;
                  break;
                }
            }
            return m(e, c)(n, t, !v, o, U.test(e)), o;
          })(e.replace(B, "$1"), t, o, n);
        }
        function ie(e) {
          return V.test(e + "");
        }
        function se() {
          var o = [];
          function n(e, t) {
            return (
              o.push((e += " ")) > k.cacheLength && delete n[o.shift()],
              (n[e] = t)
            );
          }
          return n;
        }
        function re(e) {
          return (e[b] = !0), e;
        }
        function ae(e) {
          var t = C.createElement("div");
          try {
            return !!e(t);
          } catch (e) {
            return !1;
          } finally {
            t.parentNode && t.parentNode.removeChild(t), (t = null);
          }
        }
        function le(e, t, o) {
          for (var n, i = (e = e.split("|")).length, s = o ? null : t; i--; )
            ((n = k.attrHandle[e[i]]) && n !== t) || (k.attrHandle[e[i]] = s);
        }
        function ce(e, t) {
          var o = e.getAttributeNode(t);
          return o && o.specified
            ? o.value
            : !0 === e[t]
            ? t.toLowerCase()
            : null;
        }
        function de(e, t) {
          return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2);
        }
        function ue(e) {
          return "input" === e.nodeName.toLowerCase() ? e.defaultValue : i;
        }
        function pe(e, t) {
          var o = t && e,
            n =
              o &&
              1 === e.nodeType &&
              1 === t.nodeType &&
              (~t.sourceIndex || 1 << 31) - (~e.sourceIndex || 1 << 31);
          if (n) return n;
          if (o) for (; (o = o.nextSibling); ) if (o === t) return -1;
          return e ? 1 : -1;
        }
        function he(r) {
          return re(function (s) {
            return (
              (s = +s),
              re(function (e, t) {
                for (var o, n = r([], e.length, s), i = n.length; i--; )
                  e[(o = n[i])] && (e[o] = !(t[o] = e[o]));
              })
            );
          });
        }
        for (e in ((n = ne.isXML =
          function (e) {
            var t = e && (e.ownerDocument || e).documentElement;
            return !!t && "HTML" !== t.nodeName;
          }),
        (f = ne.support = {}),
        (g = ne.setDocument =
          function (e) {
            var l = e ? e.ownerDocument || e : S,
              t = l.parentWindow;
            return l !== C && 9 === l.nodeType && l.documentElement
              ? ((r = (C = l).documentElement),
                (v = !n(l)),
                t &&
                  t.frameElement &&
                  t.attachEvent("onbeforeunload", function () {
                    g();
                  }),
                (f.attributes = ae(function (e) {
                  return (
                    (e.innerHTML = "<a href='#'></a>"),
                    le(
                      "type|href|height|width",
                      de,
                      "#" === e.firstChild.getAttribute("href")
                    ),
                    le(I, ce, null == e.getAttribute("disabled")),
                    (e.className = "i"),
                    !e.getAttribute("className")
                  );
                })),
                (f.input = ae(function (e) {
                  return (
                    (e.innerHTML = "<input>"),
                    e.firstChild.setAttribute("value", ""),
                    "" === e.firstChild.getAttribute("value")
                  );
                })),
                le("value", ue, f.attributes && f.input),
                (f.getElementsByTagName = ae(function (e) {
                  return (
                    e.appendChild(l.createComment("")),
                    !e.getElementsByTagName("*").length
                  );
                })),
                (f.getElementsByClassName = ae(function (e) {
                  return (
                    (e.innerHTML =
                      "<div class='a'></div><div class='a i'></div>"),
                    (e.firstChild.className = "i"),
                    2 === e.getElementsByClassName("i").length
                  );
                })),
                (f.getById = ae(function (e) {
                  return (
                    (r.appendChild(e).id = b),
                    !l.getElementsByName || !l.getElementsByName(b).length
                  );
                })),
                f.getById
                  ? ((k.find.ID = function (e, t) {
                      if (typeof t.getElementById != L && v) {
                        var o = t.getElementById(e);
                        return o && o.parentNode ? [o] : [];
                      }
                    }),
                    (k.filter.ID = function (e) {
                      var t = e.replace(te, oe);
                      return function (e) {
                        return e.getAttribute("id") === t;
                      };
                    }))
                  : (delete k.find.ID,
                    (k.filter.ID = function (e) {
                      var o = e.replace(te, oe);
                      return function (e) {
                        var t =
                          typeof e.getAttributeNode != L &&
                          e.getAttributeNode("id");
                        return t && t.value === o;
                      };
                    })),
                (k.find.TAG = f.getElementsByTagName
                  ? function (e, t) {
                      return typeof t.getElementsByTagName != L
                        ? t.getElementsByTagName(e)
                        : i;
                    }
                  : function (e, t) {
                      var o,
                        n = [],
                        i = 0,
                        s = t.getElementsByTagName(e);
                      if ("*" !== e) return s;
                      for (; (o = s[i++]); ) 1 === o.nodeType && n.push(o);
                      return n;
                    }),
                (k.find.CLASS =
                  f.getElementsByClassName &&
                  function (e, t) {
                    return typeof t.getElementsByClassName != L && v
                      ? t.getElementsByClassName(e)
                      : i;
                  }),
                (a = []),
                (y = []),
                (f.qsa = ie(l.querySelectorAll)) &&
                  (ae(function (e) {
                    (e.innerHTML =
                      "<select><option selected=''></option></select>"),
                      e.querySelectorAll("[selected]").length ||
                        y.push("\\[" + N + "*(?:value|" + I + ")"),
                      e.querySelectorAll(":checked").length ||
                        y.push(":checked");
                  }),
                  ae(function (e) {
                    var t = l.createElement("input");
                    t.setAttribute("type", "hidden"),
                      e.appendChild(t).setAttribute("t", ""),
                      e.querySelectorAll("[t^='']").length &&
                        y.push("[*^$]=" + N + "*(?:''|\"\")"),
                      e.querySelectorAll(":enabled").length ||
                        y.push(":enabled", ":disabled"),
                      e.querySelectorAll("*,:x"),
                      y.push(",.*:");
                  })),
                (f.matchesSelector = ie(
                  (d =
                    r.webkitMatchesSelector ||
                    r.mozMatchesSelector ||
                    r.oMatchesSelector ||
                    r.msMatchesSelector)
                )) &&
                  ae(function (e) {
                    (f.disconnectedMatch = d.call(e, "div")),
                      d.call(e, "[s!='']:x"),
                      a.push("!=", R);
                  }),
                (y = y.length && RegExp(y.join("|"))),
                (a = a.length && RegExp(a.join("|"))),
                (w =
                  ie(r.contains) || r.compareDocumentPosition
                    ? function (e, t) {
                        var o = 9 === e.nodeType ? e.documentElement : e,
                          n = t && t.parentNode;
                        return (
                          e === n ||
                          !(
                            !n ||
                            1 !== n.nodeType ||
                            !(o.contains
                              ? o.contains(n)
                              : e.compareDocumentPosition &&
                                16 & e.compareDocumentPosition(n))
                          )
                        );
                      }
                    : function (e, t) {
                        if (t)
                          for (; (t = t.parentNode); ) if (t === e) return !0;
                        return !1;
                      }),
                (f.sortDetached = ae(function (e) {
                  return 1 & e.compareDocumentPosition(l.createElement("div"));
                })),
                (W = r.compareDocumentPosition
                  ? function (e, t) {
                      if (e === t) return (E = !0), 0;
                      var o =
                        t.compareDocumentPosition &&
                        e.compareDocumentPosition &&
                        e.compareDocumentPosition(t);
                      return o
                        ? 1 & o ||
                          (!f.sortDetached &&
                            t.compareDocumentPosition(e) === o)
                          ? e === l || w(S, e)
                            ? -1
                            : t === l || w(S, t)
                            ? 1
                            : c
                            ? D.call(c, e) - D.call(c, t)
                            : 0
                          : 4 & o
                          ? -1
                          : 1
                        : e.compareDocumentPosition
                        ? -1
                        : 1;
                    }
                  : function (e, t) {
                      var o,
                        n = 0,
                        i = e.parentNode,
                        s = t.parentNode,
                        r = [e],
                        a = [t];
                      if (e === t) return (E = !0), 0;
                      if (!i || !s)
                        return e === l
                          ? -1
                          : t === l
                          ? 1
                          : i
                          ? -1
                          : s
                          ? 1
                          : c
                          ? D.call(c, e) - D.call(c, t)
                          : 0;
                      if (i === s) return pe(e, t);
                      for (o = e; (o = o.parentNode); ) r.unshift(o);
                      for (o = t; (o = o.parentNode); ) a.unshift(o);
                      for (; r[n] === a[n]; ) n++;
                      return n
                        ? pe(r[n], a[n])
                        : r[n] === S
                        ? -1
                        : a[n] === S
                        ? 1
                        : 0;
                    }),
                l)
              : C;
          }),
        (ne.matches = function (e, t) {
          return ne(e, null, null, t);
        }),
        (ne.matchesSelector = function (e, t) {
          if (
            ((e.ownerDocument || e) !== C && g(e),
            (t = t.replace(X, "='$1']")),
            !(!f.matchesSelector || !v || (a && a.test(t)) || (y && y.test(t))))
          )
            try {
              var o = d.call(e, t);
              if (
                o ||
                f.disconnectedMatch ||
                (e.document && 11 !== e.document.nodeType)
              )
                return o;
            } catch (e) {}
          return 0 < ne(t, C, null, [e]).length;
        }),
        (ne.contains = function (e, t) {
          return (e.ownerDocument || e) !== C && g(e), w(e, t);
        }),
        (ne.attr = function (e, t) {
          (e.ownerDocument || e) !== C && g(e);
          var o = k.attrHandle[t.toLowerCase()],
            n = o && A.call(k.attrHandle, t.toLowerCase()) ? o(e, t, !v) : i;
          return n === i
            ? f.attributes || !v
              ? e.getAttribute(t)
              : (n = e.getAttributeNode(t)) && n.specified
              ? n.value
              : null
            : n;
        }),
        (ne.error = function (e) {
          throw Error("Syntax error, unrecognized expression: " + e);
        }),
        (ne.uniqueSort = function (e) {
          var t,
            o = [],
            n = 0,
            i = 0;
          if (
            ((E = !f.detectDuplicates),
            (c = !f.sortStable && e.slice(0)),
            e.sort(W),
            E)
          ) {
            for (; (t = e[i++]); ) t === e[i] && (n = o.push(i));
            for (; n--; ) e.splice(o[n], 1);
          }
          return e;
        }),
        (s = ne.getText =
          function (e) {
            var t,
              o = "",
              n = 0,
              i = e.nodeType;
            if (i) {
              if (1 === i || 9 === i || 11 === i) {
                if ("string" == typeof e.textContent) return e.textContent;
                for (e = e.firstChild; e; e = e.nextSibling) o += s(e);
              } else if (3 === i || 4 === i) return e.nodeValue;
            } else for (; (t = e[n]); n++) o += s(t);
            return o;
          }),
        (k = ne.selectors =
          {
            cacheLength: 50,
            createPseudo: re,
            match: Q,
            attrHandle: {},
            find: {},
            relative: {
              ">": { dir: "parentNode", first: !0 },
              " ": { dir: "parentNode" },
              "+": { dir: "previousSibling", first: !0 },
              "~": { dir: "previousSibling" },
            },
            preFilter: {
              ATTR: function (e) {
                return (
                  (e[1] = e[1].replace(te, oe)),
                  (e[3] = (e[4] || e[5] || "").replace(te, oe)),
                  "~=" === e[2] && (e[3] = " " + e[3] + " "),
                  e.slice(0, 4)
                );
              },
              CHILD: function (e) {
                return (
                  (e[1] = e[1].toLowerCase()),
                  "nth" === e[1].slice(0, 3)
                    ? (e[3] || ne.error(e[0]),
                      (e[4] = +(e[4]
                        ? e[5] + (e[6] || 1)
                        : 2 * ("even" === e[3] || "odd" === e[3]))),
                      (e[5] = +(e[7] + e[8] || "odd" === e[3])))
                    : e[3] && ne.error(e[0]),
                  e
                );
              },
              PSEUDO: function (e) {
                var t,
                  o = !e[5] && e[2];
                return Q.CHILD.test(e[0])
                  ? null
                  : (e[3] && e[4] !== i
                      ? (e[2] = e[4])
                      : o &&
                        Z.test(o) &&
                        (t = fe(o, !0)) &&
                        (t = o.indexOf(")", o.length - t) - o.length) &&
                        ((e[0] = e[0].slice(0, t)), (e[2] = o.slice(0, t))),
                    e.slice(0, 3));
              },
            },
            filter: {
              TAG: function (e) {
                var t = e.replace(te, oe).toLowerCase();
                return "*" === e
                  ? function () {
                      return !0;
                    }
                  : function (e) {
                      return e.nodeName && e.nodeName.toLowerCase() === t;
                    };
              },
              CLASS: function (e) {
                var t = l[e + " "];
                return (
                  t ||
                  ((t = RegExp("(^|" + N + ")" + e + "(" + N + "|$)")) &&
                    l(e, function (e) {
                      return t.test(
                        ("string" == typeof e.className && e.className) ||
                          (typeof e.getAttribute != L &&
                            e.getAttribute("class")) ||
                          ""
                      );
                    }))
                );
              },
              ATTR: function (o, n, i) {
                return function (e) {
                  var t = ne.attr(e, o);
                  return null == t
                    ? "!=" === n
                    : !n ||
                        ((t += ""),
                        "=" === n
                          ? t === i
                          : "!=" === n
                          ? t !== i
                          : "^=" === n
                          ? i && 0 === t.indexOf(i)
                          : "*=" === n
                          ? i && -1 < t.indexOf(i)
                          : "$=" === n
                          ? i && t.slice(-i.length) === i
                          : "~=" === n
                          ? -1 < (" " + t + " ").indexOf(i)
                          : "|=" === n &&
                            (t === i || t.slice(0, i.length + 1) === i + "-"));
                };
              },
              CHILD: function (h, e, t, f, m) {
                var g = "nth" !== h.slice(0, 3),
                  v = "last" !== h.slice(-4),
                  y = "of-type" === e;
                return 1 === f && 0 === m
                  ? function (e) {
                      return !!e.parentNode;
                    }
                  : function (e, t, o) {
                      var n,
                        i,
                        s,
                        r,
                        a,
                        l,
                        c = g != v ? "nextSibling" : "previousSibling",
                        d = e.parentNode,
                        u = y && e.nodeName.toLowerCase(),
                        p = !o && !y;
                      if (d) {
                        if (g) {
                          for (; c; ) {
                            for (s = e; (s = s[c]); )
                              if (
                                y
                                  ? s.nodeName.toLowerCase() === u
                                  : 1 === s.nodeType
                              )
                                return !1;
                            l = c = "only" === h && !l && "nextSibling";
                          }
                          return !0;
                        }
                        if (((l = [v ? d.firstChild : d.lastChild]), v && p)) {
                          for (
                            a =
                              (n = (i = d[b] || (d[b] = {}))[h] || [])[0] ===
                                z && n[1],
                              r = n[0] === z && n[2],
                              s = a && d.childNodes[a];
                            (s = (++a && s && s[c]) || (r = a = 0) || l.pop());

                          )
                            if (1 === s.nodeType && ++r && s === e) {
                              i[h] = [z, a, r];
                              break;
                            }
                        } else if (
                          p &&
                          (n = (e[b] || (e[b] = {}))[h]) &&
                          n[0] === z
                        )
                          r = n[1];
                        else
                          for (
                            ;
                            (s =
                              (++a && s && s[c]) || (r = a = 0) || l.pop()) &&
                            ((y
                              ? s.nodeName.toLowerCase() !== u
                              : 1 !== s.nodeType) ||
                              !++r ||
                              (p && ((s[b] || (s[b] = {}))[h] = [z, r]),
                              s !== e));

                          );
                        return (r -= m) === f || (0 == r % f && 0 <= r / f);
                      }
                    };
              },
              PSEUDO: function (e, s) {
                var t,
                  r =
                    k.pseudos[e] ||
                    k.setFilters[e.toLowerCase()] ||
                    ne.error("unsupported pseudo: " + e);
                return r[b]
                  ? r(s)
                  : 1 < r.length
                  ? ((t = [e, e, "", s]),
                    k.setFilters.hasOwnProperty(e.toLowerCase())
                      ? re(function (e, t) {
                          for (var o, n = r(e, s), i = n.length; i--; )
                            e[(o = D.call(e, n[i]))] = !(t[o] = n[i]);
                        })
                      : function (e) {
                          return r(e, 0, t);
                        })
                  : r;
              },
            },
            pseudos: {
              not: re(function (e) {
                var n = [],
                  i = [],
                  a = m(e.replace(B, "$1"));
                return a[b]
                  ? re(function (e, t, o, n) {
                      for (var i, s = a(e, null, n, []), r = e.length; r--; )
                        (i = s[r]) && (e[r] = !(t[r] = i));
                    })
                  : function (e, t, o) {
                      return (n[0] = e), a(n, null, o, i), !i.pop();
                    };
              }),
              has: re(function (t) {
                return function (e) {
                  return 0 < ne(t, e).length;
                };
              }),
              contains: re(function (t) {
                return function (e) {
                  return -1 < (e.textContent || e.innerText || s(e)).indexOf(t);
                };
              }),
              lang: re(function (o) {
                return (
                  Y.test(o || "") || ne.error("unsupported lang: " + o),
                  (o = o.replace(te, oe).toLowerCase()),
                  function (e) {
                    var t;
                    do {
                      if (
                        (t = v
                          ? e.lang
                          : e.getAttribute("xml:lang") ||
                            e.getAttribute("lang"))
                      )
                        return (
                          (t = t.toLowerCase()) === o ||
                          0 === t.indexOf(o + "-")
                        );
                    } while ((e = e.parentNode) && 1 === e.nodeType);
                    return !1;
                  }
                );
              }),
              target: function (e) {
                var t = o.location && o.location.hash;
                return t && t.slice(1) === e.id;
              },
              root: function (e) {
                return e === r;
              },
              focus: function (e) {
                return (
                  e === C.activeElement &&
                  (!C.hasFocus || C.hasFocus()) &&
                  !!(e.type || e.href || ~e.tabIndex)
                );
              },
              enabled: function (e) {
                return !1 === e.disabled;
              },
              disabled: function (e) {
                return !0 === e.disabled;
              },
              checked: function (e) {
                var t = e.nodeName.toLowerCase();
                return (
                  ("input" === t && !!e.checked) ||
                  ("option" === t && !!e.selected)
                );
              },
              selected: function (e) {
                return (
                  e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
                );
              },
              empty: function (e) {
                for (e = e.firstChild; e; e = e.nextSibling)
                  if ("@" < e.nodeName || 3 === e.nodeType || 4 === e.nodeType)
                    return !1;
                return !0;
              },
              parent: function (e) {
                return !k.pseudos.empty(e);
              },
              header: function (e) {
                return J.test(e.nodeName);
              },
              input: function (e) {
                return K.test(e.nodeName);
              },
              button: function (e) {
                var t = e.nodeName.toLowerCase();
                return ("input" === t && "button" === e.type) || "button" === t;
              },
              text: function (e) {
                var t;
                return (
                  "input" === e.nodeName.toLowerCase() &&
                  "text" === e.type &&
                  (null == (t = e.getAttribute("type")) ||
                    t.toLowerCase() === e.type)
                );
              },
              first: he(function () {
                return [0];
              }),
              last: he(function (e, t) {
                return [t - 1];
              }),
              eq: he(function (e, t, o) {
                return [o < 0 ? o + t : o];
              }),
              even: he(function (e, t) {
                for (var o = 0; o < t; o += 2) e.push(o);
                return e;
              }),
              odd: he(function (e, t) {
                for (var o = 1; o < t; o += 2) e.push(o);
                return e;
              }),
              lt: he(function (e, t, o) {
                for (var n = o < 0 ? o + t : o; 0 <= --n; ) e.push(n);
                return e;
              }),
              gt: he(function (e, t, o) {
                for (var n = o < 0 ? o + t : o; t > ++n; ) e.push(n);
                return e;
              }),
            },
          }),
        { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }))
          k.pseudos[e] = (function (t) {
            return function (e) {
              return "input" === e.nodeName.toLowerCase() && e.type === t;
            };
          })(e);
        for (e in { submit: !0, reset: !0 })
          k.pseudos[e] = (function (o) {
            return function (e) {
              var t = e.nodeName.toLowerCase();
              return ("input" === t || "button" === t) && e.type === o;
            };
          })(e);
        function fe(e, t) {
          var o,
            n,
            i,
            s,
            r,
            a,
            l,
            c = p[e + " "];
          if (c) return t ? 0 : c.slice(0);
          for (r = e, a = [], l = k.preFilter; r; ) {
            for (s in ((o && !(n = _.exec(r))) ||
              (n && (r = r.slice(n[0].length) || r), a.push((i = []))),
            (o = !1),
            (n = q.exec(r)) &&
              ((o = n.shift()),
              i.push({ value: o, type: n[0].replace(B, " ") }),
              (r = r.slice(o.length))),
            k.filter))
              !(n = Q[s].exec(r)) ||
                (l[s] && !(n = l[s](n))) ||
                ((o = n.shift()),
                i.push({ value: o, type: s, matches: n }),
                (r = r.slice(o.length)));
            if (!o) break;
          }
          return t ? r.length : r ? ne.error(e) : p(e, a).slice(0);
        }
        function me(e) {
          for (var t = 0, o = e.length, n = ""; t < o; t++) n += e[t].value;
          return n;
        }
        function ge(a, e, t) {
          var l = e.dir,
            c = t && "parentNode" === l,
            d = u++;
          return e.first
            ? function (e, t, o) {
                for (; (e = e[l]); )
                  if (1 === e.nodeType || c) return a(e, t, o);
              }
            : function (e, t, o) {
                var n,
                  i,
                  s,
                  r = z + " " + d;
                if (o) {
                  for (; (e = e[l]); )
                    if ((1 === e.nodeType || c) && a(e, t, o)) return !0;
                } else
                  for (; (e = e[l]); )
                    if (1 === e.nodeType || c)
                      if ((i = (s = e[b] || (e[b] = {}))[l]) && i[0] === r) {
                        if (!0 === (n = i[1]) || n === x) return !0 === n;
                      } else if (
                        (((i = s[l] = [r])[1] = a(e, t, o) || x), !0 === i[1])
                      )
                        return !0;
              };
        }
        function ve(i) {
          return 1 < i.length
            ? function (e, t, o) {
                for (var n = i.length; n--; ) if (!i[n](e, t, o)) return !1;
                return !0;
              }
            : i[0];
        }
        function ye(e, t, o, n, i) {
          for (var s, r = [], a = 0, l = e.length, c = null != t; a < l; a++)
            !(s = e[a]) || (o && !o(s, n, i)) || (r.push(s), c && t.push(a));
          return r;
        }
        function we(h, f, m, g, v, e) {
          return (
            g && !g[b] && (g = we(g)),
            v && !v[b] && (v = we(v, e)),
            re(function (e, t, o, n) {
              var i,
                s,
                r,
                a = [],
                l = [],
                c = t.length,
                d =
                  e ||
                  (function (e, t, o) {
                    for (var n = 0, i = t.length; n < i; n++) ne(e, t[n], o);
                    return o;
                  })(f || "*", o.nodeType ? [o] : o, []),
                u = !h || (!e && f) ? d : ye(d, a, h, o, n),
                p = m ? (v || (e ? h : c || g) ? [] : t) : u;
              if ((m && m(u, p, o, n), g))
                for (i = ye(p, l), g(i, [], o, n), s = i.length; s--; )
                  (r = i[s]) && (p[l[s]] = !(u[l[s]] = r));
              if (e) {
                if (v || h) {
                  if (v) {
                    for (i = [], s = p.length; s--; )
                      (r = p[s]) && i.push((u[s] = r));
                    v(null, (p = []), i, n);
                  }
                  for (s = p.length; s--; )
                    (r = p[s]) &&
                      -1 < (i = v ? D.call(e, r) : a[s]) &&
                      (e[i] = !(t[i] = r));
                }
              } else (p = ye(p === t ? p.splice(c, p.length) : p)), v ? v(null, t, p, n) : O.apply(t, p);
            })
          );
        }
        function be(g, v) {
          function e(e, t, o, n, i) {
            var s,
              r,
              a,
              l = [],
              c = 0,
              d = "0",
              u = e && [],
              p = null != i,
              h = T,
              f = e || (b && k.find.TAG("*", (i && t.parentNode) || t)),
              m = (z += null == h ? 1 : Math.random() || 0.1);
            for (p && ((T = t !== C && t), (x = y)); null != (s = f[d]); d++) {
              if (b && s) {
                for (r = 0; (a = g[r++]); )
                  if (a(s, t, o)) {
                    n.push(s);
                    break;
                  }
                p && ((z = m), (x = ++y));
              }
              w && ((s = !a && s) && c--, e && u.push(s));
            }
            if (((c += d), w && d !== c)) {
              for (r = 0; (a = v[r++]); ) a(u, l, t, o);
              if (e) {
                if (0 < c) for (; d--; ) u[d] || l[d] || (l[d] = $.call(n));
                l = ye(l);
              }
              O.apply(n, l),
                p && !e && 0 < l.length && 1 < c + v.length && ne.uniqueSort(n);
            }
            return p && ((z = m), (T = h)), u;
          }
          var y = 0,
            w = 0 < v.length,
            b = 0 < g.length;
          return w ? re(e) : e;
        }
        function xe() {}
        (m = ne.compile =
          function (e, t) {
            var o,
              n = [],
              i = [],
              s = h[e + " "];
            if (!s) {
              for (o = (t = t || fe(e)).length; o--; )
                (s = (function e(t) {
                  for (
                    var n,
                      o,
                      i,
                      s = t.length,
                      r = k.relative[t[0].type],
                      a = r || k.relative[" "],
                      l = r ? 1 : 0,
                      c = ge(
                        function (e) {
                          return e === n;
                        },
                        a,
                        !0
                      ),
                      d = ge(
                        function (e) {
                          return -1 < D.call(n, e);
                        },
                        a,
                        !0
                      ),
                      u = [
                        function (e, t, o) {
                          return (
                            (!r && (o || t !== T)) ||
                            ((n = t).nodeType ? c : d)(e, t, o)
                          );
                        },
                      ];
                    l < s;
                    l++
                  )
                    if ((o = k.relative[t[l].type])) u = [ge(ve(u), o)];
                    else {
                      if (
                        (o = k.filter[t[l].type].apply(null, t[l].matches))[b]
                      ) {
                        for (i = ++l; i < s && !k.relative[t[i].type]; i++);
                        return we(
                          1 < l && ve(u),
                          1 < l &&
                            me(
                              t
                                .slice(0, l - 1)
                                .concat({
                                  value: " " === t[l - 2].type ? "*" : "",
                                })
                            ).replace(B, "$1"),
                          o,
                          l < i && e(t.slice(l, i)),
                          i < s && e((t = t.slice(i))),
                          i < s && me(t)
                        );
                      }
                      u.push(o);
                    }
                  return ve(u);
                })(t[o]))[b]
                  ? n.push(s)
                  : i.push(s);
              s = h(e, be(i, n));
            }
            return s;
          }),
          (k.pseudos.nth = k.pseudos.eq),
          (xe.prototype = k.filters = k.pseudos),
          (k.setFilters = new xe()),
          (f.sortStable = b.split("").sort(W).join("") === b),
          g(),
          [0, 0].sort(W),
          (f.detectDuplicates = E),
          (ke.find = ne),
          (ke.expr = ne.selectors),
          (ke.expr[":"] = ke.expr.pseudos),
          (ke.unique = ne.uniqueSort),
          (ke.text = ne.getText),
          (ke.isXMLDoc = ne.isXML),
          (ke.contains = ne.contains);
      })(f);
    var D = {};
    (ke.Callbacks = function (i) {
      var e, o;
      i =
        "string" == typeof i
          ? D[i] ||
            ((o = D[(e = i)] = {}),
            ke.each(e.match(C) || [], function (e, t) {
              o[t] = !0;
            }),
            o)
          : ke.extend({}, i);
      var n,
        t,
        s,
        r,
        a,
        l,
        c = [],
        d = !i.once && [],
        u = function (e) {
          for (
            t = i.memory && e, s = !0, a = l || 0, l = 0, r = c.length, n = !0;
            c && a < r;
            a++
          )
            if (!1 === c[a].apply(e[0], e[1]) && i.stopOnFalse) {
              t = !1;
              break;
            }
          (n = !1),
            c && (d ? d.length && u(d.shift()) : t ? (c = []) : p.disable());
        },
        p = {
          add: function () {
            var e;
            return (
              c &&
                ((e = c.length),
                (function n(e) {
                  ke.each(e, function (e, t) {
                    var o = ke.type(t);
                    "function" === o
                      ? (i.unique && p.has(t)) || c.push(t)
                      : t && t.length && "string" !== o && n(t);
                  });
                })(arguments),
                n ? (r = c.length) : t && ((l = e), u(t))),
              this
            );
          },
          remove: function () {
            return (
              c &&
                ke.each(arguments, function (e, t) {
                  for (var o; -1 < (o = ke.inArray(t, c, o)); )
                    c.splice(o, 1), n && (o <= r && r--, o <= a && a--);
                }),
              this
            );
          },
          has: function (e) {
            return e ? -1 < ke.inArray(e, c) : !(!c || !c.length);
          },
          empty: function () {
            return (c = []), (r = 0), this;
          },
          disable: function () {
            return (c = d = t = T), this;
          },
          disabled: function () {
            return !c;
          },
          lock: function () {
            return (d = T), t || p.disable(), this;
          },
          locked: function () {
            return !d;
          },
          fireWith: function (e, t) {
            return (
              (t = [e, (t = t || []).slice ? t.slice() : t]),
              !c || (s && !d) || (n ? d.push(t) : u(t)),
              this
            );
          },
          fire: function () {
            return p.fireWith(this, arguments), this;
          },
          fired: function () {
            return !!s;
          },
        };
      return p;
    }),
      ke.extend({
        Deferred: function (e) {
          var r = [
              ["resolve", "done", ke.Callbacks("once memory"), "resolved"],
              ["reject", "fail", ke.Callbacks("once memory"), "rejected"],
              ["notify", "progress", ke.Callbacks("memory")],
            ],
            i = "pending",
            a = {
              state: function () {
                return i;
              },
              always: function () {
                return l.done(arguments).fail(arguments), this;
              },
              then: function () {
                var s = arguments;
                return ke
                  .Deferred(function (i) {
                    ke.each(r, function (e, t) {
                      var o = t[0],
                        n = ke.isFunction(s[e]) && s[e];
                      l[t[1]](function () {
                        var e = n && n.apply(this, arguments);
                        e && ke.isFunction(e.promise)
                          ? e
                              .promise()
                              .done(i.resolve)
                              .fail(i.reject)
                              .progress(i.notify)
                          : i[o + "With"](
                              this === a ? i.promise() : this,
                              n ? [e] : arguments
                            );
                      });
                    }),
                      (s = null);
                  })
                  .promise();
              },
              promise: function (e) {
                return null != e ? ke.extend(e, a) : a;
              },
            },
            l = {};
          return (
            (a.pipe = a.then),
            ke.each(r, function (e, t) {
              var o = t[2],
                n = t[3];
              (a[t[1]] = o.add),
                n &&
                  o.add(
                    function () {
                      i = n;
                    },
                    r[1 ^ e][2].disable,
                    r[2][2].lock
                  ),
                (l[t[0]] = function () {
                  return (
                    l[t[0] + "With"](this === l ? a : this, arguments), this
                  );
                }),
                (l[t[0] + "With"] = o.fireWith);
            }),
            a.promise(l),
            e && e.call(l, l),
            l
          );
        },
        when: function (e) {
          function t(t, o, n) {
            return function (e) {
              (o[t] = this),
                (n[t] = 1 < arguments.length ? p.call(arguments) : e),
                n === i ? c.notifyWith(o, n) : --l || c.resolveWith(o, n);
            };
          }
          var i,
            o,
            n,
            s = 0,
            r = p.call(arguments),
            a = r.length,
            l = 1 !== a || (e && ke.isFunction(e.promise)) ? a : 0,
            c = 1 === l ? e : ke.Deferred();
          if (1 < a)
            for (i = Array(a), o = Array(a), n = Array(a); s < a; s++)
              r[s] && ke.isFunction(r[s].promise)
                ? r[s]
                    .promise()
                    .done(t(s, n, r))
                    .fail(c.reject)
                    .progress(t(s, o, i))
                : --l;
          return l || c.resolveWith(n, r), c.promise();
        },
      }),
      (ke.support = (function (s) {
        var e,
          t,
          o,
          n,
          i,
          r,
          a,
          l,
          c,
          d = m.createElement("div");
        if (
          (d.setAttribute("className", "t"),
          (d.innerHTML =
            "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"),
          (e = d.getElementsByTagName("*") || []),
          !(t = d.getElementsByTagName("a")[0]) || !t.style || !e.length)
        )
          return s;
        (r = (n = m.createElement("select")).appendChild(
          m.createElement("option")
        )),
          (o = d.getElementsByTagName("input")[0]),
          (t.style.cssText = "top:1px;float:left;opacity:.5"),
          (s.getSetAttribute = "t" !== d.className),
          (s.leadingWhitespace = 3 === d.firstChild.nodeType),
          (s.tbody = !d.getElementsByTagName("tbody").length),
          (s.htmlSerialize = !!d.getElementsByTagName("link").length),
          (s.style = /top/.test(t.getAttribute("style"))),
          (s.hrefNormalized = "/a" === t.getAttribute("href")),
          (s.opacity = /^0.5/.test(t.style.opacity)),
          (s.cssFloat = !!t.style.cssFloat),
          (s.checkOn = !!o.value),
          (s.optSelected = r.selected),
          (s.enctype = !!m.createElement("form").enctype),
          (s.html5Clone =
            "<:nav></:nav>" !== m.createElement("nav").cloneNode(!0).outerHTML),
          (s.inlineBlockNeedsLayout = !1),
          (s.shrinkWrapBlocks = !1),
          (s.pixelPosition = !1),
          (s.deleteExpando = !0),
          (s.noCloneEvent = !0),
          (s.reliableMarginRight = !0),
          (s.boxSizingReliable = !0),
          (o.checked = !0),
          (s.noCloneChecked = o.cloneNode(!0).checked),
          (n.disabled = !0),
          (s.optDisabled = !r.disabled);
        try {
          delete d.test;
        } catch (e) {
          s.deleteExpando = !1;
        }
        for (c in ((o = m.createElement("input")).setAttribute("value", ""),
        (s.input = "" === o.getAttribute("value")),
        (o.value = "t"),
        o.setAttribute("type", "radio"),
        (s.radioValue = "t" === o.value),
        o.setAttribute("checked", "t"),
        o.setAttribute("name", "t"),
        (i = m.createDocumentFragment()).appendChild(o),
        (s.appendChecked = o.checked),
        (s.checkClone = i.cloneNode(!0).cloneNode(!0).lastChild.checked),
        d.attachEvent &&
          (d.attachEvent("onclick", function () {
            s.noCloneEvent = !1;
          }),
          d.cloneNode(!0).click()),
        { submit: !0, change: !0, focusin: !0 }))
          d.setAttribute((a = "on" + c), "t"),
            (s[c + "Bubbles"] = a in f || !1 === d.attributes[a].expando);
        for (c in ((d.style.backgroundClip = "content-box"),
        (d.cloneNode(!0).style.backgroundClip = ""),
        (s.clearCloneStyle = "content-box" === d.style.backgroundClip),
        ke(s)))
          break;
        return (
          (s.ownLast = "0" !== c),
          ke(function () {
            var e,
              t,
              o,
              n =
                "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
              i = m.getElementsByTagName("body")[0];
            i &&
              (((e = m.createElement("div")).style.cssText =
                "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"),
              i.appendChild(e).appendChild(d),
              (d.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"),
              ((o = d.getElementsByTagName("td"))[0].style.cssText =
                "padding:0;margin:0;border:0;display:none"),
              (l = 0 === o[0].offsetHeight),
              (o[0].style.display = ""),
              (o[1].style.display = "none"),
              (s.reliableHiddenOffsets = l && 0 === o[0].offsetHeight),
              (d.innerHTML = ""),
              (d.style.cssText =
                "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"),
              ke.swap(i, null != i.style.zoom ? { zoom: 1 } : {}, function () {
                s.boxSizing = 4 === d.offsetWidth;
              }),
              f.getComputedStyle &&
                ((s.pixelPosition =
                  "1%" !== (f.getComputedStyle(d, null) || {}).top),
                (s.boxSizingReliable =
                  "4px" ===
                  (f.getComputedStyle(d, null) || { width: "4px" }).width),
                ((t = d.appendChild(m.createElement("div"))).style.cssText =
                  d.style.cssText =
                    n),
                (t.style.marginRight = t.style.width = "0"),
                (d.style.width = "1px"),
                (s.reliableMarginRight = !parseFloat(
                  (f.getComputedStyle(t, null) || {}).marginRight
                ))),
              typeof d.style.zoom !== v &&
                ((d.innerHTML = ""),
                (d.style.cssText =
                  n + "width:1px;padding:1px;display:inline;zoom:1"),
                (s.inlineBlockNeedsLayout = 3 === d.offsetWidth),
                (d.style.display = "block"),
                (d.innerHTML = "<div></div>"),
                (d.firstChild.style.width = "5px"),
                (s.shrinkWrapBlocks = 3 !== d.offsetWidth),
                s.inlineBlockNeedsLayout && (i.style.zoom = 1)),
              i.removeChild(e),
              (e = d = o = t = null));
          }),
          (e = n = i = r = t = o = null),
          s
        );
      })({}));
    var I = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
      N = /([A-Z])/g;
    function M(e, t, o, n) {
      if (ke.acceptData(e)) {
        var i,
          s,
          r = ke.expando,
          a = e.nodeType,
          l = a ? ke.cache : e,
          c = a ? e[r] : e[r] && r;
        if ((c && l[c] && (n || l[c].data)) || o !== T || "string" != typeof t)
          return (
            l[(c = c || (a ? (e[r] = u.pop() || ke.guid++) : r))] ||
              (l[c] = a ? {} : { toJSON: ke.noop }),
            ("object" != typeof t && "function" != typeof t) ||
              (n
                ? (l[c] = ke.extend(l[c], t))
                : (l[c].data = ke.extend(l[c].data, t))),
            (s = l[c]),
            n || (s.data || (s.data = {}), (s = s.data)),
            o !== T && (s[ke.camelCase(t)] = o),
            "string" == typeof t
              ? null == (i = s[t]) && (i = s[ke.camelCase(t)])
              : (i = s),
            i
          );
      }
    }
    function P(e, t, o) {
      if (ke.acceptData(e)) {
        var n,
          i,
          s = e.nodeType,
          r = s ? ke.cache : e,
          a = s ? e[ke.expando] : ke.expando;
        if (r[a]) {
          if (t && (n = o ? r[a] : r[a].data)) {
            i = (t = ke.isArray(t)
              ? t.concat(ke.map(t, ke.camelCase))
              : t in n
              ? [t]
              : (t = ke.camelCase(t)) in n
              ? [t]
              : t.split(" ")).length;
            for (; i--; ) delete n[t[i]];
            if (o ? !R(n) : !ke.isEmptyObject(n)) return;
          }
          (o || (delete r[a].data, R(r[a]))) &&
            (s
              ? ke.cleanData([e], !0)
              : ke.support.deleteExpando || r != r.window
              ? delete r[a]
              : (r[a] = null));
        }
      }
    }
    function j(e, t, o) {
      if (o === T && 1 === e.nodeType) {
        var n = "data-" + t.replace(N, "-$1").toLowerCase();
        if ("string" == typeof (o = e.getAttribute(n))) {
          try {
            o =
              "true" === o ||
              ("false" !== o &&
                ("null" === o
                  ? null
                  : +o + "" === o
                  ? +o
                  : I.test(o)
                  ? ke.parseJSON(o)
                  : o));
          } catch (e) {}
          ke.data(e, t, o);
        } else o = T;
      }
      return o;
    }
    function R(e) {
      var t;
      for (t in e)
        if (("data" !== t || !ke.isEmptyObject(e[t])) && "toJSON" !== t) return;
      return 1;
    }
    ke.extend({
      cache: {},
      noData: {
        applet: !0,
        embed: !0,
        object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
      },
      hasData: function (e) {
        return (
          !!(e = e.nodeType ? ke.cache[e[ke.expando]] : e[ke.expando]) && !R(e)
        );
      },
      data: function (e, t, o) {
        return M(e, t, o);
      },
      removeData: function (e, t) {
        return P(e, t);
      },
      _data: function (e, t, o) {
        return M(e, t, o, !0);
      },
      _removeData: function (e, t) {
        return P(e, t, !0);
      },
      acceptData: function (e) {
        if (e.nodeType && 1 !== e.nodeType && 9 !== e.nodeType) return !1;
        var t = e.nodeName && ke.noData[e.nodeName.toLowerCase()];
        return !t || (!0 !== t && e.getAttribute("classid") === t);
      },
    }),
      ke.fn.extend({
        data: function (e, t) {
          var o,
            n,
            i = null,
            s = 0,
            r = this[0];
          if (e !== T)
            return "object" == typeof e
              ? this.each(function () {
                  ke.data(this, e);
                })
              : 1 < arguments.length
              ? this.each(function () {
                  ke.data(this, e, t);
                })
              : r
              ? j(r, e, ke.data(r, e))
              : null;
          if (
            this.length &&
            ((i = ke.data(r)), 1 === r.nodeType && !ke._data(r, "parsedAttrs"))
          ) {
            for (o = r.attributes; o.length > s; s++)
              0 === (n = o[s].name).indexOf("data-") &&
                j(r, (n = ke.camelCase(n.slice(5))), i[n]);
            ke._data(r, "parsedAttrs", !0);
          }
          return i;
        },
        removeData: function (e) {
          return this.each(function () {
            ke.removeData(this, e);
          });
        },
      }),
      ke.extend({
        queue: function (e, t, o) {
          var n;
          return e
            ? ((t = (t || "fx") + "queue"),
              (n = ke._data(e, t)),
              o &&
                (!n || ke.isArray(o)
                  ? (n = ke._data(e, t, ke.makeArray(o)))
                  : n.push(o)),
              n || [])
            : T;
        },
        dequeue: function (e, t) {
          t = t || "fx";
          var o = ke.queue(e, t),
            n = o.length,
            i = o.shift(),
            s = ke._queueHooks(e, t);
          "inprogress" === i && ((i = o.shift()), n--),
            i &&
              ("fx" === t && o.unshift("inprogress"),
              delete s.stop,
              i.call(
                e,
                function () {
                  ke.dequeue(e, t);
                },
                s
              )),
            !n && s && s.empty.fire();
        },
        _queueHooks: function (e, t) {
          var o = t + "queueHooks";
          return (
            ke._data(e, o) ||
            ke._data(e, o, {
              empty: ke.Callbacks("once memory").add(function () {
                ke._removeData(e, t + "queue"), ke._removeData(e, o);
              }),
            })
          );
        },
      }),
      ke.fn.extend({
        queue: function (t, o) {
          var e = 2;
          return (
            "string" != typeof t && ((o = t), (t = "fx"), e--),
            arguments.length < e
              ? ke.queue(this[0], t)
              : o === T
              ? this
              : this.each(function () {
                  var e = ke.queue(this, t, o);
                  ke._queueHooks(this, t),
                    "fx" === t && "inprogress" !== e[0] && ke.dequeue(this, t);
                })
          );
        },
        dequeue: function (e) {
          return this.each(function () {
            ke.dequeue(this, e);
          });
        },
        delay: function (n, e) {
          return (
            (n = (ke.fx && ke.fx.speeds[n]) || n),
            (e = e || "fx"),
            this.queue(e, function (e, t) {
              var o = setTimeout(e, n);
              t.stop = function () {
                clearTimeout(o);
              };
            })
          );
        },
        clearQueue: function (e) {
          return this.queue(e || "fx", []);
        },
        promise: function (e, t) {
          function o() {
            --i || s.resolveWith(r, [r]);
          }
          var n,
            i = 1,
            s = ke.Deferred(),
            r = this,
            a = this.length;
          for ("string" != typeof e && ((t = e), (e = T)), e = e || "fx"; a--; )
            (n = ke._data(r[a], e + "queueHooks")) &&
              n.empty &&
              (i++, n.empty.add(o));
          return o(), s.promise(t);
        },
      });
    var B,
      _,
      q = /[\t\r\n\f]/g,
      U = /\r/g,
      X = /^(?:input|select|textarea|button|object)$/i,
      Z = /^(?:a|area)$/i,
      Y = /^(?:checked|selected)$/i,
      Q = ke.support.getSetAttribute,
      V = ke.support.input;
    ke.fn.extend({
      attr: function (e, t) {
        return ke.access(this, ke.attr, e, t, 1 < arguments.length);
      },
      removeAttr: function (e) {
        return this.each(function () {
          ke.removeAttr(this, e);
        });
      },
      prop: function (e, t) {
        return ke.access(this, ke.prop, e, t, 1 < arguments.length);
      },
      removeProp: function (e) {
        return (
          (e = ke.propFix[e] || e),
          this.each(function () {
            try {
              (this[e] = T), delete this[e];
            } catch (e) {}
          })
        );
      },
      addClass: function (t) {
        var e,
          o,
          n,
          i,
          s,
          r = 0,
          a = this.length,
          l = "string" == typeof t && t;
        if (ke.isFunction(t))
          return this.each(function (e) {
            ke(this).addClass(t.call(this, e, this.className));
          });
        if (l)
          for (e = (t || "").match(C) || []; r < a; r++)
            if (
              (n =
                1 === (o = this[r]).nodeType &&
                (o.className ? (" " + o.className + " ").replace(q, " ") : " "))
            ) {
              for (s = 0; (i = e[s++]); )
                n.indexOf(" " + i + " ") < 0 && (n += i + " ");
              o.className = ke.trim(n);
            }
        return this;
      },
      removeClass: function (t) {
        var e,
          o,
          n,
          i,
          s,
          r = 0,
          a = this.length,
          l = 0 === arguments.length || ("string" == typeof t && t);
        if (ke.isFunction(t))
          return this.each(function (e) {
            ke(this).removeClass(t.call(this, e, this.className));
          });
        if (l)
          for (e = (t || "").match(C) || []; r < a; r++)
            if (
              (n =
                1 === (o = this[r]).nodeType &&
                (o.className ? (" " + o.className + " ").replace(q, " ") : ""))
            ) {
              for (s = 0; (i = e[s++]); )
                for (; 0 <= n.indexOf(" " + i + " "); )
                  n = n.replace(" " + i + " ", " ");
              o.className = t ? ke.trim(n) : "";
            }
        return this;
      },
      toggleClass: function (s, r) {
        var a = typeof s,
          l = "boolean" == typeof r;
        return ke.isFunction(s)
          ? this.each(function (e) {
              ke(this).toggleClass(s.call(this, e, this.className, r), r);
            })
          : this.each(function () {
              if ("string" == a)
                for (
                  var e, t = 0, o = ke(this), n = r, i = s.match(C) || [];
                  (e = i[t++]);

                )
                  (n = l ? n : !o.hasClass(e)),
                    o[n ? "addClass" : "removeClass"](e);
              else
                (a !== v && "boolean" != a) ||
                  (this.className &&
                    ke._data(this, "__className__", this.className),
                  (this.className =
                    (!this.className &&
                      !1 !== s &&
                      ke._data(this, "__className__")) ||
                    ""));
            });
      },
      hasClass: function (e) {
        for (var t = " " + e + " ", o = 0, n = this.length; o < n; o++)
          if (
            1 === this[o].nodeType &&
            0 <= (" " + this[o].className + " ").replace(q, " ").indexOf(t)
          )
            return !0;
        return !1;
      },
      val: function (o) {
        var e,
          n,
          i,
          t = this[0];
        return arguments.length
          ? ((i = ke.isFunction(o)),
            this.each(function (e) {
              var t;
              1 === this.nodeType &&
                (null == (t = i ? o.call(this, e, ke(this).val()) : o)
                  ? (t = "")
                  : "number" == typeof t
                  ? (t += "")
                  : ke.isArray(t) &&
                    (t = ke.map(t, function (e) {
                      return null == e ? "" : e + "";
                    })),
                ((n =
                  ke.valHooks[this.type] ||
                  ke.valHooks[this.nodeName.toLowerCase()]) &&
                  "set" in n &&
                  n.set(this, t, "value") !== T) ||
                  (this.value = t));
            }))
          : t
          ? (n =
              ke.valHooks[t.type] || ke.valHooks[t.nodeName.toLowerCase()]) &&
            "get" in n &&
            (e = n.get(t, "value")) !== T
            ? e
            : "string" == typeof (e = t.value)
            ? e.replace(U, "")
            : null == e
            ? ""
            : e
          : void 0;
      },
    }),
      ke.extend({
        valHooks: {
          option: {
            get: function (e) {
              var t = ke.find.attr(e, "value");
              return null != t ? t : e.text;
            },
          },
          select: {
            get: function (e) {
              for (
                var t,
                  o,
                  n = e.options,
                  i = e.selectedIndex,
                  s = "select-one" === e.type || i < 0,
                  r = s ? null : [],
                  a = s ? i + 1 : n.length,
                  l = i < 0 ? a : s ? i : 0;
                l < a;
                l++
              )
                if (
                  !(
                    (!(o = n[l]).selected && l !== i) ||
                    (ke.support.optDisabled
                      ? o.disabled
                      : null !== o.getAttribute("disabled")) ||
                    (o.parentNode.disabled &&
                      ke.nodeName(o.parentNode, "optgroup"))
                  )
                ) {
                  if (((t = ke(o).val()), s)) return t;
                  r.push(t);
                }
              return r;
            },
            set: function (e, t) {
              for (
                var o, n, i = e.options, s = ke.makeArray(t), r = i.length;
                r--;

              )
                ((n = i[r]).selected = 0 <= ke.inArray(ke(n).val(), s)) &&
                  (o = !0);
              return o || (e.selectedIndex = -1), s;
            },
          },
        },
        attr: function (e, t, o) {
          var n,
            i,
            s = e.nodeType;
          if (e && 3 !== s && 8 !== s && 2 !== s)
            return typeof e.getAttribute === v
              ? ke.prop(e, t, o)
              : ((1 === s && ke.isXMLDoc(e)) ||
                  ((t = t.toLowerCase()),
                  (n =
                    ke.attrHooks[t] || (ke.expr.match.bool.test(t) ? _ : B))),
                o === T
                  ? n && "get" in n && null !== (i = n.get(e, t))
                    ? i
                    : null == (i = ke.find.attr(e, t))
                    ? T
                    : i
                  : null !== o
                  ? n && "set" in n && (i = n.set(e, o, t)) !== T
                    ? i
                    : (e.setAttribute(t, o + ""), o)
                  : (ke.removeAttr(e, t), T));
        },
        removeAttr: function (e, t) {
          var o,
            n,
            i = 0,
            s = t && t.match(C);
          if (s && 1 === e.nodeType)
            for (; (o = s[i++]); )
              (n = ke.propFix[o] || o),
                ke.expr.match.bool.test(o)
                  ? (V && Q) || !Y.test(o)
                    ? (e[n] = !1)
                    : (e[ke.camelCase("default-" + o)] = e[n] = !1)
                  : ke.attr(e, o, ""),
                e.removeAttribute(Q ? o : n);
        },
        attrHooks: {
          type: {
            set: function (e, t) {
              if (
                !ke.support.radioValue &&
                "radio" === t &&
                ke.nodeName(e, "input")
              ) {
                var o = e.value;
                return e.setAttribute("type", t), o && (e.value = o), t;
              }
            },
          },
        },
        propFix: { for: "htmlFor", class: "className" },
        prop: function (e, t, o) {
          var n,
            i,
            s = e.nodeType;
          if (e && 3 !== s && 8 !== s && 2 !== s)
            return (
              (1 !== s || !ke.isXMLDoc(e)) &&
                ((t = ke.propFix[t] || t), (i = ke.propHooks[t])),
              o !== T
                ? i && "set" in i && (n = i.set(e, o, t)) !== T
                  ? n
                  : (e[t] = o)
                : i && "get" in i && null !== (n = i.get(e, t))
                ? n
                : e[t]
            );
        },
        propHooks: {
          tabIndex: {
            get: function (e) {
              var t = ke.find.attr(e, "tabindex");
              return t
                ? parseInt(t, 10)
                : X.test(e.nodeName) || (Z.test(e.nodeName) && e.href)
                ? 0
                : -1;
            },
          },
        },
      }),
      (_ = {
        set: function (e, t, o) {
          return (
            !1 === t
              ? ke.removeAttr(e, o)
              : (V && Q) || !Y.test(o)
              ? e.setAttribute((!Q && ke.propFix[o]) || o, o)
              : (e[ke.camelCase("default-" + o)] = e[o] = !0),
            o
          );
        },
      }),
      ke.each(ke.expr.match.bool.source.match(/\w+/g), function (e, t) {
        var s = ke.expr.attrHandle[t] || ke.find.attr;
        ke.expr.attrHandle[t] =
          (V && Q) || !Y.test(t)
            ? function (e, t, o) {
                var n = ke.expr.attrHandle[t],
                  i = o
                    ? T
                    : (ke.expr.attrHandle[t] = T) != s(e, t, o)
                    ? t.toLowerCase()
                    : null;
                return (ke.expr.attrHandle[t] = n), i;
              }
            : function (e, t, o) {
                return o
                  ? T
                  : e[ke.camelCase("default-" + t)]
                  ? t.toLowerCase()
                  : null;
              };
      }),
      (V && Q) ||
        (ke.attrHooks.value = {
          set: function (e, t, o) {
            return ke.nodeName(e, "input")
              ? ((e.defaultValue = t), T)
              : B && B.set(e, t, o);
          },
        }),
      Q ||
        ((B = {
          set: function (e, t, o) {
            var n = e.getAttributeNode(o);
            return (
              n || e.setAttributeNode((n = e.ownerDocument.createAttribute(o))),
              (n.value = t += ""),
              "value" === o || t === e.getAttribute(o) ? t : T
            );
          },
        }),
        (ke.expr.attrHandle.id =
          ke.expr.attrHandle.name =
          ke.expr.attrHandle.coords =
            function (e, t, o) {
              var n;
              return o
                ? T
                : (n = e.getAttributeNode(t)) && "" !== n.value
                ? n.value
                : null;
            }),
        (ke.valHooks.button = {
          get: function (e, t) {
            var o = e.getAttributeNode(t);
            return o && o.specified ? o.value : T;
          },
          set: B.set,
        }),
        (ke.attrHooks.contenteditable = {
          set: function (e, t, o) {
            B.set(e, "" !== t && t, o);
          },
        }),
        ke.each(["width", "height"], function (e, o) {
          ke.attrHooks[o] = {
            set: function (e, t) {
              return "" === t ? (e.setAttribute(o, "auto"), t) : T;
            },
          };
        })),
      ke.support.hrefNormalized ||
        ke.each(["href", "src"], function (e, t) {
          ke.propHooks[t] = {
            get: function (e) {
              return e.getAttribute(t, 4);
            },
          };
        }),
      ke.support.style ||
        (ke.attrHooks.style = {
          get: function (e) {
            return e.style.cssText || T;
          },
          set: function (e, t) {
            return (e.style.cssText = t + "");
          },
        }),
      ke.support.optSelected ||
        (ke.propHooks.selected = {
          get: function (e) {
            var t = e.parentNode;
            return (
              t &&
                (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex),
              null
            );
          },
        }),
      ke.each(
        [
          "tabIndex",
          "readOnly",
          "maxLength",
          "cellSpacing",
          "cellPadding",
          "rowSpan",
          "colSpan",
          "useMap",
          "frameBorder",
          "contentEditable",
        ],
        function () {
          ke.propFix[this.toLowerCase()] = this;
        }
      ),
      ke.support.enctype || (ke.propFix.enctype = "encoding"),
      ke.each(["radio", "checkbox"], function () {
        (ke.valHooks[this] = {
          set: function (e, t) {
            return ke.isArray(t)
              ? (e.checked = 0 <= ke.inArray(ke(e).val(), t))
              : T;
          },
        }),
          ke.support.checkOn ||
            (ke.valHooks[this].get = function (e) {
              return null === e.getAttribute("value") ? "on" : e.value;
            });
      });
    var G = /^(?:input|select|textarea)$/i,
      K = /^key/,
      J = /^(?:mouse|contextmenu)|click/,
      ee = /^(?:focusinfocus|focusoutblur)$/,
      te = /^([^.]*)(?:\.(.+)|)$/;
    function oe() {
      return !0;
    }
    function ne() {
      return !1;
    }
    function ie() {
      try {
        return m.activeElement;
      } catch (e) {}
    }
    (ke.event = {
      global: {},
      add: function (e, t, o, n, i) {
        var s,
          r,
          a,
          l,
          c,
          d,
          u,
          p,
          h,
          f,
          m,
          g = ke._data(e);
        if (g) {
          for (
            o.handler && ((o = (l = o).handler), (i = l.selector)),
              o.guid || (o.guid = ke.guid++),
              (r = g.events) || (r = g.events = {}),
              (d = g.handle) ||
                ((d = g.handle =
                  function (e) {
                    return typeof ke === v ||
                      (e && ke.event.triggered === e.type)
                      ? T
                      : ke.event.dispatch.apply(d.elem, arguments);
                  }).elem = e),
              a = (t = (t || "").match(C) || [""]).length;
            a--;

          )
            (h = m = (s = te.exec(t[a]) || [])[1]),
              (f = (s[2] || "").split(".").sort()),
              h &&
                ((c = ke.event.special[h] || {}),
                (h = (i ? c.delegateType : c.bindType) || h),
                (c = ke.event.special[h] || {}),
                (u = ke.extend(
                  {
                    type: h,
                    origType: m,
                    data: n,
                    handler: o,
                    guid: o.guid,
                    selector: i,
                    needsContext: i && ke.expr.match.needsContext.test(i),
                    namespace: f.join("."),
                  },
                  l
                )),
                (p = r[h]) ||
                  (((p = r[h] = []).delegateCount = 0),
                  (c.setup && !1 !== c.setup.call(e, n, f, d)) ||
                    (e.addEventListener
                      ? e.addEventListener(h, d, !1)
                      : e.attachEvent && e.attachEvent("on" + h, d))),
                c.add &&
                  (c.add.call(e, u),
                  u.handler.guid || (u.handler.guid = o.guid)),
                i ? p.splice(p.delegateCount++, 0, u) : p.push(u),
                (ke.event.global[h] = !0));
          e = null;
        }
      },
      remove: function (e, t, o, n, i) {
        var s,
          r,
          a,
          l,
          c,
          d,
          u,
          p,
          h,
          f,
          m,
          g = ke.hasData(e) && ke._data(e);
        if (g && (d = g.events)) {
          for (c = (t = (t || "").match(C) || [""]).length; c--; )
            if (
              ((h = m = (a = te.exec(t[c]) || [])[1]),
              (f = (a[2] || "").split(".").sort()),
              h)
            ) {
              for (
                u = ke.event.special[h] || {},
                  p = d[(h = (n ? u.delegateType : u.bindType) || h)] || [],
                  a =
                    a[2] &&
                    RegExp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                  l = s = p.length;
                s--;

              )
                (r = p[s]),
                  (!i && m !== r.origType) ||
                    (o && o.guid !== r.guid) ||
                    (a && !a.test(r.namespace)) ||
                    (n && n !== r.selector && ("**" !== n || !r.selector)) ||
                    (p.splice(s, 1),
                    r.selector && p.delegateCount--,
                    u.remove && u.remove.call(e, r));
              l &&
                !p.length &&
                ((u.teardown && !1 !== u.teardown.call(e, f, g.handle)) ||
                  ke.removeEvent(e, h, g.handle),
                delete d[h]);
            } else for (h in d) ke.event.remove(e, h + t[c], o, n, !0);
          ke.isEmptyObject(d) && (delete g.handle, ke._removeData(e, "events"));
        }
      },
      trigger: function (e, t, o, n) {
        var i,
          s,
          r,
          a,
          l,
          c,
          d = [o || m],
          u = w.call(e, "type") ? e.type : e,
          p = w.call(e, "namespace") ? e.namespace.split(".") : [],
          h = (l = o = o || m);
        if (
          3 !== o.nodeType &&
          8 !== o.nodeType &&
          !ee.test(u + ke.event.triggered) &&
          (0 <= u.indexOf(".") && ((u = (p = u.split(".")).shift()), p.sort()),
          (s = u.indexOf(":") < 0 && "on" + u),
          ((e = e[ke.expando]
            ? e
            : new ke.Event(u, "object" == typeof e && e)).isTrigger = n
            ? 2
            : 3),
          (e.namespace = p.join(".")),
          (e.namespace_re = e.namespace
            ? RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)")
            : null),
          (e.result = T),
          e.target || (e.target = o),
          (t = null == t ? [e] : ke.makeArray(t, [e])),
          (a = ke.event.special[u] || {}),
          n || !a.trigger || !1 !== a.trigger.apply(o, t))
        ) {
          if (!n && !a.noBubble && !ke.isWindow(o)) {
            for (
              r = a.delegateType || u, ee.test(r + u) || (h = h.parentNode);
              h;
              h = h.parentNode
            )
              d.push(h), (l = h);
            l === (o.ownerDocument || m) &&
              d.push(l.defaultView || l.parentWindow || f);
          }
          for (c = 0; (h = d[c++]) && !e.isPropagationStopped(); )
            (e.type = 1 < c ? r : a.bindType || u),
              (i =
                (ke._data(h, "events") || {})[e.type] &&
                ke._data(h, "handle")) && i.apply(h, t),
              (i = s && h[s]) &&
                ke.acceptData(h) &&
                i.apply &&
                !1 === i.apply(h, t) &&
                e.preventDefault();
          if (
            ((e.type = u),
            !n &&
              !e.isDefaultPrevented() &&
              (!a._default || !1 === a._default.apply(d.pop(), t)) &&
              ke.acceptData(o) &&
              s &&
              o[u] &&
              !ke.isWindow(o))
          ) {
            (l = o[s]) && (o[s] = null), (ke.event.triggered = u);
            try {
              o[u]();
            } catch (e) {}
            (ke.event.triggered = T), l && (o[s] = l);
          }
          return e.result;
        }
      },
      dispatch: function (e) {
        e = ke.event.fix(e);
        var t,
          o,
          n,
          i,
          s,
          r = [],
          a = p.call(arguments),
          l = (ke._data(this, "events") || {})[e.type] || [],
          c = ke.event.special[e.type] || {};
        if (
          (((a[0] = e).delegateTarget = this),
          !c.preDispatch || !1 !== c.preDispatch.call(this, e))
        ) {
          for (
            r = ke.event.handlers.call(this, e, l), t = 0;
            (i = r[t++]) && !e.isPropagationStopped();

          )
            for (
              e.currentTarget = i.elem, s = 0;
              (n = i.handlers[s++]) && !e.isImmediatePropagationStopped();

            )
              (e.namespace_re && !e.namespace_re.test(n.namespace)) ||
                ((e.handleObj = n),
                (e.data = n.data),
                (o = (
                  (ke.event.special[n.origType] || {}).handle || n.handler
                ).apply(i.elem, a)) !== T &&
                  !1 === (e.result = o) &&
                  (e.preventDefault(), e.stopPropagation()));
          return c.postDispatch && c.postDispatch.call(this, e), e.result;
        }
      },
      handlers: function (e, t) {
        var o,
          n,
          i,
          s,
          r = [],
          a = t.delegateCount,
          l = e.target;
        if (a && l.nodeType && (!e.button || "click" !== e.type))
          for (; l != this; l = l.parentNode || this)
            if (1 === l.nodeType && (!0 !== l.disabled || "click" !== e.type)) {
              for (i = [], s = 0; s < a; s++)
                i[(o = (n = t[s]).selector + " ")] === T &&
                  (i[o] = n.needsContext
                    ? 0 <= ke(o, this).index(l)
                    : ke.find(o, this, null, [l]).length),
                  i[o] && i.push(n);
              i.length && r.push({ elem: l, handlers: i });
            }
        return t.length > a && r.push({ elem: this, handlers: t.slice(a) }), r;
      },
      fix: function (e) {
        if (e[ke.expando]) return e;
        var t,
          o,
          n,
          i = e.type,
          s = e,
          r = this.fixHooks[i];
        for (
          r ||
            (this.fixHooks[i] = r =
              J.test(i) ? this.mouseHooks : K.test(i) ? this.keyHooks : {}),
            n = r.props ? this.props.concat(r.props) : this.props,
            e = new ke.Event(s),
            t = n.length;
          t--;

        )
          e[(o = n[t])] = s[o];
        return (
          e.target || (e.target = s.srcElement || m),
          3 === e.target.nodeType && (e.target = e.target.parentNode),
          (e.metaKey = !!e.metaKey),
          r.filter ? r.filter(e, s) : e
        );
      },
      props:
        "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(
          " "
        ),
      fixHooks: {},
      keyHooks: {
        props: "char charCode key keyCode".split(" "),
        filter: function (e, t) {
          return (
            null == e.which &&
              (e.which = null != t.charCode ? t.charCode : t.keyCode),
            e
          );
        },
      },
      mouseHooks: {
        props:
          "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(
            " "
          ),
        filter: function (e, t) {
          var o,
            n,
            i,
            s = t.button,
            r = t.fromElement;
          return (
            null == e.pageX &&
              null != t.clientX &&
              ((i = (n = e.target.ownerDocument || m).documentElement),
              (o = n.body),
              (e.pageX =
                t.clientX +
                ((i && i.scrollLeft) || (o && o.scrollLeft) || 0) -
                ((i && i.clientLeft) || (o && o.clientLeft) || 0)),
              (e.pageY =
                t.clientY +
                ((i && i.scrollTop) || (o && o.scrollTop) || 0) -
                ((i && i.clientTop) || (o && o.clientTop) || 0))),
            !e.relatedTarget &&
              r &&
              (e.relatedTarget = r === e.target ? t.toElement : r),
            e.which ||
              s === T ||
              (e.which = 1 & s ? 1 : 2 & s ? 3 : 4 & s ? 2 : 0),
            e
          );
        },
      },
      special: {
        load: { noBubble: !0 },
        focus: {
          trigger: function () {
            if (this !== ie() && this.focus)
              try {
                return this.focus(), !1;
              } catch (e) {}
          },
          delegateType: "focusin",
        },
        blur: {
          trigger: function () {
            return this === ie() && this.blur ? (this.blur(), !1) : T;
          },
          delegateType: "focusout",
        },
        click: {
          trigger: function () {
            return ke.nodeName(this, "input") &&
              "checkbox" === this.type &&
              this.click
              ? (this.click(), !1)
              : T;
          },
          _default: function (e) {
            return ke.nodeName(e.target, "a");
          },
        },
        beforeunload: {
          postDispatch: function (e) {
            e.result !== T && (e.originalEvent.returnValue = e.result);
          },
        },
      },
      simulate: function (e, t, o, n) {
        var i = ke.extend(new ke.Event(), o, {
          type: e,
          isSimulated: !0,
          originalEvent: {},
        });
        n ? ke.event.trigger(i, null, t) : ke.event.dispatch.call(t, i),
          i.isDefaultPrevented() && o.preventDefault();
      },
    }),
      (ke.removeEvent = m.removeEventListener
        ? function (e, t, o) {
            e.removeEventListener && e.removeEventListener(t, o, !1);
          }
        : function (e, t, o) {
            var n = "on" + t;
            e.detachEvent &&
              (typeof e[n] === v && (e[n] = null), e.detachEvent(n, o));
          }),
      (ke.Event = function (e, t) {
        return this instanceof ke.Event
          ? (e && e.type
              ? ((this.originalEvent = e),
                (this.type = e.type),
                (this.isDefaultPrevented =
                  e.defaultPrevented ||
                  !1 === e.returnValue ||
                  (e.getPreventDefault && e.getPreventDefault())
                    ? oe
                    : ne))
              : (this.type = e),
            t && ke.extend(this, t),
            (this.timeStamp = (e && e.timeStamp) || ke.now()),
            (this[ke.expando] = !0),
            T)
          : new ke.Event(e, t);
      }),
      (ke.Event.prototype = {
        isDefaultPrevented: ne,
        isPropagationStopped: ne,
        isImmediatePropagationStopped: ne,
        preventDefault: function () {
          var e = this.originalEvent;
          (this.isDefaultPrevented = oe),
            e && (e.preventDefault ? e.preventDefault() : (e.returnValue = !1));
        },
        stopPropagation: function () {
          var e = this.originalEvent;
          (this.isPropagationStopped = oe),
            e &&
              (e.stopPropagation && e.stopPropagation(), (e.cancelBubble = !0));
        },
        stopImmediatePropagation: function () {
          (this.isImmediatePropagationStopped = oe), this.stopPropagation();
        },
      }),
      ke.each(
        { mouseenter: "mouseover", mouseleave: "mouseout" },
        function (e, i) {
          ke.event.special[e] = {
            delegateType: i,
            bindType: i,
            handle: function (e) {
              var t,
                o = e.relatedTarget,
                n = e.handleObj;
              return (
                (o && (o === this || ke.contains(this, o))) ||
                  ((e.type = n.origType),
                  (t = n.handler.apply(this, arguments)),
                  (e.type = i)),
                t
              );
            },
          };
        }
      ),
      ke.support.submitBubbles ||
        (ke.event.special.submit = {
          setup: function () {
            return (
              !ke.nodeName(this, "form") &&
              (ke.event.add(
                this,
                "click._submit keypress._submit",
                function (e) {
                  var t = e.target,
                    o =
                      ke.nodeName(t, "input") || ke.nodeName(t, "button")
                        ? t.form
                        : T;
                  o &&
                    !ke._data(o, "submitBubbles") &&
                    (ke.event.add(o, "submit._submit", function (e) {
                      e._submit_bubble = !0;
                    }),
                    ke._data(o, "submitBubbles", !0));
                }
              ),
              T)
            );
          },
          postDispatch: function (e) {
            e._submit_bubble &&
              (delete e._submit_bubble,
              this.parentNode &&
                !e.isTrigger &&
                ke.event.simulate("submit", this.parentNode, e, !0));
          },
          teardown: function () {
            return (
              !ke.nodeName(this, "form") &&
              (ke.event.remove(this, "._submit"), T)
            );
          },
        }),
      ke.support.changeBubbles ||
        (ke.event.special.change = {
          setup: function () {
            return G.test(this.nodeName)
              ? (("checkbox" !== this.type && "radio" !== this.type) ||
                  (ke.event.add(this, "propertychange._change", function (e) {
                    "checked" === e.originalEvent.propertyName &&
                      (this._just_changed = !0);
                  }),
                  ke.event.add(this, "click._change", function (e) {
                    this._just_changed &&
                      !e.isTrigger &&
                      (this._just_changed = !1),
                      ke.event.simulate("change", this, e, !0);
                  })),
                !1)
              : (ke.event.add(this, "beforeactivate._change", function (e) {
                  var t = e.target;
                  G.test(t.nodeName) &&
                    !ke._data(t, "changeBubbles") &&
                    (ke.event.add(t, "change._change", function (e) {
                      !this.parentNode ||
                        e.isSimulated ||
                        e.isTrigger ||
                        ke.event.simulate("change", this.parentNode, e, !0);
                    }),
                    ke._data(t, "changeBubbles", !0));
                }),
                T);
          },
          handle: function (e) {
            var t = e.target;
            return this !== t ||
              e.isSimulated ||
              e.isTrigger ||
              ("radio" !== t.type && "checkbox" !== t.type)
              ? e.handleObj.handler.apply(this, arguments)
              : T;
          },
          teardown: function () {
            return ke.event.remove(this, "._change"), !G.test(this.nodeName);
          },
        }),
      ke.support.focusinBubbles ||
        ke.each({ focus: "focusin", blur: "focusout" }, function (e, t) {
          function o(e) {
            ke.event.simulate(t, e.target, ke.event.fix(e), !0);
          }
          var n = 0;
          ke.event.special[t] = {
            setup: function () {
              0 == n++ && m.addEventListener(e, o, !0);
            },
            teardown: function () {
              0 == --n && m.removeEventListener(e, o, !0);
            },
          };
        }),
      ke.fn.extend({
        on: function (e, t, o, n, i) {
          var s, r;
          if ("object" == typeof e) {
            for (s in ("string" != typeof t && ((o = o || t), (t = T)), e))
              this.on(s, t, o, e[s], i);
            return this;
          }
          if (
            (null == o && null == n
              ? ((n = t), (o = t = T))
              : null == n &&
                ("string" == typeof t
                  ? ((n = o), (o = T))
                  : ((n = o), (o = t), (t = T))),
            !1 === n)
          )
            n = ne;
          else if (!n) return this;
          return (
            1 === i &&
              ((r = n),
              ((n = function (e) {
                return ke().off(e), r.apply(this, arguments);
              }).guid = r.guid || (r.guid = ke.guid++))),
            this.each(function () {
              ke.event.add(this, e, n, o, t);
            })
          );
        },
        one: function (e, t, o, n) {
          return this.on(e, t, o, n, 1);
        },
        off: function (e, t, o) {
          var n, i;
          if (e && e.preventDefault && e.handleObj)
            return (
              (n = e.handleObj),
              ke(e.delegateTarget).off(
                n.namespace ? n.origType + "." + n.namespace : n.origType,
                n.selector,
                n.handler
              ),
              this
            );
          if ("object" != typeof e)
            return (
              (!1 !== t && "function" != typeof t) || ((o = t), (t = T)),
              !1 === o && (o = ne),
              this.each(function () {
                ke.event.remove(this, e, o, t);
              })
            );
          for (i in e) this.off(i, t, e[i]);
          return this;
        },
        trigger: function (e, t) {
          return this.each(function () {
            ke.event.trigger(e, t, this);
          });
        },
        triggerHandler: function (e, t) {
          var o = this[0];
          return o ? ke.event.trigger(e, t, o, !0) : T;
        },
      });
    var se = /^.[^:#\[\.,]*$/,
      re = /^(?:parents|prev(?:Until|All))/,
      ae = ke.expr.match.needsContext,
      le = { children: !0, contents: !0, next: !0, prev: !0 };
    function ce(e, t) {
      for (; (e = e[t]) && 1 !== e.nodeType; );
      return e;
    }
    function de(e, o, n) {
      if (ke.isFunction(o))
        return ke.grep(e, function (e, t) {
          return !!o.call(e, t, e) !== n;
        });
      if (o.nodeType)
        return ke.grep(e, function (e) {
          return (e === o) !== n;
        });
      if ("string" == typeof o) {
        if (se.test(o)) return ke.filter(o, e, n);
        o = ke.filter(o, e);
      }
      return ke.grep(e, function (e) {
        return 0 <= ke.inArray(e, o) !== n;
      });
    }
    function ue(e) {
      var t = pe.split("|"),
        o = e.createDocumentFragment();
      if (o.createElement) for (; t.length; ) o.createElement(t.pop());
      return o;
    }
    ke.fn.extend({
      find: function (e) {
        var t,
          o = [],
          n = this,
          i = n.length;
        if ("string" != typeof e)
          return this.pushStack(
            ke(e).filter(function () {
              for (t = 0; t < i; t++) if (ke.contains(n[t], this)) return !0;
            })
          );
        for (t = 0; t < i; t++) ke.find(e, n[t], o);
        return (
          ((o = this.pushStack(1 < i ? ke.unique(o) : o)).selector = this
            .selector
            ? this.selector + " " + e
            : e),
          o
        );
      },
      has: function (e) {
        var t,
          o = ke(e, this),
          n = o.length;
        return this.filter(function () {
          for (t = 0; t < n; t++) if (ke.contains(this, o[t])) return !0;
        });
      },
      not: function (e) {
        return this.pushStack(de(this, e || [], !0));
      },
      filter: function (e) {
        return this.pushStack(de(this, e || [], !1));
      },
      is: function (e) {
        return !!de(
          this,
          "string" == typeof e && ae.test(e) ? ke(e) : e || [],
          !1
        ).length;
      },
      closest: function (e, t) {
        for (
          var o,
            n = 0,
            i = this.length,
            s = [],
            r =
              ae.test(e) || "string" != typeof e ? ke(e, t || this.context) : 0;
          n < i;
          n++
        )
          for (o = this[n]; o && o !== t; o = o.parentNode)
            if (
              o.nodeType < 11 &&
              (r
                ? -1 < r.index(o)
                : 1 === o.nodeType && ke.find.matchesSelector(o, e))
            ) {
              o = s.push(o);
              break;
            }
        return this.pushStack(1 < s.length ? ke.unique(s) : s);
      },
      index: function (e) {
        return e
          ? "string" == typeof e
            ? ke.inArray(this[0], ke(e))
            : ke.inArray(e.jquery ? e[0] : e, this)
          : this[0] && this[0].parentNode
          ? this.first().prevAll().length
          : -1;
      },
      add: function (e, t) {
        var o =
            "string" == typeof e
              ? ke(e, t)
              : ke.makeArray(e && e.nodeType ? [e] : e),
          n = ke.merge(this.get(), o);
        return this.pushStack(ke.unique(n));
      },
      addBack: function (e) {
        return this.add(
          null == e ? this.prevObject : this.prevObject.filter(e)
        );
      },
    }),
      ke.each(
        {
          parent: function (e) {
            var t = e.parentNode;
            return t && 11 !== t.nodeType ? t : null;
          },
          parents: function (e) {
            return ke.dir(e, "parentNode");
          },
          parentsUntil: function (e, t, o) {
            return ke.dir(e, "parentNode", o);
          },
          next: function (e) {
            return ce(e, "nextSibling");
          },
          prev: function (e) {
            return ce(e, "previousSibling");
          },
          nextAll: function (e) {
            return ke.dir(e, "nextSibling");
          },
          prevAll: function (e) {
            return ke.dir(e, "previousSibling");
          },
          nextUntil: function (e, t, o) {
            return ke.dir(e, "nextSibling", o);
          },
          prevUntil: function (e, t, o) {
            return ke.dir(e, "previousSibling", o);
          },
          siblings: function (e) {
            return ke.sibling((e.parentNode || {}).firstChild, e);
          },
          children: function (e) {
            return ke.sibling(e.firstChild);
          },
          contents: function (e) {
            return ke.nodeName(e, "iframe")
              ? e.contentDocument || e.contentWindow.document
              : ke.merge([], e.childNodes);
          },
        },
        function (n, i) {
          ke.fn[n] = function (e, t) {
            var o = ke.map(this, i, e);
            return (
              "Until" !== n.slice(-5) && (t = e),
              t && "string" == typeof t && (o = ke.filter(t, o)),
              1 < this.length &&
                (le[n] || (o = ke.unique(o)), re.test(n) && (o = o.reverse())),
              this.pushStack(o)
            );
          };
        }
      ),
      ke.extend({
        filter: function (e, t, o) {
          var n = t[0];
          return (
            o && (e = ":not(" + e + ")"),
            1 === t.length && 1 === n.nodeType
              ? ke.find.matchesSelector(n, e)
                ? [n]
                : []
              : ke.find.matches(
                  e,
                  ke.grep(t, function (e) {
                    return 1 === e.nodeType;
                  })
                )
          );
        },
        dir: function (e, t, o) {
          for (
            var n = [], i = e[t];
            i &&
            9 !== i.nodeType &&
            (o === T || 1 !== i.nodeType || !ke(i).is(o));

          )
            1 === i.nodeType && n.push(i), (i = i[t]);
          return n;
        },
        sibling: function (e, t) {
          for (var o = []; e; e = e.nextSibling)
            1 === e.nodeType && e !== t && o.push(e);
          return o;
        },
      });
    var pe =
        "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
      he = / jQuery\d+="(?:null|\d+)"/g,
      fe = RegExp("<(?:" + pe + ")[\\s/>]", "i"),
      me = /^\s+/,
      ge =
        /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
      ve = /<([\w:]+)/,
      ye = /<tbody/i,
      we = /<|&#?\w+;/,
      be = /<(?:script|style|link)/i,
      xe = /^(?:checkbox|radio)$/i,
      Te = /checked\s*(?:[^=]|=\s*.checked.)/i,
      Ce = /^$|\/(?:java|ecma)script/i,
      Se = /^true\/(.*)/,
      ze = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
      Ee = {
        option: [1, "<select multiple='multiple'>", "</select>"],
        legend: [1, "<fieldset>", "</fieldset>"],
        area: [1, "<map>", "</map>"],
        param: [1, "<object>", "</object>"],
        thead: [1, "<table>", "</table>"],
        tr: [2, "<table><tbody>", "</tbody></table>"],
        col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
        _default: ke.support.htmlSerialize
          ? [0, "", ""]
          : [1, "X<div>", "</div>"],
      },
      We = ue(m).appendChild(m.createElement("div"));
    function Le(e, t) {
      return ke.nodeName(e, "table") &&
        ke.nodeName(1 === t.nodeType ? t : t.firstChild, "tr")
        ? e.getElementsByTagName("tbody")[0] ||
            e.appendChild(e.ownerDocument.createElement("tbody"))
        : e;
    }
    function Ae(e) {
      return (e.type = (null !== ke.find.attr(e, "type")) + "/" + e.type), e;
    }
    function $e(e) {
      var t = Se.exec(e.type);
      return t ? (e.type = t[1]) : e.removeAttribute("type"), e;
    }
    function Fe(e, t) {
      for (var o, n = 0; null != (o = e[n]); n++)
        ke._data(o, "globalEval", !t || ke._data(t[n], "globalEval"));
    }
    function Oe(e, t) {
      if (1 === t.nodeType && ke.hasData(e)) {
        var o,
          n,
          i,
          s = ke._data(e),
          r = ke._data(t, s),
          a = s.events;
        if (a)
          for (o in (delete r.handle, (r.events = {}), a))
            for (n = 0, i = a[o].length; n < i; n++)
              ke.event.add(t, o, a[o][n]);
        r.data && (r.data = ke.extend({}, r.data));
      }
    }
    function He(e, t) {
      var o,
        n,
        i = 0,
        s =
          typeof e.getElementsByTagName !== v
            ? e.getElementsByTagName(t || "*")
            : typeof e.querySelectorAll !== v
            ? e.querySelectorAll(t || "*")
            : T;
      if (!s)
        for (s = [], o = e.childNodes || e; null != (n = o[i]); i++)
          !t || ke.nodeName(n, t) ? s.push(n) : ke.merge(s, He(n, t));
      return t === T || (t && ke.nodeName(e, t)) ? ke.merge([e], s) : s;
    }
    function De(e) {
      xe.test(e.type) && (e.defaultChecked = e.checked);
    }
    (Ee.optgroup = Ee.option),
      (Ee.tbody = Ee.tfoot = Ee.colgroup = Ee.caption = Ee.thead),
      (Ee.th = Ee.td),
      ke.fn.extend({
        text: function (e) {
          return ke.access(
            this,
            function (e) {
              return e === T
                ? ke.text(this)
                : this.empty().append(
                    ((this[0] && this[0].ownerDocument) || m).createTextNode(e)
                  );
            },
            null,
            e,
            arguments.length
          );
        },
        append: function () {
          return this.domManip(arguments, function (e) {
            (1 !== this.nodeType &&
              11 !== this.nodeType &&
              9 !== this.nodeType) ||
              Le(this, e).appendChild(e);
          });
        },
        prepend: function () {
          return this.domManip(arguments, function (e) {
            var t;
            (1 !== this.nodeType &&
              11 !== this.nodeType &&
              9 !== this.nodeType) ||
              (t = Le(this, e)).insertBefore(e, t.firstChild);
          });
        },
        before: function () {
          return this.domManip(arguments, function (e) {
            this.parentNode && this.parentNode.insertBefore(e, this);
          });
        },
        after: function () {
          return this.domManip(arguments, function (e) {
            this.parentNode &&
              this.parentNode.insertBefore(e, this.nextSibling);
          });
        },
        remove: function (e, t) {
          for (
            var o, n = e ? ke.filter(e, this) : this, i = 0;
            null != (o = n[i]);
            i++
          )
            t || 1 !== o.nodeType || ke.cleanData(He(o)),
              o.parentNode &&
                (t && ke.contains(o.ownerDocument, o) && Fe(He(o, "script")),
                o.parentNode.removeChild(o));
          return this;
        },
        empty: function () {
          for (var e, t = 0; null != (e = this[t]); t++) {
            for (1 === e.nodeType && ke.cleanData(He(e, !1)); e.firstChild; )
              e.removeChild(e.firstChild);
            e.options && ke.nodeName(e, "select") && (e.options.length = 0);
          }
          return this;
        },
        clone: function (e, t) {
          return (
            (e = null != e && e),
            (t = null == t ? e : t),
            this.map(function () {
              return ke.clone(this, e, t);
            })
          );
        },
        html: function (e) {
          return ke.access(
            this,
            function (e) {
              var t = this[0] || {},
                o = 0,
                n = this.length;
              if (e === T)
                return 1 === t.nodeType ? t.innerHTML.replace(he, "") : T;
              if (
                !(
                  "string" != typeof e ||
                  be.test(e) ||
                  (!ke.support.htmlSerialize && fe.test(e)) ||
                  (!ke.support.leadingWhitespace && me.test(e)) ||
                  Ee[(ve.exec(e) || ["", ""])[1].toLowerCase()]
                )
              ) {
                e = e.replace(ge, "<$1></$2>");
                try {
                  for (; o < n; o++)
                    1 === (t = this[o] || {}).nodeType &&
                      (ke.cleanData(He(t, !1)), (t.innerHTML = e));
                  t = 0;
                } catch (e) {}
              }
              t && this.empty().append(e);
            },
            null,
            e,
            arguments.length
          );
        },
        replaceWith: function () {
          var n = ke.map(this, function (e) {
              return [e.nextSibling, e.parentNode];
            }),
            i = 0;
          return (
            this.domManip(
              arguments,
              function (e) {
                var t = n[i++],
                  o = n[i++];
                o &&
                  (t && t.parentNode !== o && (t = this.nextSibling),
                  ke(this).remove(),
                  o.insertBefore(e, t));
              },
              !0
            ),
            i ? this : this.remove()
          );
        },
        detach: function (e) {
          return this.remove(e, !0);
        },
        domManip: function (o, n, i) {
          o = g.apply([], o);
          var e,
            t,
            s,
            r,
            a,
            l,
            c = 0,
            d = this.length,
            u = this,
            p = d - 1,
            h = o[0],
            f = ke.isFunction(h);
          if (
            f ||
            (!(d <= 1 || "string" != typeof h || ke.support.checkClone) &&
              Te.test(h))
          )
            return this.each(function (e) {
              var t = u.eq(e);
              f && (o[0] = h.call(this, e, t.html())), t.domManip(o, n, i);
            });
          if (
            d &&
            ((e = (l = ke.buildFragment(
              o,
              this[0].ownerDocument,
              !1,
              !i && this
            )).firstChild),
            1 === l.childNodes.length && (l = e),
            e)
          ) {
            for (s = (r = ke.map(He(l, "script"), Ae)).length; c < d; c++)
              (t = l),
                c !== p &&
                  ((t = ke.clone(t, !0, !0)),
                  s && ke.merge(r, He(t, "script"))),
                n.call(this[c], t, c);
            if (s)
              for (
                a = r[r.length - 1].ownerDocument, ke.map(r, $e), c = 0;
                c < s;
                c++
              )
                (t = r[c]),
                  Ce.test(t.type || "") &&
                    !ke._data(t, "globalEval") &&
                    ke.contains(a, t) &&
                    (t.src
                      ? ke._evalUrl(t.src)
                      : ke.globalEval(
                          (
                            t.text ||
                            t.textContent ||
                            t.innerHTML ||
                            ""
                          ).replace(ze, "")
                        ));
            l = e = null;
          }
          return this;
        },
      }),
      ke.each(
        {
          appendTo: "append",
          prependTo: "prepend",
          insertBefore: "before",
          insertAfter: "after",
          replaceAll: "replaceWith",
        },
        function (e, r) {
          ke.fn[e] = function (e) {
            for (var t, o = 0, n = [], i = ke(e), s = i.length - 1; o <= s; o++)
              (t = o === s ? this : this.clone(!0)),
                ke(i[o])[r](t),
                d.apply(n, t.get());
            return this.pushStack(n);
          };
        }
      ),
      ke.extend({
        clone: function (e, t, o) {
          var n,
            i,
            s,
            r,
            a,
            l = ke.contains(e.ownerDocument, e);
          if (
            (ke.support.html5Clone ||
            ke.isXMLDoc(e) ||
            !fe.test("<" + e.nodeName + ">")
              ? (s = e.cloneNode(!0))
              : ((We.innerHTML = e.outerHTML),
                We.removeChild((s = We.firstChild))),
            !(
              (ke.support.noCloneEvent && ke.support.noCloneChecked) ||
              (1 !== e.nodeType && 11 !== e.nodeType) ||
              ke.isXMLDoc(e)
            ))
          )
            for (n = He(s), a = He(e), r = 0; null != (i = a[r]); ++r)
              n[r] &&
                (function (e, t) {
                  var o, n, i;
                  if (1 === t.nodeType) {
                    if (
                      ((o = t.nodeName.toLowerCase()),
                      !ke.support.noCloneEvent && t[ke.expando])
                    ) {
                      for (n in (i = ke._data(t)).events)
                        ke.removeEvent(t, n, i.handle);
                      t.removeAttribute(ke.expando);
                    }
                    "script" === o && t.text !== e.text
                      ? ((Ae(t).text = e.text), $e(t))
                      : "object" === o
                      ? (t.parentNode && (t.outerHTML = e.outerHTML),
                        ke.support.html5Clone &&
                          e.innerHTML &&
                          !ke.trim(t.innerHTML) &&
                          (t.innerHTML = e.innerHTML))
                      : "input" === o && xe.test(e.type)
                      ? ((t.defaultChecked = t.checked = e.checked),
                        t.value !== e.value && (t.value = e.value))
                      : "option" === o
                      ? (t.defaultSelected = t.selected = e.defaultSelected)
                      : ("input" !== o && "textarea" !== o) ||
                        (t.defaultValue = e.defaultValue);
                  }
                })(i, n[r]);
          if (t)
            if (o)
              for (
                a = a || He(e), n = n || He(s), r = 0;
                null != (i = a[r]);
                r++
              )
                Oe(i, n[r]);
            else Oe(e, s);
          return (
            0 < (n = He(s, "script")).length && Fe(n, !l && He(e, "script")),
            (n = a = i = null),
            s
          );
        },
        buildFragment: function (e, t, o, n) {
          for (
            var i, s, r, a, l, c, d, u = e.length, p = ue(t), h = [], f = 0;
            f < u;
            f++
          )
            if ((s = e[f]) || 0 === s)
              if ("object" === ke.type(s)) ke.merge(h, s.nodeType ? [s] : s);
              else if (we.test(s)) {
                for (
                  a = a || p.appendChild(t.createElement("div")),
                    l = (ve.exec(s) || ["", ""])[1].toLowerCase(),
                    d = Ee[l] || Ee._default,
                    a.innerHTML = d[1] + s.replace(ge, "<$1></$2>") + d[2],
                    i = d[0];
                  i--;

                )
                  a = a.lastChild;
                if (
                  (!ke.support.leadingWhitespace &&
                    me.test(s) &&
                    h.push(t.createTextNode(me.exec(s)[0])),
                  !ke.support.tbody)
                )
                  for (
                    i =
                      (s =
                        "table" !== l || ye.test(s)
                          ? "<table>" !== d[1] || ye.test(s)
                            ? 0
                            : a
                          : a.firstChild) && s.childNodes.length;
                    i--;

                  )
                    ke.nodeName((c = s.childNodes[i]), "tbody") &&
                      !c.childNodes.length &&
                      s.removeChild(c);
                for (
                  ke.merge(h, a.childNodes), a.textContent = "";
                  a.firstChild;

                )
                  a.removeChild(a.firstChild);
                a = p.lastChild;
              } else h.push(t.createTextNode(s));
          for (
            a && p.removeChild(a),
              ke.support.appendChecked || ke.grep(He(h, "input"), De),
              f = 0;
            (s = h[f++]);

          )
            if (
              (!n || -1 === ke.inArray(s, n)) &&
              ((r = ke.contains(s.ownerDocument, s)),
              (a = He(p.appendChild(s), "script")),
              r && Fe(a),
              o)
            )
              for (i = 0; (s = a[i++]); ) Ce.test(s.type || "") && o.push(s);
          return (a = null), p;
        },
        cleanData: function (e, t) {
          for (
            var o,
              n,
              i,
              s,
              r = 0,
              a = ke.expando,
              l = ke.cache,
              c = ke.support.deleteExpando,
              d = ke.event.special;
            null != (o = e[r]);
            r++
          )
            if ((t || ke.acceptData(o)) && (s = (i = o[a]) && l[i])) {
              if (s.events)
                for (n in s.events)
                  d[n] ? ke.event.remove(o, n) : ke.removeEvent(o, n, s.handle);
              l[i] &&
                (delete l[i],
                c
                  ? delete o[a]
                  : typeof o.removeAttribute !== v
                  ? o.removeAttribute(a)
                  : (o[a] = null),
                u.push(i));
            }
        },
        _evalUrl: function (e) {
          return ke.ajax({
            url: e,
            type: "GET",
            dataType: "script",
            async: !1,
            global: !1,
            throws: !0,
          });
        },
      }),
      ke.fn.extend({
        wrapAll: function (t) {
          return ke.isFunction(t)
            ? this.each(function (e) {
                ke(this).wrapAll(t.call(this, e));
              })
            : (this[0] &&
                ((e = ke(t, this[0].ownerDocument).eq(0).clone(!0)),
                this[0].parentNode && e.insertBefore(this[0]),
                e
                  .map(function () {
                    for (
                      var e = this;
                      e.firstChild && 1 === e.firstChild.nodeType;

                    )
                      e = e.firstChild;
                    return e;
                  })
                  .append(this)),
              this);
          var e;
        },
        wrapInner: function (o) {
          return ke.isFunction(o)
            ? this.each(function (e) {
                ke(this).wrapInner(o.call(this, e));
              })
            : this.each(function () {
                var e = ke(this),
                  t = e.contents();
                t.length ? t.wrapAll(o) : e.append(o);
              });
        },
        wrap: function (t) {
          var o = ke.isFunction(t);
          return this.each(function (e) {
            ke(this).wrapAll(o ? t.call(this, e) : t);
          });
        },
        unwrap: function () {
          return this.parent()
            .each(function () {
              ke.nodeName(this, "body") ||
                ke(this).replaceWith(this.childNodes);
            })
            .end();
        },
      });
    var Ie,
      Ne,
      Me,
      Pe = /alpha\([^)]*\)/i,
      je = /opacity\s*=\s*([^)]*)/,
      Re = /^(top|right|bottom|left)$/,
      Be = /^(none|table(?!-c[ea]).+)/,
      _e = /^margin/,
      qe = RegExp("^(" + x + ")(.*)$", "i"),
      Ue = RegExp("^(" + x + ")(?!px)[a-z%]+$", "i"),
      Xe = RegExp("^([+-])=(" + x + ")", "i"),
      Ze = { BODY: "block" },
      Ye = { position: "absolute", visibility: "hidden", display: "block" },
      Qe = { letterSpacing: 0, fontWeight: 400 },
      Ve = ["Top", "Right", "Bottom", "Left"],
      Ge = ["Webkit", "O", "Moz", "ms"];
    function Ke(e, t) {
      if (t in e) return t;
      for (
        var o = t.charAt(0).toUpperCase() + t.slice(1), n = t, i = Ge.length;
        i--;

      )
        if ((t = Ge[i] + o) in e) return t;
      return n;
    }
    function Je(e, t) {
      return (
        (e = t || e),
        "none" === ke.css(e, "display") || !ke.contains(e.ownerDocument, e)
      );
    }
    function et(e, t) {
      for (var o, n, i, s = [], r = 0, a = e.length; r < a; r++)
        (n = e[r]).style &&
          ((s[r] = ke._data(n, "olddisplay")),
          (o = n.style.display),
          t
            ? (s[r] || "none" !== o || (n.style.display = ""),
              "" === n.style.display &&
                Je(n) &&
                (s[r] = ke._data(n, "olddisplay", it(n.nodeName))))
            : s[r] ||
              ((i = Je(n)),
              ((o && "none" !== o) || !i) &&
                ke._data(n, "olddisplay", i ? o : ke.css(n, "display"))));
      for (r = 0; r < a; r++)
        (n = e[r]).style &&
          ((t && "none" !== n.style.display && "" !== n.style.display) ||
            (n.style.display = t ? s[r] || "" : "none"));
      return e;
    }
    function tt(e, t, o) {
      var n = qe.exec(t);
      return n ? Math.max(0, n[1] - (o || 0)) + (n[2] || "px") : t;
    }
    function ot(e, t, o, n, i) {
      for (
        var s = o === (n ? "border" : "content") ? 4 : "width" === t ? 1 : 0,
          r = 0;
        s < 4;
        s += 2
      )
        "margin" === o && (r += ke.css(e, o + Ve[s], !0, i)),
          n
            ? ("content" === o && (r -= ke.css(e, "padding" + Ve[s], !0, i)),
              "margin" !== o &&
                (r -= ke.css(e, "border" + Ve[s] + "Width", !0, i)))
            : ((r += ke.css(e, "padding" + Ve[s], !0, i)),
              "padding" !== o &&
                (r += ke.css(e, "border" + Ve[s] + "Width", !0, i)));
      return r;
    }
    function nt(e, t, o) {
      var n = !0,
        i = "width" === t ? e.offsetWidth : e.offsetHeight,
        s = Ne(e),
        r =
          ke.support.boxSizing &&
          "border-box" === ke.css(e, "boxSizing", !1, s);
      if (i <= 0 || null == i) {
        if (
          (((i = Me(e, t, s)) < 0 || null == i) && (i = e.style[t]), Ue.test(i))
        )
          return i;
        (n = r && (ke.support.boxSizingReliable || i === e.style[t])),
          (i = parseFloat(i) || 0);
      }
      return i + ot(e, t, o || (r ? "border" : "content"), n, s) + "px";
    }
    function it(e) {
      var t = m,
        o = Ze[e];
      return (
        o ||
          (("none" !== (o = st(e, t)) && o) ||
            ((t = (
              (Ie = (
                Ie ||
                ke("<iframe frameborder='0' width='0' height='0'/>").css(
                  "cssText",
                  "display:block !important"
                )
              ).appendTo(t.documentElement))[0].contentWindow ||
              Ie[0].contentDocument
            ).document).write("<!doctype html><html><body>"),
            t.close(),
            (o = st(e, t)),
            Ie.detach()),
          (Ze[e] = o)),
        o
      );
    }
    function st(e, t) {
      var o = ke(t.createElement(e)).appendTo(t.body),
        n = ke.css(o[0], "display");
      return o.remove(), n;
    }
    ke.fn.extend({
      css: function (e, t) {
        return ke.access(
          this,
          function (e, t, o) {
            var n,
              i,
              s = {},
              r = 0;
            if (ke.isArray(t)) {
              for (i = Ne(e), n = t.length; r < n; r++)
                s[t[r]] = ke.css(e, t[r], !1, i);
              return s;
            }
            return o !== T ? ke.style(e, t, o) : ke.css(e, t);
          },
          e,
          t,
          1 < arguments.length
        );
      },
      show: function () {
        return et(this, !0);
      },
      hide: function () {
        return et(this);
      },
      toggle: function (e) {
        var t = "boolean" == typeof e;
        return this.each(function () {
          (t ? e : Je(this)) ? ke(this).show() : ke(this).hide();
        });
      },
    }),
      ke.extend({
        cssHooks: {
          opacity: {
            get: function (e, t) {
              if (t) {
                var o = Me(e, "opacity");
                return "" === o ? "1" : o;
              }
            },
          },
        },
        cssNumber: {
          columnCount: !0,
          fillOpacity: !0,
          fontWeight: !0,
          lineHeight: !0,
          opacity: !0,
          orphans: !0,
          widows: !0,
          zIndex: !0,
          zoom: !0,
        },
        cssProps: { float: ke.support.cssFloat ? "cssFloat" : "styleFloat" },
        style: function (e, t, o, n) {
          if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
            var i,
              s,
              r,
              a = ke.camelCase(t),
              l = e.style;
            if (
              ((t = ke.cssProps[a] || (ke.cssProps[a] = Ke(l, a))),
              (r = ke.cssHooks[t] || ke.cssHooks[a]),
              o === T)
            )
              return r && "get" in r && (i = r.get(e, !1, n)) !== T ? i : l[t];
            if (
              ("string" === (s = typeof o) &&
                (i = Xe.exec(o)) &&
                ((o = (i[1] + 1) * i[2] + parseFloat(ke.css(e, t))),
                (s = "number")),
              !(
                null == o ||
                ("number" === s && isNaN(o)) ||
                ("number" !== s || ke.cssNumber[a] || (o += "px"),
                ke.support.clearCloneStyle ||
                  "" !== o ||
                  0 !== t.indexOf("background") ||
                  (l[t] = "inherit"),
                r && "set" in r && (o = r.set(e, o, n)) === T)
              ))
            )
              try {
                l[t] = o;
              } catch (e) {}
          }
        },
        css: function (e, t, o, n) {
          var i,
            s,
            r,
            a = ke.camelCase(t);
          return (
            (t = ke.cssProps[a] || (ke.cssProps[a] = Ke(e.style, a))),
            (r = ke.cssHooks[t] || ke.cssHooks[a]) &&
              "get" in r &&
              (s = r.get(e, !0, o)),
            s === T && (s = Me(e, t, n)),
            "normal" === s && t in Qe && (s = Qe[t]),
            "" === o || o
              ? ((i = parseFloat(s)), !0 === o || ke.isNumeric(i) ? i || 0 : s)
              : s
          );
        },
      }),
      f.getComputedStyle
        ? ((Ne = function (e) {
            return f.getComputedStyle(e, null);
          }),
          (Me = function (e, t, o) {
            var n,
              i,
              s,
              r = o || Ne(e),
              a = r ? r.getPropertyValue(t) || r[t] : T,
              l = e.style;
            return (
              r &&
                ("" !== a ||
                  ke.contains(e.ownerDocument, e) ||
                  (a = ke.style(e, t)),
                Ue.test(a) &&
                  _e.test(t) &&
                  ((n = l.width),
                  (i = l.minWidth),
                  (s = l.maxWidth),
                  (l.minWidth = l.maxWidth = l.width = a),
                  (a = r.width),
                  (l.width = n),
                  (l.minWidth = i),
                  (l.maxWidth = s))),
              a
            );
          }))
        : m.documentElement.currentStyle &&
          ((Ne = function (e) {
            return e.currentStyle;
          }),
          (Me = function (e, t, o) {
            var n,
              i,
              s,
              r = o || Ne(e),
              a = r ? r[t] : T,
              l = e.style;
            return (
              null == a && l && l[t] && (a = l[t]),
              Ue.test(a) &&
                !Re.test(t) &&
                ((n = l.left),
                (s = (i = e.runtimeStyle) && i.left) &&
                  (i.left = e.currentStyle.left),
                (l.left = "fontSize" === t ? "1em" : a),
                (a = l.pixelLeft + "px"),
                (l.left = n),
                s && (i.left = s)),
              "" === a ? "auto" : a
            );
          })),
      ke.each(["height", "width"], function (e, i) {
        ke.cssHooks[i] = {
          get: function (e, t, o) {
            return t
              ? 0 === e.offsetWidth && Be.test(ke.css(e, "display"))
                ? ke.swap(e, Ye, function () {
                    return nt(e, i, o);
                  })
                : nt(e, i, o)
              : T;
          },
          set: function (e, t, o) {
            var n = o && Ne(e);
            return tt(
              0,
              t,
              o
                ? ot(
                    e,
                    i,
                    o,
                    ke.support.boxSizing &&
                      "border-box" === ke.css(e, "boxSizing", !1, n),
                    n
                  )
                : 0
            );
          },
        };
      }),
      ke.support.opacity ||
        (ke.cssHooks.opacity = {
          get: function (e, t) {
            return je.test(
              (t && e.currentStyle ? e.currentStyle.filter : e.style.filter) ||
                ""
            )
              ? 0.01 * parseFloat(RegExp.$1) + ""
              : t
              ? "1"
              : "";
          },
          set: function (e, t) {
            var o = e.style,
              n = e.currentStyle,
              i = ke.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
              s = (n && n.filter) || o.filter || "";
            (((o.zoom = 1) <= t || "" === t) &&
              "" === ke.trim(s.replace(Pe, "")) &&
              o.removeAttribute &&
              (o.removeAttribute("filter"), "" === t || (n && !n.filter))) ||
              (o.filter = Pe.test(s) ? s.replace(Pe, i) : s + " " + i);
          },
        }),
      ke(function () {
        ke.support.reliableMarginRight ||
          (ke.cssHooks.marginRight = {
            get: function (e, t) {
              return t
                ? ke.swap(e, { display: "inline-block" }, Me, [
                    e,
                    "marginRight",
                  ])
                : T;
            },
          }),
          !ke.support.pixelPosition &&
            ke.fn.position &&
            ke.each(["top", "left"], function (e, o) {
              ke.cssHooks[o] = {
                get: function (e, t) {
                  return t
                    ? ((t = Me(e, o)),
                      Ue.test(t) ? ke(e).position()[o] + "px" : t)
                    : T;
                },
              };
            });
      }),
      ke.expr &&
        ke.expr.filters &&
        ((ke.expr.filters.hidden = function (e) {
          return (
            (e.offsetWidth <= 0 && e.offsetHeight <= 0) ||
            (!ke.support.reliableHiddenOffsets &&
              "none" === ((e.style && e.style.display) || ke.css(e, "display")))
          );
        }),
        (ke.expr.filters.visible = function (e) {
          return !ke.expr.filters.hidden(e);
        })),
      ke.each({ margin: "", padding: "", border: "Width" }, function (i, s) {
        (ke.cssHooks[i + s] = {
          expand: function (e) {
            for (
              var t = 0, o = {}, n = "string" == typeof e ? e.split(" ") : [e];
              t < 4;
              t++
            )
              o[i + Ve[t] + s] = n[t] || n[t - 2] || n[0];
            return o;
          },
        }),
          _e.test(i) || (ke.cssHooks[i + s].set = tt);
      });
    var rt = /%20/g,
      at = /\[\]$/,
      lt = /\r?\n/g,
      ct = /^(?:submit|button|image|reset|file)$/i,
      dt = /^(?:input|select|textarea|keygen)/i;
    ke.fn.extend({
      serialize: function () {
        return ke.param(this.serializeArray());
      },
      serializeArray: function () {
        return this.map(function () {
          var e = ke.prop(this, "elements");
          return e ? ke.makeArray(e) : this;
        })
          .filter(function () {
            var e = this.type;
            return (
              this.name &&
              !ke(this).is(":disabled") &&
              dt.test(this.nodeName) &&
              !ct.test(e) &&
              (this.checked || !xe.test(e))
            );
          })
          .map(function (e, t) {
            var o = ke(this).val();
            return null == o
              ? null
              : ke.isArray(o)
              ? ke.map(o, function (e) {
                  return { name: t.name, value: e.replace(lt, "\r\n") };
                })
              : { name: t.name, value: o.replace(lt, "\r\n") };
          })
          .get();
      },
    }),
      (ke.param = function (e, t) {
        function o(e, t) {
          (t = ke.isFunction(t) ? t() : null == t ? "" : t),
            (i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t));
        }
        var n,
          i = [];
        if (
          (t === T && (t = ke.ajaxSettings && ke.ajaxSettings.traditional),
          ke.isArray(e) || (e.jquery && !ke.isPlainObject(e)))
        )
          ke.each(e, function () {
            o(this.name, this.value);
          });
        else
          for (n in e)
            !(function o(n, e, i, s) {
              var t;
              if (ke.isArray(e))
                ke.each(e, function (e, t) {
                  i || at.test(n)
                    ? s(n, t)
                    : o(
                        n + "[" + ("object" == typeof t ? e : "") + "]",
                        t,
                        i,
                        s
                      );
                });
              else if (i || "object" !== ke.type(e)) s(n, e);
              else for (t in e) o(n + "[" + t + "]", e[t], i, s);
            })(n, e[n], t, o);
        return i.join("&").replace(rt, "+");
      }),
      ke.each(
        "blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(
          " "
        ),
        function (e, o) {
          ke.fn[o] = function (e, t) {
            return 0 < arguments.length
              ? this.on(o, null, e, t)
              : this.trigger(o);
          };
        }
      ),
      ke.fn.extend({
        hover: function (e, t) {
          return this.mouseenter(e).mouseleave(t || e);
        },
        bind: function (e, t, o) {
          return this.on(e, null, t, o);
        },
        unbind: function (e, t) {
          return this.off(e, null, t);
        },
        delegate: function (e, t, o, n) {
          return this.on(t, e, o, n);
        },
        undelegate: function (e, t, o) {
          return 1 === arguments.length
            ? this.off(e, "**")
            : this.off(t, e || "**", o);
        },
      });
    var ut,
      pt,
      ht = ke.now(),
      ft = /\?/,
      mt = /#.*$/,
      gt = /([?&])_=[^&]*/,
      vt = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
      yt = /^(?:GET|HEAD)$/,
      wt = /^\/\//,
      bt = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
      xt = ke.fn.load,
      kt = {},
      Tt = {},
      Ct = "*/".concat("*");
    try {
      pt = e.href;
    } catch (e) {
      ((pt = m.createElement("a")).href = ""), (pt = pt.href);
    }
    function St(s) {
      return function (e, t) {
        "string" != typeof e && ((t = e), (e = "*"));
        var o,
          n = 0,
          i = e.toLowerCase().match(C) || [];
        if (ke.isFunction(t))
          for (; (o = i[n++]); )
            "+" === o[0]
              ? ((o = o.slice(1) || "*"), (s[o] = s[o] || []).unshift(t))
              : (s[o] = s[o] || []).push(t);
      };
    }
    function zt(t, i, s, r) {
      var a = {},
        l = t === Tt;
      function c(e) {
        var n;
        return (
          (a[e] = !0),
          ke.each(t[e] || [], function (e, t) {
            var o = t(i, s, r);
            return "string" != typeof o || l || a[o]
              ? l
                ? !(n = o)
                : T
              : (i.dataTypes.unshift(o), c(o), !1);
          }),
          n
        );
      }
      return c(i.dataTypes[0]) || (!a["*"] && c("*"));
    }
    function Et(e, t) {
      var o,
        n,
        i = ke.ajaxSettings.flatOptions || {};
      for (n in t) t[n] !== T && ((i[n] ? e : (o = o || {}))[n] = t[n]);
      return o && ke.extend(!0, e, o), e;
    }
    (ut = bt.exec(pt.toLowerCase()) || []),
      (ke.fn.load = function (e, t, o) {
        if ("string" != typeof e && xt) return xt.apply(this, arguments);
        var n,
          i,
          s,
          r = this,
          a = e.indexOf(" ");
        return (
          0 <= a && ((n = e.slice(a, e.length)), (e = e.slice(0, a))),
          ke.isFunction(t)
            ? ((o = t), (t = T))
            : t && "object" == typeof t && (s = "POST"),
          0 < r.length &&
            ke
              .ajax({ url: e, type: s, dataType: "html", data: t })
              .done(function (e) {
                (i = arguments),
                  r.html(n ? ke("<div>").append(ke.parseHTML(e)).find(n) : e);
              })
              .complete(
                o &&
                  function (e, t) {
                    r.each(o, i || [e.responseText, t, e]);
                  }
              ),
          this
        );
      }),
      ke.each(
        [
          "ajaxStart",
          "ajaxStop",
          "ajaxComplete",
          "ajaxError",
          "ajaxSuccess",
          "ajaxSend",
        ],
        function (e, t) {
          ke.fn[t] = function (e) {
            return this.on(t, e);
          };
        }
      ),
      ke.extend({
        active: 0,
        lastModified: {},
        etag: {},
        ajaxSettings: {
          url: pt,
          type: "GET",
          isLocal:
            /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(
              ut[1]
            ),
          global: !0,
          processData: !0,
          async: !0,
          contentType: "application/x-www-form-urlencoded; charset=UTF-8",
          accepts: {
            "*": Ct,
            text: "text/plain",
            html: "text/html",
            xml: "application/xml, text/xml",
            json: "application/json, text/javascript",
          },
          contents: { xml: /xml/, html: /html/, json: /json/ },
          responseFields: {
            xml: "responseXML",
            text: "responseText",
            json: "responseJSON",
          },
          converters: {
            "* text": String,
            "text html": !0,
            "text json": ke.parseJSON,
            "text xml": ke.parseXML,
          },
          flatOptions: { url: !0, context: !0 },
        },
        ajaxSetup: function (e, t) {
          return t ? Et(Et(e, ke.ajaxSettings), t) : Et(ke.ajaxSettings, e);
        },
        ajaxPrefilter: St(kt),
        ajaxTransport: St(Tt),
        ajax: function (e, t) {
          "object" == typeof e && ((t = e), (e = T)), (t = t || {});
          var o,
            n,
            d,
            u,
            p,
            h,
            f,
            i,
            m = ke.ajaxSetup({}, t),
            g = m.context || m,
            v = m.context && (g.nodeType || g.jquery) ? ke(g) : ke.event,
            y = ke.Deferred(),
            w = ke.Callbacks("once memory"),
            b = m.statusCode || {},
            s = {},
            r = {},
            x = 0,
            a = "canceled",
            k = {
              readyState: 0,
              getResponseHeader: function (e) {
                var t;
                if (2 === x) {
                  if (!i)
                    for (i = {}; (t = vt.exec(u)); )
                      i[t[1].toLowerCase()] = t[2];
                  t = i[e.toLowerCase()];
                }
                return null == t ? null : t;
              },
              getAllResponseHeaders: function () {
                return 2 === x ? u : null;
              },
              setRequestHeader: function (e, t) {
                var o = e.toLowerCase();
                return x || ((e = r[o] = r[o] || e), (s[e] = t)), this;
              },
              overrideMimeType: function (e) {
                return x || (m.mimeType = e), this;
              },
              statusCode: function (e) {
                var t;
                if (e)
                  if (x < 2) for (t in e) b[t] = [b[t], e[t]];
                  else k.always(e[k.status]);
                return this;
              },
              abort: function (e) {
                var t = e || a;
                return f && f.abort(t), l(0, t), this;
              },
            };
          if (
            ((y.promise(k).complete = w.add),
            (k.success = k.done),
            (k.error = k.fail),
            (m.url = ((e || m.url || pt) + "")
              .replace(mt, "")
              .replace(wt, ut[1] + "//")),
            (m.type = t.method || t.type || m.method || m.type),
            (m.dataTypes = ke
              .trim(m.dataType || "*")
              .toLowerCase()
              .match(C) || [""]),
            null == m.crossDomain &&
              ((o = bt.exec(m.url.toLowerCase())),
              (m.crossDomain = !(
                !o ||
                (o[1] === ut[1] &&
                  o[2] === ut[2] &&
                  (o[3] || ("http:" === o[1] ? "80" : "443")) ===
                    (ut[3] || ("http:" === ut[1] ? "80" : "443")))
              ))),
            m.data &&
              m.processData &&
              "string" != typeof m.data &&
              (m.data = ke.param(m.data, m.traditional)),
            zt(kt, m, t, k),
            2 === x)
          )
            return k;
          for (n in ((h = m.global) &&
            0 == ke.active++ &&
            ke.event.trigger("ajaxStart"),
          (m.type = m.type.toUpperCase()),
          (m.hasContent = !yt.test(m.type)),
          (d = m.url),
          m.hasContent ||
            (m.data &&
              ((d = m.url += (ft.test(d) ? "&" : "?") + m.data), delete m.data),
            !1 === m.cache &&
              (m.url = gt.test(d)
                ? d.replace(gt, "$1_=" + ht++)
                : d + (ft.test(d) ? "&" : "?") + "_=" + ht++)),
          m.ifModified &&
            (ke.lastModified[d] &&
              k.setRequestHeader("If-Modified-Since", ke.lastModified[d]),
            ke.etag[d] && k.setRequestHeader("If-None-Match", ke.etag[d])),
          ((m.data && m.hasContent && !1 !== m.contentType) || t.contentType) &&
            k.setRequestHeader("Content-Type", m.contentType),
          k.setRequestHeader(
            "Accept",
            m.dataTypes[0] && m.accepts[m.dataTypes[0]]
              ? m.accepts[m.dataTypes[0]] +
                  ("*" !== m.dataTypes[0] ? ", " + Ct + "; q=0.01" : "")
              : m.accepts["*"]
          ),
          m.headers))
            k.setRequestHeader(n, m.headers[n]);
          if (m.beforeSend && (!1 === m.beforeSend.call(g, k, m) || 2 === x))
            return k.abort();
          for (n in ((a = "abort"), { success: 1, error: 1, complete: 1 }))
            k[n](m[n]);
          if ((f = zt(Tt, m, t, k))) {
            (k.readyState = 1),
              h && v.trigger("ajaxSend", [k, m]),
              m.async &&
                0 < m.timeout &&
                (p = setTimeout(function () {
                  k.abort("timeout");
                }, m.timeout));
            try {
              (x = 1), f.send(s, l);
            } catch (e) {
              if (!(x < 2)) throw e;
              l(-1, e);
            }
          } else l(-1, "No Transport");
          function l(e, t, o, n) {
            var i,
              s,
              r,
              a,
              l,
              c = t;
            2 !== x &&
              ((x = 2),
              p && clearTimeout(p),
              (f = T),
              (u = n || ""),
              (k.readyState = 0 < e ? 4 : 0),
              (i = (200 <= e && e < 300) || 304 === e),
              o &&
                (a = (function (e, t, o) {
                  var n,
                    i,
                    s,
                    r,
                    a = e.contents,
                    l = e.dataTypes;
                  for (; "*" === l[0]; )
                    l.shift(),
                      i === T &&
                        (i = e.mimeType || t.getResponseHeader("Content-Type"));
                  if (i)
                    for (r in a)
                      if (a[r] && a[r].test(i)) {
                        l.unshift(r);
                        break;
                      }
                  if (l[0] in o) s = l[0];
                  else {
                    for (r in o) {
                      if (!l[0] || e.converters[r + " " + l[0]]) {
                        s = r;
                        break;
                      }
                      n = n || r;
                    }
                    s = s || n;
                  }
                  return s ? (s !== l[0] && l.unshift(s), o[s]) : T;
                })(m, k, o)),
              (a = (function (e, t, o, n) {
                var i,
                  s,
                  r,
                  a,
                  l,
                  c = {},
                  d = e.dataTypes.slice();
                if (d[1])
                  for (r in e.converters) c[r.toLowerCase()] = e.converters[r];
                s = d.shift();
                for (; s; )
                  if (
                    (e.responseFields[s] && (o[e.responseFields[s]] = t),
                    !l &&
                      n &&
                      e.dataFilter &&
                      (t = e.dataFilter(t, e.dataType)),
                    (l = s),
                    (s = d.shift()))
                  )
                    if ("*" === s) s = l;
                    else if ("*" !== l && l !== s) {
                      if (!(r = c[l + " " + s] || c["* " + s]))
                        for (i in c)
                          if (
                            (a = i.split(" "))[1] === s &&
                            (r = c[l + " " + a[0]] || c["* " + a[0]])
                          ) {
                            !0 === r
                              ? (r = c[i])
                              : !0 !== c[i] && ((s = a[0]), d.unshift(a[1]));
                            break;
                          }
                      if (!0 !== r)
                        if (r && e.throws) t = r(t);
                        else
                          try {
                            t = r(t);
                          } catch (e) {
                            return {
                              state: "parsererror",
                              error: r
                                ? e
                                : "No conversion from " + l + " to " + s,
                            };
                          }
                    }
                return { state: "success", data: t };
              })(m, a, k, i)),
              i
                ? (m.ifModified &&
                    ((l = k.getResponseHeader("Last-Modified")) &&
                      (ke.lastModified[d] = l),
                    (l = k.getResponseHeader("etag")) && (ke.etag[d] = l)),
                  204 === e || "HEAD" === m.type
                    ? (c = "nocontent")
                    : 304 === e
                    ? (c = "notmodified")
                    : ((c = a.state), (s = a.data), (i = !(r = a.error))))
                : ((r = c), (!e && c) || ((c = "error"), e < 0 && (e = 0))),
              (k.status = e),
              (k.statusText = (t || c) + ""),
              i ? y.resolveWith(g, [s, c, k]) : y.rejectWith(g, [k, c, r]),
              k.statusCode(b),
              (b = T),
              h &&
                v.trigger(i ? "ajaxSuccess" : "ajaxError", [k, m, i ? s : r]),
              w.fireWith(g, [k, c]),
              h &&
                (v.trigger("ajaxComplete", [k, m]),
                --ke.active || ke.event.trigger("ajaxStop")));
          }
          return k;
        },
        getJSON: function (e, t, o) {
          return ke.get(e, t, o, "json");
        },
        getScript: function (e, t) {
          return ke.get(e, T, t, "script");
        },
      }),
      ke.each(["get", "post"], function (e, i) {
        ke[i] = function (e, t, o, n) {
          return (
            ke.isFunction(t) && ((n = n || o), (o = t), (t = T)),
            ke.ajax({ url: e, type: i, dataType: n, data: t, success: o })
          );
        };
      }),
      ke.ajaxSetup({
        accepts: {
          script:
            "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript",
        },
        contents: { script: /(?:java|ecma)script/ },
        converters: {
          "text script": function (e) {
            return ke.globalEval(e), e;
          },
        },
      }),
      ke.ajaxPrefilter("script", function (e) {
        e.cache === T && (e.cache = !1),
          e.crossDomain && ((e.type = "GET"), (e.global = !1));
      }),
      ke.ajaxTransport("script", function (t) {
        if (t.crossDomain) {
          var n,
            i = m.head || ke("head")[0] || m.documentElement;
          return {
            send: function (e, o) {
              ((n = m.createElement("script")).async = !0),
                t.scriptCharset && (n.charset = t.scriptCharset),
                (n.src = t.url),
                (n.onload = n.onreadystatechange =
                  function (e, t) {
                    (!t &&
                      n.readyState &&
                      !/loaded|complete/.test(n.readyState)) ||
                      ((n.onload = n.onreadystatechange = null),
                      n.parentNode && n.parentNode.removeChild(n),
                      (n = null),
                      t || o(200, "success"));
                  }),
                i.insertBefore(n, i.firstChild);
            },
            abort: function () {
              n && n.onload(T, !0);
            },
          };
        }
      });
    var Wt = [],
      Lt = /(=)\?(?=&|$)|\?\?/;
    ke.ajaxSetup({
      jsonp: "callback",
      jsonpCallback: function () {
        var e = Wt.pop() || ke.expando + "_" + ht++;
        return (this[e] = !0), e;
      },
    }),
      ke.ajaxPrefilter("json jsonp", function (e, t, o) {
        var n,
          i,
          s,
          r =
            !1 !== e.jsonp &&
            (Lt.test(e.url)
              ? "url"
              : "string" == typeof e.data &&
                !(e.contentType || "").indexOf(
                  "application/x-www-form-urlencoded"
                ) &&
                Lt.test(e.data) &&
                "data");
        return r || "jsonp" === e.dataTypes[0]
          ? ((n = e.jsonpCallback =
              ke.isFunction(e.jsonpCallback)
                ? e.jsonpCallback()
                : e.jsonpCallback),
            r
              ? (e[r] = e[r].replace(Lt, "$1" + n))
              : !1 !== e.jsonp &&
                (e.url += (ft.test(e.url) ? "&" : "?") + e.jsonp + "=" + n),
            (e.converters["script json"] = function () {
              return s || ke.error(n + " was not called"), s[0];
            }),
            (e.dataTypes[0] = "json"),
            (i = f[n]),
            (f[n] = function () {
              s = arguments;
            }),
            o.always(function () {
              (f[n] = i),
                e[n] && ((e.jsonpCallback = t.jsonpCallback), Wt.push(n)),
                s && ke.isFunction(i) && i(s[0]),
                (s = i = T);
            }),
            "script")
          : T;
      });
    var At,
      $t,
      Ft = 0,
      Ot =
        f.ActiveXObject &&
        function () {
          var e;
          for (e in At) At[e](T, !0);
        };
    function Ht() {
      try {
        return new f.XMLHttpRequest();
      } catch (e) {}
    }
    (ke.ajaxSettings.xhr = f.ActiveXObject
      ? function () {
          return (
            (!this.isLocal && Ht()) ||
            (function () {
              try {
                return new f.ActiveXObject("Microsoft.XMLHTTP");
              } catch (e) {}
            })()
          );
        }
      : Ht),
      ($t = ke.ajaxSettings.xhr()),
      (ke.support.cors = !!$t && "withCredentials" in $t),
      ($t = ke.support.ajax = !!$t) &&
        ke.ajaxTransport(function (c) {
          var d;
          if (!c.crossDomain || ke.support.cors)
            return {
              send: function (e, r) {
                var a,
                  t,
                  l = c.xhr();
                if (
                  (c.username
                    ? l.open(c.type, c.url, c.async, c.username, c.password)
                    : l.open(c.type, c.url, c.async),
                  c.xhrFields)
                )
                  for (t in c.xhrFields) l[t] = c.xhrFields[t];
                c.mimeType &&
                  l.overrideMimeType &&
                  l.overrideMimeType(c.mimeType),
                  c.crossDomain ||
                    e["X-Requested-With"] ||
                    (e["X-Requested-With"] = "XMLHttpRequest");
                try {
                  for (t in e) l.setRequestHeader(t, e[t]);
                } catch (e) {}
                l.send((c.hasContent && c.data) || null),
                  (d = function (e, t) {
                    var o, n, i, s;
                    try {
                      if (d && (t || 4 === l.readyState))
                        if (
                          ((d = T),
                          a &&
                            ((l.onreadystatechange = ke.noop),
                            Ot && delete At[a]),
                          t)
                        )
                          4 !== l.readyState && l.abort();
                        else {
                          (s = {}),
                            (o = l.status),
                            (n = l.getAllResponseHeaders()),
                            "string" == typeof l.responseText &&
                              (s.text = l.responseText);
                          try {
                            i = l.statusText;
                          } catch (e) {
                            i = "";
                          }
                          o || !c.isLocal || c.crossDomain
                            ? 1223 === o && (o = 204)
                            : (o = s.text ? 200 : 404);
                        }
                    } catch (e) {
                      t || r(-1, e);
                    }
                    s && r(o, i, s, n);
                  }),
                  c.async
                    ? 4 === l.readyState
                      ? setTimeout(d)
                      : ((a = ++Ft),
                        Ot &&
                          (At || ((At = {}), ke(f).unload(Ot)), (At[a] = d)),
                        (l.onreadystatechange = d))
                    : d();
              },
              abort: function () {
                d && d(T, !0);
              },
            };
        });
    var Dt,
      It,
      Nt = /^(?:toggle|show|hide)$/,
      Mt = RegExp("^(?:([+-])=|)(" + x + ")([a-z%]*)$", "i"),
      Pt = /queueHooks$/,
      jt = [
        function (t, e, o) {
          var n,
            i,
            s,
            r,
            a,
            l,
            c = this,
            d = {},
            u = t.style,
            p = t.nodeType && Je(t),
            h = ke._data(t, "fxshow");
          for (n in (o.queue ||
            (null == (a = ke._queueHooks(t, "fx")).unqueued &&
              ((a.unqueued = 0),
              (l = a.empty.fire),
              (a.empty.fire = function () {
                a.unqueued || l();
              })),
            a.unqueued++,
            c.always(function () {
              c.always(function () {
                a.unqueued--, ke.queue(t, "fx").length || a.empty.fire();
              });
            })),
          1 === t.nodeType &&
            ("height" in e || "width" in e) &&
            ((o.overflow = [u.overflow, u.overflowX, u.overflowY]),
            "inline" === ke.css(t, "display") &&
              "none" === ke.css(t, "float") &&
              (ke.support.inlineBlockNeedsLayout && "inline" !== it(t.nodeName)
                ? (u.zoom = 1)
                : (u.display = "inline-block"))),
          o.overflow &&
            ((u.overflow = "hidden"),
            ke.support.shrinkWrapBlocks ||
              c.always(function () {
                (u.overflow = o.overflow[0]),
                  (u.overflowX = o.overflow[1]),
                  (u.overflowY = o.overflow[2]);
              })),
          e))
            if (((i = e[n]), Nt.exec(i))) {
              if (
                (delete e[n],
                (s = s || "toggle" === i),
                i === (p ? "hide" : "show"))
              )
                continue;
              d[n] = (h && h[n]) || ke.style(t, n);
            }
          if (!ke.isEmptyObject(d))
            for (n in (h
              ? "hidden" in h && (p = h.hidden)
              : (h = ke._data(t, "fxshow", {})),
            s && (h.hidden = !p),
            p
              ? ke(t).show()
              : c.done(function () {
                  ke(t).hide();
                }),
            c.done(function () {
              var e;
              for (e in (ke._removeData(t, "fxshow"), d)) ke.style(t, e, d[e]);
            }),
            d))
              (r = _t(p ? h[n] : 0, n, c)),
                n in h ||
                  ((h[n] = r.start),
                  p &&
                    ((r.end = r.start),
                    (r.start = "width" === n || "height" === n ? 1 : 0)));
        },
      ],
      Rt = {
        "*": [
          function (e, t) {
            var o = this.createTween(e, t),
              n = o.cur(),
              i = Mt.exec(t),
              s = (i && i[3]) || (ke.cssNumber[e] ? "" : "px"),
              r =
                (ke.cssNumber[e] || ("px" !== s && +n)) &&
                Mt.exec(ke.css(o.elem, e)),
              a = 1,
              l = 20;
            if (r && r[3] !== s)
              for (
                s = s || r[3], i = i || [], r = +n || 1;
                (r /= a = a || ".5"),
                  ke.style(o.elem, e, r + s),
                  a !== (a = o.cur() / n) && 1 !== a && --l;

              );
            return (
              i &&
                ((r = o.start = +r || +n || 0),
                (o.unit = s),
                (o.end = i[1] ? r + (i[1] + 1) * i[2] : +i[2])),
              o
            );
          },
        ],
      };
    function Bt() {
      return (
        setTimeout(function () {
          Dt = T;
        }),
        (Dt = ke.now())
      );
    }
    function _t(e, t, o) {
      for (
        var n, i = (Rt[t] || []).concat(Rt["*"]), s = 0, r = i.length;
        s < r;
        s++
      )
        if ((n = i[s].call(o, t, e))) return n;
    }
    function qt(s, e, t) {
      var o,
        r,
        n = 0,
        i = jt.length,
        a = ke.Deferred().always(function () {
          delete l.elem;
        }),
        l = function () {
          if (r) return !1;
          for (
            var e = Dt || Bt(),
              t = Math.max(0, c.startTime + c.duration - e),
              o = 1 - (t / c.duration || 0),
              n = 0,
              i = c.tweens.length;
            n < i;
            n++
          )
            c.tweens[n].run(o);
          return (
            a.notifyWith(s, [c, o, t]),
            o < 1 && i ? t : (a.resolveWith(s, [c]), !1)
          );
        },
        c = a.promise({
          elem: s,
          props: ke.extend({}, e),
          opts: ke.extend(!0, { specialEasing: {} }, t),
          originalProperties: e,
          originalOptions: t,
          startTime: Dt || Bt(),
          duration: t.duration,
          tweens: [],
          createTween: function (e, t) {
            var o = ke.Tween(
              s,
              c.opts,
              e,
              t,
              c.opts.specialEasing[e] || c.opts.easing
            );
            return c.tweens.push(o), o;
          },
          stop: function (e) {
            var t = 0,
              o = e ? c.tweens.length : 0;
            if (r) return this;
            for (r = !0; t < o; t++) c.tweens[t].run(1);
            return e ? a.resolveWith(s, [c, e]) : a.rejectWith(s, [c, e]), this;
          },
        }),
        d = c.props;
      for (
        (function (e, t) {
          var o, n, i, s, r;
          for (o in e)
            if (
              ((n = ke.camelCase(o)),
              (i = t[n]),
              (s = e[o]),
              ke.isArray(s) && ((i = s[1]), (s = e[o] = s[0])),
              o !== n && ((e[n] = s), delete e[o]),
              (r = ke.cssHooks[n]) && ("expand" in r))
            )
              for (o in ((s = r.expand(s)), delete e[n], s))
                (o in e) || ((e[o] = s[o]), (t[o] = i));
            else t[n] = i;
        })(d, c.opts.specialEasing);
        n < i;
        n++
      )
        if ((o = jt[n].call(c, s, d, c.opts))) return o;
      return (
        ke.map(d, _t, c),
        ke.isFunction(c.opts.start) && c.opts.start.call(s, c),
        ke.fx.timer(ke.extend(l, { elem: s, anim: c, queue: c.opts.queue })),
        c
          .progress(c.opts.progress)
          .done(c.opts.done, c.opts.complete)
          .fail(c.opts.fail)
          .always(c.opts.always)
      );
    }
    function Ut(e, t, o, n, i) {
      return new Ut.prototype.init(e, t, o, n, i);
    }
    function Xt(e, t) {
      var o,
        n = { height: e },
        i = 0;
      for (t = t ? 1 : 0; i < 4; i += 2 - t)
        n["margin" + (o = Ve[i])] = n["padding" + o] = e;
      return t && (n.opacity = n.width = e), n;
    }
    function Zt(e) {
      return ke.isWindow(e)
        ? e
        : 9 === e.nodeType && (e.defaultView || e.parentWindow);
    }
    (ke.Animation = ke.extend(qt, {
      tweener: function (e, t) {
        for (
          var o,
            n = 0,
            i = (e = ke.isFunction(e) ? ((t = e), ["*"]) : e.split(" ")).length;
          n < i;
          n++
        )
          (o = e[n]), (Rt[o] = Rt[o] || []), Rt[o].unshift(t);
      },
      prefilter: function (e, t) {
        t ? jt.unshift(e) : jt.push(e);
      },
    })),
      ((ke.Tween = Ut).prototype = {
        constructor: Ut,
        init: function (e, t, o, n, i, s) {
          (this.elem = e),
            (this.prop = o),
            (this.easing = i || "swing"),
            (this.options = t),
            (this.start = this.now = this.cur()),
            (this.end = n),
            (this.unit = s || (ke.cssNumber[o] ? "" : "px"));
        },
        cur: function () {
          var e = Ut.propHooks[this.prop];
          return e && e.get ? e.get(this) : Ut.propHooks._default.get(this);
        },
        run: function (e) {
          var t,
            o = Ut.propHooks[this.prop];
          return (
            (this.pos = t =
              this.options.duration
                ? ke.easing[this.easing](
                    e,
                    this.options.duration * e,
                    0,
                    1,
                    this.options.duration
                  )
                : e),
            (this.now = (this.end - this.start) * t + this.start),
            this.options.step &&
              this.options.step.call(this.elem, this.now, this),
            o && o.set ? o.set(this) : Ut.propHooks._default.set(this),
            this
          );
        },
      }),
      (Ut.prototype.init.prototype = Ut.prototype),
      (Ut.propHooks = {
        _default: {
          get: function (e) {
            var t;
            return null == e.elem[e.prop] ||
              (e.elem.style && null != e.elem.style[e.prop])
              ? (t = ke.css(e.elem, e.prop, "")) && "auto" !== t
                ? t
                : 0
              : e.elem[e.prop];
          },
          set: function (e) {
            ke.fx.step[e.prop]
              ? ke.fx.step[e.prop](e)
              : e.elem.style &&
                (null != e.elem.style[ke.cssProps[e.prop]] ||
                  ke.cssHooks[e.prop])
              ? ke.style(e.elem, e.prop, e.now + e.unit)
              : (e.elem[e.prop] = e.now);
          },
        },
      }),
      (Ut.propHooks.scrollTop = Ut.propHooks.scrollLeft =
        {
          set: function (e) {
            e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now);
          },
        }),
      ke.each(["toggle", "show", "hide"], function (e, n) {
        var i = ke.fn[n];
        ke.fn[n] = function (e, t, o) {
          return null == e || "boolean" == typeof e
            ? i.apply(this, arguments)
            : this.animate(Xt(n, !0), e, t, o);
        };
      }),
      ke.fn.extend({
        fadeTo: function (e, t, o, n) {
          return this.filter(Je)
            .css("opacity", 0)
            .show()
            .end()
            .animate({ opacity: t }, e, o, n);
        },
        animate: function (t, e, o, n) {
          function i() {
            var e = qt(this, ke.extend({}, t), r);
            (s || ke._data(this, "finish")) && e.stop(!0);
          }
          var s = ke.isEmptyObject(t),
            r = ke.speed(e, o, n);
          return (
            (i.finish = i),
            s || !1 === r.queue ? this.each(i) : this.queue(r.queue, i)
          );
        },
        stop: function (i, e, s) {
          function r(e) {
            var t = e.stop;
            delete e.stop, t(s);
          }
          return (
            "string" != typeof i && ((s = e), (e = i), (i = T)),
            e && !1 !== i && this.queue(i || "fx", []),
            this.each(function () {
              var e = !0,
                t = null != i && i + "queueHooks",
                o = ke.timers,
                n = ke._data(this);
              if (t) n[t] && n[t].stop && r(n[t]);
              else for (t in n) n[t] && n[t].stop && Pt.test(t) && r(n[t]);
              for (t = o.length; t--; )
                o[t].elem !== this ||
                  (null != i && o[t].queue !== i) ||
                  (o[t].anim.stop(s), (e = !1), o.splice(t, 1));
              (!e && s) || ke.dequeue(this, i);
            })
          );
        },
        finish: function (r) {
          return (
            !1 !== r && (r = r || "fx"),
            this.each(function () {
              var e,
                t = ke._data(this),
                o = t[r + "queue"],
                n = t[r + "queueHooks"],
                i = ke.timers,
                s = o ? o.length : 0;
              for (
                t.finish = !0,
                  ke.queue(this, r, []),
                  n && n.stop && n.stop.call(this, !0),
                  e = i.length;
                e--;

              )
                i[e].elem === this &&
                  i[e].queue === r &&
                  (i[e].anim.stop(!0), i.splice(e, 1));
              for (e = 0; e < s; e++)
                o[e] && o[e].finish && o[e].finish.call(this);
              delete t.finish;
            })
          );
        },
      }),
      ke.each(
        {
          slideDown: Xt("show"),
          slideUp: Xt("hide"),
          slideToggle: Xt("toggle"),
          fadeIn: { opacity: "show" },
          fadeOut: { opacity: "hide" },
          fadeToggle: { opacity: "toggle" },
        },
        function (e, n) {
          ke.fn[e] = function (e, t, o) {
            return this.animate(n, e, t, o);
          };
        }
      ),
      (ke.speed = function (e, t, o) {
        var n =
          e && "object" == typeof e
            ? ke.extend({}, e)
            : {
                complete: o || (!o && t) || (ke.isFunction(e) && e),
                duration: e,
                easing: (o && t) || (t && !ke.isFunction(t) && t),
              };
        return (
          (n.duration = ke.fx.off
            ? 0
            : "number" == typeof n.duration
            ? n.duration
            : n.duration in ke.fx.speeds
            ? ke.fx.speeds[n.duration]
            : ke.fx.speeds._default),
          (null != n.queue && !0 !== n.queue) || (n.queue = "fx"),
          (n.old = n.complete),
          (n.complete = function () {
            ke.isFunction(n.old) && n.old.call(this),
              n.queue && ke.dequeue(this, n.queue);
          }),
          n
        );
      }),
      (ke.easing = {
        linear: function (e) {
          return e;
        },
        swing: function (e) {
          return 0.5 - Math.cos(e * Math.PI) / 2;
        },
      }),
      (ke.timers = []),
      (ke.fx = Ut.prototype.init),
      (ke.fx.tick = function () {
        var e,
          t = ke.timers,
          o = 0;
        for (Dt = ke.now(); t.length > o; o++)
          (e = t[o])() || t[o] !== e || t.splice(o--, 1);
        t.length || ke.fx.stop(), (Dt = T);
      }),
      (ke.fx.timer = function (e) {
        e() && ke.timers.push(e) && ke.fx.start();
      }),
      (ke.fx.interval = 13),
      (ke.fx.start = function () {
        It = It || setInterval(ke.fx.tick, ke.fx.interval);
      }),
      (ke.fx.stop = function () {
        clearInterval(It), (It = null);
      }),
      (ke.fx.speeds = { slow: 600, fast: 200, _default: 400 }),
      (ke.fx.step = {}),
      ke.expr &&
        ke.expr.filters &&
        (ke.expr.filters.animated = function (t) {
          return ke.grep(ke.timers, function (e) {
            return t === e.elem;
          }).length;
        }),
      (ke.fn.offset = function (t) {
        if (arguments.length)
          return t === T
            ? this
            : this.each(function (e) {
                ke.offset.setOffset(this, t, e);
              });
        var e,
          o,
          n = { top: 0, left: 0 },
          i = this[0],
          s = i && i.ownerDocument;
        return s
          ? ((e = s.documentElement),
            ke.contains(e, i)
              ? (typeof i.getBoundingClientRect !== v &&
                  (n = i.getBoundingClientRect()),
                (o = Zt(s)),
                {
                  top:
                    n.top + (o.pageYOffset || e.scrollTop) - (e.clientTop || 0),
                  left:
                    n.left +
                    (o.pageXOffset || e.scrollLeft) -
                    (e.clientLeft || 0),
                })
              : n)
          : void 0;
      }),
      (ke.offset = {
        setOffset: function (e, t, o) {
          var n = ke.css(e, "position");
          "static" === n && (e.style.position = "relative");
          var i,
            s = ke(e),
            r = s.offset(),
            a = ke.css(e, "top"),
            l = ke.css(e, "left"),
            c = {},
            d = {},
            u =
              ("absolute" === n || "fixed" === n) &&
              -1 < ke.inArray("auto", [a, l])
                ? ((i = (d = s.position()).top), d.left)
                : ((i = parseFloat(a) || 0), parseFloat(l) || 0);
          ke.isFunction(t) && (t = t.call(e, o, r)),
            null != t.top && (c.top = t.top - r.top + i),
            null != t.left && (c.left = t.left - r.left + u),
            "using" in t ? t.using.call(e, c) : s.css(c);
        },
      }),
      ke.fn.extend({
        position: function () {
          if (this[0]) {
            var e,
              t,
              o = { top: 0, left: 0 },
              n = this[0];
            return (
              "fixed" === ke.css(n, "position")
                ? (t = n.getBoundingClientRect())
                : ((e = this.offsetParent()),
                  (t = this.offset()),
                  ke.nodeName(e[0], "html") || (o = e.offset()),
                  (o.top += ke.css(e[0], "borderTopWidth", !0)),
                  (o.left += ke.css(e[0], "borderLeftWidth", !0))),
              {
                top: t.top - o.top - ke.css(n, "marginTop", !0),
                left: t.left - o.left - ke.css(n, "marginLeft", !0),
              }
            );
          }
        },
        offsetParent: function () {
          return this.map(function () {
            for (
              var e = this.offsetParent || s;
              e &&
              !ke.nodeName(e, "html") &&
              "static" === ke.css(e, "position");

            )
              e = e.offsetParent;
            return e || s;
          });
        },
      }),
      ke.each(
        { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" },
        function (t, i) {
          var s = /Y/.test(i);
          ke.fn[t] = function (e) {
            return ke.access(
              this,
              function (e, t, o) {
                var n = Zt(e);
                return o === T
                  ? n
                    ? i in n
                      ? n[i]
                      : n.document.documentElement[t]
                    : e[t]
                  : (n
                      ? n.scrollTo(
                          s ? ke(n).scrollLeft() : o,
                          s ? o : ke(n).scrollTop()
                        )
                      : (e[t] = o),
                    T);
              },
              t,
              e,
              arguments.length,
              null
            );
          };
        }
      ),
      ke.each({ Height: "height", Width: "width" }, function (s, r) {
        ke.each(
          { padding: "inner" + s, content: r, "": "outer" + s },
          function (n, e) {
            ke.fn[e] = function (e, t) {
              var o = arguments.length && (n || "boolean" != typeof e),
                i = n || (!0 === e || !0 === t ? "margin" : "border");
              return ke.access(
                this,
                function (e, t, o) {
                  var n;
                  return ke.isWindow(e)
                    ? e.document.documentElement["client" + s]
                    : 9 === e.nodeType
                    ? ((n = e.documentElement),
                      Math.max(
                        e.body["scroll" + s],
                        n["scroll" + s],
                        e.body["offset" + s],
                        n["offset" + s],
                        n["client" + s]
                      ))
                    : o === T
                    ? ke.css(e, t, i)
                    : ke.style(e, t, o, i);
                },
                r,
                o ? e : T,
                o,
                null
              );
            };
          }
        );
      }),
      (ke.fn.size = function () {
        return this.length;
      }),
      (ke.fn.andSelf = ke.fn.addBack),
      "object" == typeof module && module && "object" == typeof module.exports
        ? (module.exports = ke)
        : ((f.jQuery = f.$ = ke),
          "function" == typeof define &&
            define.amd &&
            define("jquery", [], function () {
              return ke;
            }));
  })(window),
  (jQuery.easing.jswing = jQuery.easing.swing),
  jQuery.extend(jQuery.easing, {
    def: "easeOutQuad",
    swing: function (e, t, o, n, i) {
      return jQuery.easing[jQuery.easing.def](e, t, o, n, i);
    },
    easeInQuad: function (e, t, o, n, i) {
      return n * (t /= i) * t + o;
    },
    easeOutQuad: function (e, t, o, n, i) {
      return -n * (t /= i) * (t - 2) + o;
    },
    easeInOutQuad: function (e, t, o, n, i) {
      return (t /= i / 2) < 1
        ? (n / 2) * t * t + o
        : (-n / 2) * (--t * (t - 2) - 1) + o;
    },
    easeInCubic: function (e, t, o, n, i) {
      return n * (t /= i) * t * t + o;
    },
    easeOutCubic: function (e, t, o, n, i) {
      return n * ((t = t / i - 1) * t * t + 1) + o;
    },
    easeInOutCubic: function (e, t, o, n, i) {
      return (t /= i / 2) < 1
        ? (n / 2) * t * t * t + o
        : (n / 2) * ((t -= 2) * t * t + 2) + o;
    },
    easeInQuart: function (e, t, o, n, i) {
      return n * (t /= i) * t * t * t + o;
    },
    easeOutQuart: function (e, t, o, n, i) {
      return -n * ((t = t / i - 1) * t * t * t - 1) + o;
    },
    easeInOutQuart: function (e, t, o, n, i) {
      return (t /= i / 2) < 1
        ? (n / 2) * t * t * t * t + o
        : (-n / 2) * ((t -= 2) * t * t * t - 2) + o;
    },
    easeInQuint: function (e, t, o, n, i) {
      return n * (t /= i) * t * t * t * t + o;
    },
    easeOutQuint: function (e, t, o, n, i) {
      return n * ((t = t / i - 1) * t * t * t * t + 1) + o;
    },
    easeInOutQuint: function (e, t, o, n, i) {
      return (t /= i / 2) < 1
        ? (n / 2) * t * t * t * t * t + o
        : (n / 2) * ((t -= 2) * t * t * t * t + 2) + o;
    },
    easeInSine: function (e, t, o, n, i) {
      return -n * Math.cos((t / i) * (Math.PI / 2)) + n + o;
    },
    easeOutSine: function (e, t, o, n, i) {
      return n * Math.sin((t / i) * (Math.PI / 2)) + o;
    },
    easeInOutSine: function (e, t, o, n, i) {
      return (-n / 2) * (Math.cos((Math.PI * t) / i) - 1) + o;
    },
    easeInExpo: function (e, t, o, n, i) {
      return 0 == t ? o : n * Math.pow(2, 10 * (t / i - 1)) + o;
    },
    easeOutExpo: function (e, t, o, n, i) {
      return t == i ? o + n : n * (1 - Math.pow(2, (-10 * t) / i)) + o;
    },
    easeInOutExpo: function (e, t, o, n, i) {
      return 0 == t
        ? o
        : t == i
        ? o + n
        : (t /= i / 2) < 1
        ? (n / 2) * Math.pow(2, 10 * (t - 1)) + o
        : (n / 2) * (2 - Math.pow(2, -10 * --t)) + o;
    },
    easeInCirc: function (e, t, o, n, i) {
      return -n * (Math.sqrt(1 - (t /= i) * t) - 1) + o;
    },
    easeOutCirc: function (e, t, o, n, i) {
      return n * Math.sqrt(1 - (t = t / i - 1) * t) + o;
    },
    easeInOutCirc: function (e, t, o, n, i) {
      return (t /= i / 2) < 1
        ? (-n / 2) * (Math.sqrt(1 - t * t) - 1) + o
        : (n / 2) * (Math.sqrt(1 - (t -= 2) * t) + 1) + o;
    },
    easeInElastic: function (e, t, o, n, i) {
      var s = 1.70158,
        r = 0,
        a = n;
      return 0 == t
        ? o
        : 1 == (t /= i)
        ? o + n
        : ((r = r || 0.3 * i),
          (s =
            a < Math.abs(n)
              ? ((a = n), r / 4)
              : (r / (2 * Math.PI)) * Math.asin(n / a)),
          -(
            a *
            Math.pow(2, 10 * --t) *
            Math.sin(((t * i - s) * (2 * Math.PI)) / r)
          ) + o);
    },
    easeOutElastic: function (e, t, o, n, i) {
      var s = 1.70158,
        r = 0,
        a = n;
      return 0 == t
        ? o
        : 1 == (t /= i)
        ? o + n
        : ((r = r || 0.3 * i),
          (s =
            a < Math.abs(n)
              ? ((a = n), r / 4)
              : (r / (2 * Math.PI)) * Math.asin(n / a)),
          a *
            Math.pow(2, -10 * t) *
            Math.sin(((t * i - s) * (2 * Math.PI)) / r) +
            n +
            o);
    },
    easeInOutElastic: function (e, t, o, n, i) {
      var s = 1.70158,
        r = 0,
        a = n;
      return 0 == t
        ? o
        : 2 == (t /= i / 2)
        ? o + n
        : ((r = r || i * (0.3 * 1.5)),
          (s =
            a < Math.abs(n)
              ? ((a = n), r / 4)
              : (r / (2 * Math.PI)) * Math.asin(n / a)),
          t < 1
            ? a *
                Math.pow(2, 10 * --t) *
                Math.sin(((t * i - s) * (2 * Math.PI)) / r) *
                -0.5 +
              o
            : a *
                Math.pow(2, -10 * --t) *
                Math.sin(((t * i - s) * (2 * Math.PI)) / r) *
                0.5 +
              n +
              o);
    },
    easeInBack: function (e, t, o, n, i, s) {
      return (
        null == s && (s = 1.70158), n * (t /= i) * t * ((s + 1) * t - s) + o
      );
    },
    easeOutBack: function (e, t, o, n, i, s) {
      return (
        null == s && (s = 1.70158),
        n * ((t = t / i - 1) * t * ((s + 1) * t + s) + 1) + o
      );
    },
    easeInOutBack: function (e, t, o, n, i, s) {
      return (
        null == s && (s = 1.70158),
        (t /= i / 2) < 1
          ? (n / 2) * (t * t * ((1 + (s *= 1.525)) * t - s)) + o
          : (n / 2) * ((t -= 2) * t * ((1 + (s *= 1.525)) * t + s) + 2) + o
      );
    },
    easeInBounce: function (e, t, o, n, i) {
      return n - jQuery.easing.easeOutBounce(e, i - t, 0, n, i) + o;
    },
    easeOutBounce: function (e, t, o, n, i) {
      return (t /= i) < 1 / 2.75
        ? n * (7.5625 * t * t) + o
        : t < 2 / 2.75
        ? n * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + o
        : t < 2.5 / 2.75
        ? n * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + o
        : n * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + o;
    },
    easeInOutBounce: function (e, t, o, n, i) {
      return t < i / 2
        ? 0.5 * jQuery.easing.easeInBounce(e, 2 * t, 0, n, i) + o
        : 0.5 * jQuery.easing.easeOutBounce(e, 2 * t - i, 0, n, i) +
            0.5 * n +
            o;
    },
  }),
  (function () {
    function e(C) {
      C.fn._fadeIn = C.fn.fadeIn;
      var S = C.noop || function () {},
        z = /MSIE/.test(navigator.userAgent),
        E =
          /MSIE 6.0/.test(navigator.userAgent) &&
          !/MSIE 8.0/.test(navigator.userAgent),
        W =
          (document.documentMode,
          C.isFunction(document.createElement("div").style.setExpression));
      (C.blockUI = function (e) {
        o(window, e);
      }),
        (C.unblockUI = function (e) {
          $(window, e);
        }),
        (C.growlUI = function (e, t, o, n) {
          var i = C('<div class="growlUI"></div>');
          e && i.append("<h1>" + e + "</h1>"),
            t && i.append("<h2>" + t + "</h2>"),
            void 0 === o && (o = 3e3),
            C.blockUI({
              message: i,
              fadeIn: 700,
              fadeOut: 1e3,
              centerY: !1,
              timeout: o,
              showOverlay: !1,
              onUnblock: n,
              css: C.blockUI.defaults.growlCSS,
            });
        }),
        (C.fn.block = function (e) {
          if (this[0] === window) return C.blockUI(e), this;
          var t = C.extend({}, C.blockUI.defaults, e || {});
          return (
            this.each(function () {
              var e = C(this);
              (t.ignoreIfBlocked && e.data("blockUI.isBlocked")) ||
                e.unblock({ fadeOut: 0 });
            }),
            this.each(function () {
              "static" == C.css(this, "position") &&
                ((this.style.position = "relative"),
                C(this).data("blockUI.static", !0)),
                (this.style.zoom = 1),
                o(this, e);
            })
          );
        }),
        (C.fn.unblock = function (e) {
          return this[0] === window
            ? (C.unblockUI(e), this)
            : this.each(function () {
                $(this, e);
              });
        }),
        (C.blockUI.version = 2.59),
        (C.blockUI.defaults = {
          message: "<h1>Please wait...</h1>",
          title: null,
          draggable: !0,
          theme: !1,
          css: {
            padding: 0,
            margin: 0,
            width: "30%",
            top: "40%",
            left: "35%",
            textAlign: "center",
            color: "#000",
            border: "3px solid aaa",
            backgroundColor: "#fff",
            cursor: "wait",
          },
          themedCSS: { width: "30%", top: "40%", left: "35%" },
          overlayCSS: { backgroundColor: "#000", opacity: 0.6, cursor: "wait" },
          cursorReset: "default",
          growlCSS: {
            width: "350px",
            top: "10px",
            left: "",
            right: "10px",
            border: "none",
            padding: "5px",
            opacity: 0.6,
            cursor: "default",
            color: "#fff",
            backgroundColor: "#000",
            "-webkit-border-radius": "10px",
            "-moz-border-radius": "10px",
            "border-radius": "10px",
          },
          iframeSrc: /^https/i.test(window.location.href || "")
            ? "javascript:false"
            : "about:blank",
          forceIframe: !1,
          baseZ: 1e3,
          centerX: !0,
          centerY: !0,
          allowBodyStretch: !0,
          bindEvents: !0,
          constrainTabKey: !0,
          fadeIn: 200,
          fadeOut: 400,
          timeout: 0,
          showOverlay: !0,
          focusInput: !0,
          onBlock: null,
          onUnblock: null,
          onOverlayClick: null,
          quirksmodeOffsetHack: 4,
          blockMsgClass: "blockMsg",
          ignoreIfBlocked: !1,
        });
      var L = null,
        A = [];
      function o(e, i) {
        var t,
          o,
          n,
          s,
          r,
          a,
          l,
          c,
          d,
          u,
          p,
          h,
          f,
          m,
          g,
          v,
          y,
          w,
          b,
          x,
          k = e == window,
          T = i && void 0 !== i.message ? i.message : void 0;
        ((i = C.extend({}, C.blockUI.defaults, i || {})).ignoreIfBlocked &&
          C(e).data("blockUI.isBlocked")) ||
          ((i.overlayCSS = C.extend(
            {},
            C.blockUI.defaults.overlayCSS,
            i.overlayCSS || {}
          )),
          (t = C.extend({}, C.blockUI.defaults.css, i.css || {})),
          i.onOverlayClick && (i.overlayCSS.cursor = "pointer"),
          (o = C.extend({}, C.blockUI.defaults.themedCSS, i.themedCSS || {})),
          (T = void 0 === T ? i.message : T),
          k && L && $(window, { fadeOut: 0 }),
          T &&
            "string" != typeof T &&
            (T.parentNode || T.jquery) &&
            ((n = T.jquery ? T[0] : T),
            (s = {}),
            C(e).data("blockUI.history", s),
            (s.el = n),
            (s.parent = n.parentNode),
            (s.display = n.style.display),
            (s.position = n.style.position),
            s.parent && s.parent.removeChild(n)),
          C(e).data("blockUI.onUnblock", i.onUnblock),
          (r = i.baseZ),
          (c =
            z || i.forceIframe
              ? C(
                  '<iframe class="blockUI" style="z-index:' +
                    r++ +
                    ';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' +
                    i.iframeSrc +
                    '"></iframe>'
                )
              : C('<div class="blockUI" style="display:none"></div>')),
          (d = i.theme
            ? C(
                '<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:' +
                  r++ +
                  ';display:none"></div>'
              )
            : C(
                '<div class="blockUI blockOverlay" style="z-index:' +
                  r++ +
                  ';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'
              )),
          i.theme && k
            ? ((l =
                '<div class="blockUI ' +
                i.blockMsgClass +
                ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:' +
                (r + 10) +
                ';display:none;position:fixed">'),
              i.title &&
                (l +=
                  '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' +
                  (i.title || "Â ") +
                  "</div>"),
              (l += '<div class="ui-widget-content ui-dialog-content"></div>'),
              (l += "</div>"))
            : i.theme
            ? ((l =
                '<div class="blockUI ' +
                i.blockMsgClass +
                ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:' +
                (r + 10) +
                ';display:none;position:absolute">'),
              i.title &&
                (l +=
                  '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">' +
                  (i.title || "Â ") +
                  "</div>"),
              (l += '<div class="ui-widget-content ui-dialog-content"></div>'),
              (l += "</div>"))
            : (l = k
                ? '<div class="blockUI ' +
                  i.blockMsgClass +
                  ' blockPage" style="z-index:' +
                  (r + 10) +
                  ';display:none;position:fixed"></div>'
                : '<div class="blockUI ' +
                  i.blockMsgClass +
                  ' blockElement" style="z-index:' +
                  (r + 10) +
                  ';display:none;position:absolute"></div>'),
          (a = C(l)),
          T &&
            (i.theme ? (a.css(o), a.addClass("ui-widget-content")) : a.css(t)),
          i.theme || d.css(i.overlayCSS),
          d.css("position", k ? "fixed" : "absolute"),
          (z || i.forceIframe) && c.css("opacity", 0),
          (u = [c, d, a]),
          (p = C(k ? "body" : e)),
          C.each(u, function () {
            this.appendTo(p);
          }),
          i.theme &&
            i.draggable &&
            C.fn.draggable &&
            a.draggable({ handle: ".ui-dialog-titlebar", cancel: "li" }),
          (h =
            W &&
            (!C.support.boxModel ||
              0 < C("object,embed", k ? null : e).length)),
          (E || h) &&
            (k &&
              i.allowBodyStretch &&
              C.support.boxModel &&
              C("html,body").css("height", "100%"),
            (!E && C.support.boxModel) ||
              k ||
              ((f = H(e, "borderTopWidth")),
              (m = H(e, "borderLeftWidth")),
              (g = f ? "(0 - " + f + ")" : 0),
              (v = m ? "(0 - " + m + ")" : 0)),
            C.each(u, function (e, t) {
              var o,
                n = t[0].style;
              (n.position = "absolute"),
                e < 2
                  ? (k
                      ? n.setExpression(
                          "height",
                          "Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:" +
                            i.quirksmodeOffsetHack +
                            ') + "px"'
                        )
                      : n.setExpression(
                          "height",
                          'this.parentNode.offsetHeight + "px"'
                        ),
                    k
                      ? n.setExpression(
                          "width",
                          'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'
                        )
                      : n.setExpression(
                          "width",
                          'this.parentNode.offsetWidth + "px"'
                        ),
                    v && n.setExpression("left", v),
                    g && n.setExpression("top", g))
                  : i.centerY
                  ? (k &&
                      n.setExpression(
                        "top",
                        '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'
                      ),
                    (n.marginTop = 0))
                  : !i.centerY &&
                    k &&
                    ((o =
                      "((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + " +
                      (i.css && i.css.top ? parseInt(i.css.top, 10) : 0) +
                      ') + "px"'),
                    n.setExpression("top", o));
            })),
          T &&
            (i.theme ? a.find(".ui-widget-content").append(T) : a.append(T),
            (T.jquery || T.nodeType) && C(T).show()),
          (z || i.forceIframe) && i.showOverlay && c.show(),
          i.fadeIn
            ? ((y = i.onBlock ? i.onBlock : S),
              (w = i.showOverlay && !T ? y : S),
              (b = T ? y : S),
              i.showOverlay && d._fadeIn(i.fadeIn, w),
              T && a._fadeIn(i.fadeIn, b))
            : (i.showOverlay && d.show(),
              T && a.show(),
              i.onBlock && i.onBlock()),
          F(1, e, i),
          k
            ? ((L = a[0]),
              (A = C(":input:enabled:visible", L)),
              i.focusInput && setTimeout(O, 20))
            : (function (e, t, o) {
                var n = e.parentNode,
                  i = e.style,
                  s =
                    (n.offsetWidth - e.offsetWidth) / 2 -
                    H(n, "borderLeftWidth"),
                  r =
                    (n.offsetHeight - e.offsetHeight) / 2 -
                    H(n, "borderTopWidth");
                t && (i.left = 0 < s ? s + "px" : "0");
                o && (i.top = 0 < r ? r + "px" : "0");
              })(a[0], i.centerX, i.centerY),
          i.timeout &&
            ((x = setTimeout(function () {
              k ? C.unblockUI(i) : C(e).unblock(i);
            }, i.timeout)),
            C(e).data("blockUI.timeout", x)));
      }
      function $(e, t) {
        var o,
          n,
          i = e == window,
          s = C(e),
          r = s.data("blockUI.history"),
          a = s.data("blockUI.timeout");
        a && (clearTimeout(a), s.removeData("blockUI.timeout")),
          (t = C.extend({}, C.blockUI.defaults, t || {})),
          F(0, e, t),
          null === t.onUnblock &&
            ((t.onUnblock = s.data("blockUI.onUnblock")),
            s.removeData("blockUI.onUnblock")),
          (n = i
            ? C("body").children().filter(".blockUI").add("body > .blockUI")
            : s.find(">.blockUI")),
          t.cursorReset &&
            (1 < n.length && (n[1].style.cursor = t.cursorReset),
            2 < n.length && (n[2].style.cursor = t.cursorReset)),
          i && (L = A = null),
          t.fadeOut
            ? ((o = n.length),
              n.fadeOut(t.fadeOut, function () {
                0 == --o && l(n, r, t, e);
              }))
            : l(n, r, t, e);
      }
      function l(e, t, o, n) {
        var i = C(n);
        e.each(function (e, t) {
          this.parentNode && this.parentNode.removeChild(this);
        }),
          t &&
            t.el &&
            ((t.el.style.display = t.display),
            (t.el.style.position = t.position),
            t.parent && t.parent.appendChild(t.el),
            i.removeData("blockUI.history")),
          i.data("blockUI.static") && i.css("position", "static"),
          "function" == typeof o.onUnblock && o.onUnblock(n, o);
        var s = C(document.body),
          r = s.width(),
          a = s[0].style.width;
        s.width(r - 1).width(r), (s[0].style.width = a);
      }
      function F(e, t, o) {
        var n,
          i = t == window,
          s = C(t);
        (!e && ((i && !L) || (!i && !s.data("blockUI.isBlocked")))) ||
          (s.data("blockUI.isBlocked", e),
          i &&
            o.bindEvents &&
            (!e || o.showOverlay) &&
            ((n =
              "mousedown mouseup keydown keypress keyup touchstart touchend touchmove"),
            e ? C(document).bind(n, o, r) : C(document).unbind(n, r)));
      }
      function r(e) {
        if (e.keyCode && 9 == e.keyCode && L && e.data.constrainTabKey) {
          var t = !e.shiftKey && e.target === A[A.length - 1],
            o = e.shiftKey && e.target === A[0];
          if (t || o)
            return (
              setTimeout(function () {
                O(o);
              }, 10),
              !1
            );
        }
        var n = e.data,
          i = C(e.target);
        return (
          i.hasClass("blockOverlay") && n.onOverlayClick && n.onOverlayClick(),
          0 < i.parents("div." + n.blockMsgClass).length ||
            0 === i.parents().children().filter("div.blockUI").length
        );
      }
      function O(e) {
        var t;
        !A || ((t = A[!0 === e ? A.length - 1 : 0]) && t.focus());
      }
      function H(e, t) {
        return parseInt(C.css(e, t), 10) || 0;
      }
    }
    "function" == typeof define && define.amd && define.amd.jQuery
      ? define(["jquery"], e)
      : e(jQuery);
  })(),
  (function (u) {
    var d,
      c = u.fn.domManip,
      p = "_tmplitem",
      o = /^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,
      h = {},
      f = {},
      r = { key: 0, data: {} },
      m = 0,
      g = 0,
      s = [];
    function v(e, t, o, n) {
      var i = {
        data: n || 0 === n || !1 === n ? n : t ? t.data : {},
        _wrap: t ? t._wrap : null,
        tmpl: null,
        parent: t || null,
        nodes: [],
        calls: x,
        nest: k,
        wrap: T,
        html: C,
        update: S,
      };
      return (
        e && u.extend(i, e, { nodes: [], parent: t }),
        o &&
          ((i.tmpl = o),
          (i._ctnt = i._ctnt || i.tmpl(u, i)),
          (i.key = ++m),
          ((s.length ? f : h)[m] = i)),
        i
      );
    }
    function a(t, e, o) {
      var i,
        n = o
          ? u.map(o, function (e) {
              return "string" == typeof e
                ? t.key
                  ? e.replace(
                      /(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,
                      "$1 " + p + '="' + t.key + '" $2'
                    )
                  : e
                : a(e, t, e._ctnt);
            })
          : t;
      return e
        ? n
        : ((n = n.join("")).replace(
            /^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
            function (e, t, o, n) {
              b((i = u(o).get())),
                t && (i = l(t).concat(i)),
                n && (i = i.concat(l(n)));
            }
          ),
          i || l(n));
    }
    function l(e) {
      var t = document.createElement("div");
      return (t.innerHTML = e), u.makeArray(t.childNodes);
    }
    function n(e) {
      return new Function(
        "jQuery",
        "$item",
        "var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('" +
          u
            .trim(e)
            .replace(/([\\'])/g, "\\$1")
            .replace(/[\r\t\n]/g, " ")
            .replace(/\$\{([^\}]*)\}/g, "{{= $1}}")
            .replace(
              /\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
              function (e, t, o, n, i, s, r) {
                var a,
                  l,
                  c,
                  d = u.tmpl.tag[o];
                if (!d) throw "Unknown template tag: " + o;
                return (
                  (a = d._default || []),
                  s && !/\w$/.test(i) && ((i += s), (s = "")),
                  (c = i
                    ? ((i = w(i)),
                      (r = r ? "," + w(r) + ")" : s ? ")" : ""),
                      (l = s
                        ? -1 < i.indexOf(".")
                          ? i + w(s)
                          : "(" + i + ").call($item" + r
                        : i),
                      s
                        ? l
                        : "(typeof(" +
                          i +
                          ")==='function'?(" +
                          i +
                          ").call($item):(" +
                          i +
                          "))")
                    : (l = a.$1 || "null")),
                  (n = w(n)),
                  "');" +
                    d[t ? "close" : "open"]
                      .split("$notnull_1")
                      .join(
                        i
                          ? "typeof(" +
                              i +
                              ")!=='undefined' && (" +
                              i +
                              ")!=null"
                          : "true"
                      )
                      .split("$1a")
                      .join(c)
                      .split("$1")
                      .join(l)
                      .split("$2")
                      .join(n || a.$2 || "") +
                    "__.push('"
                );
              }
            ) +
          "');}return __;"
      );
    }
    function y(e, t) {
      e._wrap = a(e, !0, u.isArray(t) ? t : [o.test(t) ? t : u(t).html()]).join(
        ""
      );
    }
    function w(e) {
      return e ? e.replace(/\\'/g, "'").replace(/\\\\/g, "\\") : null;
    }
    function b(e) {
      for (var t, o, n, a = "_" + g, l = {}, i = 0, s = e.length; i < s; i++)
        if (1 === (t = e[i]).nodeType) {
          for (n = (o = t.getElementsByTagName("*")).length - 1; 0 <= n; n--)
            r(o[n]);
          r(t);
        }
      function r(e) {
        var t,
          o,
          n,
          i,
          s = e;
        if ((i = e.getAttribute(p))) {
          for (
            ;
            s.parentNode &&
            1 === (s = s.parentNode).nodeType &&
            !(t = s.getAttribute(p));

          );
          t !== i &&
            ((s =
              (s.parentNode && 11 !== s.nodeType && s.getAttribute(p)) || 0),
            (n = h[i]) ||
              (((n = v((n = f[i]), h[s] || f[s])).key = ++m), (h[m] = n)),
            g && r(i)),
            e.removeAttribute(p);
        } else
          g &&
            (n = u.data(e, "tmplItem")) &&
            (r(n.key),
            (h[n.key] = n),
            (s = (s = u.data(e.parentNode, "tmplItem")) ? s.key : 0));
        if (n) {
          for (o = n; o && o.key != s; ) o.nodes.push(e), (o = o.parent);
          delete n._ctnt, delete n._wrap, u.data(e, "tmplItem", n);
        }
        function r(e) {
          n = l[(e += a)] = l[e] || v(n, h[n.parent.key + a] || n.parent);
        }
      }
    }
    function x(e, t, o, n) {
      if (!e) return s.pop();
      s.push({ _: e, tmpl: t, item: this, data: o, options: n });
    }
    function k(e, t, o) {
      return u.tmpl(u.template(e), t, o, this);
    }
    function T(e, t) {
      var o = e.options || {};
      return (o.wrapped = t), u.tmpl(u.template(e.tmpl), e.data, o, e.item);
    }
    function C(e, n) {
      var t = this._wrap;
      return u.map(
        u(u.isArray(t) ? t.join("") : t).filter(e || "*"),
        function (e) {
          return n
            ? e.innerText || e.textContent
            : e.outerHTML ||
                ((t = e),
                (o = document.createElement("div")).appendChild(
                  t.cloneNode(!0)
                ),
                o.innerHTML);
          var t, o;
        }
      );
    }
    function S() {
      var e = this.nodes;
      u.tmpl(null, null, null, this).insertBefore(e[0]), u(e).remove();
    }
    u.each(
      {
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith",
      },
      function (l, c) {
        u.fn[l] = function (e) {
          var t,
            o,
            n,
            i,
            s = [],
            r = u(e),
            a = 1 === this.length && this[0].parentNode;
          if (
            ((d = h || {}),
            a &&
              11 === a.nodeType &&
              1 === a.childNodes.length &&
              1 === r.length)
          )
            r[c](this[0]), (s = this);
          else {
            for (o = 0, n = r.length; o < n; o++)
              (t = (0 < (g = o) ? this.clone(!0) : this).get()),
                u(r[o])[c](t),
                (s = s.concat(t));
            (g = 0), (s = this.pushStack(s, l, r.selector));
          }
          return (i = d), (d = null), u.tmpl.complete(i), s;
        };
      }
    ),
      u.fn.extend({
        tmpl: function (e, t, o) {
          return u.tmpl(this[0], e, t, o);
        },
        tmplItem: function () {
          return u.tmplItem(this[0]);
        },
        template: function (e) {
          return u.template(e, this[0]);
        },
        domManip: function (e, t, o, n) {
          if (e[0] && u.isArray(e[0])) {
            for (
              var i, s = u.makeArray(arguments), r = e[0], a = r.length, l = 0;
              l < a && !(i = u.data(r[l++], "tmplItem"));

            );
            i &&
              g &&
              (s[2] = function (e) {
                u.tmpl.afterManip(this, e, o);
              }),
              c.apply(this, s);
          } else c.apply(this, arguments);
          return (g = 0), d || u.tmpl.complete(h), this;
        },
      }),
      u.extend({
        tmpl: function (t, e, o, n) {
          var i,
            s = !n;
          if (s) (n = r), (t = u.template[t] || u.template(null, t)), (f = {});
          else if (!t)
            return (
              (t = n.tmpl),
              ((h[n.key] = n).nodes = []),
              n.wrapped && y(n, n.wrapped),
              u(a(n, null, n.tmpl(u, n)))
            );
          return t
            ? ("function" == typeof e && (e = e.call(n || {})),
              o && o.wrapped && y(o, o.wrapped),
              (i = u.isArray(e)
                ? u.map(e, function (e) {
                    return e ? v(o, n, t, e) : null;
                  })
                : [v(o, n, t, e)]),
              s ? u(a(n, null, i)) : i)
            : [];
        },
        tmplItem: function (e) {
          var t;
          for (
            e instanceof u && (e = e[0]);
            e &&
            1 === e.nodeType &&
            !(t = u.data(e, "tmplItem")) &&
            (e = e.parentNode);

          );
          return t || r;
        },
        template: function (e, t) {
          return t
            ? ("string" == typeof t
                ? (t = n(t))
                : t instanceof u && (t = t[0] || {}),
              t.nodeType &&
                (t = u.data(t, "tmpl") || u.data(t, "tmpl", n(t.innerHTML))),
              "string" == typeof e ? (u.template[e] = t) : t)
            : e
            ? "string" != typeof e
              ? u.template(null, e)
              : u.template[e] || u.template(null, o.test(e) ? e : u(e))
            : null;
        },
        encode: function (e) {
          return ("" + e)
            .split("<")
            .join("&lt;")
            .split(">")
            .join("&gt;")
            .split('"')
            .join("&#34;")
            .split("'")
            .join("&#39;");
        },
      }),
      u.extend(u.tmpl, {
        tag: {
          tmpl: {
            _default: { $2: "null" },
            open: "if($notnull_1){__=__.concat($item.nest($1,$2));}",
          },
          wrap: {
            _default: { $2: "null" },
            open: "$item.calls(__,$1,$2);__=[];",
            close: "call=$item.calls();__=call._.concat($item.wrap(call,__));",
          },
          each: {
            _default: { $2: "$index, $value" },
            open: "if($notnull_1){$.each($1a,function($2){with(this){",
            close: "}});}",
          },
          if: { open: "if(($notnull_1) && $1a){", close: "}" },
          else: {
            _default: { $1: "true" },
            open: "}else if(($notnull_1) && $1a){",
          },
          html: { open: "if($notnull_1){__.push($1a);}" },
          "=": {
            _default: { $1: "$data" },
            open: "if($notnull_1){__.push($.encode($1a));}",
          },
          "!": { open: "" },
        },
        complete: function (e) {
          h = {};
        },
        afterManip: function (e, t, o) {
          var n =
            11 === t.nodeType
              ? u.makeArray(t.childNodes)
              : 1 === t.nodeType
              ? [t]
              : [];
          o.call(e, t), b(n), g++;
        },
      });
  })(jQuery),
  (function (e) {
    "function" == typeof define && define.amd
      ? define(["jquery"], e)
      : "object" == typeof exports
      ? (module.exports = e(require("jquery")))
      : e(jQuery || Zepto);
  })(function (c) {
    function a(l, v, y) {
      var w = {
        invalid: [],
        getCaret: function () {
          try {
            var e,
              t = 0,
              o = l.get(0),
              n = document.selection,
              i = o.selectionStart;
            return (
              n && -1 === navigator.appVersion.indexOf("MSIE 10")
                ? ((e = n.createRange()).moveStart(
                    "character",
                    -w.val().length
                  ),
                  (t = e.text.length))
                : (!i && "0" !== i) || (t = i),
              t
            );
          } catch (e) {}
        },
        setCaret: function (e) {
          try {
            var t, o;
            l.is(":focus") &&
              ((o = l.get(0)).setSelectionRange
                ? (o.focus(), o.setSelectionRange(e, e))
                : ((t = o.createTextRange()).collapse(!0),
                  t.moveEnd("character", e),
                  t.moveStart("character", e),
                  t.select()));
          } catch (e) {}
        },
        events: function () {
          l.on("keydown.mask", function (e) {
            l.data("mask-keycode", e.keyCode || e.which);
          })
            .on(
              c.jMaskGlobals.useInput ? "input.mask" : "keyup.mask",
              w.behaviour
            )
            .on("paste.mask drop.mask", function () {
              setTimeout(function () {
                l.keydown().keyup();
              }, 100);
            })
            .on("change.mask", function () {
              l.data("changed", !0);
            })
            .on("blur.mask", function () {
              s === w.val() || l.data("changed") || l.trigger("change"),
                l.data("changed", !1);
            })
            .on("blur.mask", function () {
              s = w.val();
            })
            .on("focus.mask", function (e) {
              !0 === y.selectOnFocus && c(e.target).select();
            })
            .on("focusout.mask", function () {
              y.clearIfNotMatch && !o.test(w.val()) && w.val("");
            });
        },
        getRegexMask: function () {
          for (var e, t, o, n, i, s, r = [], a = 0; a < v.length; a++)
            (e = b.translation[v.charAt(a)])
              ? ((t = e.pattern.toString().replace(/.{1}$|^.{1}/g, "")),
                (o = e.optional),
                (n = e.recursive)
                  ? (r.push(v.charAt(a)),
                    (i = { digit: v.charAt(a), pattern: t }))
                  : r.push(o || n ? t + "?" : t))
              : r.push(v.charAt(a).replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"));
          return (
            (s = r.join("")),
            i &&
              (s = s
                .replace(
                  new RegExp("(" + i.digit + "(.*" + i.digit + ")?)"),
                  "($1)?"
                )
                .replace(new RegExp(i.digit, "g"), i.pattern)),
            new RegExp(s)
          );
        },
        destroyEvents: function () {
          l.off(
            [
              "input",
              "keydown",
              "keyup",
              "paste",
              "drop",
              "blur",
              "focusout",
              "",
            ].join(".mask ")
          );
        },
        val: function (e) {
          var t = l.is("input") ? "val" : "text",
            o = 0 < arguments.length ? (l[t]() !== e && l[t](e), l) : l[t]();
          return o;
        },
        getMCharsBeforeCount: function (e, t) {
          for (var o = 0, n = 0, i = v.length; n < i && n < e; n++)
            b.translation[v.charAt(n)] || ((e = t ? e + 1 : e), o++);
          return o;
        },
        caretPos: function (e, t, o, n) {
          return b.translation[v.charAt(Math.min(e - 1, v.length - 1))]
            ? Math.min(e + o - t - n, o)
            : w.caretPos(e + 1, t, o, n);
        },
        behaviour: function (e) {
          (e = e || window.event), (w.invalid = []);
          var t = l.data("mask-keycode");
          if (-1 === c.inArray(t, b.byPassKeys)) {
            var o = w.getCaret(),
              n = w.val().length,
              i = w.getMasked(),
              s = i.length,
              r = w.getMCharsBeforeCount(s - 1) - w.getMCharsBeforeCount(n - 1),
              a = o < n;
            return (
              w.val(i),
              a &&
                (8 !== t && 46 !== t && (o = w.caretPos(o, n, s, r)),
                w.setCaret(o)),
              w.callbacks(e)
            );
          }
        },
        getMasked: function (e, t) {
          for (
            var o,
              n = [],
              i = void 0 === t ? w.val() : t + "",
              s = 0,
              r = v.length,
              a = 0,
              l = i.length,
              c = 1,
              d = "push",
              u = -1,
              p = y.reverse
                ? ((d = "unshift"),
                  (c = -1),
                  (o = 0),
                  (s = r - 1),
                  (a = l - 1),
                  function () {
                    return -1 < s && -1 < a;
                  })
                : ((o = r - 1),
                  function () {
                    return s < r && a < l;
                  });
            p();

          ) {
            var h = v.charAt(s),
              f = i.charAt(a),
              m = b.translation[h];
            m
              ? (f.match(m.pattern)
                  ? (n[d](f),
                    m.recursive &&
                      (-1 === u ? (u = s) : s === o && (s = u - c),
                      o === u && (s -= c)),
                    (s += c))
                  : m.optional
                  ? ((s += c), (a -= c))
                  : m.fallback
                  ? (n[d](m.fallback), (s += c), (a -= c))
                  : w.invalid.push({ p: a, v: f, e: m.pattern }),
                (a += c))
              : (e || n[d](h), f === h && (a += c), (s += c));
          }
          var g = v.charAt(o);
          return r !== l + 1 || b.translation[g] || n.push(g), n.join("");
        },
        callbacks: function (e) {
          function t(e, t, o) {
            "function" == typeof y[e] && t && y[e].apply(this, o);
          }
          var o = w.val(),
            n = o !== s,
            i = [o, e, l, y];
          t("onChange", !0 == n, i),
            t("onKeyPress", !0 == n, i),
            t("onComplete", o.length === v.length, i),
            t("onInvalid", 0 < w.invalid.length, [o, e, l, w.invalid, y]);
        },
      };
      l = c(l);
      var o,
        b = this,
        s = w.val();
      (v = "function" == typeof v ? v(w.val(), void 0, l, y) : v),
        (b.mask = v),
        (b.options = y),
        (b.remove = function () {
          var e = w.getCaret();
          return (
            w.destroyEvents(),
            w.val(b.getCleanVal()),
            w.setCaret(e - w.getMCharsBeforeCount(e)),
            l
          );
        }),
        (b.getCleanVal = function () {
          return w.getMasked(!0);
        }),
        (b.getMaskedVal = function (e) {
          return w.getMasked(!1, e);
        }),
        (b.init = function (e) {
          var t;
          (e = e || !1),
            (y = y || {}),
            (b.clearIfNotMatch = c.jMaskGlobals.clearIfNotMatch),
            (b.byPassKeys = c.jMaskGlobals.byPassKeys),
            (b.translation = c.extend(
              {},
              c.jMaskGlobals.translation,
              y.translation
            )),
            (b = c.extend(!0, {}, b, y)),
            (o = w.getRegexMask()),
            !1 === e
              ? (y.placeholder && l.attr("placeholder", y.placeholder),
                l.data("mask") && l.attr("autocomplete", "off"),
                w.destroyEvents(),
                w.events(),
                (t = w.getCaret()),
                w.val(w.getMasked()),
                w.setCaret(t + w.getMCharsBeforeCount(t, !0)))
              : (w.events(), w.val(w.getMasked()));
        }),
        b.init(!l.is("input"));
    }
    c.maskWatchers = {};
    function t() {
      var e = c(this),
        t = {},
        o = "data-mask-",
        n = e.attr("data-mask");
      if (
        (e.attr(o + "reverse") && (t.reverse = !0),
        e.attr(o + "clearifnotmatch") && (t.clearIfNotMatch = !0),
        "true" === e.attr(o + "selectonfocus") && (t.selectOnFocus = !0),
        l(e, n, t))
      )
        return e.data("mask", new a(this, n, t));
    }
    var l = function (e, t, o) {
      o = o || {};
      var n = c(e).data("mask"),
        i = JSON.stringify,
        s = c(e).val() || c(e).text();
      try {
        return (
          "function" == typeof t && (t = t(s)),
          "object" != typeof n || i(n.options) !== i(o) || n.mask !== t
        );
      } catch (e) {}
    };
    (c.fn.mask = function (e, t) {
      t = t || {};
      function o() {
        if (l(this, e, t)) return c(this).data("mask", new a(this, e, t));
      }
      var n = this.selector,
        i = c.jMaskGlobals,
        s = i.watchInterval,
        r = t.watchInputs || i.watchInputs;
      return (
        c(this).each(o),
        n &&
          "" !== n &&
          r &&
          (clearInterval(c.maskWatchers[n]),
          (c.maskWatchers[n] = setInterval(function () {
            c(document).find(n).each(o);
          }, s))),
        this
      );
    }),
      (c.fn.masked = function (e) {
        return this.data("mask").getMaskedVal(e);
      }),
      (c.fn.unmask = function () {
        return (
          clearInterval(c.maskWatchers[this.selector]),
          delete c.maskWatchers[this.selector],
          this.each(function () {
            var e = c(this).data("mask");
            e && e.remove().removeData("mask");
          })
        );
      }),
      (c.fn.cleanVal = function () {
        return this.data("mask").getCleanVal();
      }),
      (c.applyDataMask = function (e) {
        ((e = e || c.jMaskGlobals.maskElements) instanceof c ? e : c(e))
          .filter(c.jMaskGlobals.dataMaskAttr)
          .each(t);
      });
    var e,
      o,
      n,
      i = {
        maskElements: "input,td,span,div",
        dataMaskAttr: "*[data-mask]",
        dataMask: !0,
        watchInterval: 300,
        watchInputs: !0,
        useInput:
          ((e = "input"),
          (n = document.createElement("div")),
          (o = (e = "on" + e) in n) ||
            (n.setAttribute(e, "return;"), (o = "function" == typeof n[e])),
          o),
        watchDataMask: !1,
        byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],
        translation: {
          0: { pattern: /\d/ },
          9: { pattern: /\d/, optional: !(n = null) },
          "#": { pattern: /\d/, recursive: !0 },
          A: { pattern: /[a-zA-Z0-9]/ },
          S: { pattern: /[a-zA-Z]/ },
        },
      };
    (c.jMaskGlobals = c.jMaskGlobals || {}),
      (i = c.jMaskGlobals = c.extend(!0, {}, i, c.jMaskGlobals)).dataMask &&
        c.applyDataMask(),
      setInterval(function () {
        c.jMaskGlobals.watchDataMask && c.applyDataMask();
      }, i.watchInterval);
  }),
  (customForm = {
    baseOptions: {
      useNativeDropOnMobileDevices: !1,
      unselectableClass: "customForm-unselectable",
      labelActiveClass: "customForm-label-active",
      labelDisabledClass: "customForm-label-disabled",
      classPrefix: "customForm-class-",
      hiddenClass: "customForm-hidden",
      focusClass: "customForm-focus",
      wrapperTag: "div",
    },
    customForms: {
      setOptions: function (e) {
        for (var t in e)
          e.hasOwnProperty(t) &&
            "object" == typeof e[t] &&
            customForm.lib.extend(
              customForm.modules[t].prototype.defaultOptions,
              e[t]
            );
      },
      replaceAll: function () {
        for (var e in customForm.modules)
          for (
            var t = customForm.lib.queryBySelector(
                customForm.modules[e].prototype.selector
              ),
              o = 0;
            o < t.length;
            o++
          )
            t[o].customForm
              ? t[o].customForm.refreshState()
              : !customForm.lib.hasClass(t[o], "default") &&
                customForm.modules[e].prototype.checkElement(t[o]) &&
                new customForm.modules[e]({ replaces: t[o] });
      },
      refreshElement: function (e) {
        e && e.customForm && e.customForm.refreshState();
      },
      refreshAll: function () {
        for (var e in customForm.modules)
          for (
            var t = customForm.lib.queryBySelector(
                customForm.modules[e].prototype.selector
              ),
              o = 0;
            o < t.length;
            o++
          )
            t[o].customForm && t[o].customForm.refreshState();
      },
      destroyAll: function () {
        for (var e in customForm.modules)
          for (
            var t = customForm.lib.queryBySelector(
                customForm.modules[e].prototype.selector
              ),
              o = 0;
            o < t.length;
            o++
          )
            t[o].customForm && t[o].customForm.destroy();
      },
    },
    isTouchDevice: (function () {
      try {
        return (
          "ontouchstart" in window ||
          (window.DocumentTouch && document instanceof DocumentTouch)
        );
      } catch (e) {
        return !1;
      }
    })(),
    setBaseModule: function (e) {
      for (var t in ((customForm.customControl = function (e) {
        (this.options = customForm.lib.extend(
          {},
          customForm.baseOptions,
          this.defaultOptions,
          e
        )),
          this.init();
      }),
      e))
        customForm.customControl.prototype[t] = e[t];
    },
    init: function () {
      return (
        (this.eventPress = this.isTouchDevice ? "touchstart" : "mousedown"),
        (this.eventMove = this.isTouchDevice ? "touchmove" : "mousemove"),
        (this.eventRelease = this.isTouchDevice ? "touchend" : "mouseup"),
        this
      );
    },
    initStyles: function () {
      var e = document.getElementsByTagName("head")[0],
        t = document.createTextNode(
          "." +
            customForm.baseOptions.unselectableClass +
            "{-moz-user-select:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-user-select:none;user-select:none;}"
        ),
        o = document.createElement("style");
      (o.type = "text/css"),
        o.styleSheet ? (o.styleSheet.cssText = t.nodeValue) : o.appendChild(t),
        e.appendChild(o);
    },
    modules: {},
    plugins: {},
    addModule: function (e) {
      if (e.name) {
        for (var t in ((customForm.modules[e.name] = function () {
          customForm.modules[e.name].superclass.constructor.apply(
            this,
            arguments
          );
        }),
        customForm.lib.inherit(
          customForm.modules[e.name],
          customForm.customControl
        ),
        e))
          customForm.modules[e.name].prototype[t] = e[t];
        for (var o in (customForm.modules[e.name].prototype.onCreateModule(),
        customForm.modules))
          customForm.modules[o] != customForm.modules[e.name] &&
            customForm.modules[o].prototype.onModuleAdded(
              customForm.modules[e.name]
            );
      }
    },
    addPlugin: function (e) {
      if (e && e.name)
        for (var t in ((customForm.plugins[e.name] = function () {
          this.init.apply(this, arguments);
        }),
        e))
          customForm.plugins[e.name].prototype[t] = e[t];
    },
  }.init()),
  customForm.setBaseModule({
    init: function () {
      this.options.replaces &&
        ((this.realElement = this.options.replaces),
        (this.realElement.customForm = this).replaceObject());
    },
    defaultOptions: {},
    checkElement: function (e) {
      return !0;
    },
    replaceObject: function () {
      this.createWrapper(),
        this.attachEvents(),
        this.fixStyles(),
        this.setupWrapper();
    },
    createWrapper: function () {
      (this.fakeElement = customForm.lib.createElement(
        this.options.wrapperTag
      )),
        (this.labelFor = customForm.lib.getLabelFor(this.realElement)),
        customForm.lib.disableTextSelection(this.fakeElement),
        customForm.lib.addClass(
          this.fakeElement,
          customForm.lib.getAllClasses(
            this.realElement.className,
            this.options.classPrefix
          )
        ),
        customForm.lib.addClass(
          this.realElement,
          customForm.baseOptions.hiddenClass
        );
    },
    attachEvents: function () {
      customForm.lib.event.add(
        this.realElement,
        "focus",
        this.onFocusHandler,
        this
      ),
        customForm.lib.event.add(
          this.realElement,
          "blur",
          this.onBlurHandler,
          this
        ),
        customForm.lib.event.add(
          this.fakeElement,
          "click",
          this.onFakeClick,
          this
        ),
        customForm.lib.event.add(
          this.fakeElement,
          customForm.eventPress,
          this.onFakePressed,
          this
        ),
        customForm.lib.event.add(
          this.fakeElement,
          customForm.eventRelease,
          this.onFakeReleased,
          this
        ),
        this.labelFor &&
          ((this.labelFor.customForm = this),
          customForm.lib.event.add(
            this.labelFor,
            "click",
            this.onFakeClick,
            this
          ),
          customForm.lib.event.add(
            this.labelFor,
            customForm.eventPress,
            this.onFakePressed,
            this
          ),
          customForm.lib.event.add(
            this.labelFor,
            customForm.eventRelease,
            this.onFakeReleased,
            this
          ));
    },
    fixStyles: function () {
      var e;
      customForm.isTouchDevice &&
        ((e = "rgba(255,255,255,0)"),
        (this.realElement.style.webkitTapHighlightColor = e),
        (this.fakeElement.style.webkitTapHighlightColor = e),
        this.labelFor && (this.labelFor.style.webkitTapHighlightColor = e));
    },
    setupWrapper: function () {},
    refreshState: function () {},
    destroy: function () {
      this.fakeElement &&
        this.fakeElement.parentNode &&
        this.fakeElement.parentNode.removeChild(this.fakeElement),
        customForm.lib.removeClass(
          this.realElement,
          customForm.baseOptions.hiddenClass
        ),
        (this.realElement.customForm = null);
    },
    onFocus: function () {
      customForm.lib.addClass(this.fakeElement, this.options.focusClass);
    },
    onBlur: function (e) {
      customForm.lib.removeClass(this.fakeElement, this.options.focusClass);
    },
    onFocusHandler: function () {
      this.focused ||
        ((this.focused = !0),
        customForm.isTouchDevice &&
          (customForm.focusedInstance &&
            customForm.focusedInstance.realElement != this.realElement &&
            (customForm.focusedInstance.onBlur(),
            customForm.focusedInstance.realElement.blur()),
          (customForm.focusedInstance = this)),
        this.onFocus.apply(this, arguments));
    },
    onBlurHandler: function () {
      this.pressedFlag ||
        ((this.focused = !1), this.onBlur.apply(this, arguments));
    },
    onFakeClick: function () {
      customForm.isTouchDevice
        ? this.onFocus()
        : this.realElement.disabled || this.realElement.focus();
    },
    onFakePressed: function (e) {
      this.pressedFlag = !0;
    },
    onFakeReleased: function () {
      this.pressedFlag = !1;
    },
    onCreateModule: function () {},
    onModuleAdded: function (e) {},
    onControlReady: function () {},
  }),
  (customForm.lib = {
    bind: function (e, t) {
      return function () {
        return e.apply(t, arguments);
      };
    },
    browser: (function () {
      var e = navigator.userAgent.toLowerCase(),
        t = {},
        o =
          /(webkit)[ \/]([\w.]+)/.exec(e) ||
          /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(e) ||
          /(msie) ([\w.]+)/.exec(e) ||
          (e.indexOf("compatible") < 0 &&
            /(mozilla)(?:.*? rv:([\w.]+))?/.exec(e)) ||
          [];
      return (
        (t[o[1]] = !0),
        (t.version = o[2] || "0"),
        (t.safariMac = -1 != e.indexOf("mac") && -1 != e.indexOf("safari")),
        t
      );
    })(),
    getOffset: function (e) {
      if (e.getBoundingClientRect) {
        var t =
            window.pageXOffset ||
            document.documentElement.scrollLeft ||
            document.body.scrollLeft,
          o =
            window.pageYOffset ||
            document.documentElement.scrollTop ||
            document.body.scrollTop,
          n =
            document.documentElement.clientLeft ||
            document.body.clientLeft ||
            0,
          i =
            document.documentElement.clientTop || document.body.clientTop || 0;
        return {
          top: Math.round(e.getBoundingClientRect().top + o - i),
          left: Math.round(e.getBoundingClientRect().left + t - n),
        };
      }
      for (var s = 0, r = 0; e.offsetParent; )
        (s += e.offsetLeft), (r += e.offsetTop), (e = e.offsetParent);
      return { top: r, left: s };
    },
    getScrollTop: function () {
      return window.pageYOffset || document.documentElement.scrollTop;
    },
    getScrollLeft: function () {
      return window.pageXOffset || document.documentElement.scrollLeft;
    },
    getWindowWidth: function () {
      return "CSS1Compat" == document.compatMode
        ? document.documentElement.clientWidth
        : document.body.clientWidth;
    },
    getWindowHeight: function () {
      return "CSS1Compat" == document.compatMode
        ? document.documentElement.clientHeight
        : document.body.clientHeight;
    },
    getStyle: function (e, t) {
      return document.defaultView && document.defaultView.getComputedStyle
        ? document.defaultView.getComputedStyle(e, null)[t]
        : e.currentStyle
        ? e.currentStyle[t]
        : e.style[t];
    },
    getParent: function (e, t) {
      for (; e.parentNode && e.parentNode != document.body; ) {
        if (e.parentNode.tagName.toLowerCase() == t.toLowerCase())
          return e.parentNode;
        e = e.parentNode;
      }
      return !1;
    },
    isParent: function (e, t) {
      for (; t.parentNode; ) {
        if (e == t) return !0;
        t = t.parentNode;
      }
      return !1;
    },
    getLabelFor: function (e) {
      return customForm.lib.getParent(e, "label")
        ? e.parentNode
        : e.id
        ? customForm.lib.queryBySelector('label[for="' + e.id + '"]')[0]
        : void 0;
    },
    disableTextSelection: function (e) {
      void 0 !== e.onselectstart
        ? (e.onselectstart = function () {
            return !1;
          })
        : window.opera
        ? e.setAttribute("unselectable", "on")
        : customForm.lib.addClass(e, customForm.baseOptions.unselectableClass);
    },
    enableTextSelection: function (e) {
      void 0 !== e.onselectstart
        ? (e.onselectstart = null)
        : window.opera
        ? e.removeAttribute("unselectable")
        : customForm.lib.removeClass(
            e,
            customForm.baseOptions.unselectableClass
          );
    },
    queryBySelector: function (e, t) {
      return this.getElementsBySelector(e, t);
    },
    prevSibling: function (e) {
      for (; (e = e.previousSibling) && 1 != e.nodeType; );
      return e;
    },
    nextSibling: function (e) {
      for (; (e = e.nextSibling) && 1 != e.nodeType; );
      return e;
    },
    fireEvent: function (e, t) {
      if (document.createEvent)
        return (
          (o = document.createEvent("HTMLEvents")).initEvent(t, !0, !0),
          !e.dispatchEvent(o)
        );
      var o = document.createEventObject();
      return e.fireEvent("on" + t, o);
    },
    inherit: function (e, t) {
      function o() {}
      (o.prototype = t.prototype),
        (e.prototype = new o()),
        ((e.prototype.constructor = e).superclass = t.prototype);
    },
    extend: function (e) {
      for (var t = 1; t < arguments.length; t++)
        for (var o in arguments[t])
          arguments[t].hasOwnProperty(o) && (e[o] = arguments[t][o]);
      return e;
    },
    hasClass: function (e, t) {
      return (
        !!e.className &&
        e.className.match(new RegExp("(\\s|^)" + t + "(\\s|$)"))
      );
    },
    addClass: function (e, t) {
      this.hasClass(e, t) ||
        (e.className +=
          (e.className.length &&
          " " !== e.className.charAt(e.className.length - 1)
            ? " "
            : "") + t);
    },
    removeClass: function (e, t) {
      this.hasClass(e, t) &&
        (e.className = e.className
          .replace(new RegExp("(\\s|^)" + t + "(\\s|$)"), " ")
          .replace(/\s+$/, ""));
    },
    toggleClass: function (e, t, o) {
      o ? this.addClass(e, t) : this.removeClass(e, t);
    },
    createElement: function (e, t) {
      var o = document.createElement(e);
      for (var n in t)
        if (t.hasOwnProperty(n))
          switch (n) {
            case "class":
              o.className = t[n];
              break;
            case "html":
              o.innerHTML = t[n];
              break;
            case "style":
              this.setStyles(o, t[n]);
              break;
            default:
              o.setAttribute(n, t[n]);
          }
      return o;
    },
    setStyles: function (e, t) {
      for (var o in t)
        if (t.hasOwnProperty(o))
          switch (o) {
            case "float":
              e.style.cssFloat = t[o];
              break;
            case "opacity":
              (e.style.filter =
                "progid:DXImageTransform.Microsoft.Alpha(opacity=" +
                100 * t[o] +
                ")"),
                (e.style.opacity = t[o]);
              break;
            default:
              e.style[o] =
                (void 0 === t[o] ? 0 : t[o]) +
                ("number" == typeof t[o] ? "px" : "");
          }
      return e;
    },
    getInnerWidth: function (e) {
      return (
        e.offsetWidth -
        (parseInt(this.getStyle(e, "paddingLeft")) || 0) -
        (parseInt(this.getStyle(e, "paddingRight")) || 0)
      );
    },
    getInnerHeight: function (e) {
      return (
        e.offsetHeight -
        (parseInt(this.getStyle(e, "paddingTop")) || 0) -
        (parseInt(this.getStyle(e, "paddingBottom")) || 0)
      );
    },
    getAllClasses: function (e, t, o) {
      return (
        (o = o || ""),
        (t = t || ""),
        e
          ? e
              .replace(new RegExp("(\\s|^)" + o + "(\\s|$)"), " ")
              .replace(/[\s]*([\S]+)+[\s]*/gi, t + "$1 ")
          : ""
      );
    },
    getElementsBySelector: function (e, t) {
      if ("function" == typeof document.querySelectorAll)
        return (t || document).querySelectorAll(e);
      for (var o = e.split(","), n = [], i = 0; i < o.length; i++) {
        for (
          var s = [t || document],
            r = o[i].replace(/^\s+/, "").replace(/\s+$/, "").split(" "),
            a = 0;
          a < r.length;
          a++
        )
          if (
            ((token = r[a].replace(/^\s+/, "").replace(/\s+$/, "")),
            -1 < token.indexOf("#"))
          ) {
            var l = (u = token.split("#"))[0],
              c = u[1],
              d = document.getElementById(c);
            if (l && d.nodeName.toLowerCase() != l) return [];
            s = [d];
          } else if (-1 < token.indexOf(".")) {
            for (
              var u,
                l = (u = token.split("."))[0] || "*",
                p = u[1],
                h = [],
                f = 0,
                m = 0;
              m < s.length;
              m++
            ) {
              T =
                "*" == l
                  ? s[m].getElementsByTagName("*")
                  : s[m].getElementsByTagName(l);
              for (var g = 0; g < T.length; g++) h[f++] = T[g];
            }
            s = [];
            for (var v = 0, y = 0; y < h.length; y++)
              h[y].className &&
                h[y].className.match(new RegExp("(\\s|^)" + p + "(\\s|$)")) &&
                (s[v++] = h[y]);
          } else if (
            token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)
          ) {
            var l = RegExp.$1 || "*",
              w = RegExp.$2,
              b = RegExp.$3,
              x = RegExp.$4;
            "for" == w.toLowerCase() &&
              this.browser.msie &&
              this.browser.version < 8 &&
              (w = "htmlFor");
            for (h = [], f = 0, m = 0; m < s.length; m++) {
              T =
                "*" == l
                  ? s[m].getElementsByTagName("*")
                  : s[m].getElementsByTagName(l);
              for (g = 0; T[g]; g++) h[f++] = T[g];
            }
            s = [];
            var k,
              v = 0;
            switch (b) {
              case "=":
                k = function (e) {
                  return e.getAttribute(w) == x;
                };
                break;
              case "~":
                k = function (e) {
                  return e
                    .getAttribute(w)
                    .match(new RegExp("(\\s|^)" + x + "(\\s|$)"));
                };
                break;
              case "|":
                k = function (e) {
                  return e.getAttribute(w).match(new RegExp("^" + x + "-?"));
                };
                break;
              case "^":
                k = function (e) {
                  return 0 == e.getAttribute(w).indexOf(x);
                };
                break;
              case "$":
                k = function (e) {
                  return (
                    e.getAttribute(w).lastIndexOf(x) ==
                    e.getAttribute(w).length - x.length
                  );
                };
                break;
              case "*":
                k = function (e) {
                  return -1 < e.getAttribute(w).indexOf(x);
                };
                break;
              default:
                k = function (e) {
                  return e.getAttribute(w);
                };
            }
            s = [];
            for (v = 0, y = 0; y < h.length; y++) k(h[y]) && (s[v++] = h[y]);
          } else {
            l = token;
            for (h = [], f = 0, m = 0; m < s.length; m++)
              for (
                var T = s[m].getElementsByTagName(l), g = 0;
                g < T.length;
                g++
              )
                h[f++] = T[g];
            s = h;
          }
        n = [].concat(n, s);
      }
      return n;
    },
    scrollSize: (function () {
      var t, o, n, i;
      function s() {
        document.body.removeChild(o), (o = null);
      }
      function e(e) {
        return (
          o && s(),
          (t = document.createElement("div")),
          ((o = document.createElement("div")).style.cssText =
            "position:absolute;overflow:hidden;width:100px;height:100px"),
          o.appendChild(t),
          document.body.appendChild(o),
          (t.style.cssText = "height:" + (e ? "100%" : "200px")),
          (n = e ? t.offsetHeight : t.offsetWidth),
          (o.style.overflow = "scroll"),
          (t.innerHTML = 1),
          (i = e ? t.offsetHeight : t.offsetWidth),
          e && o.clientHeight && (i = o.clientHeight),
          s(),
          n - i
        );
      }
      return {
        getWidth: function () {
          return e(!1);
        },
        getHeight: function () {
          return e(!0);
        },
      };
    })(),
    domReady: function (e) {
      var o = !1;
      function n() {
        o || ((o = !0), e());
      }
      document.addEventListener
        ? document.addEventListener("DOMContentLoaded", n, !1)
        : document.attachEvent &&
          (document.documentElement.doScroll &&
            window == window.top &&
            (function t() {
              if (!o && document.body)
                try {
                  document.documentElement.doScroll("left"), n();
                } catch (e) {
                  setTimeout(t, 0);
                }
            })(),
          document.attachEvent("onreadystatechange", function () {
            "complete" === document.readyState && n();
          })),
        window.addEventListener
          ? window.addEventListener("load", n, !1)
          : window.attachEvent && window.attachEvent("onload", n);
    },
    event: (function () {
      var s = 0;
      function r(e, t) {
        var o, n, i;
        (o = (o = e) || window.event).isFixed ||
          ((o.isFixed = !0),
          (o.preventDefault =
            o.preventDefault ||
            function () {
              this.returnValue = !1;
            }),
          (o.stopPropagation =
            o.stopPropagaton ||
            function () {
              this.cancelBubble = !0;
            }),
          o.target || (o.target = o.srcElement),
          !o.relatedTarget &&
            o.fromElement &&
            (o.relatedTarget =
              o.fromElement == o.target ? o.toElement : o.fromElement),
          null == o.pageX &&
            null != o.clientX &&
            ((n = document.documentElement),
            (i = document.body),
            (o.pageX =
              o.clientX +
              ((n && n.scrollLeft) || (i && i.scrollLeft) || 0) -
              (n.clientLeft || 0)),
            (o.pageY =
              o.clientY +
              ((n && n.scrollTop) || (i && i.scrollTop) || 0) -
              (n.clientTop || 0))),
          !o.which &&
            o.button &&
            (o.which =
              1 & o.button ? 1 : 2 & o.button ? 3 : 4 & o.button ? 2 : 0),
          ("DOMMouseScroll" !== o.type && "mousewheel" !== o.type) ||
            ((o.mWheelDelta = 0),
            o.wheelDelta
              ? (o.mWheelDelta = o.wheelDelta / 120)
              : o.detail && (o.mWheelDelta = -o.detail / 3))),
          (e = o);
        var s = this.events[e.type];
        for (var r in s) {
          !1 === s[r].call(t || this, e) &&
            (e.preventDefault(), e.stopPropagation());
        }
      }
      var a = {
        add: function (t, e, o, n) {
          t.setInterval && t != window && !t.frameElement && (t = window),
            o.guid || (o.guid = ++s),
            t.events ||
              ((t.events = {}),
              (t.handle = function (e) {
                return r.call(t, e);
              })),
            t.events[e] ||
              ((t.events[e] = {}),
              t.addEventListener
                ? t.addEventListener(e, t.handle, !1)
                : t.attachEvent && t.attachEvent("on" + e, t.handle),
              "mousewheel" === e && a.add(t, "DOMMouseScroll", o, n));
          var i = customForm.lib.bind(o, n);
          (i.guid = o.guid), (t.events[e][o.guid] = n ? i : o);
        },
        remove: function (t, e, o) {
          var n = t.events && t.events[e];
          if (n) {
            for (var i in (delete n[o.guid], n)) return;
            for (var i in (t.removeEventListener
              ? t.removeEventListener(e, t.handle, !1)
              : t.detachEvent && t.detachEvent("on" + e, t.handle),
            delete t.events[e],
            t.events))
              return;
            try {
              delete t.handle, delete t.events;
            } catch (e) {
              t.removeAttribute &&
                (t.removeAttribute("handle"), t.removeAttribute("events"));
            }
            "mousewheel" === e && a.remove(t, "DOMMouseScroll", o);
          }
        },
      };
      return a;
    })(),
  }),
  customForm.lib.domReady(function () {
    customForm.initStyles();
  }),
  customForm.addModule({
    name: "checkbox",
    selector: 'input[type="checkbox"]',
    defaultOptions: {
      wrapperClass: "chk-area",
      focusClass: "chk-focus",
      checkedClass: "chk-checked",
      labelActiveClass: "chk-label-active",
      uncheckedClass: "chk-unchecked",
      disabledClass: "chk-disabled",
      chkStructure: "<span></span>",
    },
    setupWrapper: function () {
      customForm.lib.addClass(this.fakeElement, this.options.wrapperClass),
        (this.fakeElement.innerHTML = this.options.chkStructure),
        this.realElement.parentNode.insertBefore(
          this.fakeElement,
          this.realElement
        ),
        customForm.lib.event.add(
          this.realElement,
          "click",
          this.onRealClick,
          this
        ),
        this.refreshState();
    },
    onFakePressed: function () {
      customForm.modules[this.name].superclass.onFakePressed.apply(
        this,
        arguments
      ),
        this.realElement.disabled || this.realElement.focus();
    },
    onFakeClick: function (e) {
      return (
        customForm.modules[this.name].superclass.onFakeClick.apply(
          this,
          arguments
        ),
        (this.tmpTimer = setTimeout(
          customForm.lib.bind(function () {
            this.toggle();
          }, this),
          10
        )),
        !1
      );
    },
    onRealClick: function (e) {
      setTimeout(
        customForm.lib.bind(function () {
          this.refreshState();
        }, this),
        10
      ),
        e.stopPropagation();
    },
    toggle: function (e) {
      return (
        this.realElement.disabled ||
          (this.realElement.checked
            ? (this.realElement.checked = !1)
            : (this.realElement.checked = !0),
          customForm.lib.fireEvent(this.realElement, "change")),
        this.refreshState(),
        !1
      );
    },
    refreshState: function () {
      this.realElement.checked
        ? (customForm.lib.addClass(this.fakeElement, this.options.checkedClass),
          customForm.lib.removeClass(
            this.fakeElement,
            this.options.uncheckedClass
          ),
          this.labelFor &&
            customForm.lib.addClass(
              this.labelFor,
              this.options.labelActiveClass
            ))
        : (customForm.lib.removeClass(
            this.fakeElement,
            this.options.checkedClass
          ),
          customForm.lib.addClass(
            this.fakeElement,
            this.options.uncheckedClass
          ),
          this.labelFor &&
            customForm.lib.removeClass(
              this.labelFor,
              this.options.labelActiveClass
            )),
        this.realElement.disabled
          ? (customForm.lib.addClass(
              this.fakeElement,
              this.options.disabledClass
            ),
            this.labelFor &&
              customForm.lib.addClass(
                this.labelFor,
                this.options.labelDisabledClass
              ))
          : (customForm.lib.removeClass(
              this.fakeElement,
              this.options.disabledClass
            ),
            this.labelFor &&
              customForm.lib.removeClass(
                this.labelFor,
                this.options.labelDisabledClass
              ));
    },
  }),
  customForm.addModule({
    name: "radio",
    selector: 'input[type="radio"]',
    defaultOptions: {
      wrapperClass: "rad-area",
      focusClass: "rad-focus",
      checkedClass: "rad-checked",
      labelActiveClass: "rad-label-active",
      uncheckedClass: "rad-unchecked",
      disabledClass: "rad-disabled",
      radStructure: "<span></span>",
    },
    getRadioGroup: function (e) {
      var t = e.getAttribute("name");
      return t
        ? customForm.lib.queryBySelector(
            'input[name="' + t + '"]',
            customForm.lib.getParent("form")
          )
        : [e];
    },
    setupWrapper: function () {
      customForm.lib.addClass(this.fakeElement, this.options.wrapperClass),
        (this.fakeElement.innerHTML = this.options.radStructure),
        this.realElement.parentNode.insertBefore(
          this.fakeElement,
          this.realElement
        ),
        this.refreshState(),
        this.addEvents();
    },
    addEvents: function () {
      customForm.lib.event.add(
        this.fakeElement,
        "click",
        this.toggleRadio,
        this
      ),
        this.labelFor &&
          customForm.lib.event.add(
            this.labelFor,
            "click",
            this.toggleRadio,
            this
          );
    },
    onFocus: function (e) {
      customForm.modules[this.name].superclass.onFocus.apply(this, arguments),
        setTimeout(
          customForm.lib.bind(function () {
            this.refreshState();
          }, this),
          10
        );
    },
    toggleRadio: function () {
      this.realElement.disabled || (this.realElement.checked = !0),
        this.refreshState(),
        customForm.lib.fireEvent(this.realElement, "change");
    },
    refreshState: function () {
      for (
        var e = this.getRadioGroup(this.realElement), t = 0;
        t < e.length;
        t++
      ) {
        var o = e[t].customForm;
        o &&
          (o.realElement.checked
            ? (customForm.lib.addClass(o.fakeElement, o.options.checkedClass),
              customForm.lib.removeClass(
                o.fakeElement,
                o.options.uncheckedClass
              ),
              o.labelFor &&
                customForm.lib.addClass(o.labelFor, o.options.labelActiveClass))
            : (customForm.lib.removeClass(
                o.fakeElement,
                o.options.checkedClass
              ),
              customForm.lib.addClass(o.fakeElement, o.options.uncheckedClass),
              o.labelFor &&
                customForm.lib.removeClass(
                  o.labelFor,
                  o.options.labelActiveClass
                )),
          o.realElement.disabled
            ? (customForm.lib.addClass(o.fakeElement, o.options.disabledClass),
              o.labelFor &&
                customForm.lib.addClass(
                  o.labelFor,
                  o.options.labelDisabledClass
                ))
            : (customForm.lib.removeClass(
                o.fakeElement,
                o.options.disabledClass
              ),
              o.labelFor &&
                customForm.lib.removeClass(
                  o.labelFor,
                  o.options.labelDisabledClass
                )));
      }
    },
  }),
  customForm.addModule({
    name: "select",
    selector: "select",
    defaultOptions: {
      showNativeDrop: !1,
      handleDropPosition: !0,
      selectDropPosition: "bottom",
      wrapperClass: "select-area",
      focusClass: "select-focus",
      dropActiveClass: "select-active",
      selectedClass: "item-selected",
      currentSelectedClass: "current-selected",
      disabledClass: "select-disabled",
      valueSelector: "span.center",
      optGroupClass: "optgroup",
      openerSelector: "a.select-opener",
      selectStructure:
        '<span class="left"></span><span class="center"></span><a class="select-opener"></a>',
      classPrefix: "select-",
      dropMaxHeight: 200,
      dropFlippedClass: "select-options-flipped",
      dropHiddenClass: "options-hidden",
      dropScrollableClass: "options-overflow",
      dropClass: "select-options",
      dropClassPrefix: "drop-",
      dropStructure:
        '<div class="drop-holder"><div class="drop-list"></div></div>',
      dropSelector: "div.drop-list",
    },
    checkElement: function (e) {
      return !e.size && !e.multiple;
    },
    setupWrapper: function () {
      customForm.lib.addClass(this.fakeElement, this.options.wrapperClass),
        this.realElement.parentNode.insertBefore(
          this.fakeElement,
          this.realElement
        ),
        (this.fakeElement.innerHTML = this.options.selectStructure),
        (this.fakeElement.style.width =
          0 < this.realElement.offsetWidth
            ? this.realElement.offsetWidth + "px"
            : "auto"),
        customForm.isTouchDevice &&
          customForm.baseOptions.useNativeDropOnMobileDevices &&
          (this.options.showNativeDrop = !0),
        this.options.showNativeDrop &&
          (this.fakeElement.appendChild(this.realElement),
          customForm.lib.removeClass(
            this.realElement,
            this.options.hiddenClass
          ),
          customForm.lib.setStyles(this.realElement, {
            top: 0,
            left: 0,
            margin: 0,
            padding: 0,
            opacity: 0,
            border: "none",
            position: "absolute",
            width: customForm.lib.getInnerWidth(this.fakeElement) - 1,
            height: customForm.lib.getInnerHeight(this.fakeElement) - 1,
          })),
        (this.opener = customForm.lib.queryBySelector(
          this.options.openerSelector,
          this.fakeElement
        )[0]),
        (this.valueText = customForm.lib.queryBySelector(
          this.options.valueSelector,
          this.fakeElement
        )[0]),
        customForm.lib.disableTextSelection(this.valueText),
        (this.opener.customForm = this).options.showNativeDrop
          ? this.refreshState()
          : (this.createDropdown(),
            this.refreshState(),
            this.onControlReady(this),
            this.hideDropdown(!0)),
        this.addEvents();
    },
    addEvents: function () {
      this.options.showNativeDrop
        ? customForm.lib.event.add(
            this.realElement,
            "click",
            this.onChange,
            this
          )
        : customForm.lib.event.add(
            this.fakeElement,
            "click",
            this.toggleDropdown,
            this
          ),
        customForm.lib.event.add(
          this.realElement,
          "change",
          this.onChange,
          this
        );
    },
    onFakeClick: function () {},
    onFocus: function () {
      customForm.modules[this.name].superclass.onFocus.apply(this, arguments),
        this.options.showNativeDrop ||
          (customForm.lib.browser.safariMac &&
            this.realElement.setAttribute("size", "2"),
          customForm.lib.event.add(
            this.realElement,
            "keydown",
            this.onKeyDown,
            this
          ),
          customForm.activeControl &&
            customForm.activeControl != this &&
            (customForm.activeControl.hideDropdown(),
            (customForm.activeControl = this)));
    },
    onBlur: function () {
      this.options.showNativeDrop
        ? customForm.modules[this.name].superclass.onBlur.apply(this)
        : (customForm.lib.browser.safariMac &&
            this.realElement.removeAttribute("size"),
          (this.isActiveDrop() && this.isOverDrop()) ||
            (customForm.modules[this.name].superclass.onBlur.apply(this),
            customForm.activeControl === this &&
              (customForm.activeControl = null),
            customForm.isTouchDevice || this.hideDropdown()),
          customForm.lib.event.remove(
            this.realElement,
            "keydown",
            this.onKeyDown
          ));
    },
    onChange: function () {
      this.refreshState();
    },
    onKeyDown: function (e) {
      (customForm.tmpFlag = !0),
        setTimeout(function () {
          customForm.tmpFlag = !1;
        }, 100);
      var t = this;
      if (
        ((t.keyboardFix = !0),
        setTimeout(function () {
          t.refreshState();
        }, 10),
        13 == e.keyCode)
      )
        return t.toggleDropdown.apply(t), !1;
    },
    onResizeWindow: function (e) {
      this.isActiveDrop() && this.hideDropdown();
    },
    onScrollWindow: function (e) {
      this.isActiveDrop() && this.positionDropdown();
    },
    onOptionClick: function (e) {
      var t =
        e.target && e.target.tagName && "li" == e.target.tagName.toLowerCase()
          ? e.target
          : customForm.lib.getParent(e.target, "li");
      return (
        t &&
          ((this.realElement.selectedIndex = parseInt(t.getAttribute("rel"))),
          customForm.isTouchDevice ? this.onFocus() : this.realElement.focus(),
          this.refreshState(),
          this.hideDropdown(),
          customForm.lib.fireEvent(this.realElement, "change")),
        !1
      );
    },
    onClickOutside: function (e) {
      customForm.tmpFlag
        ? (customForm.tmpFlag = !1)
        : customForm.lib.isParent(this.fakeElement, e.target) ||
          customForm.lib.isParent(this.selectDrop, e.target) ||
          this.hideDropdown();
    },
    onDropHover: function (e) {
      var t;
      this.keyboardFix
        ? (this.keyboardFix = !1)
        : ((this.hoverFlag = !0),
          (t =
            e.target &&
            e.target.tagName &&
            "li" == e.target.tagName.toLowerCase()
              ? e.target
              : customForm.lib.getParent(e.target, "li")) &&
            ((this.realElement.selectedIndex = parseInt(t.getAttribute("rel"))),
            this.refreshSelectedClass(parseInt(t.getAttribute("rel")))));
    },
    onDropLeave: function () {
      this.hoverFlag = !1;
    },
    isActiveDrop: function () {
      return !customForm.lib.hasClass(
        this.selectDrop,
        this.options.dropHiddenClass
      );
    },
    isOverDrop: function () {
      return this.hoverFlag;
    },
    createDropdown: function () {
      this.selectDrop &&
        this.selectDrop.parentNode.removeChild(this.selectDrop),
        (this.selectDrop = document.createElement("div")),
        (this.selectDrop.className = this.options.dropClass),
        (this.selectDrop.innerHTML = this.options.dropStructure),
        customForm.lib.setStyles(this.selectDrop, { position: "absolute" }),
        (this.selectList = customForm.lib.queryBySelector(
          this.options.dropSelector,
          this.selectDrop
        )[0]),
        customForm.lib.addClass(this.selectDrop, this.options.dropHiddenClass),
        document.body.appendChild(this.selectDrop),
        (this.selectDrop.customForm = this),
        customForm.lib.event.add(
          this.selectDrop,
          "click",
          this.onOptionClick,
          this
        ),
        customForm.lib.event.add(
          this.selectDrop,
          "mouseover",
          this.onDropHover,
          this
        ),
        customForm.lib.event.add(
          this.selectDrop,
          "mouseout",
          this.onDropLeave,
          this
        ),
        this.buildDropdown();
    },
    buildDropdown: function () {
      this.buildDropdownOptions(),
        this.positionDropdown(),
        this.buildDropdownScroll();
    },
    buildDropdownOptions: function () {
      this.resStructure = "";
      for (var e = (this.optNum = 0); e < this.realElement.children.length; e++)
        this.resStructure +=
          this.buildElement(this.realElement.children[e]) + "\n";
      this.selectList.innerHTML = this.resStructure;
    },
    buildDropdownScroll: function () {
      this.options.dropMaxHeight &&
        this.selectDrop.offsetHeight > this.options.dropMaxHeight &&
        ((this.selectList.style.height = this.options.dropMaxHeight + "px"),
        (this.selectList.style.overflow = "auto"),
        (this.selectList.style.overflowX = "hidden"),
        customForm.lib.addClass(
          this.selectDrop,
          this.options.dropScrollableClass
        )),
        customForm.lib.addClass(
          this.selectDrop,
          customForm.lib.getAllClasses(
            this.realElement.className,
            this.options.dropClassPrefix,
            customForm.baseOptions.hiddenClass
          )
        );
    },
    parseOptionTitle: function (e) {
      return "string" == typeof e && /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i.test(e)
        ? e
        : "";
    },
    buildElement: function (e) {
      var t,
        o = "";
      if ("option" == e.tagName.toLowerCase())
        return (
          (customForm.lib.prevSibling(e) &&
            "option" == customForm.lib.prevSibling(e).tagName.toLowerCase()) ||
            (o += "<ul>"),
          (t = this.parseOptionTitle(e.title)),
          (o +=
            '<li rel="' +
            this.optNum++ +
            '" class="' +
            (e.className ? e.className + " " : "") +
            'customFormcalc"><a href="/">' +
            (t ? '<img src="' + t + '" alt="" />' : "") +
            "<span>" +
            e.innerHTML +
            "</span></a></li>"),
          (customForm.lib.nextSibling(e) &&
            "option" == customForm.lib.nextSibling(e).tagName.toLowerCase()) ||
            (o += "</ul>"),
          o
        );
      if ("optgroup" == e.tagName.toLowerCase() && e.label) {
        (o += '<div class="' + this.options.optGroupClass + '">'),
          (o +=
            '<strong class="customFormcalc"><em>' + e.label + "</em></strong>");
        for (var n = 0; n < e.children.length; n++)
          o += this.buildElement(e.children[n]);
        return (o += "</div>");
      }
    },
    positionDropdown: function () {
      var e = customForm.lib.getOffset(this.fakeElement),
        t = this.fakeElement.offsetHeight,
        o = this.selectDrop.offsetHeight,
        n =
          e.top - o >= customForm.lib.getScrollTop() &&
          customForm.lib.getScrollTop() + customForm.lib.getWindowHeight() <
            e.top + t + o;
      (this.options.handleDropPosition && n) ||
      "top" === this.options.selectDropPosition
        ? ((this.selectDrop.style.top = e.top - o + "px"),
          customForm.lib.addClass(
            this.selectDrop,
            this.options.dropFlippedClass
          ))
        : ((this.selectDrop.style.top = e.top + t + "px"),
          customForm.lib.removeClass(
            this.selectDrop,
            this.options.dropFlippedClass
          )),
        (this.selectDrop.style.left = e.left + "px"),
        (this.selectDrop.style.width = this.fakeElement.offsetWidth + "px");
    },
    showDropdown: function () {
      document.body.appendChild(this.selectDrop),
        customForm.lib.removeClass(
          this.selectDrop,
          this.options.dropHiddenClass
        ),
        customForm.lib.addClass(this.fakeElement, this.options.dropActiveClass),
        this.positionDropdown();
      var e = this.getFakeActiveOption();
      this.removeClassFromItems(this.options.currentSelectedClass),
        customForm.lib.addClass(e, this.options.currentSelectedClass),
        customForm.lib.event.add(window, "resize", this.onResizeWindow, this),
        customForm.lib.event.add(window, "scroll", this.onScrollWindow, this),
        customForm.lib.event.add(
          document,
          customForm.eventPress,
          this.onClickOutside,
          this
        ),
        this.positionDropdown();
    },
    hideDropdown: function (e) {
      (this.selectDrop.parentNode &&
        (this.selectDrop.offsetWidth &&
          this.selectDrop.parentNode.removeChild(this.selectDrop),
        e)) ||
        ("number" == typeof this.origSelectedIndex &&
          (this.realElement.selectedIndex = this.origSelectedIndex),
        customForm.lib.removeClass(
          this.fakeElement,
          this.options.dropActiveClass
        ),
        customForm.lib.addClass(this.selectDrop, this.options.dropHiddenClass),
        customForm.lib.event.remove(window, "resize", this.onResizeWindow),
        customForm.lib.event.remove(window, "scroll", this.onScrollWindow),
        customForm.lib.event.remove(
          document.documentElement,
          customForm.eventPress,
          this.onClickOutside
        ),
        customForm.isTouchDevice && this.onBlur());
    },
    toggleDropdown: function () {
      this.realElement.disabled ||
        (customForm.isTouchDevice ? this.onFocus() : this.realElement.focus(),
        (this.dropOpened = !0),
        this.isActiveDrop() ? this.hideDropdown() : this.showDropdown(),
        this.refreshState());
    },
    scrollToItem: function () {
      var e, t, o, n;
      this.isActiveDrop() &&
        ((e = this.selectList.offsetHeight),
        (t = this.calcOptionOffset(this.getFakeActiveOption())),
        (o = this.selectList.scrollTop),
        (n = this.getFakeActiveOption().offsetHeight),
        o + e <= t
          ? (this.selectList.scrollTop = t - e + n)
          : t < o && (this.selectList.scrollTop = t));
    },
    getFakeActiveOption: function (e) {
      return customForm.lib.queryBySelector(
        'li[rel="' +
          ("number" == typeof e ? e : this.realElement.selectedIndex) +
          '"]',
        this.selectList
      )[0];
    },
    calcOptionOffset: function (e) {
      for (
        var t = 0,
          o = customForm.lib.queryBySelector(
            ".customFormcalc",
            this.selectList
          ),
          n = 0;
        n < o.length && o[n] != e;
        n++
      )
        t += o[n].offsetHeight;
      return t;
    },
    childrenHasItem: function (e, t) {
      var o = e.getElementsByTagName("*");
      for (i = 0; i < o.length; i++) if (o[i] == t) return !0;
      return !1;
    },
    removeClassFromItems: function (e) {
      for (
        var t = customForm.lib.queryBySelector("li", this.selectList),
          o = t.length - 1;
        0 <= o;
        o--
      )
        customForm.lib.removeClass(t[o], e);
    },
    setSelectedClass: function (e) {
      customForm.lib.addClass(
        this.getFakeActiveOption(e),
        this.options.selectedClass
      );
    },
    refreshSelectedClass: function (e) {
      this.options.showNativeDrop ||
        (this.removeClassFromItems(this.options.selectedClass),
        this.setSelectedClass(e)),
        this.realElement.disabled
          ? (customForm.lib.addClass(
              this.fakeElement,
              this.options.disabledClass
            ),
            this.labelFor &&
              customForm.lib.addClass(
                this.labelFor,
                this.options.labelDisabledClass
              ))
          : (customForm.lib.removeClass(
              this.fakeElement,
              this.options.disabledClass
            ),
            this.labelFor &&
              customForm.lib.removeClass(
                this.labelFor,
                this.options.labelDisabledClass
              ));
    },
    refreshSelectedText: function () {
      var e;
      !this.dropOpened && this.realElement.title
        ? (this.valueText.innerHTML = this.realElement.title)
        : this.realElement.options[this.realElement.selectedIndex].title
        ? ((e = this.parseOptionTitle(
            this.realElement.options[this.realElement.selectedIndex].title
          )),
          (this.valueText.innerHTML =
            (e ? '<img src="' + e + '" alt="" />' : "") +
            this.realElement.options[this.realElement.selectedIndex].innerHTML))
        : (this.valueText.innerHTML =
            this.realElement.options[this.realElement.selectedIndex].innerHTML);
    },
    refreshState: function () {
      (this.origSelectedIndex = this.realElement.selectedIndex),
        this.refreshSelectedClass(),
        this.refreshSelectedText(),
        this.options.showNativeDrop ||
          (this.positionDropdown(),
          this.selectDrop.offsetWidth && this.scrollToItem());
    },
  }),
  "undefined" == typeof jQuery)
)
  throw new Error("Bootstrap's JavaScript requires jQuery");
!(function () {
  "use strict";
  var e = jQuery.fn.jquery.split(" ")[0].split(".");
  if (
    (e[0] < 2 && e[1] < 9) ||
    (1 == e[0] && 9 == e[1] && e[2] < 1) ||
    3 < e[0]
  )
    throw new Error(
      "Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4"
    );
})(),
  (function (a) {
    "use strict";
    function r(e) {
      this.element = a(e);
    }
    function t(o) {
      return this.each(function () {
        var e = a(this),
          t = e.data("bs.tab");
        t || e.data("bs.tab", (t = new r(this))),
          "string" == typeof o && t[o]();
      });
    }
    (r.VERSION = "3.3.7"),
      (r.TRANSITION_DURATION = 150),
      (r.prototype.show = function () {
        var e,
          t,
          o,
          n,
          i = this.element,
          s = i.closest("ul:not(.dropdown-menu)"),
          r =
            (r = i.data("target")) ||
            ((r = i.attr("href")) && r.replace(/.*(?=#[^\s]*$)/, ""));
        i.parent("li").hasClass("active") ||
          ((e = s.find(".active:last a")),
          (t = a.Event("hide.bs.tab", { relatedTarget: i[0] })),
          (o = a.Event("show.bs.tab", { relatedTarget: e[0] })),
          e.trigger(t),
          i.trigger(o),
          o.isDefaultPrevented() ||
            t.isDefaultPrevented() ||
            ((n = a(r)),
            this.activate(i.closest("li"), s),
            this.activate(n, n.parent(), function () {
              e.trigger({ type: "hidden.bs.tab", relatedTarget: i[0] }),
                i.trigger({ type: "shown.bs.tab", relatedTarget: e[0] });
            })));
      }),
      (r.prototype.activate = function (e, t, o) {
        var n = t.find("> .active"),
          i =
            o &&
            a.support.transition &&
            ((n.length && n.hasClass("fade")) || !!t.find("> .fade").length);
        function s() {
          n
            .removeClass("active")
            .find("> .dropdown-menu > .active")
            .removeClass("active")
            .end()
            .find('[data-toggle="tab"]')
            .attr("aria-expanded", !1),
            e
              .addClass("active")
              .find('[data-toggle="tab"]')
              .attr("aria-expanded", !0),
            i ? (e[0].offsetWidth, e.addClass("in")) : e.removeClass("fade"),
            e.parent(".dropdown-menu").length &&
              e
                .closest("li.dropdown")
                .addClass("active")
                .end()
                .find('[data-toggle="tab"]')
                .attr("aria-expanded", !0),
            o && o();
        }
        n.length && i
          ? n
              .one("bsTransitionEnd", s)
              .emulateTransitionEnd(r.TRANSITION_DURATION)
          : s(),
          n.removeClass("in");
      });
    var e = a.fn.tab;
    (a.fn.tab = t),
      (a.fn.tab.Constructor = r),
      (a.fn.tab.noConflict = function () {
        return (a.fn.tab = e), this;
      });
    function o(e) {
      e.preventDefault(), t.call(a(this), "show");
    }
    a(document)
      .on("click.bs.tab.data-api", '[data-toggle="tab"]', o)
      .on("click.bs.tab.data-api", '[data-toggle="pill"]', o);
  })(jQuery),
  (function (r) {
    "use strict";
    var a = function (e, t) {
      (this.$element = r(e)),
        (this.options = r.extend({}, a.DEFAULTS, t)),
        (this.$trigger = r(
          '[data-toggle="collapse"][href="/' +
            e.id +
            '"],[data-toggle="collapse"][data-target="#' +
            e.id +
            '"]'
        )),
        (this.transitioning = null),
        this.options.parent
          ? (this.$parent = this.getParent())
          : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
        this.options.toggle && this.toggle();
    };
    function i(e) {
      var t,
        o =
          e.attr("data-target") ||
          ((t = e.attr("href")) && t.replace(/.*(?=#[^\s]+$)/, ""));
      return r(o);
    }
    function l(n) {
      return this.each(function () {
        var e = r(this),
          t = e.data("bs.collapse"),
          o = r.extend({}, a.DEFAULTS, e.data(), "object" == typeof n && n);
        !t && o.toggle && /show|hide/.test(n) && (o.toggle = !1),
          t || e.data("bs.collapse", (t = new a(this, o))),
          "string" == typeof n && t[n]();
      });
    }
    (a.VERSION = "3.3.7"),
      (a.TRANSITION_DURATION = 350),
      (a.DEFAULTS = { toggle: !0 }),
      (a.prototype.dimension = function () {
        return this.$element.hasClass("width") ? "width" : "height";
      }),
      (a.prototype.show = function () {
        if (!this.transitioning && !this.$element.hasClass("in")) {
          var e,
            t =
              this.$parent &&
              this.$parent.children(".panel").children(".in, .collapsing");
          if (
            !(t && t.length && (e = t.data("bs.collapse")) && e.transitioning)
          ) {
            var o = r.Event("show.bs.collapse");
            if ((this.$element.trigger(o), !o.isDefaultPrevented())) {
              t &&
                t.length &&
                (l.call(t, "hide"), e || t.data("bs.collapse", null));
              var n = this.dimension();
              this.$element
                .removeClass("collapse")
                .addClass("collapsing")
                [n](0)
                .attr("aria-expanded", !0),
                this.$trigger
                  .removeClass("collapsed")
                  .attr("aria-expanded", !0),
                (this.transitioning = 1);
              var i = function () {
                this.$element
                  .removeClass("collapsing")
                  .addClass("collapse in")
                  [n](""),
                  (this.transitioning = 0),
                  this.$element.trigger("shown.bs.collapse");
              };
              if (!r.support.transition) return i.call(this);
              var s = r.camelCase(["scroll", n].join("-"));
              this.$element
                .one("bsTransitionEnd", r.proxy(i, this))
                .emulateTransitionEnd(a.TRANSITION_DURATION)
                [n](this.$element[0][s]);
            }
          }
        }
      }),
      (a.prototype.hide = function () {
        if (!this.transitioning && this.$element.hasClass("in")) {
          var e = r.Event("hide.bs.collapse");
          if ((this.$element.trigger(e), !e.isDefaultPrevented())) {
            var t = this.dimension();
            this.$element[t](this.$element[t]())[0].offsetHeight,
              this.$element
                .addClass("collapsing")
                .removeClass("collapse in")
                .attr("aria-expanded", !1),
              this.$trigger.addClass("collapsed").attr("aria-expanded", !1),
              (this.transitioning = 1);
            var o = function () {
              (this.transitioning = 0),
                this.$element
                  .removeClass("collapsing")
                  .addClass("collapse")
                  .trigger("hidden.bs.collapse");
            };
            if (!r.support.transition) return o.call(this);
            this.$element[t](0)
              .one("bsTransitionEnd", r.proxy(o, this))
              .emulateTransitionEnd(a.TRANSITION_DURATION);
          }
        }
      }),
      (a.prototype.toggle = function () {
        this[this.$element.hasClass("in") ? "hide" : "show"]();
      }),
      (a.prototype.getParent = function () {
        return r(this.options.parent)
          .find(
            '[data-toggle="collapse"][data-parent="' +
              this.options.parent +
              '"]'
          )
          .each(
            r.proxy(function (e, t) {
              var o = r(t);
              this.addAriaAndCollapsedClass(i(o), o);
            }, this)
          )
          .end();
      }),
      (a.prototype.addAriaAndCollapsedClass = function (e, t) {
        var o = e.hasClass("in");
        e.attr("aria-expanded", o),
          t.toggleClass("collapsed", !o).attr("aria-expanded", o);
      });
    var e = r.fn.collapse;
    (r.fn.collapse = l),
      (r.fn.collapse.Constructor = a),
      (r.fn.collapse.noConflict = function () {
        return (r.fn.collapse = e), this;
      }),
      r(document).on(
        "click.bs.collapse.data-api",
        '[data-toggle="collapse"]',
        function (e) {
          var t = r(this);
          t.attr("data-target") || e.preventDefault();
          var o = i(t),
            n = o.data("bs.collapse") ? "toggle" : t.data();
          l.call(o, n);
        }
      );
  })(jQuery),
  (function (e) {
    "use strict";
    "function" == typeof define && define.amd
      ? define(["jquery"], e)
      : "undefined" != typeof exports
      ? (module.exports = e(require("jquery")))
      : e(jQuery);
  })(function (c) {
    "use strict";
    var i,
      r = window.Slick || {};
    (i = 0),
      ((r = function (e, t) {
        var o,
          n = this;
        (n.defaults = {
          accessibility: !0,
          adaptiveHeight: !1,
          appendArrows: c(e),
          appendDots: c(e),
          arrows: !0,
          asNavFor: null,
          prevArrow:
            '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
          nextArrow:
            '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
          autoplay: !1,
          autoplaySpeed: 3e3,
          centerMode: !1,
          centerPadding: "50px",
          cssEase: "ease",
          customPaging: function (e, t) {
            return c(
              '<button type="button" data-role="none" role="button" tabindex="0" />'
            ).text(t + 1);
          },
          dots: !1,
          dotsClass: "slick-dots",
          draggable: !0,
          easing: "linear",
          edgeFriction: 0.35,
          fade: !1,
          focusOnSelect: !1,
          infinite: !0,
          initialSlide: 0,
          lazyLoad: "ondemand",
          mobileFirst: !1,
          pauseOnHover: !0,
          pauseOnFocus: !0,
          pauseOnDotsHover: !1,
          respondTo: "window",
          responsive: null,
          rows: 1,
          rtl: !1,
          slide: "",
          slidesPerRow: 1,
          slidesToShow: 1,
          slidesToScroll: 1,
          speed: 500,
          swipe: !0,
          swipeToSlide: !1,
          touchMove: !0,
          touchThreshold: 5,
          useCSS: !0,
          useTransform: !0,
          variableWidth: !1,
          vertical: !1,
          verticalSwiping: !1,
          waitForAnimate: !0,
          zIndex: 1e3,
        }),
          (n.initials = {
            animating: !1,
            dragging: !1,
            autoPlayTimer: null,
            currentDirection: 0,
            currentLeft: null,
            currentSlide: 0,
            direction: 1,
            $dots: null,
            listWidth: null,
            listHeight: null,
            loadIndex: 0,
            $nextArrow: null,
            $prevArrow: null,
            slideCount: null,
            slideWidth: null,
            $slideTrack: null,
            $slides: null,
            sliding: !1,
            slideOffset: 0,
            swipeLeft: null,
            $list: null,
            touchObject: {},
            transformsEnabled: !1,
            unslicked: !1,
          }),
          c.extend(n, n.initials),
          (n.activeBreakpoint = null),
          (n.animType = null),
          (n.animProp = null),
          (n.breakpoints = []),
          (n.breakpointSettings = []),
          (n.cssTransitions = !1),
          (n.focussed = !1),
          (n.interrupted = !1),
          (n.hidden = "hidden"),
          (n.paused = !0),
          (n.positionProp = null),
          (n.respondTo = null),
          (n.rowCount = 1),
          (n.shouldClick = !0),
          (n.$slider = c(e)),
          (n.$slidesCache = null),
          (n.transformType = null),
          (n.transitionType = null),
          (n.visibilityChange = "visibilitychange"),
          (n.windowWidth = 0),
          (n.windowTimer = null),
          (o = c(e).data("slick") || {}),
          (n.options = c.extend({}, n.defaults, t, o)),
          (n.currentSlide = n.options.initialSlide),
          (n.originalSettings = n.options),
          void 0 !== document.mozHidden
            ? ((n.hidden = "mozHidden"),
              (n.visibilityChange = "mozvisibilitychange"))
            : void 0 !== document.webkitHidden &&
              ((n.hidden = "webkitHidden"),
              (n.visibilityChange = "webkitvisibilitychange")),
          (n.autoPlay = c.proxy(n.autoPlay, n)),
          (n.autoPlayClear = c.proxy(n.autoPlayClear, n)),
          (n.autoPlayIterator = c.proxy(n.autoPlayIterator, n)),
          (n.changeSlide = c.proxy(n.changeSlide, n)),
          (n.clickHandler = c.proxy(n.clickHandler, n)),
          (n.selectHandler = c.proxy(n.selectHandler, n)),
          (n.setPosition = c.proxy(n.setPosition, n)),
          (n.swipeHandler = c.proxy(n.swipeHandler, n)),
          (n.dragHandler = c.proxy(n.dragHandler, n)),
          (n.keyHandler = c.proxy(n.keyHandler, n)),
          (n.instanceUid = i++),
          (n.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/),
          n.registerBreakpoints(),
          n.init(!0);
      }).prototype.activateADA = function () {
        this.$slideTrack
          .find(".slick-active")
          .attr({ "aria-hidden": "false" })
          .find("a, input, button, select")
          .attr({ tabindex: "0" });
      }),
      (r.prototype.addSlide = r.prototype.slickAdd =
        function (e, t, o) {
          var n = this;
          if ("boolean" == typeof t) (o = t), (t = null);
          else if (t < 0 || t >= n.slideCount) return !1;
          n.unload(),
            "number" == typeof t
              ? 0 === t && 0 === n.$slides.length
                ? c(e).appendTo(n.$slideTrack)
                : o
                ? c(e).insertBefore(n.$slides.eq(t))
                : c(e).insertAfter(n.$slides.eq(t))
              : !0 === o
              ? c(e).prependTo(n.$slideTrack)
              : c(e).appendTo(n.$slideTrack),
            (n.$slides = n.$slideTrack.children(this.options.slide)),
            n.$slideTrack.children(this.options.slide).detach(),
            n.$slideTrack.append(n.$slides),
            n.$slides.each(function (e, t) {
              c(t).attr("data-slick-index", e);
            }),
            (n.$slidesCache = n.$slides),
            n.reinit();
        }),
      (r.prototype.animateHeight = function () {
        var e,
          t = this;
        1 === t.options.slidesToShow &&
          !0 === t.options.adaptiveHeight &&
          !1 === t.options.vertical &&
          ((e = t.$slides.eq(t.currentSlide).outerHeight(!0)),
          t.$list.animate({ height: e }, t.options.speed));
      }),
      (r.prototype.animateSlide = function (e, t) {
        var o = {},
          n = this;
        n.animateHeight(),
          !0 === n.options.rtl && !1 === n.options.vertical && (e = -e),
          !1 === n.transformsEnabled
            ? !1 === n.options.vertical
              ? n.$slideTrack.animate(
                  { left: e },
                  n.options.speed,
                  n.options.easing,
                  t
                )
              : n.$slideTrack.animate(
                  { top: e },
                  n.options.speed,
                  n.options.easing,
                  t
                )
            : !1 === n.cssTransitions
            ? (!0 === n.options.rtl && (n.currentLeft = -n.currentLeft),
              c({ animStart: n.currentLeft }).animate(
                { animStart: e },
                {
                  duration: n.options.speed,
                  easing: n.options.easing,
                  step: function (e) {
                    (e = Math.ceil(e)),
                      !1 === n.options.vertical
                        ? (o[n.animType] = "translate(" + e + "px, 0px)")
                        : (o[n.animType] = "translate(0px," + e + "px)"),
                      n.$slideTrack.css(o);
                  },
                  complete: function () {
                    t && t.call();
                  },
                }
              ))
            : (n.applyTransition(),
              (e = Math.ceil(e)),
              !1 === n.options.vertical
                ? (o[n.animType] = "translate3d(" + e + "px, 0px, 0px)")
                : (o[n.animType] = "translate3d(0px," + e + "px, 0px)"),
              n.$slideTrack.css(o),
              t &&
                setTimeout(function () {
                  n.disableTransition(), t.call();
                }, n.options.speed));
      }),
      (r.prototype.getNavTarget = function () {
        var e = this.options.asNavFor;
        return e && null !== e && (e = c(e).not(this.$slider)), e;
      }),
      (r.prototype.asNavFor = function (t) {
        var e = this.getNavTarget();
        null !== e &&
          "object" == typeof e &&
          e.each(function () {
            var e = c(this).slick("getSlick");
            e.unslicked || e.slideHandler(t, !0);
          });
      }),
      (r.prototype.applyTransition = function (e) {
        var t = this,
          o = {};
        !1 === t.options.fade
          ? (o[t.transitionType] =
              t.transformType +
              " " +
              t.options.speed +
              "ms " +
              t.options.cssEase)
          : (o[t.transitionType] =
              "opacity " + t.options.speed + "ms " + t.options.cssEase),
          !1 === t.options.fade ? t.$slideTrack.css(o) : t.$slides.eq(e).css(o);
      }),
      (r.prototype.autoPlay = function () {
        var e = this;
        e.autoPlayClear(),
          e.slideCount > e.options.slidesToShow &&
            (e.autoPlayTimer = setInterval(
              e.autoPlayIterator,
              e.options.autoplaySpeed
            ));
      }),
      (r.prototype.autoPlayClear = function () {
        this.autoPlayTimer && clearInterval(this.autoPlayTimer);
      }),
      (r.prototype.autoPlayIterator = function () {
        var e = this,
          t = e.currentSlide + e.options.slidesToScroll;
        e.paused ||
          e.interrupted ||
          e.focussed ||
          (!1 === e.options.infinite &&
            (1 === e.direction && e.currentSlide + 1 === e.slideCount - 1
              ? (e.direction = 0)
              : 0 === e.direction &&
                ((t = e.currentSlide - e.options.slidesToScroll),
                e.currentSlide - 1 == 0 && (e.direction = 1))),
          e.slideHandler(t));
      }),
      (r.prototype.buildArrows = function () {
        var e = this;
        !0 === e.options.arrows &&
          ((e.$prevArrow = c(e.options.prevArrow).addClass("slick-arrow")),
          (e.$nextArrow = c(e.options.nextArrow).addClass("slick-arrow")),
          e.slideCount > e.options.slidesToShow
            ? (e.$prevArrow
                .removeClass("slick-hidden")
                .removeAttr("aria-hidden tabindex"),
              e.$nextArrow
                .removeClass("slick-hidden")
                .removeAttr("aria-hidden tabindex"),
              e.htmlExpr.test(e.options.prevArrow) &&
                e.$prevArrow.prependTo(e.options.appendArrows),
              e.htmlExpr.test(e.options.nextArrow) &&
                e.$nextArrow.appendTo(e.options.appendArrows),
              !0 !== e.options.infinite &&
                e.$prevArrow
                  .addClass("slick-disabled")
                  .attr("aria-disabled", "true"))
            : e.$prevArrow
                .add(e.$nextArrow)
                .addClass("slick-hidden")
                .attr({ "aria-disabled": "true", tabindex: "-1" }));
      }),
      (r.prototype.buildDots = function () {
        var e,
          t,
          o = this;
        if (!0 === o.options.dots && o.slideCount > o.options.slidesToShow) {
          for (
            o.$slider.addClass("slick-dotted"),
              t = c("<ul />").addClass(o.options.dotsClass),
              e = 0;
            e <= o.getDotCount();
            e += 1
          )
            t.append(
              c("<li />").append(o.options.customPaging.call(this, o, e))
            );
          (o.$dots = t.appendTo(o.options.appendDots)),
            o.$dots
              .find("li")
              .first()
              .addClass("slick-active")
              .attr("aria-hidden", "false");
        }
      }),
      (r.prototype.buildOut = function () {
        var e = this;
        (e.$slides = e.$slider
          .children(e.options.slide + ":not(.slick-cloned)")
          .addClass("slick-slide")),
          (e.slideCount = e.$slides.length),
          e.$slides.each(function (e, t) {
            c(t)
              .attr("data-slick-index", e)
              .data("originalStyling", c(t).attr("style") || "");
          }),
          e.$slider.addClass("slick-slider"),
          (e.$slideTrack =
            0 === e.slideCount
              ? c('<div class="slick-track"/>').appendTo(e.$slider)
              : e.$slides.wrapAll('<div class="slick-track"/>').parent()),
          (e.$list = e.$slideTrack
            .wrap('<div aria-live="polite" class="slick-list"/>')
            .parent()),
          e.$slideTrack.css("opacity", 0),
          (!0 !== e.options.centerMode && !0 !== e.options.swipeToSlide) ||
            (e.options.slidesToScroll = 1),
          c("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"),
          e.setupInfinite(),
          e.buildArrows(),
          e.buildDots(),
          e.updateDots(),
          e.setSlideClasses(
            "number" == typeof e.currentSlide ? e.currentSlide : 0
          ),
          !0 === e.options.draggable && e.$list.addClass("draggable");
      }),
      (r.prototype.buildRows = function () {
        var e,
          t,
          o,
          n = this,
          i = document.createDocumentFragment(),
          s = n.$slider.children();
        if (1 < n.options.rows) {
          for (
            o = n.options.slidesPerRow * n.options.rows,
              t = Math.ceil(s.length / o),
              e = 0;
            e < t;
            e++
          ) {
            for (
              var r = document.createElement("div"), a = 0;
              a < n.options.rows;
              a++
            ) {
              for (
                var l = document.createElement("div"), c = 0;
                c < n.options.slidesPerRow;
                c++
              ) {
                var d = e * o + (a * n.options.slidesPerRow + c);
                s.get(d) && l.appendChild(s.get(d));
              }
              r.appendChild(l);
            }
            i.appendChild(r);
          }
          n.$slider.empty().append(i),
            n.$slider
              .children()
              .children()
              .children()
              .css({
                width: 100 / n.options.slidesPerRow + "%",
                display: "inline-block",
              });
        }
      }),
      (r.prototype.checkResponsive = function (e, t) {
        var o,
          n,
          i,
          s = this,
          r = !1,
          a = s.$slider.width(),
          l = window.innerWidth || c(window).width();
        if (
          ("window" === s.respondTo
            ? (i = l)
            : "slider" === s.respondTo
            ? (i = a)
            : "min" === s.respondTo && (i = Math.min(l, a)),
          s.options.responsive &&
            s.options.responsive.length &&
            null !== s.options.responsive)
        ) {
          for (o in ((n = null), s.breakpoints))
            s.breakpoints.hasOwnProperty(o) &&
              (!1 === s.originalSettings.mobileFirst
                ? i < s.breakpoints[o] && (n = s.breakpoints[o])
                : i > s.breakpoints[o] && (n = s.breakpoints[o]));
          null !== n
            ? (null !== s.activeBreakpoint && n === s.activeBreakpoint && !t) ||
              ((s.activeBreakpoint = n),
              "unslick" === s.breakpointSettings[n]
                ? s.unslick(n)
                : ((s.options = c.extend(
                    {},
                    s.originalSettings,
                    s.breakpointSettings[n]
                  )),
                  !0 === e && (s.currentSlide = s.options.initialSlide),
                  s.refresh(e)),
              (r = n))
            : null !== s.activeBreakpoint &&
              ((s.activeBreakpoint = null),
              (s.options = s.originalSettings),
              !0 === e && (s.currentSlide = s.options.initialSlide),
              s.refresh(e),
              (r = n)),
            e || !1 === r || s.$slider.trigger("breakpoint", [s, r]);
        }
      }),
      (r.prototype.changeSlide = function (e, t) {
        var o,
          n,
          i = this,
          s = c(e.currentTarget);
        switch (
          (s.is("a") && e.preventDefault(),
          s.is("li") || (s = s.closest("li")),
          (o =
            i.slideCount % i.options.slidesToScroll != 0
              ? 0
              : (i.slideCount - i.currentSlide) % i.options.slidesToScroll),
          e.data.message)
        ) {
          case "previous":
            (n =
              0 == o ? i.options.slidesToScroll : i.options.slidesToShow - o),
              i.slideCount > i.options.slidesToShow &&
                i.slideHandler(i.currentSlide - n, !1, t);
            break;
          case "next":
            (n = 0 == o ? i.options.slidesToScroll : o),
              i.slideCount > i.options.slidesToShow &&
                i.slideHandler(i.currentSlide + n, !1, t);
            break;
          case "index":
            var r =
              0 === e.data.index
                ? 0
                : e.data.index || s.index() * i.options.slidesToScroll;
            i.slideHandler(i.checkNavigable(r), !1, t),
              s.children().trigger("focus");
            break;
          default:
            return;
        }
      }),
      (r.prototype.checkNavigable = function (e) {
        var t = this.getNavigableIndexes(),
          o = 0;
        if (e > t[t.length - 1]) e = t[t.length - 1];
        else
          for (var n in t) {
            if (e < t[n]) {
              e = o;
              break;
            }
            o = t[n];
          }
        return e;
      }),
      (r.prototype.cleanUpEvents = function () {
        var e = this;
        e.options.dots &&
          null !== e.$dots &&
          c("li", e.$dots)
            .off("click.slick", e.changeSlide)
            .off("mouseenter.slick", c.proxy(e.interrupt, e, !0))
            .off("mouseleave.slick", c.proxy(e.interrupt, e, !1)),
          e.$slider.off("focus.slick blur.slick"),
          !0 === e.options.arrows &&
            e.slideCount > e.options.slidesToShow &&
            (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide),
            e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide)),
          e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler),
          e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler),
          e.$list.off("touchend.slick mouseup.slick", e.swipeHandler),
          e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler),
          e.$list.off("click.slick", e.clickHandler),
          c(document).off(e.visibilityChange, e.visibility),
          e.cleanUpSlideEvents(),
          !0 === e.options.accessibility &&
            e.$list.off("keydown.slick", e.keyHandler),
          !0 === e.options.focusOnSelect &&
            c(e.$slideTrack).children().off("click.slick", e.selectHandler),
          c(window).off(
            "orientationchange.slick.slick-" + e.instanceUid,
            e.orientationChange
          ),
          c(window).off("resize.slick.slick-" + e.instanceUid, e.resize),
          c("[draggable!=true]", e.$slideTrack).off(
            "dragstart",
            e.preventDefault
          ),
          c(window).off("load.slick.slick-" + e.instanceUid, e.setPosition),
          c(document).off("ready.slick.slick-" + e.instanceUid, e.setPosition);
      }),
      (r.prototype.cleanUpSlideEvents = function () {
        var e = this;
        e.$list.off("mouseenter.slick", c.proxy(e.interrupt, e, !0)),
          e.$list.off("mouseleave.slick", c.proxy(e.interrupt, e, !1));
      }),
      (r.prototype.cleanUpRows = function () {
        var e;
        1 < this.options.rows &&
          ((e = this.$slides.children().children()).removeAttr("style"),
          this.$slider.empty().append(e));
      }),
      (r.prototype.clickHandler = function (e) {
        !1 === this.shouldClick &&
          (e.stopImmediatePropagation(),
          e.stopPropagation(),
          e.preventDefault());
      }),
      (r.prototype.destroy = function (e) {
        var t = this;
        t.autoPlayClear(),
          (t.touchObject = {}),
          t.cleanUpEvents(),
          c(".slick-cloned", t.$slider).detach(),
          t.$dots && t.$dots.remove(),
          t.$prevArrow &&
            t.$prevArrow.length &&
            (t.$prevArrow
              .removeClass("slick-disabled slick-arrow slick-hidden")
              .removeAttr("aria-hidden aria-disabled tabindex")
              .css("display", ""),
            t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()),
          t.$nextArrow &&
            t.$nextArrow.length &&
            (t.$nextArrow
              .removeClass("slick-disabled slick-arrow slick-hidden")
              .removeAttr("aria-hidden aria-disabled tabindex")
              .css("display", ""),
            t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()),
          t.$slides &&
            (t.$slides
              .removeClass(
                "slick-slide slick-active slick-center slick-visible slick-current"
              )
              .removeAttr("aria-hidden")
              .removeAttr("data-slick-index")
              .each(function () {
                c(this).attr("style", c(this).data("originalStyling"));
              }),
            t.$slideTrack.children(this.options.slide).detach(),
            t.$slideTrack.detach(),
            t.$list.detach(),
            t.$slider.append(t.$slides)),
          t.cleanUpRows(),
          t.$slider.removeClass("slick-slider"),
          t.$slider.removeClass("slick-initialized"),
          t.$slider.removeClass("slick-dotted"),
          (t.unslicked = !0),
          e || t.$slider.trigger("destroy", [t]);
      }),
      (r.prototype.disableTransition = function (e) {
        var t = {};
        (t[this.transitionType] = ""),
          !1 === this.options.fade
            ? this.$slideTrack.css(t)
            : this.$slides.eq(e).css(t);
      }),
      (r.prototype.fadeSlide = function (e, t) {
        var o = this;
        !1 === o.cssTransitions
          ? (o.$slides.eq(e).css({ zIndex: o.options.zIndex }),
            o.$slides
              .eq(e)
              .animate({ opacity: 1 }, o.options.speed, o.options.easing, t))
          : (o.applyTransition(e),
            o.$slides.eq(e).css({ opacity: 1, zIndex: o.options.zIndex }),
            t &&
              setTimeout(function () {
                o.disableTransition(e), t.call();
              }, o.options.speed));
      }),
      (r.prototype.fadeSlideOut = function (e) {
        var t = this;
        !1 === t.cssTransitions
          ? t.$slides
              .eq(e)
              .animate(
                { opacity: 0, zIndex: t.options.zIndex - 2 },
                t.options.speed,
                t.options.easing
              )
          : (t.applyTransition(e),
            t.$slides.eq(e).css({ opacity: 0, zIndex: t.options.zIndex - 2 }));
      }),
      (r.prototype.filterSlides = r.prototype.slickFilter =
        function (e) {
          var t = this;
          null !== e &&
            ((t.$slidesCache = t.$slides),
            t.unload(),
            t.$slideTrack.children(this.options.slide).detach(),
            t.$slidesCache.filter(e).appendTo(t.$slideTrack),
            t.reinit());
        }),
      (r.prototype.focusHandler = function () {
        var o = this;
        o.$slider
          .off("focus.slick blur.slick")
          .on("focus.slick blur.slick", "*:not(.slick-arrow)", function (e) {
            e.stopImmediatePropagation();
            var t = c(this);
            setTimeout(function () {
              o.options.pauseOnFocus &&
                ((o.focussed = t.is(":focus")), o.autoPlay());
            }, 0);
          });
      }),
      (r.prototype.getCurrent = r.prototype.slickCurrentSlide =
        function () {
          return this.currentSlide;
        }),
      (r.prototype.getDotCount = function () {
        var e = this,
          t = 0,
          o = 0,
          n = 0;
        if (!0 === e.options.infinite)
          for (; t < e.slideCount; )
            ++n,
              (t = o + e.options.slidesToScroll),
              (o +=
                e.options.slidesToScroll <= e.options.slidesToShow
                  ? e.options.slidesToScroll
                  : e.options.slidesToShow);
        else if (!0 === e.options.centerMode) n = e.slideCount;
        else if (e.options.asNavFor)
          for (; t < e.slideCount; )
            ++n,
              (t = o + e.options.slidesToScroll),
              (o +=
                e.options.slidesToScroll <= e.options.slidesToShow
                  ? e.options.slidesToScroll
                  : e.options.slidesToShow);
        else
          n =
            1 +
            Math.ceil(
              (e.slideCount - e.options.slidesToShow) / e.options.slidesToScroll
            );
        return n - 1;
      }),
      (r.prototype.getLeft = function (e) {
        var t,
          o,
          n,
          i = this,
          s = 0;
        return (
          (i.slideOffset = 0),
          (o = i.$slides.first().outerHeight(!0)),
          !0 === i.options.infinite
            ? (i.slideCount > i.options.slidesToShow &&
                ((i.slideOffset = i.slideWidth * i.options.slidesToShow * -1),
                (s = o * i.options.slidesToShow * -1)),
              i.slideCount % i.options.slidesToScroll != 0 &&
                e + i.options.slidesToScroll > i.slideCount &&
                i.slideCount > i.options.slidesToShow &&
                (s =
                  e > i.slideCount
                    ? ((i.slideOffset =
                        (i.options.slidesToShow - (e - i.slideCount)) *
                        i.slideWidth *
                        -1),
                      (i.options.slidesToShow - (e - i.slideCount)) * o * -1)
                    : ((i.slideOffset =
                        (i.slideCount % i.options.slidesToScroll) *
                        i.slideWidth *
                        -1),
                      (i.slideCount % i.options.slidesToScroll) * o * -1)))
            : e + i.options.slidesToShow > i.slideCount &&
              ((i.slideOffset =
                (e + i.options.slidesToShow - i.slideCount) * i.slideWidth),
              (s = (e + i.options.slidesToShow - i.slideCount) * o)),
          i.slideCount <= i.options.slidesToShow && (s = i.slideOffset = 0),
          !0 === i.options.centerMode && !0 === i.options.infinite
            ? (i.slideOffset +=
                i.slideWidth * Math.floor(i.options.slidesToShow / 2) -
                i.slideWidth)
            : !0 === i.options.centerMode &&
              ((i.slideOffset = 0),
              (i.slideOffset +=
                i.slideWidth * Math.floor(i.options.slidesToShow / 2))),
          (t =
            !1 === i.options.vertical
              ? e * i.slideWidth * -1 + i.slideOffset
              : e * o * -1 + s),
          !0 === i.options.variableWidth &&
            ((n =
              i.slideCount <= i.options.slidesToShow ||
              !1 === i.options.infinite
                ? i.$slideTrack.children(".slick-slide").eq(e)
                : i.$slideTrack
                    .children(".slick-slide")
                    .eq(e + i.options.slidesToShow)),
            (t =
              !0 === i.options.rtl
                ? n[0]
                  ? -1 * (i.$slideTrack.width() - n[0].offsetLeft - n.width())
                  : 0
                : n[0]
                ? -1 * n[0].offsetLeft
                : 0),
            !0 === i.options.centerMode &&
              ((n =
                i.slideCount <= i.options.slidesToShow ||
                !1 === i.options.infinite
                  ? i.$slideTrack.children(".slick-slide").eq(e)
                  : i.$slideTrack
                      .children(".slick-slide")
                      .eq(e + i.options.slidesToShow + 1)),
              (t =
                !0 === i.options.rtl
                  ? n[0]
                    ? -1 * (i.$slideTrack.width() - n[0].offsetLeft - n.width())
                    : 0
                  : n[0]
                  ? -1 * n[0].offsetLeft
                  : 0),
              (t += (i.$list.width() - n.outerWidth()) / 2))),
          t
        );
      }),
      (r.prototype.getOption = r.prototype.slickGetOption =
        function (e) {
          return this.options[e];
        }),
      (r.prototype.getNavigableIndexes = function () {
        for (
          var e = this,
            t = 0,
            o = 0,
            n = [],
            i =
              !1 === e.options.infinite
                ? e.slideCount
                : ((t = -1 * e.options.slidesToScroll),
                  (o = -1 * e.options.slidesToScroll),
                  2 * e.slideCount);
          t < i;

        )
          n.push(t),
            (t = o + e.options.slidesToScroll),
            (o +=
              e.options.slidesToScroll <= e.options.slidesToShow
                ? e.options.slidesToScroll
                : e.options.slidesToShow);
        return n;
      }),
      (r.prototype.getSlick = function () {
        return this;
      }),
      (r.prototype.getSlideCount = function () {
        var o,
          n = this,
          i =
            !0 === n.options.centerMode
              ? n.slideWidth * Math.floor(n.options.slidesToShow / 2)
              : 0;
        return !0 === n.options.swipeToSlide
          ? (n.$slideTrack.find(".slick-slide").each(function (e, t) {
              if (t.offsetLeft - i + c(t).outerWidth() / 2 > -1 * n.swipeLeft)
                return (o = t), !1;
            }),
            Math.abs(c(o).attr("data-slick-index") - n.currentSlide) || 1)
          : n.options.slidesToScroll;
      }),
      (r.prototype.goTo = r.prototype.slickGoTo =
        function (e, t) {
          this.changeSlide(
            { data: { message: "index", index: parseInt(e) } },
            t
          );
        }),
      (r.prototype.init = function (e) {
        var t = this;
        c(t.$slider).hasClass("slick-initialized") ||
          (c(t.$slider).addClass("slick-initialized"),
          t.buildRows(),
          t.buildOut(),
          t.setProps(),
          t.startLoad(),
          t.loadSlider(),
          t.initializeEvents(),
          t.updateArrows(),
          t.updateDots(),
          t.checkResponsive(!0),
          t.focusHandler()),
          e && t.$slider.trigger("init", [t]),
          !0 === t.options.accessibility && t.initADA(),
          t.options.autoplay && ((t.paused = !1), t.autoPlay());
      }),
      (r.prototype.initADA = function () {
        var t = this;
        t.$slides
          .add(t.$slideTrack.find(".slick-cloned"))
          .attr({ "aria-hidden": "true", tabindex: "-1" })
          .find("a, input, button, select")
          .attr({ tabindex: "-1" }),
          t.$slideTrack.attr("role", "listbox"),
          t.$slides.not(t.$slideTrack.find(".slick-cloned")).each(function (e) {
            c(this).attr({
              role: "option",
              "aria-describedby": "slick-slide" + t.instanceUid + e,
            });
          }),
          null !== t.$dots &&
            t.$dots
              .attr("role", "tablist")
              .find("li")
              .each(function (e) {
                c(this).attr({
                  role: "presentation",
                  "aria-selected": "false",
                  "aria-controls": "navigation" + t.instanceUid + e,
                  id: "slick-slide" + t.instanceUid + e,
                });
              })
              .first()
              .attr("aria-selected", "true")
              .end()
              .find("button")
              .attr("role", "button")
              .end()
              .closest("div")
              .attr("role", "toolbar"),
          t.activateADA();
      }),
      (r.prototype.initArrowEvents = function () {
        var e = this;
        !0 === e.options.arrows &&
          e.slideCount > e.options.slidesToShow &&
          (e.$prevArrow
            .off("click.slick")
            .on("click.slick", { message: "previous" }, e.changeSlide),
          e.$nextArrow
            .off("click.slick")
            .on("click.slick", { message: "next" }, e.changeSlide));
      }),
      (r.prototype.initDotEvents = function () {
        var e = this;
        !0 === e.options.dots &&
          e.slideCount > e.options.slidesToShow &&
          c("li", e.$dots).on(
            "click.slick",
            { message: "index" },
            e.changeSlide
          ),
          !0 === e.options.dots &&
            !0 === e.options.pauseOnDotsHover &&
            c("li", e.$dots)
              .on("mouseenter.slick", c.proxy(e.interrupt, e, !0))
              .on("mouseleave.slick", c.proxy(e.interrupt, e, !1));
      }),
      (r.prototype.initSlideEvents = function () {
        var e = this;
        e.options.pauseOnHover &&
          (e.$list.on("mouseenter.slick", c.proxy(e.interrupt, e, !0)),
          e.$list.on("mouseleave.slick", c.proxy(e.interrupt, e, !1)));
      }),
      (r.prototype.initializeEvents = function () {
        var e = this;
        e.initArrowEvents(),
          e.initDotEvents(),
          e.initSlideEvents(),
          e.$list.on(
            "touchstart.slick mousedown.slick",
            { action: "start" },
            e.swipeHandler
          ),
          e.$list.on(
            "touchmove.slick mousemove.slick",
            { action: "move" },
            e.swipeHandler
          ),
          e.$list.on(
            "touchend.slick mouseup.slick",
            { action: "end" },
            e.swipeHandler
          ),
          e.$list.on(
            "touchcancel.slick mouseleave.slick",
            { action: "end" },
            e.swipeHandler
          ),
          e.$list.on("click.slick", e.clickHandler),
          c(document).on(e.visibilityChange, c.proxy(e.visibility, e)),
          !0 === e.options.accessibility &&
            e.$list.on("keydown.slick", e.keyHandler),
          !0 === e.options.focusOnSelect &&
            c(e.$slideTrack).children().on("click.slick", e.selectHandler),
          c(window).on(
            "orientationchange.slick.slick-" + e.instanceUid,
            c.proxy(e.orientationChange, e)
          ),
          c(window).on(
            "resize.slick.slick-" + e.instanceUid,
            c.proxy(e.resize, e)
          ),
          c("[draggable!=true]", e.$slideTrack).on(
            "dragstart",
            e.preventDefault
          ),
          c(window).on("load.slick.slick-" + e.instanceUid, e.setPosition),
          c(document).on("ready.slick.slick-" + e.instanceUid, e.setPosition);
      }),
      (r.prototype.initUI = function () {
        var e = this;
        !0 === e.options.arrows &&
          e.slideCount > e.options.slidesToShow &&
          (e.$prevArrow.show(), e.$nextArrow.show()),
          !0 === e.options.dots &&
            e.slideCount > e.options.slidesToShow &&
            e.$dots.show();
      }),
      (r.prototype.keyHandler = function (e) {
        var t = this;
        e.target.tagName.match("TEXTAREA|INPUT|SELECT") ||
          (37 === e.keyCode && !0 === t.options.accessibility
            ? t.changeSlide({
                data: { message: !0 === t.options.rtl ? "next" : "previous" },
              })
            : 39 === e.keyCode &&
              !0 === t.options.accessibility &&
              t.changeSlide({
                data: { message: !0 === t.options.rtl ? "previous" : "next" },
              }));
      }),
      (r.prototype.lazyLoad = function () {
        var e,
          t,
          n = this;
        function o(e) {
          c("img[data-lazy]", e).each(function () {
            var e = c(this),
              t = c(this).attr("data-lazy"),
              o = document.createElement("img");
            (o.onload = function () {
              e.animate({ opacity: 0 }, 100, function () {
                e.attr("src", t).animate({ opacity: 1 }, 200, function () {
                  e.removeAttr("data-lazy").removeClass("slick-loading");
                }),
                  n.$slider.trigger("lazyLoaded", [n, e, t]);
              });
            }),
              (o.onerror = function () {
                e
                  .removeAttr("data-lazy")
                  .removeClass("slick-loading")
                  .addClass("slick-lazyload-error"),
                  n.$slider.trigger("lazyLoadError", [n, e, t]);
              }),
              (o.src = t);
          });
        }
        !0 === n.options.centerMode
          ? (t =
              !0 === n.options.infinite
                ? (e = n.currentSlide + (n.options.slidesToShow / 2 + 1)) +
                  n.options.slidesToShow +
                  2
                : ((e = Math.max(
                    0,
                    n.currentSlide - (n.options.slidesToShow / 2 + 1)
                  )),
                  n.options.slidesToShow / 2 + 1 + 2 + n.currentSlide))
          : ((e = n.options.infinite
              ? n.options.slidesToShow + n.currentSlide
              : n.currentSlide),
            (t = Math.ceil(e + n.options.slidesToShow)),
            !0 === n.options.fade && (0 < e && e--, t <= n.slideCount && t++)),
          o(n.$slider.find(".slick-slide").slice(e, t)),
          n.slideCount <= n.options.slidesToShow
            ? o(n.$slider.find(".slick-slide"))
            : n.currentSlide >= n.slideCount - n.options.slidesToShow
            ? o(
                n.$slider.find(".slick-cloned").slice(0, n.options.slidesToShow)
              )
            : 0 === n.currentSlide &&
              o(
                n.$slider
                  .find(".slick-cloned")
                  .slice(-1 * n.options.slidesToShow)
              );
      }),
      (r.prototype.loadSlider = function () {
        var e = this;
        e.setPosition(),
          e.$slideTrack.css({ opacity: 1 }),
          e.$slider.removeClass("slick-loading"),
          e.initUI(),
          "progressive" === e.options.lazyLoad && e.progressiveLazyLoad();
      }),
      (r.prototype.next = r.prototype.slickNext =
        function () {
          this.changeSlide({ data: { message: "next" } });
        }),
      (r.prototype.orientationChange = function () {
        this.checkResponsive(), this.setPosition();
      }),
      (r.prototype.pause = r.prototype.slickPause =
        function () {
          this.autoPlayClear(), (this.paused = !0);
        }),
      (r.prototype.play = r.prototype.slickPlay =
        function () {
          var e = this;
          e.autoPlay(),
            (e.options.autoplay = !0),
            (e.paused = !1),
            (e.focussed = !1),
            (e.interrupted = !1);
        }),
      (r.prototype.postSlide = function (e) {
        var t = this;
        t.unslicked ||
          (t.$slider.trigger("afterChange", [t, e]),
          (t.animating = !1),
          t.setPosition(),
          (t.swipeLeft = null),
          t.options.autoplay && t.autoPlay(),
          !0 === t.options.accessibility && t.initADA());
      }),
      (r.prototype.prev = r.prototype.slickPrev =
        function () {
          this.changeSlide({ data: { message: "previous" } });
        }),
      (r.prototype.preventDefault = function (e) {
        e.preventDefault();
      }),
      (r.prototype.progressiveLazyLoad = function (e) {
        e = e || 1;
        var t,
          o,
          n,
          i = this,
          s = c("img[data-lazy]", i.$slider);
        s.length
          ? ((t = s.first()),
            (o = t.attr("data-lazy")),
            ((n = document.createElement("img")).onload = function () {
              t
                .attr("src", o)
                .removeAttr("data-lazy")
                .removeClass("slick-loading"),
                !0 === i.options.adaptiveHeight && i.setPosition(),
                i.$slider.trigger("lazyLoaded", [i, t, o]),
                i.progressiveLazyLoad();
            }),
            (n.onerror = function () {
              e < 3
                ? setTimeout(function () {
                    i.progressiveLazyLoad(e + 1);
                  }, 500)
                : (t
                    .removeAttr("data-lazy")
                    .removeClass("slick-loading")
                    .addClass("slick-lazyload-error"),
                  i.$slider.trigger("lazyLoadError", [i, t, o]),
                  i.progressiveLazyLoad());
            }),
            (n.src = o))
          : i.$slider.trigger("allImagesLoaded", [i]);
      }),
      (r.prototype.refresh = function (e) {
        var t,
          o = this,
          n = o.slideCount - o.options.slidesToShow;
        !o.options.infinite && o.currentSlide > n && (o.currentSlide = n),
          o.slideCount <= o.options.slidesToShow && (o.currentSlide = 0),
          (t = o.currentSlide),
          o.destroy(!0),
          c.extend(o, o.initials, { currentSlide: t }),
          o.init(),
          e || o.changeSlide({ data: { message: "index", index: t } }, !1);
      }),
      (r.prototype.registerBreakpoints = function () {
        var e,
          t,
          o,
          n = this,
          i = n.options.responsive || null;
        if ("array" === c.type(i) && i.length) {
          for (e in ((n.respondTo = n.options.respondTo || "window"), i))
            if (
              ((o = n.breakpoints.length - 1),
              (t = i[e].breakpoint),
              i.hasOwnProperty(e))
            ) {
              for (; 0 <= o; )
                n.breakpoints[o] &&
                  n.breakpoints[o] === t &&
                  n.breakpoints.splice(o, 1),
                  o--;
              n.breakpoints.push(t), (n.breakpointSettings[t] = i[e].settings);
            }
          n.breakpoints.sort(function (e, t) {
            return n.options.mobileFirst ? e - t : t - e;
          });
        }
      }),
      (r.prototype.reinit = function () {
        var e = this;
        (e.$slides = e.$slideTrack
          .children(e.options.slide)
          .addClass("slick-slide")),
          (e.slideCount = e.$slides.length),
          e.currentSlide >= e.slideCount &&
            0 !== e.currentSlide &&
            (e.currentSlide = e.currentSlide - e.options.slidesToScroll),
          e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0),
          e.registerBreakpoints(),
          e.setProps(),
          e.setupInfinite(),
          e.buildArrows(),
          e.updateArrows(),
          e.initArrowEvents(),
          e.buildDots(),
          e.updateDots(),
          e.initDotEvents(),
          e.cleanUpSlideEvents(),
          e.initSlideEvents(),
          e.checkResponsive(!1, !0),
          !0 === e.options.focusOnSelect &&
            c(e.$slideTrack).children().on("click.slick", e.selectHandler),
          e.setSlideClasses(
            "number" == typeof e.currentSlide ? e.currentSlide : 0
          ),
          e.setPosition(),
          e.focusHandler(),
          (e.paused = !e.options.autoplay),
          e.autoPlay(),
          e.$slider.trigger("reInit", [e]);
      }),
      (r.prototype.resize = function () {
        var e = this;
        c(window).width() !== e.windowWidth &&
          (clearTimeout(e.windowDelay),
          (e.windowDelay = window.setTimeout(function () {
            (e.windowWidth = c(window).width()),
              e.checkResponsive(),
              e.unslicked || e.setPosition();
          }, 50)));
      }),
      (r.prototype.removeSlide = r.prototype.slickRemove =
        function (e, t, o) {
          var n = this;
          if (
            ((e =
              "boolean" == typeof e
                ? !0 === (t = e)
                  ? 0
                  : n.slideCount - 1
                : !0 === t
                ? --e
                : e),
            n.slideCount < 1 || e < 0 || e > n.slideCount - 1)
          )
            return !1;
          n.unload(),
            !0 === o
              ? n.$slideTrack.children().remove()
              : n.$slideTrack.children(this.options.slide).eq(e).remove(),
            (n.$slides = n.$slideTrack.children(this.options.slide)),
            n.$slideTrack.children(this.options.slide).detach(),
            n.$slideTrack.append(n.$slides),
            (n.$slidesCache = n.$slides),
            n.reinit();
        }),
      (r.prototype.setCSS = function (e) {
        var t,
          o,
          n = this,
          i = {};
        !0 === n.options.rtl && (e = -e),
          (t = "left" == n.positionProp ? Math.ceil(e) + "px" : "0px"),
          (o = "top" == n.positionProp ? Math.ceil(e) + "px" : "0px"),
          (i[n.positionProp] = e),
          !1 === n.transformsEnabled ||
            (!(i = {}) === n.cssTransitions
              ? (i[n.animType] = "translate(" + t + ", " + o + ")")
              : (i[n.animType] = "translate3d(" + t + ", " + o + ", 0px)")),
          n.$slideTrack.css(i);
      }),
      (r.prototype.setDimensions = function () {
        var e = this;
        !1 === e.options.vertical
          ? !0 === e.options.centerMode &&
            e.$list.css({ padding: "0px " + e.options.centerPadding })
          : (e.$list.height(
              e.$slides.first().outerHeight(!0) * e.options.slidesToShow
            ),
            !0 === e.options.centerMode &&
              e.$list.css({ padding: e.options.centerPadding + " 0px" })),
          (e.listWidth = e.$list.width()),
          (e.listHeight = e.$list.height()),
          !1 === e.options.vertical && !1 === e.options.variableWidth
            ? ((e.slideWidth = Math.ceil(e.listWidth / e.options.slidesToShow)),
              e.$slideTrack.width(
                Math.ceil(
                  e.slideWidth * e.$slideTrack.children(".slick-slide").length
                )
              ))
            : !0 === e.options.variableWidth
            ? e.$slideTrack.width(5e3 * e.slideCount)
            : ((e.slideWidth = Math.ceil(e.listWidth)),
              e.$slideTrack.height(
                Math.ceil(
                  e.$slides.first().outerHeight(!0) *
                    e.$slideTrack.children(".slick-slide").length
                )
              ));
        var t = e.$slides.first().outerWidth(!0) - e.$slides.first().width();
        !1 === e.options.variableWidth &&
          e.$slideTrack.children(".slick-slide").width(e.slideWidth - t);
      }),
      (r.prototype.setFade = function () {
        var o,
          n = this;
        n.$slides.each(function (e, t) {
          (o = n.slideWidth * e * -1),
            !0 === n.options.rtl
              ? c(t).css({
                  position: "relative",
                  right: o,
                  top: 0,
                  zIndex: n.options.zIndex - 2,
                  opacity: 0,
                })
              : c(t).css({
                  position: "relative",
                  left: o,
                  top: 0,
                  zIndex: n.options.zIndex - 2,
                  opacity: 0,
                });
        }),
          n.$slides
            .eq(n.currentSlide)
            .css({ zIndex: n.options.zIndex - 1, opacity: 1 });
      }),
      (r.prototype.setHeight = function () {
        var e,
          t = this;
        1 === t.options.slidesToShow &&
          !0 === t.options.adaptiveHeight &&
          !1 === t.options.vertical &&
          ((e = t.$slides.eq(t.currentSlide).outerHeight(!0)),
          t.$list.css("height", e));
      }),
      (r.prototype.setOption = r.prototype.slickSetOption =
        function () {
          var e,
            t,
            o,
            n,
            i,
            s = this,
            r = !1;
          if (
            ("object" === c.type(arguments[0])
              ? ((o = arguments[0]), (r = arguments[1]), (i = "multiple"))
              : "string" === c.type(arguments[0]) &&
                ((n = arguments[1]),
                (r = arguments[2]),
                "responsive" === (o = arguments[0]) &&
                "array" === c.type(arguments[1])
                  ? (i = "responsive")
                  : void 0 !== arguments[1] && (i = "single")),
            "single" === i)
          )
            s.options[o] = n;
          else if ("multiple" === i)
            c.each(o, function (e, t) {
              s.options[e] = t;
            });
          else if ("responsive" === i)
            for (t in n)
              if ("array" !== c.type(s.options.responsive))
                s.options.responsive = [n[t]];
              else {
                for (e = s.options.responsive.length - 1; 0 <= e; )
                  s.options.responsive[e].breakpoint === n[t].breakpoint &&
                    s.options.responsive.splice(e, 1),
                    e--;
                s.options.responsive.push(n[t]);
              }
          r && (s.unload(), s.reinit());
        }),
      (r.prototype.setPosition = function () {
        var e = this;
        e.setDimensions(),
          e.setHeight(),
          !1 === e.options.fade
            ? e.setCSS(e.getLeft(e.currentSlide))
            : e.setFade(),
          e.$slider.trigger("setPosition", [e]);
      }),
      (r.prototype.setProps = function () {
        var e = this,
          t = document.body.style;
        (e.positionProp = !0 === e.options.vertical ? "top" : "left"),
          "top" === e.positionProp
            ? e.$slider.addClass("slick-vertical")
            : e.$slider.removeClass("slick-vertical"),
          (void 0 === t.WebkitTransition &&
            void 0 === t.MozTransition &&
            void 0 === t.msTransition) ||
            (!0 === e.options.useCSS && (e.cssTransitions = !0)),
          e.options.fade &&
            ("number" == typeof e.options.zIndex
              ? e.options.zIndex < 3 && (e.options.zIndex = 3)
              : (e.options.zIndex = e.defaults.zIndex)),
          void 0 !== t.OTransform &&
            ((e.animType = "OTransform"),
            (e.transformType = "-o-transform"),
            (e.transitionType = "OTransition"),
            void 0 === t.perspectiveProperty &&
              void 0 === t.webkitPerspective &&
              (e.animType = !1)),
          void 0 !== t.MozTransform &&
            ((e.animType = "MozTransform"),
            (e.transformType = "-moz-transform"),
            (e.transitionType = "MozTransition"),
            void 0 === t.perspectiveProperty &&
              void 0 === t.MozPerspective &&
              (e.animType = !1)),
          void 0 !== t.webkitTransform &&
            ((e.animType = "webkitTransform"),
            (e.transformType = "-webkit-transform"),
            (e.transitionType = "webkitTransition"),
            void 0 === t.perspectiveProperty &&
              void 0 === t.webkitPerspective &&
              (e.animType = !1)),
          void 0 !== t.msTransform &&
            ((e.animType = "msTransform"),
            (e.transformType = "-ms-transform"),
            (e.transitionType = "msTransition"),
            void 0 === t.msTransform && (e.animType = !1)),
          void 0 !== t.transform &&
            !1 !== e.animType &&
            ((e.animType = "transform"),
            (e.transformType = "transform"),
            (e.transitionType = "transition")),
          (e.transformsEnabled =
            e.options.useTransform && null !== e.animType && !1 !== e.animType);
      }),
      (r.prototype.setSlideClasses = function (e) {
        var t,
          o,
          n,
          i = this,
          s = i.$slider
            .find(".slick-slide")
            .removeClass("slick-active slick-center slick-current")
            .attr("aria-hidden", "true");
        i.$slides.eq(e).addClass("slick-current"),
          !0 === i.options.centerMode
            ? ((t = Math.floor(i.options.slidesToShow / 2)),
              !0 === i.options.infinite &&
                (t <= e && e <= i.slideCount - 1 - t
                  ? i.$slides
                      .slice(e - t, e + t + 1)
                      .addClass("slick-active")
                      .attr("aria-hidden", "false")
                  : ((o = i.options.slidesToShow + e),
                    s
                      .slice(o - t + 1, o + t + 2)
                      .addClass("slick-active")
                      .attr("aria-hidden", "false")),
                0 === e
                  ? s
                      .eq(s.length - 1 - i.options.slidesToShow)
                      .addClass("slick-center")
                  : e === i.slideCount - 1 &&
                    s.eq(i.options.slidesToShow).addClass("slick-center")),
              i.$slides.eq(e).addClass("slick-center"))
            : 0 <= e && e <= i.slideCount - i.options.slidesToShow
            ? i.$slides
                .slice(e, e + i.options.slidesToShow)
                .addClass("slick-active")
                .attr("aria-hidden", "false")
            : s.length <= i.options.slidesToShow
            ? s.addClass("slick-active").attr("aria-hidden", "false")
            : ((n = i.slideCount % i.options.slidesToShow),
              (o = !0 === i.options.infinite ? i.options.slidesToShow + e : e),
              i.options.slidesToShow == i.options.slidesToScroll &&
              i.slideCount - e < i.options.slidesToShow
                ? s
                    .slice(o - (i.options.slidesToShow - n), o + n)
                    .addClass("slick-active")
                    .attr("aria-hidden", "false")
                : s
                    .slice(o, o + i.options.slidesToShow)
                    .addClass("slick-active")
                    .attr("aria-hidden", "false")),
          "ondemand" === i.options.lazyLoad && i.lazyLoad();
      }),
      (r.prototype.setupInfinite = function () {
        var e,
          t,
          o,
          n = this;
        if (
          (!0 === n.options.fade && (n.options.centerMode = !1),
          !0 === n.options.infinite &&
            !1 === n.options.fade &&
            ((t = null), n.slideCount > n.options.slidesToShow))
        ) {
          for (
            o =
              !0 === n.options.centerMode
                ? n.options.slidesToShow + 1
                : n.options.slidesToShow,
              e = n.slideCount;
            e > n.slideCount - o;
            --e
          )
            (t = e - 1),
              c(n.$slides[t])
                .clone(!0)
                .attr("id", "")
                .attr("data-slick-index", t - n.slideCount)
                .prependTo(n.$slideTrack)
                .addClass("slick-cloned");
          for (e = 0; e < o; e += 1)
            (t = e),
              c(n.$slides[t])
                .clone(!0)
                .attr("id", "")
                .attr("data-slick-index", t + n.slideCount)
                .appendTo(n.$slideTrack)
                .addClass("slick-cloned");
          n.$slideTrack
            .find(".slick-cloned")
            .find("[id]")
            .each(function () {
              c(this).attr("id", "");
            });
        }
      }),
      (r.prototype.interrupt = function (e) {
        e || this.autoPlay(), (this.interrupted = e);
      }),
      (r.prototype.selectHandler = function (e) {
        var t = this,
          o = c(e.target).is(".slick-slide")
            ? c(e.target)
            : c(e.target).parents(".slick-slide"),
          n = (n = parseInt(o.attr("data-slick-index"))) || 0;
        if (t.slideCount <= t.options.slidesToShow)
          return t.setSlideClasses(n), void t.asNavFor(n);
        t.slideHandler(n);
      }),
      (r.prototype.slideHandler = function (e, t, o) {
        var n,
          i,
          s,
          r,
          a,
          l,
          c = this;
        if (
          ((t = t || !1),
          (!0 !== c.animating || !0 !== c.options.waitForAnimate) &&
            !(
              (!0 === c.options.fade && c.currentSlide === e) ||
              c.slideCount <= c.options.slidesToShow
            ))
        )
          if (
            (!1 === t && c.asNavFor(e),
            (n = e),
            (a = c.getLeft(n)),
            (r = c.getLeft(c.currentSlide)),
            (c.currentLeft = null === c.swipeLeft ? r : c.swipeLeft),
            !1 === c.options.infinite &&
              !1 === c.options.centerMode &&
              (e < 0 || e > c.getDotCount() * c.options.slidesToScroll))
          )
            !1 === c.options.fade &&
              ((n = c.currentSlide),
              !0 !== o
                ? c.animateSlide(r, function () {
                    c.postSlide(n);
                  })
                : c.postSlide(n));
          else if (
            !1 === c.options.infinite &&
            !0 === c.options.centerMode &&
            (e < 0 || e > c.slideCount - c.options.slidesToScroll)
          )
            !1 === c.options.fade &&
              ((n = c.currentSlide),
              !0 !== o
                ? c.animateSlide(r, function () {
                    c.postSlide(n);
                  })
                : c.postSlide(n));
          else {
            if (
              (c.options.autoplay && clearInterval(c.autoPlayTimer),
              (i =
                n < 0
                  ? c.slideCount % c.options.slidesToScroll != 0
                    ? c.slideCount - (c.slideCount % c.options.slidesToScroll)
                    : c.slideCount + n
                  : n >= c.slideCount
                  ? c.slideCount % c.options.slidesToScroll != 0
                    ? 0
                    : n - c.slideCount
                  : n),
              (c.animating = !0),
              c.$slider.trigger("beforeChange", [c, c.currentSlide, i]),
              (s = c.currentSlide),
              (c.currentSlide = i),
              c.setSlideClasses(c.currentSlide),
              c.options.asNavFor &&
                (l = (l = c.getNavTarget()).slick("getSlick")).slideCount <=
                  l.options.slidesToShow &&
                l.setSlideClasses(c.currentSlide),
              c.updateDots(),
              c.updateArrows(),
              !0 === c.options.fade)
            )
              return (
                !0 !== o
                  ? (c.fadeSlideOut(s),
                    c.fadeSlide(i, function () {
                      c.postSlide(i);
                    }))
                  : c.postSlide(i),
                void c.animateHeight()
              );
            !0 !== o
              ? c.animateSlide(a, function () {
                  c.postSlide(i);
                })
              : c.postSlide(i);
          }
      }),
      (r.prototype.startLoad = function () {
        var e = this;
        !0 === e.options.arrows &&
          e.slideCount > e.options.slidesToShow &&
          (e.$prevArrow.hide(), e.$nextArrow.hide()),
          !0 === e.options.dots &&
            e.slideCount > e.options.slidesToShow &&
            e.$dots.hide(),
          e.$slider.addClass("slick-loading");
      }),
      (r.prototype.swipeDirection = function () {
        var e = this,
          t = e.touchObject.startX - e.touchObject.curX,
          o = e.touchObject.startY - e.touchObject.curY,
          n = Math.atan2(o, t),
          i = Math.round((180 * n) / Math.PI);
        return (
          i < 0 && (i = 360 - Math.abs(i)),
          (i <= 45 && 0 <= i) || (i <= 360 && 315 <= i)
            ? !1 === e.options.rtl
              ? "left"
              : "right"
            : 135 <= i && i <= 225
            ? !1 === e.options.rtl
              ? "right"
              : "left"
            : !0 === e.options.verticalSwiping
            ? 35 <= i && i <= 135
              ? "down"
              : "up"
            : "vertical"
        );
      }),
      (r.prototype.swipeEnd = function (e) {
        var t,
          o,
          n = this;
        if (
          ((n.dragging = !1),
          (n.interrupted = !1),
          (n.shouldClick = !(10 < n.touchObject.swipeLength)),
          void 0 === n.touchObject.curX)
        )
          return !1;
        if (
          (!0 === n.touchObject.edgeHit &&
            n.$slider.trigger("edge", [n, n.swipeDirection()]),
          n.touchObject.swipeLength >= n.touchObject.minSwipe)
        ) {
          switch ((o = n.swipeDirection())) {
            case "left":
            case "down":
              (t = n.options.swipeToSlide
                ? n.checkNavigable(n.currentSlide + n.getSlideCount())
                : n.currentSlide + n.getSlideCount()),
                (n.currentDirection = 0);
              break;
            case "right":
            case "up":
              (t = n.options.swipeToSlide
                ? n.checkNavigable(n.currentSlide - n.getSlideCount())
                : n.currentSlide - n.getSlideCount()),
                (n.currentDirection = 1);
          }
          "vertical" != o &&
            (n.slideHandler(t),
            (n.touchObject = {}),
            n.$slider.trigger("swipe", [n, o]));
        } else
          n.touchObject.startX !== n.touchObject.curX &&
            (n.slideHandler(n.currentSlide), (n.touchObject = {}));
      }),
      (r.prototype.swipeHandler = function (e) {
        var t = this;
        if (
          !(
            !1 === t.options.swipe ||
            ("ontouchend" in document && !1 === t.options.swipe) ||
            (!1 === t.options.draggable && -1 !== e.type.indexOf("mouse"))
          )
        )
          switch (
            ((t.touchObject.fingerCount =
              e.originalEvent && void 0 !== e.originalEvent.touches
                ? e.originalEvent.touches.length
                : 1),
            (t.touchObject.minSwipe = t.listWidth / t.options.touchThreshold),
            !0 === t.options.verticalSwiping &&
              (t.touchObject.minSwipe =
                t.listHeight / t.options.touchThreshold),
            e.data.action)
          ) {
            case "start":
              t.swipeStart(e);
              break;
            case "move":
              t.swipeMove(e);
              break;
            case "end":
              t.swipeEnd(e);
          }
      }),
      (r.prototype.swipeMove = function (e) {
        var t,
          o,
          n,
          i,
          s = this,
          r = void 0 !== e.originalEvent ? e.originalEvent.touches : null;
        return (
          !(!s.dragging || (r && 1 !== r.length)) &&
          ((t = s.getLeft(s.currentSlide)),
          (s.touchObject.curX = void 0 !== r ? r[0].pageX : e.clientX),
          (s.touchObject.curY = void 0 !== r ? r[0].pageY : e.clientY),
          (s.touchObject.swipeLength = Math.round(
            Math.sqrt(Math.pow(s.touchObject.curX - s.touchObject.startX, 2))
          )),
          !0 === s.options.verticalSwiping &&
            (s.touchObject.swipeLength = Math.round(
              Math.sqrt(Math.pow(s.touchObject.curY - s.touchObject.startY, 2))
            )),
          "vertical" !== (o = s.swipeDirection())
            ? (void 0 !== e.originalEvent &&
                4 < s.touchObject.swipeLength &&
                e.preventDefault(),
              (i =
                (!1 === s.options.rtl ? 1 : -1) *
                (s.touchObject.curX > s.touchObject.startX ? 1 : -1)),
              !0 === s.options.verticalSwiping &&
                (i = s.touchObject.curY > s.touchObject.startY ? 1 : -1),
              (n = s.touchObject.swipeLength),
              (s.touchObject.edgeHit = !1) === s.options.infinite &&
                ((0 === s.currentSlide && "right" === o) ||
                  (s.currentSlide >= s.getDotCount() && "left" === o)) &&
                ((n = s.touchObject.swipeLength * s.options.edgeFriction),
                (s.touchObject.edgeHit = !0)),
              !1 === s.options.vertical
                ? (s.swipeLeft = t + n * i)
                : (s.swipeLeft = t + n * (s.$list.height() / s.listWidth) * i),
              !0 === s.options.verticalSwiping && (s.swipeLeft = t + n * i),
              !0 !== s.options.fade &&
                !1 !== s.options.touchMove &&
                (!0 === s.animating
                  ? ((s.swipeLeft = null), !1)
                  : void s.setCSS(s.swipeLeft)))
            : void 0)
        );
      }),
      (r.prototype.swipeStart = function (e) {
        var t,
          o = this;
        if (
          ((o.interrupted = !0),
          1 !== o.touchObject.fingerCount ||
            o.slideCount <= o.options.slidesToShow)
        )
          return !(o.touchObject = {});
        void 0 !== e.originalEvent &&
          void 0 !== e.originalEvent.touches &&
          (t = e.originalEvent.touches[0]),
          (o.touchObject.startX = o.touchObject.curX =
            void 0 !== t ? t.pageX : e.clientX),
          (o.touchObject.startY = o.touchObject.curY =
            void 0 !== t ? t.pageY : e.clientY),
          (o.dragging = !0);
      }),
      (r.prototype.unfilterSlides = r.prototype.slickUnfilter =
        function () {
          var e = this;
          null !== e.$slidesCache &&
            (e.unload(),
            e.$slideTrack.children(this.options.slide).detach(),
            e.$slidesCache.appendTo(e.$slideTrack),
            e.reinit());
        }),
      (r.prototype.unload = function () {
        var e = this;
        c(".slick-cloned", e.$slider).remove(),
          e.$dots && e.$dots.remove(),
          e.$prevArrow &&
            e.htmlExpr.test(e.options.prevArrow) &&
            e.$prevArrow.remove(),
          e.$nextArrow &&
            e.htmlExpr.test(e.options.nextArrow) &&
            e.$nextArrow.remove(),
          e.$slides
            .removeClass("slick-slide slick-active slick-visible slick-current")
            .attr("aria-hidden", "true")
            .css("width", "");
      }),
      (r.prototype.unslick = function (e) {
        this.$slider.trigger("unslick", [this, e]), this.destroy();
      }),
      (r.prototype.updateArrows = function () {
        var e = this;
        Math.floor(e.options.slidesToShow / 2);
        !0 === e.options.arrows &&
          e.slideCount > e.options.slidesToShow &&
          !e.options.infinite &&
          (e.$prevArrow
            .removeClass("slick-disabled")
            .attr("aria-disabled", "false"),
          e.$nextArrow
            .removeClass("slick-disabled")
            .attr("aria-disabled", "false"),
          0 === e.currentSlide
            ? (e.$prevArrow
                .addClass("slick-disabled")
                .attr("aria-disabled", "true"),
              e.$nextArrow
                .removeClass("slick-disabled")
                .attr("aria-disabled", "false"))
            : ((e.currentSlide >= e.slideCount - e.options.slidesToShow &&
                !1 === e.options.centerMode) ||
                (e.currentSlide >= e.slideCount - 1 &&
                  !0 === e.options.centerMode)) &&
              (e.$nextArrow
                .addClass("slick-disabled")
                .attr("aria-disabled", "true"),
              e.$prevArrow
                .removeClass("slick-disabled")
                .attr("aria-disabled", "false")));
      }),
      (r.prototype.updateDots = function () {
        var e = this;
        null !== e.$dots &&
          (e.$dots
            .find("li")
            .removeClass("slick-active")
            .attr("aria-hidden", "true"),
          e.$dots
            .find("li")
            .eq(Math.floor(e.currentSlide / e.options.slidesToScroll))
            .addClass("slick-active")
            .attr("aria-hidden", "false"));
      }),
      (r.prototype.visibility = function () {
        this.options.autoplay &&
          (document[this.hidden]
            ? (this.interrupted = !0)
            : (this.interrupted = !1));
      }),
      (c.fn.slick = function () {
        for (
          var e,
            t = this,
            o = arguments[0],
            n = Array.prototype.slice.call(arguments, 1),
            i = t.length,
            s = 0;
          s < i;
          s++
        )
          if (
            ("object" == typeof o || void 0 === o
              ? (t[s].slick = new r(t[s], o))
              : (e = t[s].slick[o].apply(t[s].slick, n)),
            void 0 !== e)
          )
            return e;
        return t;
      });
  }),
  (function (N, p) {
    "use strict";
    function r(w, b, x, e, t) {
      function o() {
        var i, s, r, a;
        (W = 1 < N.devicePixelRatio),
          n(x),
          0 <= b.delay &&
            setTimeout(function () {
              l(!0);
            }, b.delay),
          (b.delay < 0 || b.combined) &&
            ((e.e =
              ((i = b.throttle),
              (s = function (e) {
                "resize" === e.type && (z = E = -1), l(e.all);
              }),
              (a = 0),
              function (e, t) {
                function o() {
                  (a = +new Date()), s.call(w, e);
                }
                var n = new Date() - a;
                r && clearTimeout(r),
                  i < n || !b.enableThrottle || t
                    ? o()
                    : (r = setTimeout(o, i - n));
              })),
            (e.a = function (e) {
              n(e), x.push.apply(x, e);
            }),
            (e.g = function () {
              return (x = M(x).filter(function () {
                return !M(this).data(b.loadedName);
              }));
            }),
            (e.f = function (e) {
              for (var t = 0; t < e.length; t++) {
                var o = x.filter(e[t]);
                o.length && l(!1, o);
              }
            }),
            l(),
            M(b.appendScroll).on("scroll." + t + " resize." + t, e.e));
      }
      function n(e) {
        for (
          var t = b.defaultImage,
            o = b.placeholder,
            n = b.imageBase,
            i = b.srcsetAttribute,
            s = b.loaderAttribute,
            r = b._f || {},
            a = 0,
            l = (e = M(e)
              .filter(function () {
                var e = M(this),
                  t = k(this);
                return (
                  !e.data(b.handledName) &&
                  (e.attr(b.attribute) || e.attr(i) || e.attr(s) || r[t] !== p)
                );
              })
              .data("plugin_" + b.name, w)).length;
          a < l;
          a++
        ) {
          var c = M(e[a]),
            d = k(e[a]),
            u = c.attr(b.imageBaseAttribute) || n;
          d == F &&
            u &&
            c.attr(i) &&
            c.attr(
              i,
              (function (e, t) {
                if (t) {
                  var o = e.split(",");
                  e = "";
                  for (var n = 0, i = o.length; n < i; n++)
                    e += t + o[n].trim() + (n !== i - 1 ? "," : "");
                }
                return e;
              })(c.attr(i), u)
            ),
            r[d] === p || c.attr(s) || c.attr(s, r[d]),
            d == F && t && !c.attr(O)
              ? c.attr(O, t)
              : d == F ||
                !o ||
                (c.css(I) && "none" != c.css(I)) ||
                c.css(I, "url('" + o + "')");
        }
      }
      function l(e, t) {
        if (!x.length) return b.autoDestroy && w.destroy(), 0;
        for (
          var o,
            n,
            i,
            s,
            r,
            a,
            l,
            c,
            d,
            u,
            p,
            h = t || x,
            f = !1,
            m = b.imageBase || "",
            g = b.srcsetAttribute,
            v = b.handledName,
            y = 0;
          y < h.length;
          y++
        ) {
          (e ||
            t ||
            ((a = h[y]),
            (d = void 0),
            (l = a.getBoundingClientRect()),
            (c = b.scrollDirection),
            (d = b.threshold),
            (u =
              (0 <= E ? E : (E = M(N).height())) + d > l.top && -d < l.bottom),
            (p =
              (0 <= z ? z : (z = M(N).width())) + d > l.left && -d < l.right),
            "vertical" == c ? u : ("horizontal" == c || u) && p)) &&
            ((o = M(h[y])),
            (n = k(h[y])),
            (i = o.attr(b.attribute)),
            (s = o.attr(b.imageBaseAttribute) || m),
            (r = o.attr(b.loaderAttribute)),
            o.data(v) ||
              (b.visibleOnly && !o.is(":visible")) ||
              !(
                ((i || o.attr(g)) &&
                  ((n == F && (s + i != o.attr(O) || o.attr(g) != o.attr(H))) ||
                    (n != F && s + i != o.css(I)))) ||
                r
              ) ||
              ((f = !0),
              o.data(v, !0),
              (function (t, e, o, n) {
                ++S;
                var i = function () {
                  C("onError", t), T(), (i = M.noop);
                };
                C("beforeLoad", t);
                var s = b.attribute,
                  r = b.srcsetAttribute,
                  a = b.sizesAttribute,
                  l = b.retinaAttribute,
                  c = b.removeAttribute,
                  d = b.loadedName,
                  u = t.attr(l);
                {
                  var p, h, f;
                  n
                    ? ((p = function () {
                        c && t.removeAttr(b.loaderAttribute),
                          t.data(d, !0),
                          C(L, t),
                          setTimeout(T, 1),
                          (p = M.noop);
                      }),
                      t.off($).one($, i).one(A, p),
                      C(n, t, function (e) {
                        e ? (t.off(A), p()) : (t.off($), i());
                      }) || t.trigger($))
                    : ((h = M(new Image())).one($, i).one(A, function () {
                        t.hide(),
                          e == F
                            ? t
                                .attr(D, h.attr(D))
                                .attr(H, h.attr(H))
                                .attr(O, h.attr(O))
                            : t.css(I, "url('" + h.attr(O) + "')"),
                          t[b.effect](b.effectTime),
                          c &&
                            (t.removeAttr(
                              s + " " + r + " " + l + " " + b.imageBaseAttribute
                            ),
                            a !== D && t.removeAttr(a)),
                          t.data(d, !0),
                          C(L, t),
                          h.remove(),
                          T();
                      }),
                      (f = (W && u ? u : t.attr(s)) || ""),
                      h
                        .attr(D, t.attr(a))
                        .attr(H, t.attr(r))
                        .attr(O, f ? o + f : null),
                      h.complete && h.trigger(A));
                }
              })(o, n, s, r)));
        }
        f &&
          (x = M(x).filter(function () {
            return !M(this).data(v);
          }));
      }
      function k(e) {
        return e.tagName.toLowerCase();
      }
      function T() {
        --S, x.length || S || C("onFinishedAll");
      }
      function C(e, t, o) {
        return !!(e = b[e]) && (e.apply(w, [].slice.call(arguments, 1)), !0);
      }
      var S = 0,
        z = -1,
        E = -1,
        W = !1,
        L = "afterLoad",
        A = "load",
        $ = "error",
        F = "img",
        O = "src",
        H = "srcset",
        D = "sizes",
        I = "background-image";
      "event" == b.bind || i ? o() : M(N).on(A + "." + t, o);
    }
    function c(e, t) {
      var o = this,
        n = M.extend({}, o.config, t),
        i = {},
        s = n.name + "-" + ++a;
      return (
        (o.config = function (e, t) {
          return t === p ? n[e] : ((n[e] = t), o);
        }),
        (o.addItems = function (e) {
          return i.a && i.a("string" === M.type(e) ? M(e) : e), o;
        }),
        (o.getItems = function () {
          return i.g ? i.g() : {};
        }),
        (o.update = function (e) {
          return i.e && i.e({}, !e), o;
        }),
        (o.force = function (e) {
          return i.f && i.f("string" === M.type(e) ? M(e) : e), o;
        }),
        (o.loadAll = function () {
          return i.e && i.e({ all: !0 }, !0), o;
        }),
        (o.destroy = function () {
          return (
            M(n.appendScroll).off("." + s, i.e), M(N).off("." + s), (i = {}), p
          );
        }),
        r(o, n, e, i, s),
        n.chainable ? e : o
      );
    }
    var M = N.jQuery || N.Zepto,
      a = 0,
      i = !1;
    (M.fn.Lazy = M.fn.lazy =
      function (e) {
        return new c(this, e);
      }),
      (M.Lazy = M.lazy =
        function (e, t, o) {
          if ((M.isFunction(t) && ((o = t), (t = [])), M.isFunction(o))) {
            (e = M.isArray(e) ? e : [e]), (t = M.isArray(t) ? t : [t]);
            for (
              var n = c.prototype.config,
                i = n._f || (n._f = {}),
                s = 0,
                r = e.length;
              s < r;
              s++
            )
              (n[e[s]] !== p && !M.isFunction(n[e[s]])) || (n[e[s]] = o);
            for (var a = 0, l = t.length; a < l; a++) i[t[a]] = e[0];
          }
        }),
      (c.prototype.config = {
        name: "lazy",
        chainable: !0,
        autoDestroy: !0,
        bind: "load",
        threshold: 500,
        visibleOnly: !1,
        appendScroll: N,
        scrollDirection: "both",
        imageBase: null,
        defaultImage:
          "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",
        placeholder: null,
        delay: -1,
        combined: !1,
        attribute: "data-src",
        srcsetAttribute: "data-srcset",
        sizesAttribute: "data-sizes",
        retinaAttribute: "data-retina",
        loaderAttribute: "data-loader",
        imageBaseAttribute: "data-imagebase",
        removeAttribute: !0,
        handledName: "handled",
        loadedName: "loaded",
        effect: "show",
        effectTime: 0,
        enableThrottle: !0,
        throttle: 250,
        beforeLoad: p,
        afterLoad: p,
        onError: p,
        onFinishedAll: p,
      }),
      M(N).on("load", function () {
        i = !0;
      });
  })(window),
  (function (i) {
    function o(t, o, n, e) {
      i.ajax({
        url: o.attr("data-src"),
        type: e || "get",
        dataType: o.attr("data-type") || "html",
        success: function (e) {
          o.html(e),
            n(!0),
            t.config("removeAttribute") &&
              o.removeAttr("data-src data-method data-type");
        },
        error: function () {
          n(!1);
        },
      });
    }
    i.lazy("ajax", function (e, t) {
      o(this, e, t, e.attr("data-method"));
    }),
      i.lazy("get", function (e, t) {
        o(this, e, t, "get");
      }),
      i.lazy("post", function (e, t) {
        o(this, e, t, "post");
      });
  })(window.jQuery || window.Zepto),
  (function (c) {
    c.lazy(["av", "audio", "video"], ["audio", "video"], function (n, e) {
      var i,
        t,
        o,
        s,
        r,
        a,
        l = n[0].tagName.toLowerCase();
      "audio" == l || "video" == l
        ? ((i = "data-src"),
          (t = n.find(i)),
          (o = n.find("data-track")),
          (s = 0),
          (r = function () {
            ++s == t.length && e(!1);
          }),
          (a = function () {
            var e = c(this),
              t = e[0].tagName.toLowerCase(),
              o = e.prop("attributes"),
              n = c(t == i ? "<source>" : "<track>");
            t == i && n.one("error", r),
              c.each(o, function (e, t) {
                n.attr(t.name, t.value);
              }),
              e.replaceWith(n);
          }),
          n
            .one("loadedmetadata", function () {
              e(!0);
            })
            .off("load error")
            .attr("poster", n.attr("data-poster")),
          t.length
            ? t.each(a)
            : n.attr(i)
            ? (c.each(n.attr(i).split(","), function (e, t) {
                var o = t.split("|");
                n.append(
                  c("<source>")
                    .one("error", r)
                    .attr({ src: o[0].trim(), type: o[1].trim() })
                );
              }),
              this.config("removeAttribute") && n.removeAttr(i))
            : e(!1),
          o.length && o.each(a))
        : e(!1);
    });
  })(window.jQuery || window.Zepto),
  (function (r) {
    r.lazy(["frame", "iframe"], "iframe", function (t, e) {
      var o,
        n,
        i,
        s = this;
      "iframe" == t[0].tagName.toLowerCase()
        ? ((o = "data-src"),
          (n = "data-error-detect"),
          "true" != (i = t.attr(n)) && "1" != i
            ? (t.attr("src", t.attr(o)),
              s.config("removeAttribute") && t.removeAttr(o + " " + n))
            : r.ajax({
                url: t.attr(o),
                dataType: "html",
                crossDomain: !0,
                xhrFields: { withCredentials: !0 },
                success: function (e) {
                  t.html(e).attr("src", t.attr(o)),
                    s.config("removeAttribute") && t.removeAttr(o + " " + n);
                },
                error: function () {
                  e(!1);
                },
              }))
        : e(!1);
    });
  })(window.jQuery || window.Zepto),
  (function (e) {
    e.lazy("noop", function () {}),
      e.lazy("noop-success", function (e, t) {
        t(!0);
      }),
      e.lazy("noop-error", function (e, t) {
        t(!1);
      });
  })(window.jQuery || window.Zepto),
  (function (c) {
    function d(e, t) {
      var o = e.prop("attributes"),
        n = c("<" + t + ">");
      return (
        c.each(o, function (e, t) {
          n.attr(t.name, t.value);
        }),
        e.replaceWith(n),
        n
      );
    }
    function u(e, t, o) {
      var n = c("<img>")
        .one("load", function () {
          o(!0);
        })
        .one("error", function () {
          o(!1);
        })
        .appendTo(e)
        .attr("src", t);
      n.complete && n.load();
    }
    c.lazy(["pic", "picture"], ["picture"], function (e, t) {
      var o, n, i, s, r, a, l;
      "picture" == e[0].tagName.toLowerCase()
        ? ((o = "data-src"),
          (n = "data-srcset"),
          (i = "data-media"),
          (s = "data-sizes"),
          (r = "data-type"),
          (a = e.find(o)),
          (l = e.find("data-img")),
          a.length
            ? (a.each(function () {
                d(c(this), "source");
              }),
              1 == l.length
                ? ((l = d(l, "img"))
                    .on("load", function () {
                      t(!0);
                    })
                    .on("error", function () {
                      t(!1);
                    }),
                  l.attr("src", l.attr(o)),
                  this.config("removeAttribute") && l.removeAttr(o))
                : e.attr(o)
                ? (u(e, e.attr(o), t),
                  this.config("removeAttribute") && e.removeAttr(o))
                : t(!1))
            : e.attr(n)
            ? (c("<source>")
                .attr({
                  media: e.attr(i),
                  sizes: e.attr(s),
                  type: e.attr(r),
                  srcset: e.attr(n),
                })
                .appendTo(e),
              u(e, e.attr(o), t),
              this.config("removeAttribute") &&
                e.removeAttr(o + " " + n + " " + i + " " + s + " " + r))
            : t(!1))
        : t(!1);
    });
  })(window.jQuery || window.Zepto),
  (window.jQuery || window.Zepto).lazy(
    ["js", "javascript", "script"],
    "script",
    function (e, t) {
      "script" == e[0].tagName.toLowerCase()
        ? (e.attr("src", e.attr("data-src")),
          this.config("removeAttribute") && e.removeAttr("data-src"))
        : t(!1);
    }
  ),
  (window.jQuery || window.Zepto).lazy("vimeo", function (e, t) {
    "iframe" == e[0].tagName.toLowerCase()
      ? (e.attr("src", "https://player.vimeo.com/video/" + e.attr("data-src")),
        this.config("removeAttribute") && e.removeAttr("data-src"))
      : t(!1);
  }),
  (window.jQuery || window.Zepto).lazy(["yt", "youtube"], function (e, t) {
    "iframe" == e[0].tagName.toLowerCase()
      ? (e.attr(
          "src",
          "https://www.youtube.com/embed/" +
            e.attr("data-src") +
            "?rel=0&amp;showinfo=0"
        ),
        this.config("removeAttribute") && e.removeAttr("data-src"))
      : t(!1);
  }),
  (function (i, o, H, p) {
    "use strict";
    function h(e) {
      return e && e.hasOwnProperty && e instanceof H;
    }
    function f(e) {
      return e && "string" === H.type(e);
    }
    function D(e) {
      return f(e) && 0 < e.indexOf("%");
    }
    function I(e, t) {
      var o = parseInt(e, 10) || 0;
      return t && D(e) && (o = (M.getViewport()[t] / 100) * o), Math.ceil(o);
    }
    function N(e, t) {
      return I(e, t) + "px";
    }
    var s = H("html"),
      n = H(i),
      c = H(o),
      M = (H.fancybox = function () {
        M.open.apply(this, arguments);
      }),
      r = navigator.userAgent.match(/msie/i),
      a = null,
      d = o.createTouch !== p;
    H.extend(M, {
      version: "2.1.5",
      defaults: {
        padding: 15,
        margin: 20,
        width: 800,
        height: 600,
        minWidth: 100,
        minHeight: 100,
        maxWidth: 9999,
        maxHeight: 9999,
        pixelRatio: 1,
        autoSize: !0,
        autoHeight: !1,
        autoWidth: !1,
        autoResize: !0,
        autoCenter: !d,
        fitToView: !0,
        aspectRatio: !1,
        topRatio: 0.5,
        leftRatio: 0.5,
        scrolling: "auto",
        wrapCSS: "",
        arrows: !0,
        closeBtn: !0,
        closeClick: !1,
        nextClick: !1,
        mouseWheel: !0,
        autoPlay: !1,
        playSpeed: 3e3,
        preload: 3,
        modal: !1,
        loop: !0,
        ajax: { dataType: "html", headers: { "X-fancyBox": !0 } },
        iframe: { scrolling: "auto", preload: !0 },
        swf: {
          wmode: "transparent",
          allowfullscreen: "true",
          allowscriptaccess: "always",
        },
        keys: {
          next: { 13: "left", 34: "up", 39: "left", 40: "up" },
          prev: { 8: "right", 33: "down", 37: "right", 38: "down" },
          close: [27],
          play: [32],
          toggle: [70],
        },
        direction: { next: "left", prev: "right" },
        scrollOutside: !0,
        index: 0,
        type: null,
        href: null,
        content: null,
        title: null,
        tpl: {
          wrap: '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
          image: '<img class="fancybox-image" src="{href}" alt="" />',
          iframe:
            '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' +
            (r ? ' allowtransparency="true"' : "") +
            "></iframe>",
          error:
            '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
          closeBtn:
            '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',
          next: '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
          prev: '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>',
          loading: '<div id="fancybox-loading"><div></div></div>',
        },
        openEffect: "fade",
        openSpeed: 250,
        openEasing: "swing",
        openOpacity: !0,
        openMethod: "zoomIn",
        closeEffect: "fade",
        closeSpeed: 250,
        closeEasing: "swing",
        closeOpacity: !0,
        closeMethod: "zoomOut",
        nextEffect: "elastic",
        nextSpeed: 250,
        nextEasing: "swing",
        nextMethod: "changeIn",
        prevEffect: "elastic",
        prevSpeed: 250,
        prevEasing: "swing",
        prevMethod: "changeOut",
        helpers: { overlay: !0, title: !0 },
        onCancel: H.noop,
        beforeLoad: H.noop,
        afterLoad: H.noop,
        beforeShow: H.noop,
        afterShow: H.noop,
        beforeChange: H.noop,
        beforeClose: H.noop,
        afterClose: H.noop,
      },
      group: {},
      opts: {},
      previous: null,
      coming: null,
      current: null,
      isActive: !1,
      isOpen: !1,
      isOpened: !1,
      wrap: null,
      skin: null,
      outer: null,
      inner: null,
      player: { timer: null, isActive: !1 },
      ajaxLoad: null,
      imgPreload: null,
      transitions: {},
      helpers: {},
      open: function (d, u) {
        if (d && (H.isPlainObject(u) || (u = {}), !1 !== M.close(!0)))
          return (
            H.isArray(d) || (d = h(d) ? H(d).get() : [d]),
            H.each(d, function (e, t) {
              var o,
                n,
                i,
                s,
                r,
                a,
                l,
                c = {};
              "object" === H.type(t) &&
                (t.nodeType && (t = H(t)),
                h(t)
                  ? ((c = {
                      href: t.data("fancybox-href") || t.attr("href"),
                      title: H("<div/>")
                        .text(t.data("fancybox-title") || t.attr("title") || "")
                        .html(),
                      isDom: !0,
                      element: t,
                    }),
                    H.metadata && H.extend(!0, c, t.metadata()))
                  : (c = t)),
                (o = u.href || c.href || (f(t) ? t : null)),
                (n = u.title !== p ? u.title : c.title || ""),
                !(s = (i = u.content || c.content)
                  ? "html"
                  : u.type || c.type) &&
                  c.isDom &&
                  (s =
                    (s = t.data("fancybox-type")) ||
                    ((r = t.prop("class").match(/fancybox\.(\w+)/))
                      ? r[1]
                      : null)),
                f(o) &&
                  (s ||
                    (M.isImage(o)
                      ? (s = "image")
                      : M.isSWF(o)
                      ? (s = "swf")
                      : "#" === o.charAt(0)
                      ? (s = "inline")
                      : f(t) && ((s = "html"), (i = t))),
                  "ajax" === s &&
                    ((o = (a = o.split(/\s+/, 2)).shift()), (l = a.shift()))),
                i ||
                  ("inline" === s
                    ? o
                      ? (i = H(f(o) ? o.replace(/.*(?=#[^\s]+$)/, "") : o))
                      : c.isDom && (i = t)
                    : "html" === s
                    ? (i = o)
                    : s || o || !c.isDom || ((s = "inline"), (i = t))),
                H.extend(c, {
                  href: o,
                  type: s,
                  content: i,
                  title: n,
                  selector: l,
                }),
                (d[e] = c);
            }),
            (M.opts = H.extend(!0, {}, M.defaults, u)),
            u.keys !== p &&
              (M.opts.keys = !!u.keys && H.extend({}, M.defaults.keys, u.keys)),
            (M.group = d),
            M._start(M.opts.index)
          );
      },
      cancel: function () {
        var e = M.coming;
        (e && !1 === M.trigger("onCancel")) ||
          (M.hideLoading(),
          e &&
            (M.ajaxLoad && M.ajaxLoad.abort(),
            (M.ajaxLoad = null),
            M.imgPreload && (M.imgPreload.onload = M.imgPreload.onerror = null),
            e.wrap && e.wrap.stop(!0, !0).trigger("onReset").remove(),
            (M.coming = null),
            M.current || M._afterZoomOut(e)));
      },
      close: function (e) {
        M.cancel(),
          !1 !== M.trigger("beforeClose") &&
            (M.unbindEvents(),
            M.isActive &&
              (M.isOpen && !0 !== e
                ? ((M.isOpen = M.isOpened = !1),
                  (M.isClosing = !0),
                  H(".fancybox-item, .fancybox-nav").remove(),
                  M.wrap.stop(!0, !0).removeClass("fancybox-opened"),
                  M.transitions[M.current.closeMethod]())
                : (H(".fancybox-wrap").stop(!0).trigger("onReset").remove(),
                  M._afterZoomOut())));
      },
      play: function (e) {
        function t() {
          clearTimeout(M.player.timer);
        }
        function o() {
          t(),
            M.current &&
              M.player.isActive &&
              (M.player.timer = setTimeout(M.next, M.current.playSpeed));
        }
        function n() {
          t(),
            c.unbind(".player"),
            (M.player.isActive = !1),
            M.trigger("onPlayEnd");
        }
        !0 === e || (!M.player.isActive && !1 !== e)
          ? M.current &&
            (M.current.loop || M.current.index < M.group.length - 1) &&
            ((M.player.isActive = !0),
            c.bind({
              "onCancel.player beforeClose.player": n,
              "onUpdate.player": o,
              "beforeLoad.player": t,
            }),
            o(),
            M.trigger("onPlayStart"))
          : n();
      },
      next: function (e) {
        var t = M.current;
        t && (f(e) || (e = t.direction.next), M.jumpto(t.index + 1, e, "next"));
      },
      prev: function (e) {
        var t = M.current;
        t && (f(e) || (e = t.direction.prev), M.jumpto(t.index - 1, e, "prev"));
      },
      jumpto: function (e, t, o) {
        var n = M.current;
        n &&
          ((e = I(e)),
          (M.direction = t || n.direction[e >= n.index ? "next" : "prev"]),
          (M.router = o || "jumpto"),
          n.loop &&
            (e < 0 && (e = n.group.length + (e % n.group.length)),
            (e %= n.group.length)),
          n.group[e] !== p && (M.cancel(), M._start(e)));
      },
      reposition: function (e, t) {
        var o,
          n = M.current,
          i = n ? n.wrap : null;
        i &&
          ((o = M._getPosition(t)),
          e && "scroll" === e.type
            ? (delete o.position, i.stop(!0, !0).animate(o, 200))
            : (i.css(o), (n.pos = H.extend({}, n.dim, o))));
      },
      update: function (t) {
        var o = t && t.originalEvent && t.originalEvent.type,
          n = !o || "orientationchange" === o;
        n && (clearTimeout(a), (a = null)),
          M.isOpen &&
            !a &&
            (a = setTimeout(
              function () {
                var e = M.current;
                e &&
                  !M.isClosing &&
                  (M.wrap.removeClass("fancybox-tmp"),
                  (n || "load" === o || ("resize" === o && e.autoResize)) &&
                    M._setDimension(),
                  ("scroll" === o && e.canShrink) || M.reposition(t),
                  M.trigger("onUpdate"),
                  (a = null));
              },
              n && !d ? 0 : 300
            ));
      },
      toggle: function (e) {
        M.isOpen &&
          ((M.current.fitToView =
            "boolean" === H.type(e) ? e : !M.current.fitToView),
          d &&
            (M.wrap.removeAttr("style").addClass("fancybox-tmp"),
            M.trigger("onUpdate")),
          M.update());
      },
      hideLoading: function () {
        c.unbind(".loading"), H("#fancybox-loading").remove();
      },
      showLoading: function () {
        var e, t;
        M.hideLoading(),
          (e = H(M.opts.tpl.loading).click(M.cancel).appendTo("body")),
          c.bind("keydown.loading", function (e) {
            27 === (e.which || e.keyCode) && (e.preventDefault(), M.cancel());
          }),
          M.defaults.fixed ||
            ((t = M.getViewport()),
            e.css({
              position: "absolute",
              top: 0.5 * t.h + t.y,
              left: 0.5 * t.w + t.x,
            })),
          M.trigger("onLoading");
      },
      getViewport: function () {
        var e = (M.current && M.current.locked) || !1,
          t = { x: n.scrollLeft(), y: n.scrollTop() };
        return (
          e && e.length
            ? ((t.w = e[0].clientWidth), (t.h = e[0].clientHeight))
            : ((t.w = d && i.innerWidth ? i.innerWidth : n.width()),
              (t.h = d && i.innerHeight ? i.innerHeight : n.height())),
          t
        );
      },
      unbindEvents: function () {
        M.wrap && h(M.wrap) && M.wrap.unbind(".fb"),
          c.unbind(".fb"),
          n.unbind(".fb");
      },
      bindEvents: function () {
        var t,
          l = M.current;
        l &&
          (n.bind(
            "orientationchange.fb" +
              (d ? "" : " resize.fb") +
              (l.autoCenter && !l.locked ? " scroll.fb" : ""),
            M.update
          ),
          (t = l.keys) &&
            c.bind("keydown.fb", function (o) {
              var n = o.which || o.keyCode,
                e = o.target || o.srcElement;
              if (27 === n && M.coming) return !1;
              o.ctrlKey ||
                o.altKey ||
                o.shiftKey ||
                o.metaKey ||
                (e && (e.type || H(e).is("[contenteditable]"))) ||
                H.each(t, function (e, t) {
                  return 1 < l.group.length && t[n] !== p
                    ? (M[e](t[n]), o.preventDefault(), !1)
                    : -1 < H.inArray(n, t)
                    ? (M[e](), o.preventDefault(), !1)
                    : void 0;
                });
            }),
          H.fn.mousewheel &&
            l.mouseWheel &&
            M.wrap.bind("mousewheel.fb", function (e, t, o, n) {
              for (
                var i, s = e.target || null, r = H(s), a = !1;
                r.length &&
                !(a || r.is(".fancybox-skin") || r.is(".fancybox-wrap"));

              )
                (a =
                  (i = r[0]) &&
                  !(i.style.overflow && "hidden" === i.style.overflow) &&
                  ((i.clientWidth && i.scrollWidth > i.clientWidth) ||
                    (i.clientHeight && i.scrollHeight > i.clientHeight))),
                  (r = H(r).parent());
              0 === t ||
                a ||
                (1 < M.group.length &&
                  !l.canShrink &&
                  (0 < n || 0 < o
                    ? M.prev(0 < n ? "down" : "left")
                    : (n < 0 || o < 0) && M.next(n < 0 ? "up" : "right"),
                  e.preventDefault()));
            }));
      },
      trigger: function (o, e) {
        var t,
          n = e || M.coming || M.current;
        if (n) {
          if (
            (H.isFunction(n[o]) &&
              (t = n[o].apply(n, Array.prototype.slice.call(arguments, 1))),
            !1 === t)
          )
            return !1;
          n.helpers &&
            H.each(n.helpers, function (e, t) {
              t &&
                M.helpers[e] &&
                H.isFunction(M.helpers[e][o]) &&
                M.helpers[e][o](H.extend(!0, {}, M.helpers[e].defaults, t), n);
            });
        }
        c.trigger(o);
      },
      isImage: function (e) {
        return (
          f(e) &&
          e.match(
            /(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i
          )
        );
      },
      isSWF: function (e) {
        return f(e) && e.match(/\.(swf)((\?|#).*)?$/i);
      },
      _start: function (e) {
        var t,
          o,
          n,
          i,
          s,
          r = {};
        if (((e = I(e)), !(t = M.group[e] || null))) return !1;
        if (
          ((i = (r = H.extend(!0, {}, M.opts, t)).margin),
          (s = r.padding),
          "number" === H.type(i) && (r.margin = [i, i, i, i]),
          "number" === H.type(s) && (r.padding = [s, s, s, s]),
          r.modal &&
            H.extend(!0, r, {
              closeBtn: !1,
              closeClick: !1,
              nextClick: !1,
              arrows: !1,
              mouseWheel: !1,
              keys: null,
              helpers: { overlay: { closeClick: !1 } },
            }),
          r.autoSize && (r.autoWidth = r.autoHeight = !0),
          "auto" === r.width && (r.autoWidth = !0),
          "auto" === r.height && (r.autoHeight = !0),
          (r.group = M.group),
          (r.index = e),
          (M.coming = r),
          !1 !== M.trigger("beforeLoad"))
        ) {
          if (((n = r.type), (o = r.href), !n))
            return (
              (M.coming = null),
              !(!M.current || !M.router || "jumpto" === M.router) &&
                ((M.current.index = e), M[M.router](M.direction))
            );
          if (
            ((M.isActive = !0),
            ("image" !== n && "swf" !== n) ||
              ((r.autoHeight = r.autoWidth = !1), (r.scrolling = "visible")),
            "image" === n && (r.aspectRatio = !0),
            "iframe" === n && d && (r.scrolling = "scroll"),
            (r.wrap = H(r.tpl.wrap)
              .addClass(
                "fancybox-" +
                  (d ? "mobile" : "desktop") +
                  " fancybox-type-" +
                  n +
                  " fancybox-tmp " +
                  r.wrapCSS
              )
              .appendTo(r.parent || "body")),
            H.extend(r, {
              skin: H(".fancybox-skin", r.wrap),
              outer: H(".fancybox-outer", r.wrap),
              inner: H(".fancybox-inner", r.wrap),
            }),
            H.each(["Top", "Right", "Bottom", "Left"], function (e, t) {
              r.skin.css("padding" + t, N(r.padding[e]));
            }),
            M.trigger("onReady"),
            "inline" === n || "html" === n)
          ) {
            if (!r.content || !r.content.length) return M._error("content");
          } else if (!o) return M._error("href");
          "image" === n
            ? M._loadImage()
            : "ajax" === n
            ? M._loadAjax()
            : "iframe" === n
            ? M._loadIframe()
            : M._afterLoad();
        } else M.coming = null;
      },
      _error: function (e) {
        H.extend(M.coming, {
          type: "html",
          autoWidth: !0,
          autoHeight: !0,
          minWidth: 0,
          minHeight: 0,
          scrolling: "no",
          hasError: e,
          content: M.coming.tpl.error,
        }),
          M._afterLoad();
      },
      _loadImage: function () {
        var e = (M.imgPreload = new Image());
        (e.onload = function () {
          (this.onload = this.onerror = null),
            (M.coming.width = this.width / M.opts.pixelRatio),
            (M.coming.height = this.height / M.opts.pixelRatio),
            M._afterLoad();
        }),
          (e.onerror = function () {
            (this.onload = this.onerror = null), M._error("image");
          }),
          (e.src = M.coming.href),
          !0 !== e.complete && M.showLoading();
      },
      _loadAjax: function () {
        var o = M.coming;
        M.showLoading(),
          (M.ajaxLoad = H.ajax(
            H.extend({}, o.ajax, {
              url: o.href,
              error: function (e, t) {
                M.coming && "abort" !== t
                  ? M._error("ajax", e)
                  : M.hideLoading();
              },
              success: function (e, t) {
                "success" === t && ((o.content = e), M._afterLoad());
              },
            })
          ));
      },
      _loadIframe: function () {
        var e = M.coming,
          t = H(e.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
            .attr("scrolling", d ? "auto" : e.iframe.scrolling)
            .attr("src", e.href);
        H(e.wrap).bind("onReset", function () {
          try {
            H(this)
              .find("iframe")
              .hide()
              .attr("src", "//about:blank")
              .end()
              .empty();
          } catch (e) {}
        }),
          e.iframe.preload &&
            (M.showLoading(),
            t.one("load", function () {
              H(this).data("ready", 1),
                d || H(this).bind("load.fb", M.update),
                H(this)
                  .parents(".fancybox-wrap")
                  .width("100%")
                  .removeClass("fancybox-tmp")
                  .show(),
                M._afterLoad();
            })),
          (e.content = t.appendTo(e.inner)),
          e.iframe.preload || M._afterLoad();
      },
      _preloadImages: function () {
        for (
          var e,
            t = M.group,
            o = M.current,
            n = t.length,
            i = o.preload ? Math.min(o.preload, n - 1) : 0,
            s = 1;
          s <= i;
          s += 1
        )
          "image" === (e = t[(o.index + s) % n]).type &&
            e.href &&
            (new Image().src = e.href);
      },
      _afterLoad: function () {
        var e,
          o,
          t,
          n,
          i,
          s,
          r = M.coming,
          a = M.current,
          l = "fancybox-placeholder";
        if ((M.hideLoading(), r && !1 !== M.isActive)) {
          if (!1 === M.trigger("afterLoad", r, a))
            return (
              r.wrap.stop(!0).trigger("onReset").remove(),
              void (M.coming = null)
            );
          switch (
            (a &&
              (M.trigger("beforeChange", a),
              a.wrap
                .stop(!0)
                .removeClass("fancybox-opened")
                .find(".fancybox-item, .fancybox-nav")
                .remove()),
            M.unbindEvents(),
            (o = (e = r).content),
            (t = r.type),
            (n = r.scrolling),
            H.extend(M, {
              wrap: e.wrap,
              skin: e.skin,
              outer: e.outer,
              inner: e.inner,
              current: e,
              previous: a,
            }),
            (i = e.href),
            t)
          ) {
            case "inline":
            case "ajax":
            case "html":
              e.selector
                ? (o = H("<div>").html(o).find(e.selector))
                : h(o) &&
                  (o.data(l) ||
                    o.data(
                      l,
                      H('<div class="' + l + '"></div>')
                        .insertAfter(o)
                        .hide()
                    ),
                  (o = o.show().detach()),
                  e.wrap.bind("onReset", function () {
                    H(this).find(o).length &&
                      o.hide().replaceAll(o.data(l)).data(l, !1);
                  }));
              break;
            case "image":
              o = e.tpl.image.replace(/\{href\}/g, i);
              break;
            case "swf":
              (o =
                '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' +
                i +
                '"></param>'),
                (s = ""),
                H.each(e.swf, function (e, t) {
                  (o += '<param name="' + e + '" value="' + t + '"></param>'),
                    (s += " " + e + '="' + t + '"');
                }),
                (o +=
                  '<embed src="' +
                  i +
                  '" type="application/x-shockwave-flash" width="100%" height="100%"' +
                  s +
                  "></embed></object>");
          }
          (h(o) && o.parent().is(e.inner)) || e.inner.append(o),
            M.trigger("beforeShow"),
            e.inner.css(
              "overflow",
              "yes" === n ? "scroll" : "no" === n ? "hidden" : n
            ),
            M._setDimension(),
            M.reposition(),
            (M.isOpen = !1),
            (M.coming = null),
            M.bindEvents(),
            M.isOpened
              ? a.prevMethod && M.transitions[a.prevMethod]()
              : H(".fancybox-wrap")
                  .not(e.wrap)
                  .stop(!0)
                  .trigger("onReset")
                  .remove(),
            M.transitions[M.isOpened ? e.nextMethod : e.openMethod](),
            M._preloadImages();
        }
      },
      _setDimension: function () {
        var e,
          t,
          o,
          n,
          i,
          s,
          r,
          a,
          l,
          c,
          d,
          u,
          p,
          h,
          f,
          m,
          g,
          v = M.getViewport(),
          y = 0,
          w = M.wrap,
          b = M.skin,
          x = M.inner,
          k = M.current,
          T = k.width,
          C = k.height,
          S = k.minWidth,
          z = k.minHeight,
          E = k.maxWidth,
          W = k.maxHeight,
          L = k.scrolling,
          A = k.scrollOutside ? k.scrollbarWidth : 0,
          $ = k.margin,
          F = I($[1] + $[3]),
          O = I($[0] + $[2]);
        if (
          (w
            .add(b)
            .add(x)
            .width("auto")
            .height("auto")
            .removeClass("fancybox-tmp"),
          (i = F + (o = I(b.outerWidth(!0) - b.width()))),
          (s = O + (n = I(b.outerHeight(!0) - b.height()))),
          (r = D(T) ? ((v.w - i) * I(T)) / 100 : T),
          (a = D(C) ? ((v.h - s) * I(C)) / 100 : C),
          "iframe" === k.type)
        ) {
          if (((m = k.content), k.autoHeight && m && 1 === m.data("ready")))
            try {
              m[0].contentWindow.document.location &&
                (x.width(r).height(9999),
                (g = m.contents().find("body")),
                A && g.css("overflow-x", "hidden"),
                (a = g.outerHeight(!0)));
            } catch (e) {}
        } else
          (k.autoWidth || k.autoHeight) &&
            (x.addClass("fancybox-tmp"),
            k.autoWidth || x.width(r),
            k.autoHeight || x.height(a),
            k.autoWidth && (r = x.width()),
            k.autoHeight && (a = x.height()),
            x.removeClass("fancybox-tmp"));
        if (
          ((T = I(r)),
          (C = I(a)),
          (d = r / a),
          (S = I(D(S) ? I(S, "w") - i : S)),
          (E = I(D(E) ? I(E, "w") - i : E)),
          (z = I(D(z) ? I(z, "h") - s : z)),
          (l = E),
          (c = W = I(D(W) ? I(W, "h") - s : W)),
          k.fitToView &&
            ((E = Math.min(v.w - i, E)), (W = Math.min(v.h - s, W))),
          (h = v.w - F),
          (f = v.h - O),
          k.aspectRatio
            ? (E < T && (C = I((T = E) / d)),
              W < C && (T = I((C = W) * d)),
              T < S && (C = I((T = S) / d)),
              C < z && (T = I((C = z) * d)))
            : ((T = Math.max(S, Math.min(T, E))),
              k.autoHeight &&
                "iframe" !== k.type &&
                (x.width(T), (C = x.height())),
              (C = Math.max(z, Math.min(C, W)))),
          k.fitToView)
        )
          if (
            (x.width(T).height(C),
            w.width(T + o),
            (u = w.width()),
            (p = w.height()),
            k.aspectRatio)
          )
            for (; (h < u || f < p) && S < T && z < C && !(19 < y++); )
              (C = Math.max(z, Math.min(W, C - 10))),
                (T = I(C * d)) < S && (C = I((T = S) / d)),
                E < T && (C = I((T = E) / d)),
                x.width(T).height(C),
                w.width(T + o),
                (u = w.width()),
                (p = w.height());
          else
            (T = Math.max(S, Math.min(T, T - (u - h)))),
              (C = Math.max(z, Math.min(C, C - (p - f))));
        A && "auto" === L && C < a && T + o + A < h && (T += A),
          x.width(T).height(C),
          w.width(T + o),
          (u = w.width()),
          (p = w.height()),
          (e = (h < u || f < p) && S < T && z < C),
          (t = k.aspectRatio
            ? T < l && C < c && T < r && C < a
            : (T < l || C < c) && (T < r || C < a)),
          H.extend(k, {
            dim: { width: N(u), height: N(p) },
            origWidth: r,
            origHeight: a,
            canShrink: e,
            canExpand: t,
            wPadding: o,
            hPadding: n,
            wrapSpace: p - b.outerHeight(!0),
            skinSpace: b.height() - C,
          }),
          !m && k.autoHeight && z < C && C < W && !t && x.height("auto");
      },
      _getPosition: function (e) {
        var t = M.current,
          o = M.getViewport(),
          n = t.margin,
          i = M.wrap.width() + n[1] + n[3],
          s = M.wrap.height() + n[0] + n[2],
          r = { position: "absolute", top: n[0], left: n[3] };
        return (
          t.autoCenter && t.fixed && !e && s <= o.h && i <= o.w
            ? (r.position = "fixed")
            : t.locked || ((r.top += o.y), (r.left += o.x)),
          (r.top = N(Math.max(r.top, r.top + (o.h - s) * t.topRatio))),
          (r.left = N(Math.max(r.left, r.left + (o.w - i) * t.leftRatio))),
          r
        );
      },
      _afterZoomIn: function () {
        var t = M.current;
        t &&
          ((M.isOpen = M.isOpened = !0),
          M.wrap
            .css("overflow", "visible")
            .addClass("fancybox-opened")
            .hide()
            .show(0),
          M.update(),
          (t.closeClick || (t.nextClick && 1 < M.group.length)) &&
            M.inner.css("cursor", "pointer").bind("click.fb", function (e) {
              H(e.target).is("a") ||
                H(e.target).parent().is("a") ||
                (e.preventDefault(), M[t.closeClick ? "close" : "next"]());
            }),
          t.closeBtn &&
            H(t.tpl.closeBtn)
              .appendTo(M.skin)
              .bind("click.fb", function (e) {
                e.preventDefault(), M.close();
              }),
          t.arrows &&
            1 < M.group.length &&
            ((t.loop || 0 < t.index) &&
              H(t.tpl.prev).appendTo(M.outer).bind("click.fb", M.prev),
            (t.loop || t.index < M.group.length - 1) &&
              H(t.tpl.next).appendTo(M.outer).bind("click.fb", M.next)),
          M.trigger("afterShow"),
          t.loop || t.index !== t.group.length - 1
            ? M.opts.autoPlay &&
              !M.player.isActive &&
              ((M.opts.autoPlay = !1), M.play(!0))
            : M.play(!1));
      },
      _afterZoomOut: function (e) {
        (e = e || M.current),
          H(".fancybox-wrap").trigger("onReset").remove(),
          H.extend(M, {
            group: {},
            opts: {},
            router: !1,
            current: null,
            isActive: !1,
            isOpened: !1,
            isOpen: !1,
            isClosing: !1,
            wrap: null,
            skin: null,
            outer: null,
            inner: null,
          }),
          M.trigger("afterClose", e);
      },
    }),
      (M.transitions = {
        getOrigPosition: function () {
          var e = M.current,
            t = e.element,
            o = e.orig,
            n = {},
            i = 50,
            s = 50,
            r = e.hPadding,
            a = e.wPadding,
            l = M.getViewport();
          return (
            !o &&
              e.isDom &&
              t.is(":visible") &&
              ((o = t.find("img:first")).length || (o = t)),
            h(o)
              ? ((n = o.offset()),
                o.is("img") && ((i = o.outerWidth()), (s = o.outerHeight())))
              : ((n.top = l.y + (l.h - s) * e.topRatio),
                (n.left = l.x + (l.w - i) * e.leftRatio)),
            ("fixed" !== M.wrap.css("position") && !e.locked) ||
              ((n.top -= l.y), (n.left -= l.x)),
            (n = {
              top: N(n.top - r * e.topRatio),
              left: N(n.left - a * e.leftRatio),
              width: N(i + a),
              height: N(s + r),
            })
          );
        },
        step: function (e, t) {
          var o,
            n,
            i = t.prop,
            s = M.current,
            r = s.wrapSpace,
            a = s.skinSpace;
          ("width" !== i && "height" !== i) ||
            ((o = t.end === t.start ? 1 : (e - t.start) / (t.end - t.start)),
            M.isClosing && (o = 1 - o),
            (n = e - ("width" === i ? s.wPadding : s.hPadding)),
            M.skin[i](I("width" === i ? n : n - r * o)),
            M.inner[i](I("width" === i ? n : n - r * o - a * o)));
        },
        zoomIn: function () {
          var e = M.current,
            t = e.pos,
            o = e.openEffect,
            n = "elastic" === o,
            i = H.extend({ opacity: 1 }, t);
          delete i.position,
            n
              ? ((t = this.getOrigPosition()),
                e.openOpacity && (t.opacity = 0.1))
              : "fade" === o && (t.opacity = 0.1),
            M.wrap
              .css(t)
              .animate(i, {
                duration: "none" === o ? 0 : e.openSpeed,
                easing: e.openEasing,
                step: n ? this.step : null,
                complete: M._afterZoomIn,
              });
        },
        zoomOut: function () {
          var e = M.current,
            t = e.closeEffect,
            o = "elastic" === t,
            n = { opacity: 0.1 };
          o &&
            ((n = this.getOrigPosition()), e.closeOpacity && (n.opacity = 0.1)),
            M.wrap.animate(n, {
              duration: "none" === t ? 0 : e.closeSpeed,
              easing: e.closeEasing,
              step: o ? this.step : null,
              complete: M._afterZoomOut,
            });
        },
        changeIn: function () {
          var e,
            t = M.current,
            o = t.nextEffect,
            n = t.pos,
            i = { opacity: 1 },
            s = M.direction;
          (n.opacity = 0.1),
            "elastic" === o &&
              ((e = "down" === s || "up" === s ? "top" : "left"),
              "down" === s || "right" === s
                ? ((n[e] = N(I(n[e]) - 200)), (i[e] = "+=200px"))
                : ((n[e] = N(I(n[e]) + 200)), (i[e] = "-=200px"))),
            "none" === o
              ? M._afterZoomIn()
              : M.wrap
                  .css(n)
                  .animate(i, {
                    duration: t.nextSpeed,
                    easing: t.nextEasing,
                    complete: M._afterZoomIn,
                  });
        },
        changeOut: function () {
          var e = M.previous,
            t = e.prevEffect,
            o = { opacity: 0.1 },
            n = M.direction;
          "elastic" === t &&
            (o["down" === n || "up" === n ? "top" : "left"] =
              ("up" === n || "left" === n ? "-" : "+") + "=200px"),
            e.wrap.animate(o, {
              duration: "none" === t ? 0 : e.prevSpeed,
              easing: e.prevEasing,
              complete: function () {
                H(this).trigger("onReset").remove();
              },
            });
        },
      }),
      (M.helpers.overlay = {
        defaults: {
          closeClick: !0,
          speedOut: 200,
          showEarly: !0,
          css: {},
          locked: !d,
          fixed: !0,
        },
        overlay: null,
        fixed: !1,
        el: H("html"),
        create: function (e) {
          var t;
          (e = H.extend({}, this.defaults, e)),
            this.overlay && this.close(),
            (t = M.coming ? M.coming.parent : e.parent),
            (this.overlay = H('<div class="fancybox-overlay"></div>').appendTo(
              t && t.length ? t : "body"
            )),
            (this.fixed = !1),
            e.fixed &&
              M.defaults.fixed &&
              (this.overlay.addClass("fancybox-overlay-fixed"),
              (this.fixed = !0));
        },
        open: function (e) {
          var t = this;
          (e = H.extend({}, this.defaults, e)),
            this.overlay
              ? this.overlay.unbind(".overlay").width("auto").height("auto")
              : this.create(e),
            this.fixed ||
              (n.bind("resize.overlay", H.proxy(this.update, this)),
              this.update()),
            e.closeClick &&
              this.overlay.bind("click.overlay", function (e) {
                if (H(e.target).hasClass("fancybox-overlay"))
                  return M.isActive ? M.close() : t.close(), !1;
              }),
            this.overlay.css(e.css).show();
        },
        close: function () {
          n.unbind("resize.overlay"),
            this.el.hasClass("fancybox-lock") &&
              (H(".fancybox-margin").removeClass("fancybox-margin"),
              this.el.removeClass("fancybox-lock"),
              n.scrollTop(this.scrollV).scrollLeft(this.scrollH)),
            H(".fancybox-overlay").remove().hide(),
            H.extend(this, { overlay: null, fixed: !1 });
        },
        update: function () {
          var e,
            t = "100%";
          this.overlay.width(t).height("100%"),
            r
              ? ((e = Math.max(
                  o.documentElement.offsetWidth,
                  o.body.offsetWidth
                )),
                c.width() > e && (t = c.width()))
              : c.width() > n.width() && (t = c.width()),
            this.overlay.width(t).height(c.height());
        },
        onReady: function (e, t) {
          var o = this.overlay;
          H(".fancybox-overlay").stop(!0, !0),
            o || this.create(e),
            e.locked &&
              this.fixed &&
              t.fixed &&
              ((t.locked = this.overlay.append(t.wrap)), (t.fixed = !1)),
            !0 === e.showEarly && this.beforeShow.apply(this, arguments);
        },
        beforeShow: function (e, t) {
          t.locked &&
            !this.el.hasClass("fancybox-lock") &&
            (!1 !== this.fixPosition &&
              H("*:not(object)")
                .filter(function () {
                  return (
                    "fixed" === H(this).css("position") &&
                    !H(this).hasClass("fancybox-overlay") &&
                    !H(this).hasClass("fancybox-wrap")
                  );
                })
                .addClass("fancybox-margin"),
            this.el.addClass("fancybox-margin"),
            (this.scrollV = n.scrollTop()),
            (this.scrollH = n.scrollLeft()),
            this.el.addClass("fancybox-lock"),
            n.scrollTop(this.scrollV).scrollLeft(this.scrollH)),
            this.open(e);
        },
        onUpdate: function () {
          this.fixed || this.update();
        },
        afterClose: function (e) {
          this.overlay &&
            !M.coming &&
            this.overlay.fadeOut(e.speedOut, H.proxy(this.close, this));
        },
      }),
      (M.helpers.title = {
        defaults: { type: "float", position: "bottom" },
        beforeShow: function (e) {
          var t,
            o,
            n = M.current,
            i = n.title,
            s = e.type;
          if (
            (H.isFunction(i) && (i = i.call(n.element, n)),
            f(i) && "" !== H.trim(i))
          ) {
            switch (
              ((t = H(
                '<div class="fancybox-title fancybox-title-' +
                  s +
                  '-wrap">' +
                  i +
                  "</div>"
              )),
              s)
            ) {
              case "inside":
                o = M.skin;
                break;
              case "outside":
                o = M.wrap;
                break;
              case "over":
                o = M.inner;
                break;
              default:
                (o = M.skin),
                  t.appendTo("body"),
                  r && t.width(t.width()),
                  t.wrapInner('<span class="child"></span>'),
                  (M.current.margin[2] += Math.abs(I(t.css("margin-bottom"))));
            }
            t["top" === e.position ? "prependTo" : "appendTo"](o);
          }
        },
      }),
      (H.fn.fancybox = function (s) {
        function e(e) {
          var t,
            o,
            n = H(this).blur(),
            i = l;
          e.ctrlKey ||
            e.altKey ||
            e.shiftKey ||
            e.metaKey ||
            n.is(".fancybox-wrap") ||
            ((t = s.groupAttr || "data-fancybox-group"),
            (o = n.attr(t)) || ((t = "rel"), (o = n.get(0)[t])),
            o &&
              "" !== o &&
              "nofollow" !== o &&
              (i = (n = (n = a.length ? H(a) : r).filter(
                "[" + t + '="' + o + '"]'
              )).index(this)),
            (s.index = i),
            !1 !== M.open(n, s) && e.preventDefault());
        }
        var r = H(this),
          a = this.selector || "",
          l = (s = s || {}).index || 0;
        return (
          a && !1 !== s.live
            ? c
                .undelegate(a, "click.fb-start")
                .delegate(
                  a + ":not('.fancybox-item, .fancybox-nav')",
                  "click.fb-start",
                  e
                )
            : r.unbind("click.fb-start").bind("click.fb-start", e),
          this.filter("[data-fancybox-start=1]").trigger("click"),
          this
        );
      }),
      c.ready(function () {
        var e, t, o, n;
        H.scrollbarWidth === p &&
          (H.scrollbarWidth = function () {
            var e = H(
                '<div style="width:50px;height:50px;overflow:auto"><div/></div>'
              ).appendTo("body"),
              t = e.children(),
              o = t.innerWidth() - t.height(99).innerWidth();
            return e.remove(), o;
          }),
          H.support.fixedPosition === p &&
            (H.support.fixedPosition =
              ((o = H('<div style="position:fixed;top:20px;"></div>').appendTo(
                "body"
              )),
              (n = 20 === o[0].offsetTop || 15 === o[0].offsetTop),
              o.remove(),
              n)),
          H.extend(M.defaults, {
            scrollbarWidth: H.scrollbarWidth(),
            fixed: H.support.fixedPosition,
            parent: H("body"),
          }),
          (e = H(i).width()),
          s.addClass("fancybox-lock-test"),
          (t = H(i).width()),
          s.removeClass("fancybox-lock-test"),
          H(
            "<style type='text/css'>.fancybox-margin{margin-right:" +
              (t - e) +
              "px;}</style>"
          ).appendTo("head");
      });
  })(window, document, jQuery),
  "function" != typeof Object.create &&
    (Object.create = function (e) {
      function t() {}
      return (t.prototype = e), new t();
    }),
  (function (l) {
    var o = {
      init: function (e, t) {
        var o = this;
        (o.elem = t),
          (o.$elem = l(t)),
          (o.imageSrc = o.$elem.data("zoom-image")
            ? o.$elem.data("zoom-image")
            : o.$elem.attr("src")),
          (o.options = l.extend({}, l.fn.elevateZoom.options, e)),
          o.options.tint &&
            ((o.options.lensColour = "none"), (o.options.lensOpacity = "1")),
          "inner" == o.options.zoomType && (o.options.showLens = !1),
          o.$elem.parent().removeAttr("title").removeAttr("alt"),
          (o.zoomImage = o.imageSrc),
          o.refresh(1),
          l("#" + o.options.gallery + " a").click(function (e) {
            return (
              o.options.galleryActiveClass &&
                (l("#" + o.options.gallery + " a").removeClass(
                  o.options.galleryActiveClass
                ),
                l(this).addClass(o.options.galleryActiveClass)),
              e.preventDefault(),
              l(this).data("zoom-image")
                ? (o.zoomImagePre = l(this).data("zoom-image"))
                : (o.zoomImagePre = l(this).data("image")),
              o.swaptheimage(l(this).data("image"), o.zoomImagePre),
              !1
            );
          });
      },
      refresh: function (e) {
        var t = this;
        setTimeout(function () {
          t.fetch(t.imageSrc);
        }, e || t.options.refresh);
      },
      fetch: function (e) {
        var t = this,
          o = new Image();
        (o.onload = function () {
          (t.largeWidth = o.width),
            (t.largeHeight = o.height),
            t.startZoom(),
            (t.currentImage = t.imageSrc),
            t.options.onZoomedImageLoaded(t.$elem);
        }),
          (o.src = e);
      },
      startZoom: function () {
        var e,
          o = this;
        (o.nzWidth = o.$elem.width()),
          (o.nzHeight = o.$elem.height()),
          (o.isWindowActive = !1),
          (o.isLensActive = !1),
          (o.isTintActive = !1),
          (o.overWindow = !1),
          o.options.imageCrossfade &&
            ((o.zoomWrap = o.$elem.wrap(
              '<div style="height:' +
                o.nzHeight +
                "px;width:" +
                o.nzWidth +
                'px;" class="zoomWrapper" />'
            )),
            o.$elem.css("position", "absolute")),
          (o.zoomLock = 1),
          (o.scrollingLock = !1),
          (o.changeBgSize = !1),
          (o.currentZoomLevel = o.options.zoomLevel),
          (o.nzOffset = o.$elem.offset()),
          (o.widthRatio = o.largeWidth / o.currentZoomLevel / o.nzWidth),
          (o.heightRatio = o.largeHeight / o.currentZoomLevel / o.nzHeight),
          "window" == o.options.zoomType &&
            (o.zoomWindowStyle =
              "overflow: hidden;background-position: 0px 0px;text-align:center;background-color: " +
              String(o.options.zoomWindowBgColour) +
              ";width: " +
              String(o.options.zoomWindowWidth) +
              "px;height: " +
              String(o.options.zoomWindowHeight) +
              "px;float: left;background-size: " +
              o.largeWidth / o.currentZoomLevel +
              "px " +
              o.largeHeight / o.currentZoomLevel +
              "px;display: none;z-index:100;border: " +
              String(o.options.borderSize) +
              "px solid " +
              o.options.borderColour +
              ";background-repeat: no-repeat;position: absolute;"),
          "inner" == o.options.zoomType &&
            ((e = o.$elem.css("border-left-width")),
            (o.zoomWindowStyle =
              "overflow: hidden;margin-left: " +
              String(e) +
              ";margin-top: " +
              String(e) +
              ";background-position: 0px 0px;width: " +
              String(o.nzWidth) +
              "px;height: " +
              String(o.nzHeight) +
              "px;px;float: left;display: none;cursor:" +
              o.options.cursor +
              ";px solid " +
              o.options.borderColour +
              ";background-repeat: no-repeat;position: absolute;")),
          "window" == o.options.zoomType &&
            ((lensHeight =
              o.nzHeight < o.options.zoomWindowWidth / o.widthRatio
                ? o.nzHeight
                : String(o.options.zoomWindowHeight / o.heightRatio)),
            (lensWidth =
              o.largeWidth < o.options.zoomWindowWidth
                ? o.nzWidth
                : o.options.zoomWindowWidth / o.widthRatio),
            (o.lensStyle =
              "background-position: 0px 0px;width: " +
              String(o.options.zoomWindowWidth / o.widthRatio) +
              "px;height: " +
              String(o.options.zoomWindowHeight / o.heightRatio) +
              "px;float: right;display: none;overflow: hidden;z-index: 999;-webkit-transform: translateZ(0);opacity:" +
              o.options.lensOpacity +
              ";filter: alpha(opacity = " +
              100 * o.options.lensOpacity +
              "); zoom:1;width:" +
              lensWidth +
              "px;height:" +
              lensHeight +
              "px;background-color:" +
              o.options.lensColour +
              ";cursor:" +
              o.options.cursor +
              ";border: " +
              o.options.lensBorderSize +
              "px solid " +
              o.options.lensBorderColour +
              ";background-repeat: no-repeat;position: absolute;")),
          (o.tintStyle =
            "display: block;position: absolute;background-color: " +
            o.options.tintColour +
            ";filter:alpha(opacity=0);opacity: 0;width: " +
            o.nzWidth +
            "px;height: " +
            o.nzHeight +
            "px;"),
          (o.lensRound = ""),
          "lens" == o.options.zoomType &&
            (o.lensStyle =
              "background-position: 0px 0px;float: left;display: none;border: " +
              String(o.options.borderSize) +
              "px solid " +
              o.options.borderColour +
              ";width:" +
              String(o.options.lensSize) +
              "px;height:" +
              String(o.options.lensSize) +
              "px;background-repeat: no-repeat;position: absolute;"),
          "round" == o.options.lensShape &&
            (o.lensRound =
              "border-top-left-radius: " +
              String(o.options.lensSize / 2 + o.options.borderSize) +
              "px;border-top-right-radius: " +
              String(o.options.lensSize / 2 + o.options.borderSize) +
              "px;border-bottom-left-radius: " +
              String(o.options.lensSize / 2 + o.options.borderSize) +
              "px;border-bottom-right-radius: " +
              String(o.options.lensSize / 2 + o.options.borderSize) +
              "px;"),
          (o.zoomContainer = l(
            '<div class="zoomContainer" style="-webkit-transform: translateZ(0);position:absolute;left:' +
              o.nzOffset.left +
              "px;top:" +
              o.nzOffset.top +
              "px;height:" +
              o.nzHeight +
              "px;width:" +
              o.nzWidth +
              'px;"></div>'
          )),
          l("body").append(o.zoomContainer),
          o.options.containLensZoom &&
            "lens" == o.options.zoomType &&
            o.zoomContainer.css("overflow", "hidden"),
          "inner" != o.options.zoomType &&
            ((o.zoomLens = l(
              "<div class='zoomLens' style='" +
                o.lensStyle +
                o.lensRound +
                "'>&nbsp;</div>"
            )
              .appendTo(o.zoomContainer)
              .click(function () {
                o.$elem.trigger("click");
              })),
            o.options.tint &&
              ((o.tintContainer = l("<div/>").addClass("tintContainer")),
              (o.zoomTint = l(
                "<div class='zoomTint' style='" + o.tintStyle + "'></div>"
              )),
              o.zoomLens.wrap(o.tintContainer),
              (o.zoomTintcss = o.zoomLens.after(o.zoomTint)),
              (o.zoomTintImage = l(
                '<img style="position: absolute; left: 0px; top: 0px; max-width: none; width: ' +
                  o.nzWidth +
                  "px; height: " +
                  o.nzHeight +
                  'px;" src="' +
                  o.imageSrc +
                  '">'
              )
                .appendTo(o.zoomLens)
                .click(function () {
                  o.$elem.trigger("click");
                })))),
          isNaN(o.options.zoomWindowPosition)
            ? (o.zoomWindow = l(
                "<div style='z-index:999;left:" +
                  o.windowOffsetLeft +
                  "px;top:" +
                  o.windowOffsetTop +
                  "px;" +
                  o.zoomWindowStyle +
                  "' class='zoomWindow'>&nbsp;</div>"
              )
                .appendTo("body")
                .click(function () {
                  o.$elem.trigger("click");
                }))
            : (o.zoomWindow = l(
                "<div style='z-index:999;left:" +
                  o.windowOffsetLeft +
                  "px;top:" +
                  o.windowOffsetTop +
                  "px;" +
                  o.zoomWindowStyle +
                  "' class='zoomWindow'>&nbsp;</div>"
              )
                .appendTo(o.zoomContainer)
                .click(function () {
                  o.$elem.trigger("click");
                })),
          (o.zoomWindowContainer = l("<div/>")
            .addClass("zoomWindowContainer")
            .css("width", o.options.zoomWindowWidth)),
          o.zoomWindow.wrap(o.zoomWindowContainer),
          "lens" == o.options.zoomType &&
            o.zoomLens.css({ backgroundImage: "url('" + o.imageSrc + "')" }),
          "window" == o.options.zoomType &&
            o.zoomWindow.css({ backgroundImage: "url('" + o.imageSrc + "')" }),
          "inner" == o.options.zoomType &&
            o.zoomWindow.css({ backgroundImage: "url('" + o.imageSrc + "')" }),
          o.$elem.bind("touchmove", function (e) {
            e.preventDefault();
            var t =
              e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
            o.setPosition(t);
          }),
          o.zoomContainer.bind("touchmove", function (e) {
            "inner" == o.options.zoomType && o.showHideWindow("show"),
              e.preventDefault();
            var t =
              e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
            o.setPosition(t);
          }),
          o.zoomContainer.bind("touchend", function (e) {
            o.showHideWindow("hide"),
              o.options.showLens && o.showHideLens("hide"),
              o.options.tint &&
                "inner" != o.options.zoomType &&
                o.showHideTint("hide");
          }),
          o.$elem.bind("touchend", function (e) {
            o.showHideWindow("hide"),
              o.options.showLens && o.showHideLens("hide"),
              o.options.tint &&
                "inner" != o.options.zoomType &&
                o.showHideTint("hide");
          }),
          o.options.showLens &&
            (o.zoomLens.bind("touchmove", function (e) {
              e.preventDefault();
              var t =
                e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
              o.setPosition(t);
            }),
            o.zoomLens.bind("touchend", function (e) {
              o.showHideWindow("hide"),
                o.options.showLens && o.showHideLens("hide"),
                o.options.tint &&
                  "inner" != o.options.zoomType &&
                  o.showHideTint("hide");
            })),
          o.$elem.bind("mousemove", function (e) {
            0 == o.overWindow && o.setElements("show"),
              (o.lastX === e.clientX && o.lastY === e.clientY) ||
                (o.setPosition(e), (o.currentLoc = e)),
              (o.lastX = e.clientX),
              (o.lastY = e.clientY);
          }),
          o.zoomContainer.bind("mousemove", function (e) {
            0 == o.overWindow && o.setElements("show"),
              (o.lastX === e.clientX && o.lastY === e.clientY) ||
                (o.setPosition(e), (o.currentLoc = e)),
              (o.lastX = e.clientX),
              (o.lastY = e.clientY);
          }),
          "inner" != o.options.zoomType &&
            o.zoomLens.bind("mousemove", function (e) {
              (o.lastX === e.clientX && o.lastY === e.clientY) ||
                (o.setPosition(e), (o.currentLoc = e)),
                (o.lastX = e.clientX),
                (o.lastY = e.clientY);
            }),
          o.options.tint &&
            "inner" != o.options.zoomType &&
            o.zoomTint.bind("mousemove", function (e) {
              (o.lastX === e.clientX && o.lastY === e.clientY) ||
                (o.setPosition(e), (o.currentLoc = e)),
                (o.lastX = e.clientX),
                (o.lastY = e.clientY);
            }),
          "inner" == o.options.zoomType &&
            o.zoomWindow.bind("mousemove", function (e) {
              (o.lastX === e.clientX && o.lastY === e.clientY) ||
                (o.setPosition(e), (o.currentLoc = e)),
                (o.lastX = e.clientX),
                (o.lastY = e.clientY);
            }),
          o.zoomContainer
            .add(o.$elem)
            .mouseenter(function () {
              0 == o.overWindow && o.setElements("show");
            })
            .mouseleave(function () {
              o.scrollLock ||
                (o.setElements("hide"), o.options.onDestroy(o.$elem));
            }),
          "inner" != o.options.zoomType &&
            o.zoomWindow
              .mouseenter(function () {
                (o.overWindow = !0), o.setElements("hide");
              })
              .mouseleave(function () {
                o.overWindow = !1;
              }),
          o.options.zoomLevel,
          o.options.minZoomLevel
            ? (o.minZoomLevel = o.options.minZoomLevel)
            : (o.minZoomLevel = 2 * o.options.scrollZoomIncrement),
          o.options.scrollZoom &&
            o.zoomContainer
              .add(o.$elem)
              .bind(
                "mousewheel DOMMouseScroll MozMousePixelScroll",
                function (e) {
                  (o.scrollLock = !0),
                    clearTimeout(l.data(this, "timer")),
                    l.data(
                      this,
                      "timer",
                      setTimeout(function () {
                        o.scrollLock = !1;
                      }, 250)
                    );
                  var t =
                    e.originalEvent.wheelDelta || -1 * e.originalEvent.detail;
                  return (
                    e.stopImmediatePropagation(),
                    e.stopPropagation(),
                    e.preventDefault(),
                    0 < t / 120
                      ? o.currentZoomLevel >= o.minZoomLevel &&
                        o.changeZoomLevel(
                          o.currentZoomLevel - o.options.scrollZoomIncrement
                        )
                      : (!o.options.maxZoomLevel ||
                          o.currentZoomLevel <= o.options.maxZoomLevel) &&
                        o.changeZoomLevel(
                          parseFloat(o.currentZoomLevel) +
                            o.options.scrollZoomIncrement
                        ),
                    !1
                  );
                }
              );
      },
      setElements: function (e) {
        var t = this;
        if (!t.options.zoomEnabled) return !1;
        "show" == e &&
          t.isWindowSet &&
          ("inner" == t.options.zoomType && t.showHideWindow("show"),
          "window" == t.options.zoomType && t.showHideWindow("show"),
          t.options.showLens && t.showHideLens("show"),
          t.options.tint &&
            "inner" != t.options.zoomType &&
            t.showHideTint("show")),
          "hide" == e &&
            ("window" == t.options.zoomType && t.showHideWindow("hide"),
            t.options.tint || t.showHideWindow("hide"),
            t.options.showLens && t.showHideLens("hide"),
            t.options.tint && t.showHideTint("hide"));
      },
      setPosition: function (e) {
        var t = this;
        if (!t.options.zoomEnabled) return !1;
        (t.nzHeight = t.$elem.height()),
          (t.nzWidth = t.$elem.width()),
          (t.nzOffset = t.$elem.offset()),
          t.options.tint &&
            "inner" != t.options.zoomType &&
            (t.zoomTint.css({ top: 0 }), t.zoomTint.css({ left: 0 })),
          t.options.responsive &&
            !t.options.scrollZoom &&
            t.options.showLens &&
            ((lensHeight =
              t.nzHeight < t.options.zoomWindowWidth / t.widthRatio
                ? t.nzHeight
                : String(t.options.zoomWindowHeight / t.heightRatio)),
            (lensWidth =
              t.largeWidth < t.options.zoomWindowWidth
                ? t.nzWidth
                : t.options.zoomWindowWidth / t.widthRatio),
            (t.widthRatio = t.largeWidth / t.nzWidth),
            (t.heightRatio = t.largeHeight / t.nzHeight),
            "lens" != t.options.zoomType &&
              ((lensHeight =
                t.nzHeight < t.options.zoomWindowWidth / t.widthRatio
                  ? t.nzHeight
                  : String(t.options.zoomWindowHeight / t.heightRatio)),
              (lensWidth =
                t.nzWidth < t.options.zoomWindowHeight / t.heightRatio
                  ? t.nzWidth
                  : String(t.options.zoomWindowWidth / t.widthRatio)),
              t.zoomLens.css("width", lensWidth),
              t.zoomLens.css("height", lensHeight),
              t.options.tint &&
                (t.zoomTintImage.css("width", t.nzWidth),
                t.zoomTintImage.css("height", t.nzHeight))),
            "lens" == t.options.zoomType &&
              t.zoomLens.css({
                width: String(t.options.lensSize) + "px",
                height: String(t.options.lensSize) + "px",
              })),
          t.zoomContainer.css({ top: t.nzOffset.top }),
          t.zoomContainer.css({ left: t.nzOffset.left }),
          (t.mouseLeft = parseInt(e.pageX - t.nzOffset.left)),
          (t.mouseTop = parseInt(e.pageY - t.nzOffset.top)),
          "window" == t.options.zoomType &&
            ((t.Etoppos = t.mouseTop < t.zoomLens.height() / 2),
            (t.Eboppos =
              t.mouseTop >
              t.nzHeight -
                t.zoomLens.height() / 2 -
                2 * t.options.lensBorderSize),
            (t.Eloppos = t.mouseLeft < 0 + t.zoomLens.width() / 2),
            (t.Eroppos =
              t.mouseLeft >
              t.nzWidth -
                t.zoomLens.width() / 2 -
                2 * t.options.lensBorderSize)),
          "inner" == t.options.zoomType &&
            ((t.Etoppos = t.mouseTop < t.nzHeight / 2 / t.heightRatio),
            (t.Eboppos =
              t.mouseTop > t.nzHeight - t.nzHeight / 2 / t.heightRatio),
            (t.Eloppos = t.mouseLeft < 0 + t.nzWidth / 2 / t.widthRatio),
            (t.Eroppos =
              t.mouseLeft >
              t.nzWidth -
                t.nzWidth / 2 / t.widthRatio -
                2 * t.options.lensBorderSize)),
          t.mouseLeft < 0 ||
          t.mouseTop < 0 ||
          t.mouseLeft > t.nzWidth ||
          t.mouseTop > t.nzHeight
            ? t.setElements("hide")
            : (t.options.showLens &&
                ((t.lensLeftPos = String(
                  Math.floor(t.mouseLeft - t.zoomLens.width() / 2)
                )),
                (t.lensTopPos = String(
                  Math.floor(t.mouseTop - t.zoomLens.height() / 2)
                ))),
              t.Etoppos && (t.lensTopPos = 0),
              t.Eloppos &&
                ((t.windowLeftPos = 0), (t.lensLeftPos = 0), (t.tintpos = 0)),
              "window" == t.options.zoomType &&
                (t.Eboppos &&
                  (t.lensTopPos = Math.max(
                    t.nzHeight -
                      t.zoomLens.height() -
                      2 * t.options.lensBorderSize,
                    0
                  )),
                t.Eroppos &&
                  (t.lensLeftPos =
                    t.nzWidth -
                    t.zoomLens.width() -
                    2 * t.options.lensBorderSize)),
              "inner" == t.options.zoomType &&
                (t.Eboppos &&
                  (t.lensTopPos = Math.max(
                    t.nzHeight - 2 * t.options.lensBorderSize,
                    0
                  )),
                t.Eroppos &&
                  (t.lensLeftPos =
                    t.nzWidth - t.nzWidth - 2 * t.options.lensBorderSize)),
              "lens" == t.options.zoomType &&
                ((t.windowLeftPos = String(
                  -1 *
                    ((e.pageX - t.nzOffset.left) * t.widthRatio -
                      t.zoomLens.width() / 2)
                )),
                (t.windowTopPos = String(
                  -1 *
                    ((e.pageY - t.nzOffset.top) * t.heightRatio -
                      t.zoomLens.height() / 2)
                )),
                t.zoomLens.css({
                  backgroundPosition:
                    t.windowLeftPos + "px " + t.windowTopPos + "px",
                }),
                t.changeBgSize &&
                  (t.nzHeight > t.nzWidth
                    ? ("lens" == t.options.zoomType &&
                        t.zoomLens.css({
                          "background-size":
                            t.largeWidth / t.newvalueheight +
                            "px " +
                            t.largeHeight / t.newvalueheight +
                            "px",
                        }),
                      t.zoomWindow.css({
                        "background-size":
                          t.largeWidth / t.newvalueheight +
                          "px " +
                          t.largeHeight / t.newvalueheight +
                          "px",
                      }))
                    : ("lens" == t.options.zoomType &&
                        t.zoomLens.css({
                          "background-size":
                            t.largeWidth / t.newvaluewidth +
                            "px " +
                            t.largeHeight / t.newvaluewidth +
                            "px",
                        }),
                      t.zoomWindow.css({
                        "background-size":
                          t.largeWidth / t.newvaluewidth +
                          "px " +
                          t.largeHeight / t.newvaluewidth +
                          "px",
                      })),
                  (t.changeBgSize = !1)),
                t.setWindowPostition(e)),
              t.options.tint &&
                "inner" != t.options.zoomType &&
                t.setTintPosition(e),
              "window" == t.options.zoomType && t.setWindowPostition(e),
              "inner" == t.options.zoomType && t.setWindowPostition(e),
              t.options.showLens &&
                (t.fullwidth &&
                  "lens" != t.options.zoomType &&
                  (t.lensLeftPos = 0),
                t.zoomLens.css({
                  left: t.lensLeftPos + "px",
                  top: t.lensTopPos + "px",
                })));
      },
      showHideWindow: function (e) {
        var t = this;
        "show" == e &&
          (t.isWindowActive ||
            (t.options.zoomWindowFadeIn
              ? t.zoomWindow.stop(!0, !0, !1).fadeIn(t.options.zoomWindowFadeIn)
              : t.zoomWindow.show(),
            (t.isWindowActive = !0))),
          "hide" == e &&
            t.isWindowActive &&
            (t.options.zoomWindowFadeOut
              ? t.zoomWindow
                  .stop(!0, !0)
                  .fadeOut(t.options.zoomWindowFadeOut, function () {
                    t.loop && (clearInterval(t.loop), (t.loop = !1));
                  })
              : t.zoomWindow.hide(),
            (t.isWindowActive = !1));
      },
      showHideLens: function (e) {
        var t = this;
        "show" == e &&
          (t.isLensActive ||
            (t.options.lensFadeIn
              ? t.zoomLens.stop(!0, !0, !1).fadeIn(t.options.lensFadeIn)
              : t.zoomLens.show(),
            (t.isLensActive = !0))),
          "hide" == e &&
            t.isLensActive &&
            (t.options.lensFadeOut
              ? t.zoomLens.stop(!0, !0).fadeOut(t.options.lensFadeOut)
              : t.zoomLens.hide(),
            (t.isLensActive = !1));
      },
      showHideTint: function (e) {
        var t = this;
        "show" == e &&
          (t.isTintActive ||
            (t.options.zoomTintFadeIn
              ? t.zoomTint
                  .css({ opacity: t.options.tintOpacity })
                  .animate()
                  .stop(!0, !0)
                  .fadeIn("slow")
              : (t.zoomTint.css({ opacity: t.options.tintOpacity }).animate(),
                t.zoomTint.show()),
            (t.isTintActive = !0))),
          "hide" == e &&
            t.isTintActive &&
            (t.options.zoomTintFadeOut
              ? t.zoomTint.stop(!0, !0).fadeOut(t.options.zoomTintFadeOut)
              : t.zoomTint.hide(),
            (t.isTintActive = !1));
      },
      setLensPostition: function (e) {},
      setWindowPostition: function (e) {
        var t = this;
        if (isNaN(t.options.zoomWindowPosition))
          (t.externalContainer = l("#" + t.options.zoomWindowPosition)),
            (t.externalContainerWidth = t.externalContainer.width()),
            (t.externalContainerHeight = t.externalContainer.height()),
            (t.externalContainerOffset = t.externalContainer.offset()),
            (t.windowOffsetTop = t.externalContainerOffset.top),
            (t.windowOffsetLeft = t.externalContainerOffset.left);
        else
          switch (t.options.zoomWindowPosition) {
            case 1:
              (t.windowOffsetTop = t.options.zoomWindowOffety),
                (t.windowOffsetLeft = +t.nzWidth);
              break;
            case 2:
              t.options.zoomWindowHeight > t.nzHeight &&
                ((t.windowOffsetTop =
                  -1 * (t.options.zoomWindowHeight / 2 - t.nzHeight / 2)),
                (t.windowOffsetLeft = t.nzWidth));
              break;
            case 3:
              (t.windowOffsetTop =
                t.nzHeight - t.zoomWindow.height() - 2 * t.options.borderSize),
                (t.windowOffsetLeft = t.nzWidth);
              break;
            case 4:
              (t.windowOffsetTop = t.nzHeight),
                (t.windowOffsetLeft = t.nzWidth);
              break;
            case 5:
              (t.windowOffsetTop = t.nzHeight),
                (t.windowOffsetLeft =
                  t.nzWidth - t.zoomWindow.width() - 2 * t.options.borderSize);
              break;
            case 6:
              t.options.zoomWindowHeight > t.nzHeight &&
                ((t.windowOffsetTop = t.nzHeight),
                (t.windowOffsetLeft =
                  -1 *
                  (t.options.zoomWindowWidth / 2 -
                    t.nzWidth / 2 +
                    2 * t.options.borderSize)));
              break;
            case 7:
              (t.windowOffsetTop = t.nzHeight), (t.windowOffsetLeft = 0);
              break;
            case 8:
              (t.windowOffsetTop = t.nzHeight),
                (t.windowOffsetLeft =
                  -1 * (t.zoomWindow.width() + 2 * t.options.borderSize));
              break;
            case 9:
              (t.windowOffsetTop =
                t.nzHeight - t.zoomWindow.height() - 2 * t.options.borderSize),
                (t.windowOffsetLeft =
                  -1 * (t.zoomWindow.width() + 2 * t.options.borderSize));
              break;
            case 10:
              t.options.zoomWindowHeight > t.nzHeight &&
                ((t.windowOffsetTop =
                  -1 * (t.options.zoomWindowHeight / 2 - t.nzHeight / 2)),
                (t.windowOffsetLeft =
                  -1 * (t.zoomWindow.width() + 2 * t.options.borderSize)));
              break;
            case 11:
              (t.windowOffsetTop = t.options.zoomWindowOffety),
                (t.windowOffsetLeft =
                  -1 * (t.zoomWindow.width() + 2 * t.options.borderSize));
              break;
            case 12:
              (t.windowOffsetTop =
                -1 * (t.zoomWindow.height() + 2 * t.options.borderSize)),
                (t.windowOffsetLeft =
                  -1 * (t.zoomWindow.width() + 2 * t.options.borderSize));
              break;
            case 13:
              (t.windowOffsetTop =
                -1 * (t.zoomWindow.height() + 2 * t.options.borderSize)),
                (t.windowOffsetLeft = 0);
              break;
            case 14:
              t.options.zoomWindowHeight > t.nzHeight &&
                ((t.windowOffsetTop =
                  -1 * (t.zoomWindow.height() + 2 * t.options.borderSize)),
                (t.windowOffsetLeft =
                  -1 *
                  (t.options.zoomWindowWidth / 2 -
                    t.nzWidth / 2 +
                    2 * t.options.borderSize)));
              break;
            case 15:
              (t.windowOffsetTop =
                -1 * (t.zoomWindow.height() + 2 * t.options.borderSize)),
                (t.windowOffsetLeft =
                  t.nzWidth - t.zoomWindow.width() - 2 * t.options.borderSize);
              break;
            case 16:
              (t.windowOffsetTop =
                -1 * (t.zoomWindow.height() + 2 * t.options.borderSize)),
                (t.windowOffsetLeft = t.nzWidth);
              break;
            default:
              (t.windowOffsetTop = t.options.zoomWindowOffety),
                (t.windowOffsetLeft = t.nzWidth);
          }
        (t.isWindowSet = !0),
          (t.windowOffsetTop = t.windowOffsetTop + t.options.zoomWindowOffety),
          (t.windowOffsetLeft =
            t.windowOffsetLeft + t.options.zoomWindowOffetx),
          t.zoomWindow.css({ top: t.windowOffsetTop }),
          t.zoomWindow.css({ left: t.windowOffsetLeft }),
          "inner" == t.options.zoomType &&
            (t.zoomWindow.css({ top: 0 }), t.zoomWindow.css({ left: 0 })),
          (t.windowLeftPos = String(
            -1 *
              ((e.pageX - t.nzOffset.left) * t.widthRatio -
                t.zoomWindow.width() / 2)
          )),
          (t.windowTopPos = String(
            -1 *
              ((e.pageY - t.nzOffset.top) * t.heightRatio -
                t.zoomWindow.height() / 2)
          )),
          t.Etoppos && (t.windowTopPos = 0),
          t.Eloppos && (t.windowLeftPos = 0),
          t.Eboppos &&
            (t.windowTopPos =
              -1 *
              (t.largeHeight / t.currentZoomLevel - t.zoomWindow.height())),
          t.Eroppos &&
            (t.windowLeftPos =
              -1 * (t.largeWidth / t.currentZoomLevel - t.zoomWindow.width())),
          t.fullheight && (t.windowTopPos = 0),
          t.fullwidth && (t.windowLeftPos = 0),
          ("window" != t.options.zoomType && "inner" != t.options.zoomType) ||
            (1 == t.zoomLock &&
              (t.widthRatio <= 1 && (t.windowLeftPos = 0),
              t.heightRatio <= 1 && (t.windowTopPos = 0)),
            "window" == t.options.zoomType &&
              (t.largeHeight < t.options.zoomWindowHeight &&
                (t.windowTopPos = 0),
              t.largeWidth < t.options.zoomWindowWidth &&
                (t.windowLeftPos = 0)),
            t.options.easing
              ? (t.xp || (t.xp = 0),
                t.yp || (t.yp = 0),
                t.loop ||
                  (t.loop = setInterval(function () {
                    (t.xp += (t.windowLeftPos - t.xp) / t.options.easingAmount),
                      (t.yp +=
                        (t.windowTopPos - t.yp) / t.options.easingAmount),
                      t.scrollingLock
                        ? (clearInterval(t.loop),
                          (t.xp = t.windowLeftPos),
                          (t.yp = t.windowTopPos),
                          (t.xp =
                            -1 *
                            ((e.pageX - t.nzOffset.left) * t.widthRatio -
                              t.zoomWindow.width() / 2)),
                          (t.yp =
                            -1 *
                            ((e.pageY - t.nzOffset.top) * t.heightRatio -
                              t.zoomWindow.height() / 2)),
                          t.changeBgSize &&
                            (t.nzHeight > t.nzWidth
                              ? ("lens" == t.options.zoomType &&
                                  t.zoomLens.css({
                                    "background-size":
                                      t.largeWidth / t.newvalueheight +
                                      "px " +
                                      t.largeHeight / t.newvalueheight +
                                      "px",
                                  }),
                                t.zoomWindow.css({
                                  "background-size":
                                    t.largeWidth / t.newvalueheight +
                                    "px " +
                                    t.largeHeight / t.newvalueheight +
                                    "px",
                                }))
                              : ("lens" != t.options.zoomType &&
                                  t.zoomLens.css({
                                    "background-size":
                                      t.largeWidth / t.newvaluewidth +
                                      "px " +
                                      t.largeHeight / t.newvalueheight +
                                      "px",
                                  }),
                                t.zoomWindow.css({
                                  "background-size":
                                    t.largeWidth / t.newvaluewidth +
                                    "px " +
                                    t.largeHeight / t.newvaluewidth +
                                    "px",
                                })),
                            (t.changeBgSize = !1)),
                          t.zoomWindow.css({
                            backgroundPosition:
                              t.windowLeftPos + "px " + t.windowTopPos + "px",
                          }),
                          (t.scrollingLock = !1),
                          (t.loop = !1))
                        : Math.round(
                            Math.abs(t.xp - t.windowLeftPos) +
                              Math.abs(t.yp - t.windowTopPos)
                          ) < 1
                        ? (clearInterval(t.loop),
                          t.zoomWindow.css({
                            backgroundPosition:
                              t.windowLeftPos + "px " + t.windowTopPos + "px",
                          }),
                          (t.loop = !1))
                        : (t.changeBgSize &&
                            (t.nzHeight > t.nzWidth
                              ? ("lens" == t.options.zoomType &&
                                  t.zoomLens.css({
                                    "background-size":
                                      t.largeWidth / t.newvalueheight +
                                      "px " +
                                      t.largeHeight / t.newvalueheight +
                                      "px",
                                  }),
                                t.zoomWindow.css({
                                  "background-size":
                                    t.largeWidth / t.newvalueheight +
                                    "px " +
                                    t.largeHeight / t.newvalueheight +
                                    "px",
                                }))
                              : ("lens" != t.options.zoomType &&
                                  t.zoomLens.css({
                                    "background-size":
                                      t.largeWidth / t.newvaluewidth +
                                      "px " +
                                      t.largeHeight / t.newvaluewidth +
                                      "px",
                                  }),
                                t.zoomWindow.css({
                                  "background-size":
                                    t.largeWidth / t.newvaluewidth +
                                    "px " +
                                    t.largeHeight / t.newvaluewidth +
                                    "px",
                                })),
                            (t.changeBgSize = !1)),
                          t.zoomWindow.css({
                            backgroundPosition: t.xp + "px " + t.yp + "px",
                          }));
                  }, 16)))
              : (t.changeBgSize &&
                  (t.nzHeight > t.nzWidth
                    ? ("lens" == t.options.zoomType &&
                        t.zoomLens.css({
                          "background-size":
                            t.largeWidth / t.newvalueheight +
                            "px " +
                            t.largeHeight / t.newvalueheight +
                            "px",
                        }),
                      t.zoomWindow.css({
                        "background-size":
                          t.largeWidth / t.newvalueheight +
                          "px " +
                          t.largeHeight / t.newvalueheight +
                          "px",
                      }))
                    : ("lens" == t.options.zoomType &&
                        t.zoomLens.css({
                          "background-size":
                            t.largeWidth / t.newvaluewidth +
                            "px " +
                            t.largeHeight / t.newvaluewidth +
                            "px",
                        }),
                      t.largeHeight / t.newvaluewidth <
                      t.options.zoomWindowHeight
                        ? t.zoomWindow.css({
                            "background-size":
                              t.largeWidth / t.newvaluewidth +
                              "px " +
                              t.largeHeight / t.newvaluewidth +
                              "px",
                          })
                        : t.zoomWindow.css({
                            "background-size":
                              t.largeWidth / t.newvalueheight +
                              "px " +
                              t.largeHeight / t.newvalueheight +
                              "px",
                          })),
                  (t.changeBgSize = !1)),
                t.zoomWindow.css({
                  backgroundPosition:
                    t.windowLeftPos + "px " + t.windowTopPos + "px",
                })));
      },
      setTintPosition: function (e) {
        var t = this;
        (t.nzOffset = t.$elem.offset()),
          (t.tintpos = String(
            -1 * (e.pageX - t.nzOffset.left - t.zoomLens.width() / 2)
          )),
          (t.tintposy = String(
            -1 * (e.pageY - t.nzOffset.top - t.zoomLens.height() / 2)
          )),
          t.Etoppos && (t.tintposy = 0),
          t.Eloppos && (t.tintpos = 0),
          t.Eboppos &&
            (t.tintposy =
              -1 *
              (t.nzHeight -
                t.zoomLens.height() -
                2 * t.options.lensBorderSize)),
          t.Eroppos &&
            (t.tintpos =
              -1 *
              (t.nzWidth - t.zoomLens.width() - 2 * t.options.lensBorderSize)),
          t.options.tint &&
            (t.fullheight && (t.tintposy = 0),
            t.fullwidth && (t.tintpos = 0),
            t.zoomTintImage.css({ left: t.tintpos + "px" }),
            t.zoomTintImage.css({ top: t.tintposy + "px" }));
      },
      swaptheimage: function (e, t) {
        var o = this,
          n = new Image();
        o.options.loadingIcon &&
          ((o.spinner = l(
            "<div style=\"background: url('" +
              o.options.loadingIcon +
              "') no-repeat center;height:" +
              o.nzHeight +
              "px;width:" +
              o.nzWidth +
              'px;z-index: 2000;position: absolute; background-position: center center;"></div>'
          )),
          o.$elem.after(o.spinner)),
          o.options.onImageSwap(o.$elem),
          (n.onload = function () {
            (o.largeWidth = n.width),
              (o.largeHeight = n.height),
              (o.zoomImage = t),
              o.zoomWindow.css({
                "background-size": o.largeWidth + "px " + o.largeHeight + "px",
              }),
              o.swapAction(e, t);
          }),
          (n.src = t);
      },
      swapAction: function (e, t) {
        var o,
          n,
          i,
          s,
          r = this,
          a = new Image();
        (a.onload = function () {
          (r.nzHeight = a.height),
            (r.nzWidth = a.width),
            r.options.onImageSwapComplete(r.$elem),
            r.doneCallback();
        }),
          (a.src = e),
          (r.currentZoomLevel = r.options.zoomLevel),
          (r.options.maxZoomLevel = !1),
          "lens" == r.options.zoomType &&
            r.zoomLens.css({ backgroundImage: "url('" + t + "')" }),
          "window" == r.options.zoomType &&
            r.zoomWindow.css({ backgroundImage: "url('" + t + "')" }),
          "inner" == r.options.zoomType &&
            r.zoomWindow.css({ backgroundImage: "url('" + t + "')" }),
          (r.currentImage = t),
          r.options.imageCrossfade
            ? ((n = (o = r.$elem).clone()),
              r.$elem.attr("src", e),
              r.$elem.after(n),
              n.stop(!0).fadeOut(r.options.imageCrossfade, function () {
                l(this).remove();
              }),
              r.$elem.width("auto").removeAttr("width"),
              r.$elem.height("auto").removeAttr("height"),
              o.fadeIn(r.options.imageCrossfade),
              r.options.tint &&
                "inner" != r.options.zoomType &&
                ((s = (i = r.zoomTintImage).clone()),
                r.zoomTintImage.attr("src", t),
                r.zoomTintImage.after(s),
                s.stop(!0).fadeOut(r.options.imageCrossfade, function () {
                  l(this).remove();
                }),
                i.fadeIn(r.options.imageCrossfade),
                r.zoomTint.css({ height: r.$elem.height() }),
                r.zoomTint.css({ width: r.$elem.width() })),
              r.zoomContainer.css("height", r.$elem.height()),
              r.zoomContainer.css("width", r.$elem.width()),
              "inner" == r.options.zoomType &&
                (r.options.constrainType ||
                  (r.zoomWrap.parent().css("height", r.$elem.height()),
                  r.zoomWrap.parent().css("width", r.$elem.width()),
                  r.zoomWindow.css("height", r.$elem.height()),
                  r.zoomWindow.css("width", r.$elem.width()))))
            : (r.$elem.attr("src", e),
              r.options.tint &&
                (r.zoomTintImage.attr("src", t),
                r.zoomTintImage.attr("height", r.$elem.height()),
                r.zoomTintImage.css({ height: r.$elem.height() }),
                r.zoomTint.css({ height: r.$elem.height() })),
              r.zoomContainer.css("height", r.$elem.height()),
              r.zoomContainer.css("width", r.$elem.width())),
          r.options.imageCrossfade &&
            (r.zoomWrap.css("height", r.$elem.height()),
            r.zoomWrap.css("width", r.$elem.width())),
          r.options.constrainType &&
            ("height" == r.options.constrainType &&
              (r.zoomContainer.css("height", r.options.constrainSize),
              r.zoomContainer.css("width", "auto"),
              r.options.imageCrossfade
                ? (r.zoomWrap.css("height", r.options.constrainSize),
                  r.zoomWrap.css("width", "auto"),
                  (r.constwidth = r.zoomWrap.width()))
                : (r.$elem.css("height", r.options.constrainSize),
                  r.$elem.css("width", "auto"),
                  (r.constwidth = r.$elem.width())),
              "inner" == r.options.zoomType &&
                (r.zoomWrap.parent().css("height", r.options.constrainSize),
                r.zoomWrap.parent().css("width", r.constwidth),
                r.zoomWindow.css("height", r.options.constrainSize),
                r.zoomWindow.css("width", r.constwidth)),
              r.options.tint &&
                (r.tintContainer.css("height", r.options.constrainSize),
                r.tintContainer.css("width", r.constwidth),
                r.zoomTint.css("height", r.options.constrainSize),
                r.zoomTint.css("width", r.constwidth),
                r.zoomTintImage.css("height", r.options.constrainSize),
                r.zoomTintImage.css("width", r.constwidth))),
            "width" == r.options.constrainType &&
              (r.zoomContainer.css("height", "auto"),
              r.zoomContainer.css("width", r.options.constrainSize),
              r.options.imageCrossfade
                ? (r.zoomWrap.css("height", "auto"),
                  r.zoomWrap.css("width", r.options.constrainSize),
                  (r.constheight = r.zoomWrap.height()))
                : (r.$elem.css("height", "auto"),
                  r.$elem.css("width", r.options.constrainSize),
                  (r.constheight = r.$elem.height())),
              "inner" == r.options.zoomType &&
                (r.zoomWrap.parent().css("height", r.constheight),
                r.zoomWrap.parent().css("width", r.options.constrainSize),
                r.zoomWindow.css("height", r.constheight),
                r.zoomWindow.css("width", r.options.constrainSize)),
              r.options.tint &&
                (r.tintContainer.css("height", r.constheight),
                r.tintContainer.css("width", r.options.constrainSize),
                r.zoomTint.css("height", r.constheight),
                r.zoomTint.css("width", r.options.constrainSize),
                r.zoomTintImage.css("height", r.constheight),
                r.zoomTintImage.css("width", r.options.constrainSize))));
      },
      doneCallback: function () {
        var e = this;
        e.options.loadingIcon && e.spinner.hide(),
          (e.nzOffset = e.$elem.offset()),
          (e.nzWidth = e.$elem.width()),
          (e.nzHeight = e.$elem.height()),
          (e.currentZoomLevel = e.options.zoomLevel),
          (e.widthRatio = e.largeWidth / e.nzWidth),
          (e.heightRatio = e.largeHeight / e.nzHeight),
          "window" == e.options.zoomType &&
            ((lensHeight =
              e.nzHeight < e.options.zoomWindowWidth / e.widthRatio
                ? e.nzHeight
                : String(e.options.zoomWindowHeight / e.heightRatio)),
            (lensWidth =
              e.options.zoomWindowWidth < e.options.zoomWindowWidth
                ? e.nzWidth
                : e.options.zoomWindowWidth / e.widthRatio),
            e.zoomLens &&
              (e.zoomLens.css("width", lensWidth),
              e.zoomLens.css("height", lensHeight)));
      },
      getCurrentImage: function () {
        return this.zoomImage;
      },
      getGalleryList: function () {
        var t = this;
        return (
          (t.gallerylist = []),
          t.options.gallery
            ? l("#" + t.options.gallery + " a").each(function () {
                var e = "";
                l(this).data("zoom-image")
                  ? (e = l(this).data("zoom-image"))
                  : l(this).data("image") && (e = l(this).data("image")),
                  e == t.zoomImage
                    ? t.gallerylist.unshift({
                        href: "" + e,
                        title: l(this).find("img").attr("title"),
                      })
                    : t.gallerylist.push({
                        href: "" + e,
                        title: l(this).find("img").attr("title"),
                      });
              })
            : t.gallerylist.push({
                href: "" + t.zoomImage,
                title: l(this).find("img").attr("title"),
              }),
          t.gallerylist
        );
      },
      changeZoomLevel: function (e) {
        var t = this;
        (t.scrollingLock = !0),
          (t.newvalue = parseFloat(e).toFixed(2)),
          (newvalue = parseFloat(e).toFixed(2)),
          (maxheightnewvalue =
            t.largeHeight /
            ((t.options.zoomWindowHeight / t.nzHeight) * t.nzHeight)),
          (maxwidthtnewvalue =
            t.largeWidth /
            ((t.options.zoomWindowWidth / t.nzWidth) * t.nzWidth)),
          "inner" != t.options.zoomType &&
            (maxheightnewvalue <= newvalue
              ? ((t.heightRatio =
                  t.largeHeight / maxheightnewvalue / t.nzHeight),
                (t.newvalueheight = maxheightnewvalue),
                (t.fullheight = !0))
              : ((t.heightRatio = t.largeHeight / newvalue / t.nzHeight),
                (t.newvalueheight = newvalue),
                (t.fullheight = !1)),
            maxwidthtnewvalue <= newvalue
              ? ((t.widthRatio = t.largeWidth / maxwidthtnewvalue / t.nzWidth),
                (t.newvaluewidth = maxwidthtnewvalue),
                (t.fullwidth = !0))
              : ((t.widthRatio = t.largeWidth / newvalue / t.nzWidth),
                (t.newvaluewidth = newvalue),
                (t.fullwidth = !1)),
            "lens" == t.options.zoomType &&
              (maxheightnewvalue <= newvalue
                ? ((t.fullwidth = !0), (t.newvaluewidth = maxheightnewvalue))
                : ((t.widthRatio = t.largeWidth / newvalue / t.nzWidth),
                  (t.newvaluewidth = newvalue),
                  (t.fullwidth = !1)))),
          "inner" == t.options.zoomType &&
            ((maxheightnewvalue = parseFloat(
              t.largeHeight / t.nzHeight
            ).toFixed(2)),
            (maxwidthtnewvalue = parseFloat(t.largeWidth / t.nzWidth).toFixed(
              2
            )),
            newvalue > maxheightnewvalue && (newvalue = maxheightnewvalue),
            newvalue > maxwidthtnewvalue && (newvalue = maxwidthtnewvalue),
            maxheightnewvalue <= newvalue
              ? ((t.heightRatio = t.largeHeight / newvalue / t.nzHeight),
                newvalue > maxheightnewvalue
                  ? (t.newvalueheight = maxheightnewvalue)
                  : (t.newvalueheight = newvalue),
                (t.fullheight = !0))
              : ((t.heightRatio = t.largeHeight / newvalue / t.nzHeight),
                newvalue > maxheightnewvalue
                  ? (t.newvalueheight = maxheightnewvalue)
                  : (t.newvalueheight = newvalue),
                (t.fullheight = !1)),
            maxwidthtnewvalue <= newvalue
              ? ((t.widthRatio = t.largeWidth / newvalue / t.nzWidth),
                newvalue > maxwidthtnewvalue
                  ? (t.newvaluewidth = maxwidthtnewvalue)
                  : (t.newvaluewidth = newvalue),
                (t.fullwidth = !0))
              : ((t.widthRatio = t.largeWidth / newvalue / t.nzWidth),
                (t.newvaluewidth = newvalue),
                (t.fullwidth = !1))),
          (scrcontinue = !1),
          "inner" == t.options.zoomType &&
            (t.nzWidth >= t.nzHeight &&
              (t.newvaluewidth <= maxwidthtnewvalue
                ? (scrcontinue = !0)
                : ((scrcontinue = !1),
                  (t.fullheight = !0),
                  (t.fullwidth = !0))),
            t.nzHeight > t.nzWidth &&
              (t.newvaluewidth <= maxwidthtnewvalue
                ? (scrcontinue = !0)
                : ((scrcontinue = !1),
                  (t.fullheight = !0),
                  (t.fullwidth = !0)))),
          "inner" != t.options.zoomType && (scrcontinue = !0),
          scrcontinue &&
            ((t.zoomLock = 0),
            (t.changeZoom = !0),
            t.options.zoomWindowHeight / t.heightRatio <= t.nzHeight &&
              ((t.currentZoomLevel = t.newvalueheight),
              "lens" != t.options.zoomType &&
                "inner" != t.options.zoomType &&
                ((t.changeBgSize = !0),
                t.zoomLens.css({
                  height:
                    String(t.options.zoomWindowHeight / t.heightRatio) + "px",
                })),
              ("lens" != t.options.zoomType && "inner" != t.options.zoomType) ||
                (t.changeBgSize = !0)),
            t.options.zoomWindowWidth / t.widthRatio <= t.nzWidth &&
              ("inner" != t.options.zoomType &&
                t.newvaluewidth > t.newvalueheight &&
                (t.currentZoomLevel = t.newvaluewidth),
              "lens" != t.options.zoomType &&
                "inner" != t.options.zoomType &&
                ((t.changeBgSize = !0),
                t.zoomLens.css({
                  width:
                    String(t.options.zoomWindowWidth / t.widthRatio) + "px",
                })),
              ("lens" != t.options.zoomType && "inner" != t.options.zoomType) ||
                (t.changeBgSize = !0)),
            "inner" == t.options.zoomType &&
              ((t.changeBgSize = !0),
              t.nzWidth > t.nzHeight && (t.currentZoomLevel = t.newvaluewidth),
              t.nzHeight > t.nzWidth &&
                (t.currentZoomLevel = t.newvaluewidth))),
          t.setPosition(t.currentLoc);
      },
      closeAll: function () {
        self.zoomWindow && self.zoomWindow.hide(),
          self.zoomLens && self.zoomLens.hide(),
          self.zoomTint && self.zoomTint.hide();
      },
      changeState: function (e) {
        "enable" == e && (this.options.zoomEnabled = !0),
          "disable" == e && (this.options.zoomEnabled = !1);
      },
    };
    (l.fn.elevateZoom = function (t) {
      return this.each(function () {
        var e = Object.create(o);
        e.init(t, this), l.data(this, "elevateZoom", e);
      });
    }),
      (l.fn.elevateZoom.options = {
        zoomActivation: "hover",
        zoomEnabled: !0,
        preloading: 1,
        zoomLevel: 1,
        scrollZoom: !1,
        scrollZoomIncrement: 0.1,
        minZoomLevel: !1,
        maxZoomLevel: !1,
        easing: !1,
        easingAmount: 12,
        lensSize: 200,
        zoomWindowWidth: 400,
        zoomWindowHeight: 400,
        zoomWindowOffetx: 0,
        zoomWindowOffety: 0,
        zoomWindowPosition: 1,
        zoomWindowBgColour: "#fff",
        lensFadeIn: !1,
        lensFadeOut: !1,
        debug: !1,
        zoomWindowFadeIn: !1,
        zoomWindowFadeOut: !1,
        zoomWindowAlwaysShow: !1,
        zoomTintFadeIn: !1,
        zoomTintFadeOut: !1,
        borderSize: 4,
        showLens: !0,
        borderColour: "#888",
        lensBorderSize: 1,
        lensBorderColour: "#000",
        lensShape: "square",
        zoomType: "window",
        containLensZoom: !1,
        lensColour: "white",
        lensOpacity: 0.4,
        lenszoom: !1,
        tint: !1,
        tintColour: "#333",
        tintOpacity: 0.4,
        gallery: !1,
        galleryActiveClass: "zoomGalleryActive",
        imageCrossfade: !1,
        constrainType: !1,
        constrainSize: !1,
        loadingIcon: !1,
        cursor: "default",
        responsive: !0,
        onComplete: l.noop,
        onDestroy: function () {},
        onZoomedImageLoaded: function () {},
        onImageSwap: l.noop,
        onImageSwapComplete: l.noop,
      });
  })(jQuery, (window, document)),
  (function (f) {
    var n = {
      url: !1,
      callback: !1,
      target: !1,
      duration: 120,
      on: "mouseover",
      touch: !0,
      onZoomIn: !1,
      onZoomOut: !1,
      magnify: 1,
    };
    (f.zoom = function (e, t, n, o) {
      var i,
        s,
        r,
        a,
        l,
        c,
        d,
        u = f(e),
        p = u.css("position"),
        h = f(t);
      return (
        (e.style.position = /(absolute|fixed)/.test(p) ? p : "relative"),
        (e.style.overflow = "hidden"),
        (n.style.width = n.style.height = ""),
        f(n)
          .addClass("zoomImg")
          .css({
            position: "absolute",
            top: 0,
            left: 0,
            opacity: 0,
            width: n.width * o,
            height: n.height * o,
            border: "none",
            maxWidth: "none",
            maxHeight: "none",
          })
          .appendTo(e),
        {
          init: function () {
            (s = u.outerWidth()),
              (i = u.outerHeight()),
              (r =
                t === e
                  ? ((a = s), i)
                  : ((a = h.outerWidth()), h.outerHeight())),
              (l = (n.width - s) / a),
              (c = (n.height - i) / r),
              (d = h.offset());
          },
          move: function (e) {
            var t = e.pageX - d.left,
              o = e.pageY - d.top,
              o = Math.max(Math.min(o, r), 0),
              t = Math.max(Math.min(t, a), 0);
            (n.style.left = t * -l + "px"), (n.style.top = o * -c + "px");
          },
        }
      );
    }),
      (f.fn.zoom = function (o) {
        return this.each(function () {
          var i = f.extend({}, n, o || {}),
            s = (i.target && f(i.target)[0]) || this,
            e = this,
            r = f(e),
            a = document.createElement("img"),
            l = f(a),
            c = "mousemove.zoom",
            d = !1,
            u = !1;
          if (!i.url) {
            var t = e.querySelector("img");
            if (
              (t &&
                (i.url = t.getAttribute("data-src") || t.currentSrc || t.src),
              !i.url)
            )
              return;
          }
          r.one(
            "zoom.destroy",
            function (e, t) {
              r.off(".zoom"),
                (s.style.position = e),
                (s.style.overflow = t),
                (a.onload = null),
                l.remove();
            }.bind(this, s.style.position, s.style.overflow)
          ),
            (a.onload = function () {
              function t(e) {
                n.init(),
                  n.move(e),
                  l
                    .stop()
                    .fadeTo(
                      f.support.opacity ? i.duration : 0,
                      1,
                      !!f.isFunction(i.onZoomIn) && i.onZoomIn.call(a)
                    );
              }
              function o() {
                l.stop().fadeTo(
                  i.duration,
                  0,
                  !!f.isFunction(i.onZoomOut) && i.onZoomOut.call(a)
                );
              }
              var n = f.zoom(s, e, a, i.magnify);
              "grab" === i.on
                ? r.on("mousedown.zoom", function (e) {
                    1 === e.which &&
                      (f(document).one("mouseup.zoom", function () {
                        o(), f(document).off(c, n.move);
                      }),
                      t(e),
                      f(document).on(c, n.move),
                      e.preventDefault());
                  })
                : "click" === i.on
                ? r.on("click.zoom", function (e) {
                    return d
                      ? void 0
                      : ((d = !0),
                        t(e),
                        f(document).on(c, n.move),
                        f(document).one("click.zoom", function () {
                          o(), (d = !1), f(document).off(c, n.move);
                        }),
                        !1);
                  })
                : "toggle" === i.on
                ? r.on("click.zoom", function (e) {
                    d ? o() : t(e), (d = !d);
                  })
                : "mouseover" === i.on &&
                  (n.init(),
                  r
                    .on("mouseenter.zoom", t)
                    .on("mouseleave.zoom", o)
                    .on(c, n.move)),
                i.touch &&
                  r
                    .on("touchstart.zoom", function (e) {
                      e.preventDefault(),
                        u
                          ? ((u = !1), o())
                          : ((u = !0),
                            t(
                              e.originalEvent.touches[0] ||
                                e.originalEvent.changedTouches[0]
                            ));
                    })
                    .on("touchmove.zoom", function (e) {
                      e.preventDefault(),
                        n.move(
                          e.originalEvent.touches[0] ||
                            e.originalEvent.changedTouches[0]
                        );
                    })
                    .on("touchend.zoom", function (e) {
                      e.preventDefault(), u && ((u = !1), o());
                    }),
                f.isFunction(i.callback) && i.callback.call(a);
            }),
            a.setAttribute("role", "presentation"),
            (a.alt = ""),
            (a.src = i.url);
        });
      }),
      (f.fn.zoom.defaults = n);
  })(window.jQuery);
