window.Modernizr = (function (e, t, n) {
  function r(e) {
    b.cssText = e;
  }
  function o(e, t) {
    return r(S.join(e + ";") + (t || ""));
  }
  function a(e, t) {
    return typeof e === t;
  }
  function i(e, t) {
    return !!~("" + e).indexOf(t);
  }
  function c(e, t) {
    for (var r in e) {
      var o = e[r];
      if (!i(o, "-") && b[o] !== n) return "pfx" == t ? o : !0;
    }
    return !1;
  }
  function s(e, t, r) {
    for (var o in e) {
      var i = t[e[o]];
      if (i !== n)
        return r === !1 ? e[o] : a(i, "function") ? i.bind(r || t) : i;
    }
    return !1;
  }
  function u(e, t, n) {
    var r = e.charAt(0).toUpperCase() + e.slice(1),
      o = (e + " " + k.join(r + " ") + r).split(" ");
    return a(t, "string") || a(t, "undefined")
      ? c(o, t)
      : ((o = (e + " " + T.join(r + " ") + r).split(" ")), s(o, t, n));
  }
  function l() {
    (p.input = (function (n) {
      for (var r = 0, o = n.length; o > r; r++) j[n[r]] = !!(n[r] in E);
      return (
        j.list &&
          (j.list = !(!t.createElement("datalist") || !e.HTMLDataListElement)),
        j
      );
    })(
      "autocomplete autofocus list placeholder max min multiple pattern required step".split(
        " "
      )
    )),
      (p.inputtypes = (function (e) {
        for (var r, o, a, i = 0, c = e.length; c > i; i++)
          E.setAttribute("type", (o = e[i])),
            (r = "text" !== E.type),
            r &&
              ((E.value = x),
              (E.style.cssText = "position:absolute;visibility:hidden;"),
              /^range$/.test(o) && E.style.WebkitAppearance !== n
                ? (g.appendChild(E),
                  (a = t.defaultView),
                  (r =
                    a.getComputedStyle &&
                    "textfield" !==
                      a.getComputedStyle(E, null).WebkitAppearance &&
                    0 !== E.offsetHeight),
                  g.removeChild(E))
                : /^(search|tel)$/.test(o) ||
                  (r = /^(url|email)$/.test(o)
                    ? E.checkValidity && E.checkValidity() === !1
                    : E.value != x)),
            (P[e[i]] = !!r);
        return P;
      })(
        "search tel url email datetime date month week time datetime-local number range color".split(
          " "
        )
      ));
  }
  var d,
    f,
    m = "2.8.3",
    p = {},
    h = !0,
    g = t.documentElement,
    v = "modernizr",
    y = t.createElement(v),
    b = y.style,
    E = t.createElement("input"),
    x = ":)",
    w = {}.toString,
    S = " -webkit- -moz- -o- -ms- ".split(" "),
    C = "Webkit Moz O ms",
    k = C.split(" "),
    T = C.toLowerCase().split(" "),
    N = { svg: "http://www.w3.org/2000/svg" },
    M = {},
    P = {},
    j = {},
    $ = [],
    D = $.slice,
    F = function (e, n, r, o) {
      var a,
        i,
        c,
        s,
        u = t.createElement("div"),
        l = t.body,
        d = l || t.createElement("body");
      if (parseInt(r, 10))
        for (; r--; )
          (c = t.createElement("div")),
            (c.id = o ? o[r] : v + (r + 1)),
            u.appendChild(c);
      return (
        (a = ["&#173;", '<style id="s', v, '">', e, "</style>"].join("")),
        (u.id = v),
        ((l ? u : d).innerHTML += a),
        d.appendChild(u),
        l ||
          ((d.style.background = ""),
          (d.style.overflow = "hidden"),
          (s = g.style.overflow),
          (g.style.overflow = "hidden"),
          g.appendChild(d)),
        (i = n(u, e)),
        l
          ? u.parentNode.removeChild(u)
          : (d.parentNode.removeChild(d), (g.style.overflow = s)),
        !!i
      );
    },
    z = function (t) {
      var n = e.matchMedia || e.msMatchMedia;
      if (n) return (n(t) && n(t).matches) || !1;
      var r;
      return (
        F(
          "@media " + t + " { #" + v + " { position: absolute; } }",
          function (t) {
            r =
              "absolute" ==
              (e.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle)
                .position;
          }
        ),
        r
      );
    },
    A = (function () {
      function e(e, o) {
        (o = o || t.createElement(r[e] || "div")), (e = "on" + e);
        var i = e in o;
        return (
          i ||
            (o.setAttribute || (o = t.createElement("div")),
            o.setAttribute &&
              o.removeAttribute &&
              (o.setAttribute(e, ""),
              (i = a(o[e], "function")),
              a(o[e], "undefined") || (o[e] = n),
              o.removeAttribute(e))),
          (o = null),
          i
        );
      }
      var r = {
        select: "input",
        change: "input",
        submit: "form",
        reset: "form",
        error: "img",
        load: "img",
        abort: "img",
      };
      return e;
    })(),
    L = {}.hasOwnProperty;
  (f =
    a(L, "undefined") || a(L.call, "undefined")
      ? function (e, t) {
          return t in e && a(e.constructor.prototype[t], "undefined");
        }
      : function (e, t) {
          return L.call(e, t);
        }),
    Function.prototype.bind ||
      (Function.prototype.bind = function (e) {
        var t = this;
        if ("function" != typeof t) throw new TypeError();
        var n = D.call(arguments, 1),
          r = function () {
            if (this instanceof r) {
              var o = function () {};
              o.prototype = t.prototype;
              var a = new o(),
                i = t.apply(a, n.concat(D.call(arguments)));
              return Object(i) === i ? i : a;
            }
            return t.apply(e, n.concat(D.call(arguments)));
          };
        return r;
      }),
    (M.flexbox = function () {
      return u("flexWrap");
    }),
    (M.flexboxlegacy = function () {
      return u("boxDirection");
    }),
    (M.canvas = function () {
      var e = t.createElement("canvas");
      return !(!e.getContext || !e.getContext("2d"));
    }),
    (M.canvastext = function () {
      return !(
        !p.canvas ||
        !a(t.createElement("canvas").getContext("2d").fillText, "function")
      );
    }),
    (M.webgl = function () {
      return !!e.WebGLRenderingContext;
    }),
    (M.touch = function () {
      var n;
      return (
        "ontouchstart" in e || (e.DocumentTouch && t instanceof DocumentTouch)
          ? (n = !0)
          : F(
              [
                "@media (",
                S.join("touch-enabled),("),
                v,
                ")",
                "{#modernizr{top:9px;position:absolute}}",
              ].join(""),
              function (e) {
                n = 9 === e.offsetTop;
              }
            ),
        n
      );
    }),
    (M.geolocation = function () {
      return "geolocation" in navigator;
    }),
    (M.postmessage = function () {
      return !!e.postMessage;
    }),
    (M.websqldatabase = function () {
      return !!e.openDatabase;
    }),
    (M.indexedDB = function () {
      return !!u("indexedDB", e);
    }),
    (M.hashchange = function () {
      return A("hashchange", e) && (t.documentMode === n || t.documentMode > 7);
    }),
    (M.history = function () {
      return !(!e.history || !history.pushState);
    }),
    (M.draganddrop = function () {
      var e = t.createElement("div");
      return "draggable" in e || ("ondragstart" in e && "ondrop" in e);
    }),
    (M.websockets = function () {
      return "WebSocket" in e || "MozWebSocket" in e;
    }),
    (M.rgba = function () {
      return (
        r("background-color:rgba(150,255,150,.5)"), i(b.backgroundColor, "rgba")
      );
    }),
    (M.hsla = function () {
      return (
        r("background-color:hsla(120,40%,100%,.5)"),
        i(b.backgroundColor, "rgba") || i(b.backgroundColor, "hsla")
      );
    }),
    (M.multiplebgs = function () {
      return (
        r("background:url(https://),url(https://),red url(https://)"),
        /(url\s*\(.*?){3}/.test(b.background)
      );
    }),
    (M.backgroundsize = function () {
      return u("backgroundSize");
    }),
    (M.borderimage = function () {
      return u("borderImage");
    }),
    (M.borderradius = function () {
      return u("borderRadius");
    }),
    (M.boxshadow = function () {
      return u("boxShadow");
    }),
    (M.textshadow = function () {
      return "" === t.createElement("div").style.textShadow;
    }),
    (M.opacity = function () {
      return o("opacity:.55"), /^0.55$/.test(b.opacity);
    }),
    (M.cssanimations = function () {
      return u("animationName");
    }),
    (M.csscolumns = function () {
      return u("columnCount");
    }),
    (M.cssgradients = function () {
      var e = "background-image:",
        t = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
        n = "linear-gradient(left top,#9f9, white);";
      return (
        r(
          (e + "-webkit- ".split(" ").join(t + e) + S.join(n + e)).slice(
            0,
            -e.length
          )
        ),
        i(b.backgroundImage, "gradient")
      );
    }),
    (M.cssreflections = function () {
      return u("boxReflect");
    }),
    (M.csstransforms = function () {
      return !!u("transform");
    }),
    (M.csstransforms3d = function () {
      var e = !!u("perspective");
      return (
        e &&
          "webkitPerspective" in g.style &&
          F(
            "@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",
            function (t) {
              e = 9 === t.offsetLeft && 3 === t.offsetHeight;
            }
          ),
        e
      );
    }),
    (M.csstransitions = function () {
      return u("transition");
    }),
    (M.fontface = function () {
      var e;
      return (
        F(
          '@font-face {font-family:"font";src:url("https://")}',
          function (n, r) {
            var o = t.getElementById("smodernizr"),
              a = o.sheet || o.styleSheet,
              i = a
                ? a.cssRules && a.cssRules[0]
                  ? a.cssRules[0].cssText
                  : a.cssText || ""
                : "";
            e = /src/i.test(i) && 0 === i.indexOf(r.split(" ")[0]);
          }
        ),
        e
      );
    }),
    (M.generatedcontent = function () {
      var e;
      return (
        F(
          [
            "#",
            v,
            "{font:0/0 a}#",
            v,
            ':after{content:"',
            x,
            '";visibility:hidden;font:3px/1 a}',
          ].join(""),
          function (t) {
            e = t.offsetHeight >= 3;
          }
        ),
        e
      );
    }),
    (M.video = function () {
      var e = t.createElement("video"),
        n = !1;
      try {
        (n = !!e.canPlayType) &&
          ((n = new Boolean(n)),
          (n.ogg = e
            .canPlayType('video/ogg; codecs="theora"')
            .replace(/^no$/, "")),
          (n.h264 = e
            .canPlayType('video/mp4; codecs="avc1.42E01E"')
            .replace(/^no$/, "")),
          (n.webm = e
            .canPlayType('video/webm; codecs="vp8, vorbis"')
            .replace(/^no$/, "")));
      } catch (r) {}
      return n;
    }),
    (M.audio = function () {
      var e = t.createElement("audio"),
        n = !1;
      try {
        (n = !!e.canPlayType) &&
          ((n = new Boolean(n)),
          (n.ogg = e
            .canPlayType('audio/ogg; codecs="vorbis"')
            .replace(/^no$/, "")),
          (n.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, "")),
          (n.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, "")),
          (n.m4a = (
            e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")
          ).replace(/^no$/, "")));
      } catch (r) {}
      return n;
    }),
    (M.localstorage = function () {
      try {
        return localStorage.setItem(v, v), localStorage.removeItem(v), !0;
      } catch (e) {
        return !1;
      }
    }),
    (M.sessionstorage = function () {
      try {
        return sessionStorage.setItem(v, v), sessionStorage.removeItem(v), !0;
      } catch (e) {
        return !1;
      }
    }),
    (M.webworkers = function () {
      return !!e.Worker;
    }),
    (M.applicationcache = function () {
      return !!e.applicationCache;
    }),
    (M.svg = function () {
      return (
        !!t.createElementNS && !!t.createElementNS(N.svg, "svg").createSVGRect
      );
    }),
    (M.inlinesvg = function () {
      var e = t.createElement("div");
      return (
        (e.innerHTML = "<svg/>"),
        (e.firstChild && e.firstChild.namespaceURI) == N.svg
      );
    }),
    (M.smil = function () {
      return (
        !!t.createElementNS &&
        /SVGAnimate/.test(w.call(t.createElementNS(N.svg, "animate")))
      );
    }),
    (M.svgclippaths = function () {
      return (
        !!t.createElementNS &&
        /SVGClipPath/.test(w.call(t.createElementNS(N.svg, "clipPath")))
      );
    });
  for (var H in M)
    f(M, H) &&
      ((d = H.toLowerCase()), (p[d] = M[H]()), $.push((p[d] ? "" : "no-") + d));
  return (
    p.input || l(),
    (p.addTest = function (e, t) {
      if ("object" == typeof e) for (var r in e) f(e, r) && p.addTest(r, e[r]);
      else {
        if (((e = e.toLowerCase()), p[e] !== n)) return p;
        (t = "function" == typeof t ? t() : t),
          "undefined" != typeof h &&
            h &&
            (g.className += " " + (t ? "" : "no-") + e),
          (p[e] = t);
      }
      return p;
    }),
    r(""),
    (y = E = null),
    (function (e, t) {
      function n(e, t) {
        var n = e.createElement("p"),
          r = e.getElementsByTagName("head")[0] || e.documentElement;
        return (
          (n.innerHTML = "x<style>" + t + "</style>"),
          r.insertBefore(n.lastChild, r.firstChild)
        );
      }
      function r() {
        var e = y.elements;
        return "string" == typeof e ? e.split(" ") : e;
      }
      function o(e) {
        var t = v[e[h]];
        return t || ((t = {}), g++, (e[h] = g), (v[g] = t)), t;
      }
      function a(e, n, r) {
        if ((n || (n = t), l)) return n.createElement(e);
        r || (r = o(n));
        var a;
        return (
          (a = r.cache[e]
            ? r.cache[e].cloneNode()
            : p.test(e)
            ? (r.cache[e] = r.createElem(e)).cloneNode()
            : r.createElem(e)),
          !a.canHaveChildren || m.test(e) || a.tagUrn
            ? a
            : r.frag.appendChild(a)
        );
      }
      function i(e, n) {
        if ((e || (e = t), l)) return e.createDocumentFragment();
        n = n || o(e);
        for (
          var a = n.frag.cloneNode(), i = 0, c = r(), s = c.length;
          s > i;
          i++
        )
          a.createElement(c[i]);
        return a;
      }
      function c(e, t) {
        t.cache ||
          ((t.cache = {}),
          (t.createElem = e.createElement),
          (t.createFrag = e.createDocumentFragment),
          (t.frag = t.createFrag())),
          (e.createElement = function (n) {
            return y.shivMethods ? a(n, e, t) : t.createElem(n);
          }),
          (e.createDocumentFragment = Function(
            "h,f",
            "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" +
              r()
                .join()
                .replace(/[\w\-]+/g, function (e) {
                  return (
                    t.createElem(e), t.frag.createElement(e), 'c("' + e + '")'
                  );
                }) +
              ");return n}"
          )(y, t.frag));
      }
      function s(e) {
        e || (e = t);
        var r = o(e);
        return (
          !y.shivCSS ||
            u ||
            r.hasCSS ||
            (r.hasCSS = !!n(
              e,
              "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}"
            )),
          l || c(e, r),
          e
        );
      }
      var u,
        l,
        d = "3.7.0",
        f = e.html5 || {},
        m =
          /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
        p =
          /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
        h = "_html5shiv",
        g = 0,
        v = {};
      !(function () {
        try {
          var e = t.createElement("a");
          (e.innerHTML = "<xyz></xyz>"),
            (u = "hidden" in e),
            (l =
              1 == e.childNodes.length ||
              (function () {
                t.createElement("a");
                var e = t.createDocumentFragment();
                return (
                  "undefined" == typeof e.cloneNode ||
                  "undefined" == typeof e.createDocumentFragment ||
                  "undefined" == typeof e.createElement
                );
              })());
        } catch (n) {
          (u = !0), (l = !0);
        }
      })();
      var y = {
        elements:
          f.elements ||
          "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
        version: d,
        shivCSS: f.shivCSS !== !1,
        supportsUnknownElements: l,
        shivMethods: f.shivMethods !== !1,
        type: "default",
        shivDocument: s,
        createElement: a,
        createDocumentFragment: i,
      };
      (e.html5 = y), s(t);
    })(this, t),
    (p._version = m),
    (p._prefixes = S),
    (p._domPrefixes = T),
    (p._cssomPrefixes = k),
    (p.mq = z),
    (p.hasEvent = A),
    (p.testProp = function (e) {
      return c([e]);
    }),
    (p.testAllProps = u),
    (p.testStyles = F),
    (p.prefixed = function (e, t, n) {
      return t ? u(e, t, n) : u(e, "pfx");
    }),
    (g.className =
      g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") +
      (h ? " js " + $.join(" ") : "")),
    p
  );
})(this, this.document);
