text: /**/
  var M = document.querySelector('meta[name="generator"]').getAttribute('data-variable'), D = M.split(',');
  M = new Array();
  M['weburl'] = D[0];
  M['lang'] = D[1];
  M['classnow'] = parseInt(D[2]);
  M['id'] = parseInt(D[3]);
  M['module'] = parseInt(D[4]);
  M['tem'] = D[0] + 'templates/' + D[5];
  var deviceType = /iPad/.test(navigator.userAgent) ? 't' : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? 'm' : 'p',
      ucBro = /UC/.test(navigator.userAgent);
  /*jquery.min.js*/
  /*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
  !function (a, b) {
      "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function (a) {
          if (!a.document) throw new Error("jQuery requires a window with a document");
          return b(a)
      } : b(a)
  }("undefined" != typeof window ? window : this, function (a, b) {
      var c = [], d = c.slice, e = c.concat, f = c.push, g = c.indexOf, h = {}, i = h.toString, j = h.hasOwnProperty,
          k = {}, l = "1.11.3", m = function (a, b) {
              return new m.fn.init(a, b)
          }, n = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, o = /^-ms-/, p = /-([\da-z])/gi, q = function (a, b) {
              return b.toUpperCase()
          };
      m.fn = m.prototype = {
          jquery: l, constructor: m, selector: "", length: 0, toArray: function () {
              return d.call(this)
          }, get: function (a) {
              return null != a ? 0 > a ? this[a + this.length] : this[a] : d.call(this)
          }, pushStack: function (a) {
              var b = m.merge(this.constructor(), a);
              return b.prevObject = this, b.context = this.context, b
          }, each: function (a, b) {
              return m.each(this, a, b)
          }, map: function (a) {
              return this.pushStack(m.map(this, function (b, c) {
                  return a.call(b, c, b)
              }))
          }, slice: function () {
              return this.pushStack(d.apply(this, arguments))
          }, first: function () {
              return this.eq(0)
          }, last: function () {
              return this.eq(-1)
          }, eq: function (a) {
              var b = this.length, c = +a + (0 > a ? b : 0);
              return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
          }, end: function () {
              return this.prevObject || this.constructor(null)
          }, push: f, sort: c.sort, splice: c.splice
      }, m.extend = m.fn.extend = function () {
          var a, b, c, d, e, f, g = arguments[0] || {}, h = 1, i = arguments.length, j = !1;
          for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || m.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++) if (null != (e = arguments[h])) for (d in e) a = g[d], c = e[d], g !== c && (j && c && (m.isPlainObject(c) || (b = m.isArray(c))) ? (b ? (b = !1, f = a && m.isArray(a) ? a : []) : f = a && m.isPlainObject(a) ? a : {}, g[d] = m.extend(j, f, c)) : void 0 !== c && (g[d] = c));
          return g
      }, m.extend({
          expando: "jQuery" + (l + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (a) {
              throw new Error(a)
          }, noop: function () {
          }, isFunction: function (a) {
              return "function" === m.type(a)
          }, isArray: Array.isArray || function (a) {
              return "array" === m.type(a)
          }, isWindow: function (a) {
              return null != a && a == a.window
          }, isNumeric: function (a) {
              return !m.isArray(a) && a - parseFloat(a) + 1 >= 0
          }, isEmptyObject: function (a) {
              var b;
              for (b in a) return !1;
              return !0
          }, isPlainObject: function (a) {
              var b;
              if (!a || "object" !== m.type(a) || a.nodeType || m.isWindow(a)) return !1;
              try {
                  if (a.constructor && !j.call(a, "constructor") && !j.call(a.constructor.prototype, "isPrototypeOf")) return !1
              } catch (c) {
                  return !1
              }
              if (k.ownLast) for (b in a) return j.call(a, b);
              for (b in a) ;
              return void 0 === b || j.call(a, b)
          }, type: function (a) {
              return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a
          }, globalEval: function (b) {
              b && m.trim(b) && (a.execScript || function (b) {
                  a.eval.call(a, b)
              })(b)
          }, camelCase: function (a) {
              return a.replace(o, "ms-").replace(p, q)
          }, nodeName: function (a, b) {
              return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
          }, each: function (a, b, c) {
              var d, e = 0, f = a.length, g = r(a);
              if (c) {
                  if (g) {
                      for (; f > e; e++) if (d = b.apply(a[e], c), d === !1) break
                  } else for (e in a) if (d = b.apply(a[e], c), d === !1) break
              } else if (g) {
                  for (; f > e; e++) if (d = b.call(a[e], e, a[e]), d === !1) break
              } else for (e in a) if (d = b.call(a[e], e, a[e]), d === !1) break;
              return a
          }, trim: function (a) {
              return null == a ? "" : (a + "").replace(n, "")
          }, makeArray: function (a, b) {
              var c = b || [];
              return null != a && (r(Object(a)) ? m.merge(c, "string" == typeof a ? [a] : a) : f.call(c, a)), c
          }, inArray: function (a, b, c) {
              var d;
              if (b) {
                  if (g) return g.call(b, a, c);
                  for (d = b.length, c = c ? 0 > c ? Math.max(0, d + c) : c : 0; d > c; c++) if (c in b && b[c] === a) return c
              }
              return -1
          }, merge: function (a, b) {
              var c = +b.length, d = 0, e = a.length;
              while (c > d) a[e++] = b[d++];
              if (c !== c) while (void 0 !== b[d]) a[e++] = b[d++];
              return a.length = e, a
          }, grep: function (a, b, c) {
              for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]);
              return e
          }, map: function (a, b, c) {
              var d, f = 0, g = a.length, h = r(a), i = [];
              if (h) for (; g > f; f++) d = b(a[f], f, c), null != d && i.push(d); else for (f in a) d = b(a[f], f, c), null != d && i.push(d);
              return e.apply([], i)
          }, guid: 1, proxy: function (a, b) {
              var c, e, f;
              return "string" == typeof b && (f = a[b], b = a, a = f), m.isFunction(a) ? (c = d.call(arguments, 2), e = function () {
                  return a.apply(b || this, c.concat(d.call(arguments)))
              }, e.guid = a.guid = a.guid || m.guid++, e) : void 0
          }, now: function () {
              return +new Date
          }, support: k
      }), m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (a, b) {
          h["[object " + b + "]"] = b.toLowerCase()
      });
  
      function r(a) {
          var b = "length" in a && a.length, c = m.type(a);
          return "function" === c || m.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a
      }
  
      var s = function (a) {
          var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = "sizzle" + 1 * new Date, v = a.document, w = 0,
              x = 0, y = ha(), z = ha(), A = ha(), B = function (a, b) {
                  return a === b && (l = !0), 0
              }, C = 1 << 31, D = {}.hasOwnProperty, E = [], F = E.pop, G = E.push, H = E.push, I = E.slice,
              J = function (a, b) {
                  for (var c = 0, d = a.length; d > c; c++) if (a[c] === b) return c;
                  return -1
              },
              K = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
              L = "[\\x20\\t\\r\\n\\f]", M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", N = M.replace("w", "w#"),
              O = "\\[" + L + "*(" + M + ")(?:" + L + "*([*^$|!~]?=)" + L + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + N + "))|)" + L + "*\\]",
              P = ":(" + M + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + O + ")*)|.*)\\)|)",
              Q = new RegExp(L + "+", "g"), R = new RegExp("^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", "g"),
              S = new RegExp("^" + L + "*," + L + "*"), T = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"),
              U = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"), V = new RegExp(P),
              W = new RegExp("^" + N + "$"), X = {
                  ID: new RegExp("^#(" + M + ")"),
                  CLASS: new RegExp("^\\.(" + M + ")"),
                  TAG: new RegExp("^(" + M.replace("w", "w*") + ")"),
                  ATTR: new RegExp("^" + O),
                  PSEUDO: new RegExp("^" + P),
                  CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + L + "*(even|odd|(([+-]|)(\\d*)n|)" + L + "*(?:([+-]|)" + L + "*(\\d+)|))" + L + "*\\)|)", "i"),
                  bool: new RegExp("^(?:" + K + ")$", "i"),
                  needsContext: new RegExp("^" + L + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + L + "*((?:-\\d)?\\d*)" + L + "*\\)|)(?=[^-]|$)", "i")
              }, Y = /^(?:input|select|textarea|button)$/i, Z = /^h\d$/i, $ = /^[^{]+\{\s*\[native \w/,
              _ = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, aa = /[+~]/, ba = /'|\\/g,
              ca = new RegExp("\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", "ig"), da = function (a, b, c) {
                  var d = "0x" + b - 65536;
                  return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320)
              }, ea = function () {
                  m()
              };
          try {
              H.apply(E = I.call(v.childNodes), v.childNodes), E[v.childNodes.length].nodeType
          } catch (fa) {
              H = {
                  apply: E.length ? function (a, b) {
                      G.apply(a, I.call(b))
                  } : function (a, b) {
                      var c = a.length, d = 0;
                      while (a[c++] = b[d++]) ;
                      a.length = c - 1
                  }
              }
          }
  
          function ga(a, b, d, e) {
              var f, h, j, k, l, o, r, s, w, x;
              if ((b ? b.ownerDocument || b : v) !== n && m(b), b = b || n, d = d || [], k = b.nodeType, "string" != typeof a || !a || 1 !== k && 9 !== k && 11 !== k) return d;
              if (!e && p) {
                  if (11 !== k && (f = _.exec(a))) if (j = f[1]) {
                      if (9 === k) {
                          if (h = b.getElementById(j), !h || !h.parentNode) return d;
                          if (h.id === j) return d.push(h), d
                      } else if (b.ownerDocument && (h = b.ownerDocument.getElementById(j)) && t(b, h) && h.id === j) return d.push(h), d
                  } else {
                      if (f[2]) return H.apply(d, b.getElementsByTagName(a)), d;
                      if ((j = f[3]) && c.getElementsByClassName) return H.apply(d, b.getElementsByClassName(j)), d
                  }
                  if (c.qsa && (!q || !q.test(a))) {
                      if (s = r = u, w = b, x = 1 !== k && a, 1 === k && "object" !== b.nodeName.toLowerCase()) {
                          o = g(a), (r = b.getAttribute("id")) ? s = r.replace(ba, "\\$&") : b.setAttribute("id", s), s = "[id='" + s + "'] ", l = o.length;
                          while (l--) o[l] = s + ra(o[l]);
                          w = aa.test(a) && pa(b.parentNode) || b, x = o.join(",")
                      }
                      if (x) try {
                          return H.apply(d, w.querySelectorAll(x)), d
                      } catch (y) {
                      } finally {
                          r || b.removeAttribute("id")
                      }
                  }
              }
              return i(a.replace(R, "$1"), b, d, e)
          }
  
          function ha() {
              var a = [];
  
              function b(c, e) {
                  return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e
              }
  
              return b
          }
  
          function ia(a) {
              return a[u] = !0, a
          }
  
          function ja(a) {
              var b = n.createElement("div");
              try {
                  return !!a(b)
              } catch (c) {
                  return !1
              } finally {
                  b.parentNode && b.parentNode.removeChild(b), b = null
              }
          }
  
          function ka(a, b) {
              var c = a.split("|"), e = a.length;
              while (e--) d.attrHandle[c[e]] = b
          }
  
          function la(a, b) {
              var c = b && a,
                  d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || C) - (~a.sourceIndex || C);
              if (d) return d;
              if (c) while (c = c.nextSibling) if (c === b) return -1;
              return a ? 1 : -1
          }
  
          function ma(a) {
              return function (b) {
                  var c = b.nodeName.toLowerCase();
                  return "input" === c && b.type === a
              }
          }
  
          function na(a) {
              return function (b) {
                  var c = b.nodeName.toLowerCase();
                  return ("input" === c || "button" === c) && b.type === a
              }
          }
  
          function oa(a) {
              return ia(function (b) {
                  return b = +b, ia(function (c, d) {
                      var e, f = a([], c.length, b), g = f.length;
                      while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e]))
                  })
              })
          }
  
          function pa(a) {
              return a && "undefined" != typeof a.getElementsByTagName && a
          }
  
          c = ga.support = {}, f = ga.isXML = function (a) {
              var b = a && (a.ownerDocument || a).documentElement;
              return b ? "HTML" !== b.nodeName : !1
          }, m = ga.setDocument = function (a) {
              var b, e, g = a ? a.ownerDocument || a : v;
              return g !== n && 9 === g.nodeType && g.documentElement ? (n = g, o = g.documentElement, e = g.defaultView, e && e !== e.top && (e.addEventListener ? e.addEventListener("unload", ea, !1) : e.attachEvent && e.attachEvent("onunload", ea)), p = !f(g), c.attributes = ja(function (a) {
                  return a.className = "i", !a.getAttribute("className")
              }), c.getElementsByTagName = ja(function (a) {
                  return a.appendChild(g.createComment("")), !a.getElementsByTagName("*").length
              }), c.getElementsByClassName = $.test(g.getElementsByClassName), c.getById = ja(function (a) {
                  return o.appendChild(a).id = u, !g.getElementsByName || !g.getElementsByName(u).length
              }), c.getById ? (d.find.ID = function (a, b) {
                  if ("undefined" != typeof b.getElementById && p) {
                      var c = b.getElementById(a);
                      return c && c.parentNode ? [c] : []
                  }
              }, d.filter.ID = function (a) {
                  var b = a.replace(ca, da);
                  return function (a) {
                      return a.getAttribute("id") === b
                  }
              }) : (delete d.find.ID, d.filter.ID = function (a) {
                  var b = a.replace(ca, da);
                  return function (a) {
                      var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id");
                      return c && c.value === b
                  }
              }), d.find.TAG = c.getElementsByTagName ? function (a, b) {
                  return "undefined" != typeof b.getElementsByTagName ? b.getElementsByTagName(a) : c.qsa ? b.querySelectorAll(a) : void 0
              } : function (a, b) {
                  var c, d = [], e = 0, f = b.getElementsByTagName(a);
                  if ("*" === a) {
                      while (c = f[e++]) 1 === c.nodeType && d.push(c);
                      return d
                  }
                  return f
              }, d.find.CLASS = c.getElementsByClassName && function (a, b) {
                  return p ? b.getElementsByClassName(a) : void 0
              }, r = [], q = [], (c.qsa = $.test(g.querySelectorAll)) && (ja(function (a) {
                  o.appendChild(a).innerHTML = "<a id='" + u + "'></a><select id='" + u + "-\f]' msallowcapture=''><option selected=''></option></select>", a.querySelectorAll("[msallowcapture^='']").length && q.push("[*^$]=" + L + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || q.push("\\[" + L + "*(?:value|" + K + ")"), a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), a.querySelectorAll(":checked").length || q.push(":checked"), a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]")
              }), ja(function (a) {
                  var b = g.createElement("input");
                  b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && q.push("name" + L + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || q.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), q.push(",.*:")
              })), (c.matchesSelector = $.test(s = o.matches || o.webkitMatchesSelector || o.mozMatchesSelector || o.oMatchesSelector || o.msMatchesSelector)) && ja(function (a) {
                  c.disconnectedMatch = s.call(a, "div"), s.call(a, "[s!='']:x"), r.push("!=", P)
              }), q = q.length && new RegExp(q.join("|")), r = r.length && new RegExp(r.join("|")), b = $.test(o.compareDocumentPosition), t = b || $.test(o.contains) ? function (a, b) {
                  var c = 9 === a.nodeType ? a.documentElement : a, d = b && b.parentNode;
                  return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
              } : function (a, b) {
                  if (b) while (b = b.parentNode) if (b === a) return !0;
                  return !1
              }, B = b ? function (a, b) {
                  if (a === b) return l = !0, 0;
                  var d = !a.compareDocumentPosition - !b.compareDocumentPosition;
                  return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === g || a.ownerDocument === v && t(v, a) ? -1 : b === g || b.ownerDocument === v && t(v, b) ? 1 : k ? J(k, a) - J(k, b) : 0 : 4 & d ? -1 : 1)
              } : function (a, b) {
                  if (a === b) return l = !0, 0;
                  var c, d = 0, e = a.parentNode, f = b.parentNode, h = [a], i = [b];
                  if (!e || !f) return a === g ? -1 : b === g ? 1 : e ? -1 : f ? 1 : k ? J(k, a) - J(k, b) : 0;
                  if (e === f) return la(a, b);
                  c = a;
                  while (c = c.parentNode) h.unshift(c);
                  c = b;
                  while (c = c.parentNode) i.unshift(c);
                  while (h[d] === i[d]) d++;
                  return d ? la(h[d], i[d]) : h[d] === v ? -1 : i[d] === v ? 1 : 0
              }, g) : n
          }, ga.matches = function (a, b) {
              return ga(a, null, null, b)
          }, ga.matchesSelector = function (a, b) {
              if ((a.ownerDocument || a) !== n && m(a), b = b.replace(U, "='$1']"), !(!c.matchesSelector || !p || r && r.test(b) || q && q.test(b))) try {
                  var d = s.call(a, b);
                  if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d
              } catch (e) {
              }
              return ga(b, n, null, [a]).length > 0
          }, ga.contains = function (a, b) {
              return (a.ownerDocument || a) !== n && m(a), t(a, b)
          }, ga.attr = function (a, b) {
              (a.ownerDocument || a) !== n && m(a);
              var e = d.attrHandle[b.toLowerCase()],
                  f = e && D.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0;
              return void 0 !== f ? f : c.attributes || !p ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null
          }, ga.error = function (a) {
              throw new Error("Syntax error, unrecognized expression: " + a)
          }, ga.uniqueSort = function (a) {
              var b, d = [], e = 0, f = 0;
              if (l = !c.detectDuplicates, k = !c.sortStable && a.slice(0), a.sort(B), l) {
                  while (b = a[f++]) b === a[f] && (e = d.push(f));
                  while (e--) a.splice(d[e], 1)
              }
              return k = null, a
          }, e = ga.getText = function (a) {
              var b, c = "", d = 0, f = a.nodeType;
              if (f) {
                  if (1 === f || 9 === f || 11 === f) {
                      if ("string" == typeof a.textContent) return a.textContent;
                      for (a = a.firstChild; a; a = a.nextSibling) c += e(a)
                  } else if (3 === f || 4 === f) return a.nodeValue
              } else while (b = a[d++]) c += e(b);
              return c
          }, d = ga.selectors = {
              cacheLength: 50,
              createPseudo: ia,
              match: X,
              attrHandle: {},
              find: {},
              relative: {
                  ">": {dir: "parentNode", first: !0},
                  " ": {dir: "parentNode"},
                  "+": {dir: "previousSibling", first: !0},
                  "~": {dir: "previousSibling"}
              },
              preFilter: {
                  ATTR: function (a) {
                      return a[1] = a[1].replace(ca, da), a[3] = (a[3] || a[4] || a[5] || "").replace(ca, da), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4)
                  }, CHILD: function (a) {
                      return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || ga.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && ga.error(a[0]), a
                  }, PSEUDO: function (a) {
                      var b, c = !a[6] && a[2];
                      return X.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : c && V.test(c) && (b = g(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
                  }
              },
              filter: {
                  TAG: function (a) {
                      var b = a.replace(ca, da).toLowerCase();
                      return "*" === a ? function () {
                          return !0
                      } : function (a) {
                          return a.nodeName && a.nodeName.toLowerCase() === b
                      }
                  }, CLASS: function (a) {
                      var b = y[a + " "];
                      return b || (b = new RegExp("(^|" + L + ")" + a + "(" + L + "|$)")) && y(a, function (a) {
                          return b.test("string" == typeof a.className && a.className || "undefined" != typeof a.getAttribute && a.getAttribute("class") || "")
                      })
                  }, ATTR: function (a, b, c) {
                      return function (d) {
                          var e = ga.attr(d, a);
                          return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c : "~=" === b ? (" " + e.replace(Q, " ") + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-" : !1) : !0
                      }
                  }, CHILD: function (a, b, c, d, e) {
                      var f = "nth" !== a.slice(0, 3), g = "last" !== a.slice(-4), h = "of-type" === b;
                      return 1 === d && 0 === e ? function (a) {
                          return !!a.parentNode
                      } : function (b, c, i) {
                          var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling", q = b.parentNode,
                              r = h && b.nodeName.toLowerCase(), s = !i && !h;
                          if (q) {
                              if (f) {
                                  while (p) {
                                      l = b;
                                      while (l = l[p]) if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) return !1;
                                      o = p = "only" === a && !o && "nextSibling"
                                  }
                                  return !0
                              }
                              if (o = [g ? q.firstChild : q.lastChild], g && s) {
                                  k = q[u] || (q[u] = {}), j = k[a] || [], n = j[0] === w && j[1], m = j[0] === w && j[2], l = n && q.childNodes[n];
                                  while (l = ++n && l && l[p] || (m = n = 0) || o.pop()) if (1 === l.nodeType && ++m && l === b) {
                                      k[a] = [w, n, m];
                                      break
                                  }
                              } else if (s && (j = (b[u] || (b[u] = {}))[a]) && j[0] === w) m = j[1]; else while (l = ++n && l && l[p] || (m = n = 0) || o.pop()) if ((h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) && ++m && (s && ((l[u] || (l[u] = {}))[a] = [w, m]), l === b)) break;
                              return m -= e, m === d || m % d === 0 && m / d >= 0
                          }
                      }
                  }, PSEUDO: function (a, b) {
                      var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || ga.error("unsupported pseudo: " + a);
                      return e[u] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? ia(function (a, c) {
                          var d, f = e(a, b), g = f.length;
                          while (g--) d = J(a, f[g]), a[d] = !(c[d] = f[g])
                      }) : function (a) {
                          return e(a, 0, c)
                      }) : e
                  }
              },
              pseudos: {
                  not: ia(function (a) {
                      var b = [], c = [], d = h(a.replace(R, "$1"));
                      return d[u] ? ia(function (a, b, c, e) {
                          var f, g = d(a, null, e, []), h = a.length;
                          while (h--) (f = g[h]) && (a[h] = !(b[h] = f))
                      }) : function (a, e, f) {
                          return b[0] = a, d(b, null, f, c), b[0] = null, !c.pop()
                      }
                  }), has: ia(function (a) {
                      return function (b) {
                          return ga(a, b).length > 0
                      }
                  }), contains: ia(function (a) {
                      return a = a.replace(ca, da), function (b) {
                          return (b.textContent || b.innerText || e(b)).indexOf(a) > -1
                      }
                  }), lang: ia(function (a) {
                      return W.test(a || "") || ga.error("unsupported lang: " + a), a = a.replace(ca, da).toLowerCase(), function (b) {
                          var c;
                          do if (c = p ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-"); while ((b = b.parentNode) && 1 === b.nodeType);
                          return !1
                      }
                  }), target: function (b) {
                      var c = a.location && a.location.hash;
                      return c && c.slice(1) === b.id
                  }, root: function (a) {
                      return a === o
                  }, focus: function (a) {
                      return a === n.activeElement && (!n.hasFocus || n.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
                  }, enabled: function (a) {
                      return a.disabled === !1
                  }, disabled: function (a) {
                      return a.disabled === !0
                  }, checked: function (a) {
                      var b = a.nodeName.toLowerCase();
                      return "input" === b && !!a.checked || "option" === b && !!a.selected
                  }, selected: function (a) {
                      return a.parentNode && a.parentNode.selectedIndex, a.selected === !0
                  }, empty: function (a) {
                      for (a = a.firstChild; a; a = a.nextSibling) if (a.nodeType < 6) return !1;
                      return !0
                  }, parent: function (a) {
                      return !d.pseudos.empty(a)
                  }, header: function (a) {
                      return Z.test(a.nodeName)
                  }, input: function (a) {
                      return Y.test(a.nodeName)
                  }, button: function (a) {
                      var b = a.nodeName.toLowerCase();
                      return "input" === b && "button" === a.type || "button" === b
                  }, text: function (a) {
                      var b;
                      return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase())
                  }, first: oa(function () {
                      return [0]
                  }), last: oa(function (a, b) {
                      return [b - 1]
                  }), eq: oa(function (a, b, c) {
                      return [0 > c ? c + b : c]
                  }), even: oa(function (a, b) {
                      for (var c = 0; b > c; c += 2) a.push(c);
                      return a
                  }), odd: oa(function (a, b) {
                      for (var c = 1; b > c; c += 2) a.push(c);
                      return a
                  }), lt: oa(function (a, b, c) {
                      for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d);
                      return a
                  }), gt: oa(function (a, b, c) {
                      for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d);
                      return a
                  })
              }
          }, d.pseudos.nth = d.pseudos.eq;
          for (b in{radio: !0, checkbox: !0, file: !0, password: !0, image: !0}) d.pseudos[b] = ma(b);
          for (b in{submit: !0, reset: !0}) d.pseudos[b] = na(b);
  
          function qa() {
          }
  
          qa.prototype = d.filters = d.pseudos, d.setFilters = new qa, g = ga.tokenize = function (a, b) {
              var c, e, f, g, h, i, j, k = z[a + " "];
              if (k) return b ? 0 : k.slice(0);
              h = a, i = [], j = d.preFilter;
              while (h) {
                  (!c || (e = S.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = T.exec(h)) && (c = e.shift(), f.push({
                      value: c,
                      type: e[0].replace(R, " ")
                  }), h = h.slice(c.length));
                  for (g in d.filter) !(e = X[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({
                      value: c,
                      type: g,
                      matches: e
                  }), h = h.slice(c.length));
                  if (!c) break
              }
              return b ? h.length : h ? ga.error(a) : z(a, i).slice(0)
          };
  
          function ra(a) {
              for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value;
              return d
          }
  
          function sa(a, b, c) {
              var d = b.dir, e = c && "parentNode" === d, f = x++;
              return b.first ? function (b, c, f) {
                  while (b = b[d]) if (1 === b.nodeType || e) return a(b, c, f)
              } : function (b, c, g) {
                  var h, i, j = [w, f];
                  if (g) {
                      while (b = b[d]) if ((1 === b.nodeType || e) && a(b, c, g)) return !0
                  } else while (b = b[d]) if (1 === b.nodeType || e) {
                      if (i = b[u] || (b[u] = {}), (h = i[d]) && h[0] === w && h[1] === f) return j[2] = h[2];
                      if (i[d] = j, j[2] = a(b, c, g)) return !0
                  }
              }
          }
  
          function ta(a) {
              return a.length > 1 ? function (b, c, d) {
                  var e = a.length;
                  while (e--) if (!a[e](b, c, d)) return !1;
                  return !0
              } : a[0]
          }
  
          function ua(a, b, c) {
              for (var d = 0, e = b.length; e > d; d++) ga(a, b[d], c);
              return c
          }
  
          function va(a, b, c, d, e) {
              for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++) (f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h));
              return g
          }
  
          function wa(a, b, c, d, e, f) {
              return d && !d[u] && (d = wa(d)), e && !e[u] && (e = wa(e, f)), ia(function (f, g, h, i) {
                  var j, k, l, m = [], n = [], o = g.length, p = f || ua(b || "*", h.nodeType ? [h] : h, []),
                      q = !a || !f && b ? p : va(p, m, a, h, i), r = c ? e || (f ? a : o || d) ? [] : g : q;
                  if (c && c(q, r, h, i), d) {
                      j = va(r, n), d(j, [], h, i), k = j.length;
                      while (k--) (l = j[k]) && (r[n[k]] = !(q[n[k]] = l))
                  }
                  if (f) {
                      if (e || a) {
                          if (e) {
                              j = [], k = r.length;
                              while (k--) (l = r[k]) && j.push(q[k] = l);
                              e(null, r = [], j, i)
                          }
                          k = r.length;
                          while (k--) (l = r[k]) && (j = e ? J(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l))
                      }
                  } else r = va(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : H.apply(g, r)
              })
          }
  
          function xa(a) {
              for (var b, c, e, f = a.length, g = d.relative[a[0].type], h = g || d.relative[" "], i = g ? 1 : 0, k = sa(function (a) {
                  return a === b
              }, h, !0), l = sa(function (a) {
                  return J(b, a) > -1
              }, h, !0), m = [function (a, c, d) {
                  var e = !g && (d || c !== j) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d));
                  return b = null, e
              }]; f > i; i++) if (c = d.relative[a[i].type]) m = [sa(ta(m), c)]; else {
                  if (c = d.filter[a[i].type].apply(null, a[i].matches), c[u]) {
                      for (e = ++i; f > e; e++) if (d.relative[a[e].type]) break;
                      return wa(i > 1 && ta(m), i > 1 && ra(a.slice(0, i - 1).concat({value: " " === a[i - 2].type ? "*" : ""})).replace(R, "$1"), c, e > i && xa(a.slice(i, e)), f > e && xa(a = a.slice(e)), f > e && ra(a))
                  }
                  m.push(c)
              }
              return ta(m)
          }
  
          function ya(a, b) {
              var c = b.length > 0, e = a.length > 0, f = function (f, g, h, i, k) {
                  var l, m, o, p = 0, q = "0", r = f && [], s = [], t = j, u = f || e && d.find.TAG("*", k),
                      v = w += null == t ? 1 : Math.random() || .1, x = u.length;
                  for (k && (j = g !== n && g); q !== x && null != (l = u[q]); q++) {
                      if (e && l) {
                          m = 0;
                          while (o = a[m++]) if (o(l, g, h)) {
                              i.push(l);
                              break
                          }
                          k && (w = v)
                      }
                      c && ((l = !o && l) && p--, f && r.push(l))
                  }
                  if (p += q, c && q !== p) {
                      m = 0;
                      while (o = b[m++]) o(r, s, g, h);
                      if (f) {
                          if (p > 0) while (q--) r[q] || s[q] || (s[q] = F.call(i));
                          s = va(s)
                      }
                      H.apply(i, s), k && !f && s.length > 0 && p + b.length > 1 && ga.uniqueSort(i)
                  }
                  return k && (w = v, j = t), r
              };
              return c ? ia(f) : f
          }
  
          return h = ga.compile = function (a, b) {
              var c, d = [], e = [], f = A[a + " "];
              if (!f) {
                  b || (b = g(a)), c = b.length;
                  while (c--) f = xa(b[c]), f[u] ? d.push(f) : e.push(f);
                  f = A(a, ya(e, d)), f.selector = a
              }
              return f
          }, i = ga.select = function (a, b, e, f) {
              var i, j, k, l, m, n = "function" == typeof a && a, o = !f && g(a = n.selector || a);
              if (e = e || [], 1 === o.length) {
                  if (j = o[0] = o[0].slice(0), j.length > 2 && "ID" === (k = j[0]).type && c.getById && 9 === b.nodeType && p && d.relative[j[1].type]) {
                      if (b = (d.find.ID(k.matches[0].replace(ca, da), b) || [])[0], !b) return e;
                      n && (b = b.parentNode), a = a.slice(j.shift().value.length)
                  }
                  i = X.needsContext.test(a) ? 0 : j.length;
                  while (i--) {
                      if (k = j[i], d.relative[l = k.type]) break;
                      if ((m = d.find[l]) && (f = m(k.matches[0].replace(ca, da), aa.test(j[0].type) && pa(b.parentNode) || b))) {
                          if (j.splice(i, 1), a = f.length && ra(j), !a) return H.apply(e, f), e;
                          break
                      }
                  }
              }
              return (n || h(a, o))(f, b, !p, e, aa.test(a) && pa(b.parentNode) || b), e
          }, c.sortStable = u.split("").sort(B).join("") === u, c.detectDuplicates = !!l, m(), c.sortDetached = ja(function (a) {
              return 1 & a.compareDocumentPosition(n.createElement("div"))
          }), ja(function (a) {
              return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href")
          }) || ka("type|href|height|width", function (a, b, c) {
              return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2)
          }), c.attributes && ja(function (a) {
              return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value")
          }) || ka("value", function (a, b, c) {
              return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue
          }), ja(function (a) {
              return null == a.getAttribute("disabled")
          }) || ka(K, function (a, b, c) {
              var d;
              return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null
          }), ga
      }(a);
      m.find = s, m.expr = s.selectors, m.expr[":"] = m.expr.pseudos, m.unique = s.uniqueSort, m.text = s.getText, m.isXMLDoc = s.isXML, m.contains = s.contains;
      var t = m.expr.match.needsContext, u = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, v = /^.[^:#\[\.,]*$/;
  
      function w(a, b, c) {
          if (m.isFunction(b)) return m.grep(a, function (a, d) {
              return !!b.call(a, d, a) !== c
          });
          if (b.nodeType) return m.grep(a, function (a) {
              return a === b !== c
          });
          if ("string" == typeof b) {
              if (v.test(b)) return m.filter(b, a, c);
              b = m.filter(b, a)
          }
          return m.grep(a, function (a) {
              return m.inArray(a, b) >= 0 !== c
          })
      }
  
      m.filter = function (a, b, c) {
          var d = b[0];
          return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? m.find.matchesSelector(d, a) ? [d] : [] : m.find.matches(a, m.grep(b, function (a) {
              return 1 === a.nodeType
          }))
      }, m.fn.extend({
          find: function (a) {
              var b, c = [], d = this, e = d.length;
              if ("string" != typeof a) return this.pushStack(m(a).filter(function () {
                  for (b = 0; e > b; b++) if (m.contains(d[b], this)) return !0
              }));
              for (b = 0; e > b; b++) m.find(a, d[b], c);
              return c = this.pushStack(e > 1 ? m.unique(c) : c), c.selector = this.selector ? this.selector + " " + a : a, c
          }, filter: function (a) {
              return this.pushStack(w(this, a || [], !1))
          }, not: function (a) {
              return this.pushStack(w(this, a || [], !0))
          }, is: function (a) {
              return !!w(this, "string" == typeof a && t.test(a) ? m(a) : a || [], !1).length
          }
      });
      var x, y = a.document, z = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, A = m.fn.init = function (a, b) {
          var c, d;
          if (!a) return this;
          if ("string" == typeof a) {
              if (c = "<" === a.charAt(0) && ">" === a.charAt(a.length - 1) && a.length >= 3 ? [null, a, null] : z.exec(a), !c || !c[1] && b) return !b || b.jquery ? (b || x).find(a) : this.constructor(b).find(a);
              if (c[1]) {
                  if (b = b instanceof m ? b[0] : b, m.merge(this, m.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : y, !0)), u.test(c[1]) && m.isPlainObject(b)) for (c in b) m.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]);
                  return this
              }
              if (d = y.getElementById(c[2]), d && d.parentNode) {
                  if (d.id !== c[2]) return x.find(a);
                  this.length = 1, this[0] = d
              }
              return this.context = y, this.selector = a, this
          }
          return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : m.isFunction(a) ? "undefined" != typeof x.ready ? x.ready(a) : a(m) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), m.makeArray(a, this))
      };
      A.prototype = m.fn, x = m(y);
      var B = /^(?:parents|prev(?:Until|All))/, C = {children: !0, contents: !0, next: !0, prev: !0};
      m.extend({
          dir: function (a, b, c) {
              var d = [], e = a[b];
              while (e && 9 !== e.nodeType && (void 0 === c || 1 !== e.nodeType || !m(e).is(c))) 1 === e.nodeType && d.push(e), e = e[b];
              return d
          }, sibling: function (a, b) {
              for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);
              return c
          }
      }), m.fn.extend({
          has: function (a) {
              var b, c = m(a, this), d = c.length;
              return this.filter(function () {
                  for (b = 0; d > b; b++) if (m.contains(this, c[b])) return !0
              })
          }, closest: function (a, b) {
              for (var c, d = 0, e = this.length, f = [], g = t.test(a) || "string" != typeof a ? m(a, b || this.context) : 0; e > d; d++) for (c = this[d]; c && c !== b; c = c.parentNode) if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && m.find.matchesSelector(c, a))) {
                  f.push(c);
                  break
              }
              return this.pushStack(f.length > 1 ? m.unique(f) : f)
          }, index: function (a) {
              return a ? "string" == typeof a ? m.inArray(this[0], m(a)) : m.inArray(a.jquery ? a[0] : a, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
          }, add: function (a, b) {
              return this.pushStack(m.unique(m.merge(this.get(), m(a, b))))
          }, addBack: function (a) {
              return this.add(null == a ? this.prevObject : this.prevObject.filter(a))
          }
      });
  
      function D(a, b) {
          do a = a[b]; while (a && 1 !== a.nodeType);
          return a
      }
  
      m.each({
          parent: function (a) {
              var b = a.parentNode;
              return b && 11 !== b.nodeType ? b : null
          }, parents: function (a) {
              return m.dir(a, "parentNode")
          }, parentsUntil: function (a, b, c) {
              return m.dir(a, "parentNode", c)
          }, next: function (a) {
              return D(a, "nextSibling")
          }, prev: function (a) {
              return D(a, "previousSibling")
          }, nextAll: function (a) {
              return m.dir(a, "nextSibling")
          }, prevAll: function (a) {
              return m.dir(a, "previousSibling")
          }, nextUntil: function (a, b, c) {
              return m.dir(a, "nextSibling", c)
          }, prevUntil: function (a, b, c) {
              return m.dir(a, "previousSibling", c)
          }, siblings: function (a) {
              return m.sibling((a.parentNode || {}).firstChild, a)
          }, children: function (a) {
              return m.sibling(a.firstChild)
          }, contents: function (a) {
              return m.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : m.merge([], a.childNodes)
          }
      }, function (a, b) {
          m.fn[a] = function (c, d) {
              var e = m.map(this, b, c);
              return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = m.filter(d, e)), this.length > 1 && (C[a] || (e = m.unique(e)), B.test(a) && (e = e.reverse())), this.pushStack(e)
          }
      });
      var E = /\S+/g, F = {};
  
      function G(a) {
          var b = F[a] = {};
          return m.each(a.match(E) || [], function (a, c) {
              b[c] = !0
          }), b
      }
  
      m.Callbacks = function (a) {
          a = "string" == typeof a ? F[a] || G(a) : m.extend({}, a);
          var b, c, d, e, f, g, h = [], i = !a.once && [], j = function (l) {
              for (c = a.memory && l, d = !0, f = g || 0, g = 0, e = h.length, b = !0; h && e > f; f++) if (h[f].apply(l[0], l[1]) === !1 && a.stopOnFalse) {
                  c = !1;
                  break
              }
              b = !1, h && (i ? i.length && j(i.shift()) : c ? h = [] : k.disable())
          }, k = {
              add: function () {
                  if (h) {
                      var d = h.length;
                      !function f(b) {
                          m.each(b, function (b, c) {
                              var d = m.type(c);
                              "function" === d ? a.unique && k.has(c) || h.push(c) : c && c.length && "string" !== d && f(c)
                          })
                      }(arguments), b ? e = h.length : c && (g = d, j(c))
                  }
                  return this
              }, remove: function () {
                  return h && m.each(arguments, function (a, c) {
                      var d;
                      while ((d = m.inArray(c, h, d)) > -1) h.splice(d, 1), b && (e >= d && e--, f >= d && f--)
                  }), this
              }, has: function (a) {
                  return a ? m.inArray(a, h) > -1 : !(!h || !h.length)
              }, empty: function () {
                  return h = [], e = 0, this
              }, disable: function () {
                  return h = i = c = void 0, this
              }, disabled: function () {
                  return !h
              }, lock: function () {
                  return i = void 0, c || k.disable(), this
              }, locked: function () {
                  return !i
              }, fireWith: function (a, c) {
                  return !h || d && !i || (c = c || [], c = [a, c.slice ? c.slice() : c], b ? i.push(c) : j(c)), this
              }, fire: function () {
                  return k.fireWith(this, arguments), this
              }, fired: function () {
                  return !!d
              }
          };
          return k
      }, m.extend({
          Deferred: function (a) {
              var b = [["resolve", "done", m.Callbacks("once memory"), "resolved"], ["reject", "fail", m.Callbacks("once memory"), "rejected"], ["notify", "progress", m.Callbacks("memory")]],
                  c = "pending", d = {
                      state: function () {
                          return c
                      }, always: function () {
                          return e.done(arguments).fail(arguments), this
                      }, then: function () {
                          var a = arguments;
                          return m.Deferred(function (c) {
                              m.each(b, function (b, f) {
                                  var g = m.isFunction(a[b]) && a[b];
                                  e[f[1]](function () {
                                      var a = g && g.apply(this, arguments);
                                      a && m.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments)
                                  })
                              }), a = null
                          }).promise()
                      }, promise: function (a) {
                          return null != a ? m.extend(a, d) : d
                      }
                  }, e = {};
              return d.pipe = d.then, m.each(b, function (a, f) {
                  var g = f[2], h = f[3];
                  d[f[1]] = g.add, h && g.add(function () {
                      c = h
                  }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function () {
                      return e[f[0] + "With"](this === e ? d : this, arguments), this
                  }, e[f[0] + "With"] = g.fireWith
              }), d.promise(e), a && a.call(e, e), e
          }, when: function (a) {
              var b = 0, c = d.call(arguments), e = c.length, f = 1 !== e || a && m.isFunction(a.promise) ? e : 0,
                  g = 1 === f ? a : m.Deferred(), h = function (a, b, c) {
                      return function (e) {
                          b[a] = this, c[a] = arguments.length > 1 ? d.call(arguments) : e, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(b, c)
                      }
                  }, i, j, k;
              if (e > 1) for (i = new Array(e), j = new Array(e), k = new Array(e); e > b; b++) c[b] && m.isFunction(c[b].promise) ? c[b].promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)) : --f;
              return f || g.resolveWith(k, c), g.promise()
          }
      });
      var H;
      m.fn.ready = function (a) {
          return m.ready.promise().done(a), this
      }, m.extend({
          isReady: !1, readyWait: 1, holdReady: function (a) {
              a ? m.readyWait++ : m.ready(!0)
          }, ready: function (a) {
              if (a === !0 ? !--m.readyWait : !m.isReady) {
                  if (!y.body) return setTimeout(m.ready);
                  m.isReady = !0, a !== !0 && --m.readyWait > 0 || (H.resolveWith(y, [m]), m.fn.triggerHandler && (m(y).triggerHandler("ready"), m(y).off("ready")))
              }
          }
      });
  
      function I() {
          y.addEventListener ? (y.removeEventListener("DOMContentLoaded", J, !1), a.removeEventListener("load", J, !1)) : (y.detachEvent("onreadystatechange", J), a.detachEvent("onload", J))
      }
  
      function J() {
          (y.addEventListener || "load" === event.type || "complete" === y.readyState) && (I(), m.ready())
      }
  
      m.ready.promise = function (b) {
          if (!H) if (H = m.Deferred(), "complete" === y.readyState) setTimeout(m.ready); else if (y.addEventListener) y.addEventListener("DOMContentLoaded", J, !1), a.addEventListener("load", J, !1); else {
              y.attachEvent("onreadystatechange", J), a.attachEvent("onload", J);
              var c = !1;
              try {
                  c = null == a.frameElement && y.documentElement
              } catch (d) {
              }
              c && c.doScroll && !function e() {
                  if (!m.isReady) {
                      try {
                          c.doScroll("left")
                      } catch (a) {
                          return setTimeout(e, 50)
                      }
                      I(), m.ready()
                  }
              }()
          }
          return H.promise(b)
      };
      var K = "undefined", L;
      for (L in m(k)) break;
      k.ownLast = "0" !== L, k.inlineBlockNeedsLayout = !1, m(function () {
          var a, b, c, d;
           c = y.getElementsByTagName("body")[0], c && c.style && (b = y.createElement("div"), d = y.createElement("div"), d.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(b), typeof b.style.zoom !== K && (b.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1", k.inlineBlockNeedsLayout = a = 3 === b.offsetWidth, a && (c.style.zoom = 1)), c.removeChild(d))
      }), function () {
          var a = y.createElement("div");
          if (null == k.deleteExpando) {
              k.deleteExpando = !0;
              try {
                  delete a.test
              } catch (b) {
                  k.deleteExpando = !1
              }
          }
          a = null
      }(), m.acceptData = function (a) {
          var b = m.noData[(a.nodeName + " ").toLowerCase()], c = +a.nodeType || 1;
          return 1 !== c && 9 !== c ? !1 : !b || b !== !0 && a.getAttribute("classid") === b
      };
      var M = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, N = /([A-Z])/g;
  
      function O(a, b, c) {
          if (void 0 === c && 1 === a.nodeType) {
              var d = "data-" + b.replace(N, "-$1").toLowerCase();
              if (c = a.getAttribute(d), "string" == typeof c) {
                  try {
                      c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : M.test(c) ? m.parseJSON(c) : c
                  } catch (e) {
                  }
                  m.data(a, b, c)
              } else c = void 0
          }
          return c
      }
  
      function P(a) {
          var b;
          for (b in a) if (("data" !== b || !m.isEmptyObject(a[b])) && "toJSON" !== b) return !1;
  
          return !0
      }
  
      function Q(a, b, d, e) {
          if (m.acceptData(a)) {
              var f, g, h = m.expando, i = a.nodeType, j = i ? m.cache : a, k = i ? a[h] : a[h] && h;
              if (k && j[k] && (e || j[k].data) || void 0 !== d || "string" != typeof b) return k || (k = i ? a[h] = c.pop() || m.guid++ : h), j[k] || (j[k] = i ? {} : {toJSON: m.noop}), ("object" == typeof b || "function" == typeof b) && (e ? j[k] = m.extend(j[k], b) : j[k].data = m.extend(j[k].data, b)), g = j[k], e || (g.data || (g.data = {}), g = g.data), void 0 !== d && (g[m.camelCase(b)] = d), "string" == typeof b ? (f = g[b], null == f && (f = g[m.camelCase(b)])) : f = g, f
          }
      }
  
      function R(a, b, c) {
          if (m.acceptData(a)) {
              var d, e, f = a.nodeType, g = f ? m.cache : a, h = f ? a[m.expando] : m.expando;
              if (g[h]) {
                  if (b && (d = c ? g[h] : g[h].data)) {
                      m.isArray(b) ? b = b.concat(m.map(b, m.camelCase)) : b in d ? b = [b] : (b = m.camelCase(b), b = b in d ? [b] : b.split(" ")), e = b.length;
                      while (e--) delete d[b[e]];
                      if (c ? !P(d) : !m.isEmptyObject(d)) return
                  }
                  (c || (delete g[h].data, P(g[h]))) && (f ? m.cleanData([a], !0) : k.deleteExpando || g != g.window ? delete g[h] : g[h] = null)
              }
          }
      }
  
      m.extend({
          cache: {},
          noData: {"applet ": !0, "embed ": !0, "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},
          hasData: function (a) {
              return a = a.nodeType ? m.cache[a[m.expando]] : a[m.expando], !!a && !P(a)
          },
          data: function (a, b, c) {
              return Q(a, b, c)
          },
          removeData: function (a, b) {
              return R(a, b)
          },
          _data: function (a, b, c) {
              return Q(a, b, c, !0)
          },
          _removeData: function (a, b) {
              return R(a, b, !0)
          }
      }), m.fn.extend({
          data: function (a, b) {
              var c, d, e, f = this[0], g = f && f.attributes;
              if (void 0 === a) {
                  if (this.length && (e = m.data(f), 1 === f.nodeType && !m._data(f, "parsedAttrs"))) {
                      c = g.length;
                      while (c--) g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = m.camelCase(d.slice(5)), O(f, d, e[d])));
                      m._data(f, "parsedAttrs", !0)
                  }
                  return e
              }
              return "object" == typeof a ? this.each(function () {
                  m.data(this, a)
              }) : arguments.length > 1 ? this.each(function () {
                  m.data(this, a, b)
              }) : f ? O(f, a, m.data(f, a)) : void 0
          }, removeData: function (a) {
              return this.each(function () {
                  m.removeData(this, a)
              })
          }
      }), m.extend({
          queue: function (a, b, c) {
              var d;
              return a ? (b = (b || "fx") + "queue", d = m._data(a, b), c && (!d || m.isArray(c) ? d = m._data(a, b, m.makeArray(c)) : d.push(c)), d || []) : void 0
          }, dequeue: function (a, b) {
              b = b || "fx";
              var c = m.queue(a, b), d = c.length, e = c.shift(), f = m._queueHooks(a, b), g = function () {
                  m.dequeue(a, b)
              };
              "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire()
          }, _queueHooks: function (a, b) {
              var c = b + "queueHooks";
              return m._data(a, c) || m._data(a, c, {
                  empty: m.Callbacks("once memory").add(function () {
                      m._removeData(a, b + "queue"), m._removeData(a, c)
                  })
              })
          }
      }), m.fn.extend({
          queue: function (a, b) {
              var c = 2;
              return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? m.queue(this[0], a) : void 0 === b ? this : this.each(function () {
                  var c = m.queue(this, a, b);
                  m._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && m.dequeue(this, a)
              })
          }, dequeue: function (a) {
              return this.each(function () {
                  m.dequeue(this, a)
              })
          }, clearQueue: function (a) {
              return this.queue(a || "fx", [])
          }, promise: function (a, b) {
              var c, d = 1, e = m.Deferred(), f = this, g = this.length, h = function () {
                  --d || e.resolveWith(f, [f])
              };
              "string" != typeof a && (b = a, a = void 0), a = a || "fx";
              while (g--) c = m._data(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));
              return h(), e.promise(b)
          }
      });
      var S = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, T = ["Top", "Right", "Bottom", "Left"], U = function (a, b) {
          return a = b || a, "none" === m.css(a, "display") || !m.contains(a.ownerDocument, a)
      }, V = m.access = function (a, b, c, d, e, f, g) {
          var h = 0, i = a.length, j = null == c;
          if ("object" === m.type(c)) {
              e = !0;
              for (h in c) m.access(a, b, h, c[h], !0, f, g)
          } else if (void 0 !== d && (e = !0, m.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function (a, b, c) {
                  return j.call(m(a), c)
              })), b)) for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));
          return e ? a : j ? b.call(a) : i ? b(a[0], c) : f
      }, W = /^(?:checkbox|radio)$/i;
      !function () {
          var a = y.createElement("input"), b = y.createElement("div"), c = y.createDocumentFragment();
          if (b.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", k.leadingWhitespace = 3 === b.firstChild.nodeType, k.tbody = !b.getElementsByTagName("tbody").length, k.htmlSerialize = !!b.getElementsByTagName("link").length, k.html5Clone = "<:nav></:nav>" !== y.createElement("nav").cloneNode(!0).outerHTML, a.type = "checkbox", a.checked = !0, c.appendChild(a), k.appendChecked = a.checked, b.innerHTML = "<textarea>x</textarea>", k.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue, c.appendChild(b), b.innerHTML = "<input type='radio' checked='checked' name='t'/>", k.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, k.noCloneEvent = !0, b.attachEvent && (b.attachEvent("onclick", function () {
                  k.noCloneEvent = !1
              }), b.cloneNode(!0).click()), null == k.deleteExpando) {
              k.deleteExpando = !0;
              try {
                  delete b.test
              } catch (d) {
                  k.deleteExpando = !1
              }
          }
      }(), function () {
          var b, c, d = y.createElement("div");
          for (b in{
              submit: !0,
              change: !0,
              focusin: !0
          }) c = "on" + b, (k[b + "Bubbles"] = c in a) || (d.setAttribute(c, "t"), k[b + "Bubbles"] = d.attributes[c].expando === !1);
          d = null
      }();
      var X = /^(?:input|select|textarea)$/i, Y = /^key/, Z = /^(?:mouse|pointer|contextmenu)|click/,
          $ = /^(?:focusinfocus|focusoutblur)$/, _ = /^([^.]*)(?:\.(.+)|)$/;
  
      function aa() {
          return !0
      }
  
      function ba() {
          return !1
      }
  
      function ca() {
          try {
              return y.activeElement
          } catch (a) {
          }
      }
  
      m.event = {
          global: {},
          add: function (a, b, c, d, e) {
              var f, g, h, i, j, k, l, n, o, p, q, r = m._data(a);
              if (r) {
                  c.handler && (i = c, c = i.handler, e = i.selector), c.guid || (c.guid = m.guid++), (g = r.events) || (g = r.events = {}), (k = r.handle) || (k = r.handle = function (a) {
                      return typeof m === K || a && m.event.triggered === a.type ? void 0 : m.event.dispatch.apply(k.elem, arguments)
                  }, k.elem = a), b = (b || "").match(E) || [""], h = b.length;
                  while (h--) f = _.exec(b[h]) || [], o = q = f[1], p = (f[2] || "").split(".").sort(), o && (j = m.event.special[o] || {}, o = (e ? j.delegateType : j.bindType) || o, j = m.event.special[o] || {}, l = m.extend({
                      type: o,
                      origType: q,
                      data: d,
                      handler: c,
                      guid: c.guid,
                      selector: e,
                      needsContext: e && m.expr.match.needsContext.test(e),
                      namespace: p.join(".")
                  }, i), (n = g[o]) || (n = g[o] = [], n.delegateCount = 0, j.setup && j.setup.call(a, d, p, k) !== !1 || (a.addEventListener ? a.addEventListener(o, k, !1) : a.attachEvent && a.attachEvent("on" + o, k))), j.add && (j.add.call(a, l), l.handler.guid || (l.handler.guid = c.guid)), e ? n.splice(n.delegateCount++, 0, l) : n.push(l), m.event.global[o] = !0);
                  a = null
              }
          },
          remove: function (a, b, c, d, e) {
              var f, g, h, i, j, k, l, n, o, p, q, r = m.hasData(a) && m._data(a);
              if (r && (k = r.events)) {
                  b = (b || "").match(E) || [""], j = b.length;
                  while (j--) if (h = _.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) {
                      l = m.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, n = k[o] || [], h = h[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), i = f = n.length;
                      while (f--) g = n[f], !e && q !== g.origType || c && c.guid !== g.guid || h && !h.test(g.namespace) || d && d !== g.selector && ("**" !== d || !g.selector) || (n.splice(f, 1), g.selector && n.delegateCount--, l.remove && l.remove.call(a, g));
                      i && !n.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || m.removeEvent(a, o, r.handle), delete k[o])
                  } else for (o in k) m.event.remove(a, o + b[j], c, d, !0);
                  m.isEmptyObject(k) && (delete r.handle, m._removeData(a, "events"))
              }
          },
          trigger: function (b, c, d, e) {
              var f, g, h, i, k, l, n, o = [d || y], p = j.call(b, "type") ? b.type : b,
                  q = j.call(b, "namespace") ? b.namespace.split(".") : [];
              if (h = l = d = d || y, 3 !== d.nodeType && 8 !== d.nodeType && !$.test(p + m.event.triggered) && (p.indexOf(".") >= 0 && (q = p.split("."), p = q.shift(), q.sort()), g = p.indexOf(":") < 0 && "on" + p, b = b[m.expando] ? b : new m.Event(p, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = q.join("."), b.namespace_re = b.namespace ? new RegExp("(^|\\.)" + q.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = d), c = null == c ? [b] : m.makeArray(c, [b]), k = m.event.special[p] || {}, e || !k.trigger || k.trigger.apply(d, c) !== !1)) {
                  if (!e && !k.noBubble && !m.isWindow(d)) {
                      for (i = k.delegateType || p, $.test(i + p) || (h = h.parentNode); h; h = h.parentNode) o.push(h), l = h;
                      l === (d.ownerDocument || y) && o.push(l.defaultView || l.parentWindow || a)
                  }
                  n = 0;
                  while ((h = o[n++]) && !b.isPropagationStopped()) b.type = n > 1 ? i : k.bindType || p, f = (m._data(h, "events") || {})[b.type] && m._data(h, "handle"), f && f.apply(h, c), f = g && h[g], f && f.apply && m.acceptData(h) && (b.result = f.apply(h, c), b.result === !1 && b.preventDefault());
                  if (b.type = p, !e && !b.isDefaultPrevented() && (!k._default || k._default.apply(o.pop(), c) === !1) && m.acceptData(d) && g && d[p] && !m.isWindow(d)) {
                      l = d[g], l && (d[g] = null), m.event.triggered = p;
                      try {
                          d[p]()
                      } catch (r) {
                      }
                      m.event.triggered = void 0, l && (d[g] = l)
                  }
                  return b.result
              }
          },
          dispatch: function (a) {
              a = m.event.fix(a);
              var b, c, e, f, g, h = [], i = d.call(arguments), j = (m._data(this, "events") || {})[a.type] || [],
                  k = m.event.special[a.type] || {};
              if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {
                  h = m.event.handlers.call(this, a, j), b = 0;
                  while ((f = h[b++]) && !a.isPropagationStopped()) {
                      a.currentTarget = f.elem, g = 0;
                      while ((e = f.handlers[g++]) && !a.isImmediatePropagationStopped()) (!a.namespace_re || a.namespace_re.test(e.namespace)) && (a.handleObj = e, a.data = e.data, c = ((m.event.special[e.origType] || {}).handle || e.handler).apply(f.elem, i), void 0 !== c && (a.result = c) === !1 && (a.preventDefault(), a.stopPropagation()))
                  }
                  return k.postDispatch && k.postDispatch.call(this, a), a.result
              }
          },
          handlers: function (a, b) {
              var c, d, e, f, g = [], h = b.delegateCount, i = a.target;
              if (h && i.nodeType && (!a.button || "click" !== a.type)) for (; i != this; i = i.parentNode || this) if (1 === i.nodeType && (i.disabled !== !0 || "click" !== a.type)) {
                  for (e = [], f = 0; h > f; f++) d = b[f], c = d.selector + " ", void 0 === e[c] && (e[c] = d.needsContext ? m(c, this).index(i) >= 0 : m.find(c, this, null, [i]).length), e[c] && e.push(d);
                  e.length && g.push({elem: i, handlers: e})
              }
              return h < b.length && g.push({elem: this, handlers: b.slice(h)}), g
          },
          fix: function (a) {
              if (a[m.expando]) return a;
              var b, c, d, e = a.type, f = a, g = this.fixHooks[e];
              g || (this.fixHooks[e] = g = Z.test(e) ? this.mouseHooks : Y.test(e) ? this.keyHooks : {}), d = g.props ? this.props.concat(g.props) : this.props, a = new m.Event(f), b = d.length;
              while (b--) c = d[b], a[c] = f[c];
              return a.target || (a.target = f.srcElement || y), 3 === a.target.nodeType && (a.target = a.target.parentNode), a.metaKey = !!a.metaKey, g.filter ? g.filter(a, f) : a
          },
          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 (a, b) {
                  return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a
              }
          },
          mouseHooks: {
              props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
              filter: function (a, b) {
                  var c, d, e, f = b.button, g = b.fromElement;
                  return null == a.pageX && null != b.clientX && (d = a.target.ownerDocument || y, e = d.documentElement, c = d.body, a.pageX = b.clientX + (e && e.scrollLeft || c && c.scrollLeft || 0) - (e && e.clientLeft || c && c.clientLeft || 0), a.pageY = b.clientY + (e && e.scrollTop || c && c.scrollTop || 0) - (e && e.clientTop || c && c.clientTop || 0)), !a.relatedTarget && g && (a.relatedTarget = g === a.target ? b.toElement : g), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a
              }
          },
          special: {
              load: {noBubble: !0}, focus: {
                  trigger: function () {
                      if (this !== ca() && this.focus) try {
                          return this.focus(), !1
                      } catch (a) {
                      }
                  }, delegateType: "focusin"
              }, blur: {
                  trigger: function () {
                      return this === ca() && this.blur ? (this.blur(), !1) : void 0
                  }, delegateType: "focusout"
              }, click: {
                  trigger: function () {
                      return m.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
                  }, _default: function (a) {
                      return m.nodeName(a.target, "a")
                  }
              }, beforeunload: {
                  postDispatch: function (a) {
                      void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result)
                  }
              }
          },
          simulate: function (a, b, c, d) {
              var e = m.extend(new m.Event, c, {type: a, isSimulated: !0, originalEvent: {}});
              d ? m.event.trigger(e, null, b) : m.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault()
          }
      }, m.removeEvent = y.removeEventListener ? function (a, b, c) {
          a.removeEventListener && a.removeEventListener(b, c, !1)
      } : function (a, b, c) {
          var d = "on" + b;
          a.detachEvent && (typeof a[d] === K && (a[d] = null), a.detachEvent(d, c))
      }, m.Event = function (a, b) {
          return this instanceof m.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 ? aa : ba) : this.type = a, b && m.extend(this, b), this.timeStamp = a && a.timeStamp || m.now(), void(this[m.expando] = !0)) : new m.Event(a, b)
      }, m.Event.prototype = {
          isDefaultPrevented: ba,
          isPropagationStopped: ba,
          isImmediatePropagationStopped: ba,
          preventDefault: function () {
              var a = this.originalEvent;
              this.isDefaultPrevented = aa, a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
          },
          stopPropagation: function () {
              var a = this.originalEvent;
              this.isPropagationStopped = aa, a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
          },
          stopImmediatePropagation: function () {
              var a = this.originalEvent;
              this.isImmediatePropagationStopped = aa, a && a.stopImmediatePropagation && a.stopImmediatePropagation(), this.stopPropagation()
          }
      }, m.each({
          mouseenter: "mouseover",
          mouseleave: "mouseout",
          pointerenter: "pointerover",
          pointerleave: "pointerout"
      }, function (a, b) {
          m.event.special[a] = {
              delegateType: b, bindType: b, handle: function (a) {
                  var c, d = this, e = a.relatedTarget, f = a.handleObj;
                  return (!e || e !== d && !m.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c
              }
          }
      }), k.submitBubbles || (m.event.special.submit = {
          setup: function () {
              return m.nodeName(this, "form") ? !1 : void m.event.add(this, "click._submit keypress._submit", function (a) {
                  var b = a.target, c = m.nodeName(b, "input") || m.nodeName(b, "button") ? b.form : void 0;
                  c && !m._data(c, "submitBubbles") && (m.event.add(c, "submit._submit", function (a) {
                      a._submit_bubble = !0
                  }), m._data(c, "submitBubbles", !0))
              })
          }, postDispatch: function (a) {
              a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && m.event.simulate("submit", this.parentNode, a, !0))
          }, teardown: function () {
              return m.nodeName(this, "form") ? !1 : void m.event.remove(this, "._submit")
          }
      }), k.changeBubbles || (m.event.special.change = {
          setup: function () {
              return X.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (m.event.add(this, "propertychange._change", function (a) {
                  "checked" === a.originalEvent.propertyName && (this._just_changed = !0)
              }), m.event.add(this, "click._change", function (a) {
                  this._just_changed && !a.isTrigger && (this._just_changed = !1), m.event.simulate("change", this, a, !0)
              })), !1) : void m.event.add(this, "beforeactivate._change", function (a) {
                  var b = a.target;
                  X.test(b.nodeName) && !m._data(b, "changeBubbles") && (m.event.add(b, "change._change", function (a) {
                      !this.parentNode || a.isSimulated || a.isTrigger || m.event.simulate("change", this.parentNode, a, !0)
                  }), m._data(b, "changeBubbles", !0))
              })
          }, handle: function (a) {
              var b = a.target;
              return this !== b || a.isSimulated || a.isTrigger || "radio" !== b.type && "checkbox" !== b.type ? a.handleObj.handler.apply(this, arguments) : void 0
          }, teardown: function () {
              return m.event.remove(this, "._change"), !X.test(this.nodeName)
          }
      }), k.focusinBubbles || m.each({focus: "focusin", blur: "focusout"}, function (a, b) {
          var c = function (a) {
              m.event.simulate(b, a.target, m.event.fix(a), !0)
          };
          m.event.special[b] = {
              setup: function () {
                  var d = this.ownerDocument || this, e = m._data(d, b);
                  e || d.addEventListener(a, c, !0), m._data(d, b, (e || 0) + 1)
              }, teardown: function () {
                  var d = this.ownerDocument || this, e = m._data(d, b) - 1;
                  e ? m._data(d, b, e) : (d.removeEventListener(a, c, !0), m._removeData(d, b))
              }
          }
      }), m.fn.extend({
          on: function (a, b, c, d, e) {
              var f, g;
              if ("object" == typeof a) {
                  "string" != typeof b && (c = c || b, b = void 0);
                  for (f in a) this.on(f, b, c, a[f], e);
                  return this
              }
              if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) : (d = c, c = b, b = void 0)), d === !1) d = ba; else if (!d) return this;
              return 1 === e && (g = d, d = function (a) {
                  return m().off(a), g.apply(this, arguments)
              }, d.guid = g.guid || (g.guid = m.guid++)), this.each(function () {
                  m.event.add(this, a, d, c, b)
              })
          }, one: function (a, b, c, d) {
              return this.on(a, b, c, d, 1)
          }, off: function (a, b, c) {
              var d, e;
              if (a && a.preventDefault && a.handleObj) return d = a.handleObj, m(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this;
              if ("object" == typeof a) {
                  for (e in a) this.off(e, b, a[e]);
                  return this
              }
              return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = ba), this.each(function () {
                  m.event.remove(this, a, c, b)
              })
          }, trigger: function (a, b) {
              return this.each(function () {
                  m.event.trigger(a, b, this)
              })
          }, triggerHandler: function (a, b) {
              var c = this[0];
              return c ? m.event.trigger(a, b, c, !0) : void 0
          }
      });
  
      function da(a) {
          var b = ea.split("|"), c = a.createDocumentFragment();
          if (c.createElement) while (b.length) c.createElement(b.pop());
          return c
      }
  
      var ea = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
          fa = / jQuery\d+="(?:null|\d+)"/g, ga = new RegExp("<(?:" + ea + ")[\\s/>]", "i"), ha = /^\s+/,
          ia = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, ja = /<([\w:]+)/,
          ka = /<tbody/i, la = /<|&#?\w+;/, ma = /<(?:script|style|link)/i, na = /checked\s*(?:[^=]|=\s*.checked.)/i,
          oa = /^$|\/(?:java|ecma)script/i, pa = /^true\/(.*)/, qa = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, ra = {
              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: k.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
          }, sa = da(y), ta = sa.appendChild(y.createElement("div"));
      ra.optgroup = ra.option, ra.tbody = ra.tfoot = ra.colgroup = ra.caption = ra.thead, ra.th = ra.td;
  
      function ua(a, b) {
          var c, d, e = 0,
              f = typeof a.getElementsByTagName !== K ? a.getElementsByTagName(b || "*") : typeof a.querySelectorAll !== K ? a.querySelectorAll(b || "*") : void 0;
          if (!f) for (f = [], c = a.childNodes || a; null != (d = c[e]); e++) !b || m.nodeName(d, b) ? f.push(d) : m.merge(f, ua(d, b));
          return void 0 === b || b && m.nodeName(a, b) ? m.merge([a], f) : f
      }
  
      function va(a) {
          W.test(a.type) && (a.defaultChecked = a.checked)
      }
  
      function wa(a, b) {
          return m.nodeName(a, "table") && m.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
      }
  
      function xa(a) {
          return a.type = (null !== m.find.attr(a, "type")) + "/" + a.type, a
      }
  
      function ya(a) {
          var b = pa.exec(a.type);
          return b ? a.type = b[1] : a.removeAttribute("type"), a
      }
  
      function za(a, b) {
          for (var c, d = 0; null != (c = a[d]); d++) m._data(c, "globalEval", !b || m._data(b[d], "globalEval"))
      }
  
      function Aa(a, b) {
          if (1 === b.nodeType && m.hasData(a)) {
              var c, d, e, f = m._data(a), g = m._data(b, f), h = f.events;
              if (h) {
                  delete g.handle, g.events = {};
                  for (c in h) for (d = 0, e = h[c].length; e > d; d++) m.event.add(b, c, h[c][d])
              }
              g.data && (g.data = m.extend({}, g.data))
          }
      }
  
      function Ba(a, b) {
          var c, d, e;
          if (1 === b.nodeType) {
              if (c = b.nodeName.toLowerCase(), !k.noCloneEvent && b[m.expando]) {
                  e = m._data(b);
                  for (d in e.events) m.removeEvent(b, d, e.handle);
                  b.removeAttribute(m.expando)
              }
              "script" === c && b.text !== a.text ? (xa(b).text = a.text, ya(b)) : "object" === c ? (b.parentNode && (b.outerHTML = a.outerHTML), k.html5Clone && a.innerHTML && !m.trim(b.innerHTML) && (b.innerHTML = a.innerHTML)) : "input" === c && W.test(a.type) ? (b.defaultChecked = b.checked = a.checked, b.value !== a.value && (b.value = a.value)) : "option" === c ? b.defaultSelected = b.selected = a.defaultSelected : ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue)
          }
      }
  
      m.extend({
          clone: function (a, b, c) {
              var d, e, f, g, h, i = m.contains(a.ownerDocument, a);
              if (k.html5Clone || m.isXMLDoc(a) || !ga.test("<" + a.nodeName + ">") ? f = a.cloneNode(!0) : (ta.innerHTML = a.outerHTML, ta.removeChild(f = ta.firstChild)), !(k.noCloneEvent && k.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || m.isXMLDoc(a))) for (d = ua(f), h = ua(a), g = 0; null != (e = h[g]); ++g) d[g] && Ba(e, d[g]);
              if (b) if (c) for (h = h || ua(a), d = d || ua(f), g = 0; null != (e = h[g]); g++) Aa(e, d[g]); else Aa(a, f);
              return d = ua(f, "script"), d.length > 0 && za(d, !i && ua(a, "script")), d = h = e = null, f
          }, buildFragment: function (a, b, c, d) {
              for (var e, f, g, h, i, j, l, n = a.length, o = da(b), p = [], q = 0; n > q; q++) if (f = a[q], f || 0 === f) if ("object" === m.type(f)) m.merge(p, f.nodeType ? [f] : f); else if (la.test(f)) {
                  h = h || o.appendChild(b.createElement("div")), i = (ja.exec(f) || ["", ""])[1].toLowerCase(), l = ra[i] || ra._default, h.innerHTML = l[1] + f.replace(ia, "<$1></$2>") + l[2], e = l[0];
                  while (e--) h = h.lastChild;
                  if (!k.leadingWhitespace && ha.test(f) && p.push(b.createTextNode(ha.exec(f)[0])), !k.tbody) {
                      f = "table" !== i || ka.test(f) ? "<table>" !== l[1] || ka.test(f) ? 0 : h : h.firstChild, e = f && f.childNodes.length;
                      while (e--) m.nodeName(j = f.childNodes[e], "tbody") && !j.childNodes.length && f.removeChild(j)
                  }
                  m.merge(p, h.childNodes), h.textContent = "";
                  while (h.firstChild) h.removeChild(h.firstChild);
                  h = o.lastChild
              } else p.push(b.createTextNode(f));
              h && o.removeChild(h), k.appendChecked || m.grep(ua(p, "input"), va), q = 0;
              while (f = p[q++]) if ((!d || -1 === m.inArray(f, d)) && (g = m.contains(f.ownerDocument, f), h = ua(o.appendChild(f), "script"), g && za(h), c)) {
                  e = 0;
                  while (f = h[e++]) oa.test(f.type || "") && c.push(f)
              }
              return h = null, o
          }, cleanData: function (a, b) {
              for (var d, e, f, g, h = 0, i = m.expando, j = m.cache, l = k.deleteExpando, n = m.event.special; null != (d = a[h]); h++) if ((b || m.acceptData(d)) && (f = d[i], g = f && j[f])) {
                  if (g.events) for (e in g.events) n[e] ? m.event.remove(d, e) : m.removeEvent(d, e, g.handle);
                  j[f] && (delete j[f], l ? delete d[i] : typeof d.removeAttribute !== K ? d.removeAttribute(i) : d[i] = null, c.push(f))
              }
          }
      }), m.fn.extend({
          text: function (a) {
              return V(this, function (a) {
                  return void 0 === a ? m.text(this) : this.empty().append((this[0] && this[0].ownerDocument || y).createTextNode(a))
              }, null, a, arguments.length)
          }, append: function () {
              return this.domManip(arguments, function (a) {
                  if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                      var b = wa(this, a);
                      b.appendChild(a)
                  }
              })
          }, prepend: function () {
              return this.domManip(arguments, function (a) {
                  if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                      var b = wa(this, a);
                      b.insertBefore(a, b.firstChild)
                  }
              })
          }, before: function () {
              return this.domManip(arguments, function (a) {
                  this.parentNode && this.parentNode.insertBefore(a, this)
              })
          }, after: function () {
              return this.domManip(arguments, function (a) {
                  this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
              })
          }, remove: function (a, b) {
              for (var c, d = a ? m.filter(a, this) : this, e = 0; null != (c = d[e]); e++) b || 1 !== c.nodeType || m.cleanData(ua(c)), c.parentNode && (b && m.contains(c.ownerDocument, c) && za(ua(c, "script")), c.parentNode.removeChild(c));
              return this
          }, empty: function () {
              for (var a, b = 0; null != (a = this[b]); b++) {
                  1 === a.nodeType && m.cleanData(ua(a, !1));
                  while (a.firstChild) a.removeChild(a.firstChild);
                  a.options && m.nodeName(a, "select") && (a.options.length = 0)
              }
              return this
          }, clone: function (a, b) {
              return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function () {
                  return m.clone(this, a, b)
              })
          }, html: function (a) {
              return V(this, function (a) {
                  var b = this[0] || {}, c = 0, d = this.length;
                  if (void 0 === a) return 1 === b.nodeType ? b.innerHTML.replace(fa, "") : void 0;
                  if (!("string" != typeof a || ma.test(a) || !k.htmlSerialize && ga.test(a) || !k.leadingWhitespace && ha.test(a) || ra[(ja.exec(a) || ["", ""])[1].toLowerCase()])) {
                      a = a.replace(ia, "<$1></$2>");
                      try {
                          for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (m.cleanData(ua(b, !1)), b.innerHTML = a);
                          b = 0
                      } catch (e) {
                      }
                  }
                  b && this.empty().append(a)
              }, null, a, arguments.length)
          }, replaceWith: function () {
              var a = arguments[0];
              return this.domManip(arguments, function (b) {
                  a = this.parentNode, m.cleanData(ua(this)), a && a.replaceChild(b, this)
              }), a && (a.length || a.nodeType) ? this : this.remove()
          }, detach: function (a) {
              return this.remove(a, !0)
          }, domManip: function (a, b) {
              a = e.apply([], a);
              var c, d, f, g, h, i, j = 0, l = this.length, n = this, o = l - 1, p = a[0], q = m.isFunction(p);
              if (q || l > 1 && "string" == typeof p && !k.checkClone && na.test(p)) return this.each(function (c) {
                  var d = n.eq(c);
                  q && (a[0] = p.call(this, c, d.html())), d.domManip(a, b)
              });
              if (l && (i = m.buildFragment(a, this[0].ownerDocument, !1, this), c = i.firstChild, 1 === i.childNodes.length && (i = c), c)) {
                  for (g = m.map(ua(i, "script"), xa), f = g.length; l > j; j++) d = i, j !== o && (d = m.clone(d, !0, !0), f && m.merge(g, ua(d, "script"))), b.call(this[j], d, j);
                  if (f) for (h = g[g.length - 1].ownerDocument, m.map(g, ya), j = 0; f > j; j++) d = g[j], oa.test(d.type || "") && !m._data(d, "globalEval") && m.contains(h, d) && (d.src ? m._evalUrl && m._evalUrl(d.src) : m.globalEval((d.text || d.textContent || d.innerHTML || "").replace(qa, "")));
                  i = c = null
              }
              return this
          }
      }), m.each({
          appendTo: "append",
          prependTo: "prepend",
          insertBefore: "before",
          insertAfter: "after",
          replaceAll: "replaceWith"
      }, function (a, b) {
          m.fn[a] = function (a) {
              for (var c, d = 0, e = [], g = m(a), h = g.length - 1; h >= d; d++) c = d === h ? this : this.clone(!0), m(g[d])[b](c), f.apply(e, c.get());
              return this.pushStack(e)
          }
      });
      var Ca, Da = {};
  
      function Ea(b, c) {
          var d, e = m(c.createElement(b)).appendTo(c.body),
              f = a.getDefaultComputedStyle && (d = a.getDefaultComputedStyle(e[0])) ? d.display : m.css(e[0], "display");
          return e.detach(), f
      }
  
      function Fa(a) {
          var b = y, c = Da[a];
          return c || (c = Ea(a, b), "none" !== c && c || (Ca = (Ca || m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement), b = (Ca[0].contentWindow || Ca[0].contentDocument).document, b.write(), b.close(), c = Ea(a, b), Ca.detach()), Da[a] = c), c
      }
  
      !function () {
          var a;
          k.shrinkWrapBlocks = function () {
              if (null != a) return a;
              a = !1;
              var b, c, d;
              return c = y.getElementsByTagName("body")[0], c && c.style ? (b = y.createElement("div"), d = y.createElement("div"), d.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(b), typeof b.style.zoom !== K && (b.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1", b.appendChild(y.createElement("div")).style.width = "5px", a = 3 !== b.offsetWidth), c.removeChild(d), a) : void 0
          }
      }();
      var Ga = /^margin/, Ha = new RegExp("^(" + S + ")(?!px)[a-z%]+$", "i"), Ia, Ja, Ka = /^(top|right|bottom|left)$/;
      a.getComputedStyle ? (Ia = function (b) {
          return b.ownerDocument.defaultView.opener ? b.ownerDocument.defaultView.getComputedStyle(b, null) : a.getComputedStyle(b, null)
      }, Ja = function (a, b, c) {
          var d, e, f, g, h = a.style;
          return c = c || Ia(a), g = c ? c.getPropertyValue(b) || c[b] : void 0, c && ("" !== g || m.contains(a.ownerDocument, a) || (g = m.style(a, b)), Ha.test(g) && Ga.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth = h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f)), void 0 === g ? g : g + ""
      }) : y.documentElement.currentStyle && (Ia = function (a) {
          return a.currentStyle
      }, Ja = function (a, b, c) {
          var d, e, f, g, h = a.style;
          return c = c || Ia(a), g = c ? c[b] : void 0, null == g && h && h[b] && (g = h[b]), Ha.test(g) && !Ka.test(b) && (d = h.left, e = a.runtimeStyle, f = e && e.left, f && (e.left = a.currentStyle.left), h.left = "fontSize" === b ? "1em" : g, g = h.pixelLeft + "px", h.left = d, f && (e.left = f)), void 0 === g ? g : g + "" || "auto"
      });
  
      function La(a, b) {
          return {
              get: function () {
                  var c = a();
                  if (null != c) return c ? void delete this.get : (this.get = b).apply(this, arguments)
              }
          }
      }
  
      !function () {
          var b, c, d, e, f, g, h;
          if (b = y.createElement("div"), b.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", d = b.getElementsByTagName("a")[0], c = d && d.style) {
              c.cssText = "float:left;opacity:.5", k.opacity = "0.5" === c.opacity, k.cssFloat = !!c.cssFloat, b.style.backgroundClip = "content-box", b.cloneNode(!0).style.backgroundClip = "", k.clearCloneStyle = "content-box" === b.style.backgroundClip, k.boxSizing = "" === c.boxSizing || "" === c.MozBoxSizing || "" === c.WebkitBoxSizing, m.extend(k, {
                  reliableHiddenOffsets: function () {
                      return null == g && i(), g
                  }, boxSizingReliable: function () {
                      return null == f && i(), f
                  }, pixelPosition: function () {
                      return null == e && i(), e
                  }, reliableMarginRight: function () {
                      return null == h && i(), h
                  }
              });
  
              function i() {
                  var b, c, d, i;
                  c = y.getElementsByTagName("body")[0], c && c.style && (b = y.createElement("div"), d = y.createElement("div"), d.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", c.appendChild(d).appendChild(b), b.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute", e = f = !1, h = !0, a.getComputedStyle && (e = "1%" !== (a.getComputedStyle(b, null) || {}).top, f = "4px" === (a.getComputedStyle(b, null) || {width: "4px"}).width, i = b.appendChild(y.createElement("div")), i.style.cssText = b.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", i.style.marginRight = i.style.width = "0", b.style.width = "1px", h = !parseFloat((a.getComputedStyle(i, null) || {}).marginRight), b.removeChild(i)), b.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", i = b.getElementsByTagName("td"), i[0].style.cssText = "margin:0;border:0;padding:0;display:none", g = 0 === i[0].offsetHeight, g && (i[0].style.display = "", i[1].style.display = "none", g = 0 === i[0].offsetHeight), c.removeChild(d))
              }
          }
      }(), m.swap = function (a, b, c, d) {
          var e, f, g = {};
          for (f in b) g[f] = a.style[f], a.style[f] = b[f];
          e = c.apply(a, d || []);
          for (f in b) a.style[f] = g[f];
          return e
      };
      var Ma = /alpha\([^)]*\)/i, Na = /opacity\s*=\s*([^)]*)/, Oa = /^(none|table(?!-c[ea]).+)/,
          Pa = new RegExp("^(" + S + ")(.*)$", "i"), Qa = new RegExp("^([+-])=(" + S + ")", "i"),
          Ra = {position: "absolute", visibility: "hidden", display: "block"},
          Sa = {letterSpacing: "0", fontWeight: "400"}, Ta = ["Webkit", "O", "Moz", "ms"];
  
      function Ua(a, b) {
          if (b in a) return b;
          var c = b.charAt(0).toUpperCase() + b.slice(1), d = b, e = Ta.length;
          while (e--) if (b = Ta[e] + c, b in a) return b;
          return d
      }
  
      function Va(a, b) {
          for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g], d.style && (f[g] = m._data(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && U(d) && (f[g] = m._data(d, "olddisplay", Fa(d.nodeName)))) : (e = U(d), (c && "none" !== c || !e) && m._data(d, "olddisplay", e ? c : m.css(d, "display"))));
          for (g = 0; h > g; g++) d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "" : "none"));
          return a
      }
  
      function Wa(a, b, c) {
          var d = Pa.exec(b);
          return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
      }
  
      function Xa(a, b, c, d, e) {
          for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2) "margin" === c && (g += m.css(a, c + T[f], !0, e)), d ? ("content" === c && (g -= m.css(a, "padding" + T[f], !0, e)), "margin" !== c && (g -= m.css(a, "border" + T[f] + "Width", !0, e))) : (g += m.css(a, "padding" + T[f], !0, e), "padding" !== c && (g += m.css(a, "border" + T[f] + "Width", !0, e)));
          return g
      }
  
      function Ya(a, b, c) {
          var d = !0, e = "width" === b ? a.offsetWidth : a.offsetHeight, f = Ia(a),
              g = k.boxSizing && "border-box" === m.css(a, "boxSizing", !1, f);
          if (0 >= e || null == e) {
              if (e = Ja(a, b, f), (0 > e || null == e) && (e = a.style[b]), Ha.test(e)) return e;
              d = g && (k.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0
          }
          return e + Xa(a, b, c || (g ? "border" : "content"), d, f) + "px"
      }
  
      m.extend({
          cssHooks: {
              opacity: {
                  get: function (a, b) {
                      if (b) {
                          var c = Ja(a, "opacity");
                          return "" === c ? "1" : c
                      }
                  }
              }
          },
          cssNumber: {
              columnCount: !0,
              fillOpacity: !0,
              flexGrow: !0,
              flexShrink: !0,
              fontWeight: !0,
              lineHeight: !0,
              opacity: !0,
              order: !0,
              orphans: !0,
              widows: !0,
              zIndex: !0,
              zoom: !0
          },
          cssProps: {"float": k.cssFloat ? "cssFloat" : "styleFloat"},
          style: function (a, b, c, d) {
              if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
                  var e, f, g, h = m.camelCase(b), i = a.style;
                  if (b = m.cssProps[h] || (m.cssProps[h] = Ua(i, h)), g = m.cssHooks[b] || m.cssHooks[h], void 0 === c) return g && "get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b];
                  if (f = typeof c, "string" === f && (e = Qa.exec(c)) && (c = (e[1] + 1) * e[2] + parseFloat(m.css(a, b)), f = "number"), null != c && c === c && ("number" !== f || m.cssNumber[h] || (c += "px"), k.clearCloneStyle || "" !== c || 0 !== b.indexOf("background") || (i[b] = "inherit"), !(g && "set" in g && void 0 === (c = g.set(a, c, d))))) try {
                      i[b] = c
                  } catch (j) {
                  }
              }
          },
          css: function (a, b, c, d) {
              var e, f, g, h = m.camelCase(b);
              return b = m.cssProps[h] || (m.cssProps[h] = Ua(a.style, h)), g = m.cssHooks[b] || m.cssHooks[h], g && "get" in g && (f = g.get(a, !0, c)), void 0 === f && (f = Ja(a, b, d)), "normal" === f && b in Sa && (f = Sa[b]), "" === c || c ? (e = parseFloat(f), c === !0 || m.isNumeric(e) ? e || 0 : f) : f
          }
      }), m.each(["height", "width"], function (a, b) {
          m.cssHooks[b] = {
              get: function (a, c, d) {
                  return c ? Oa.test(m.css(a, "display")) && 0 === a.offsetWidth ? m.swap(a, Ra, function () {
                      return Ya(a, b, d)
                  }) : Ya(a, b, d) : void 0
              }, set: function (a, c, d) {
                  var e = d && Ia(a);
                  return Wa(a, c, d ? Xa(a, b, d, k.boxSizing && "border-box" === m.css(a, "boxSizing", !1, e), e) : 0)
              }
          }
      }), k.opacity || (m.cssHooks.opacity = {
          get: function (a, b) {
              return Na.test((b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : b ? "1" : ""
          }, set: function (a, b) {
              var c = a.style, d = a.currentStyle, e = m.isNumeric(b) ? "alpha(opacity=" + 100 * b + ")" : "",
                  f = d && d.filter || c.filter || "";
              c.zoom = 1, (b >= 1 || "" === b) && "" === m.trim(f.replace(Ma, "")) && c.removeAttribute && (c.removeAttribute("filter"), "" === b || d && !d.filter) || (c.filter = Ma.test(f) ? f.replace(Ma, e) : f + " " + e)
          }
      }), m.cssHooks.marginRight = La(k.reliableMarginRight, function (a, b) {
          return b ? m.swap(a, {display: "inline-block"}, Ja, [a, "marginRight"]) : void 0
      }), m.each({margin: "", padding: "", border: "Width"}, function (a, b) {
          m.cssHooks[a + b] = {
              expand: function (c) {
                  for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + T[d] + b] = f[d] || f[d - 2] || f[0];
                  return e
              }
          }, Ga.test(a) || (m.cssHooks[a + b].set = Wa)
      }), m.fn.extend({
          css: function (a, b) {
              return V(this, function (a, b, c) {
                  var d, e, f = {}, g = 0;
                  if (m.isArray(b)) {
                      for (d = Ia(a), e = b.length; e > g; g++) f[b[g]] = m.css(a, b[g], !1, d);
                      return f
                  }
                  return void 0 !== c ? m.style(a, b, c) : m.css(a, b)
              }, a, b, arguments.length > 1)
          }, show: function () {
              return Va(this, !0)
          }, hide: function () {
              return Va(this)
          }, toggle: function (a) {
              return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function () {
                  U(this) ? m(this).show() : m(this).hide()
              })
          }
      });
  
      function Za(a, b, c, d, e) {
          return new Za.prototype.init(a, b, c, d, e)
      }
  
      m.Tween = Za, Za.prototype = {
          constructor: Za, init: function (a, b, c, d, e, f) {
              this.elem = a, this.prop = c, this.easing = e || "swing", this.options = b, this.start = this.now = this.cur(), this.end = d, this.unit = f || (m.cssNumber[c] ? "" : "px")
          }, cur: function () {
              var a = Za.propHooks[this.prop];
              return a && a.get ? a.get(this) : Za.propHooks._default.get(this)
          }, run: function (a) {
              var b, c = Za.propHooks[this.prop];
              return this.options.duration ? this.pos = b = m.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : this.pos = b = a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : Za.propHooks._default.set(this), this
          }
      }, Za.prototype.init.prototype = Za.prototype, Za.propHooks = {
          _default: {
              get: function (a) {
                  var b;
                  return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = m.css(a.elem, a.prop, ""), b && "auto" !== b ? b : 0) : a.elem[a.prop]
              }, set: function (a) {
                  m.fx.step[a.prop] ? m.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[m.cssProps[a.prop]] || m.cssHooks[a.prop]) ? m.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
              }
          }
      }, Za.propHooks.scrollTop = Za.propHooks.scrollLeft = {
          set: function (a) {
              a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
          }
      }, m.easing = {
          linear: function (a) {
              return a
          }, swing: function (a) {
              return .5 - Math.cos(a * Math.PI) / 2
          }
      }, m.fx = Za.prototype.init, m.fx.step = {};
      var $a, _a, ab = /^(?:toggle|show|hide)$/, bb = new RegExp("^(?:([+-])=|)(" + S + ")([a-z%]*)$", "i"),
          cb = /queueHooks$/, db = [ib], eb = {
              "*": [function (a, b) {
                  var c = this.createTween(a, b), d = c.cur(), e = bb.exec(b), f = e && e[3] || (m.cssNumber[a] ? "" : "px"),
                      g = (m.cssNumber[a] || "px" !== f && +d) && bb.exec(m.css(c.elem, a)), h = 1, i = 20;
                  if (g && g[3] !== f) {
                      f = f || g[3], e = e || [], g = +d || 1;
                      do h = h || ".5", g /= h, m.style(c.elem, a, g + f); while (h !== (h = c.cur() / d) && 1 !== h && --i)
                  }
                  return e && (g = c.start = +g || +d || 0, c.unit = f, c.end = e[1] ? g + (e[1] + 1) * e[2] : +e[2]), c
              }]
          };
  
      function fb() {
          return setTimeout(function () {
              $a = void 0
          }), $a = m.now()
      }
  
      function gb(a, b) {
          var c, d = {height: a}, e = 0;
          for (b = b ? 1 : 0; 4 > e; e += 2 - b) c = T[e], d["margin" + c] = d["padding" + c] = a;
          return b && (d.opacity = d.width = a), d
      }
  
      function hb(a, b, c) {
          for (var d, e = (eb[b] || []).concat(eb["*"]), f = 0, g = e.length; g > f; f++) if (d = e[f].call(c, b, a)) return d
      }
  
      function ib(a, b, c) {
          var d, e, f, g, h, i, j, l, n = this, o = {}, p = a.style, q = a.nodeType && U(a), r = m._data(a, "fxshow");
          c.queue || (h = m._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire = function () {
              h.unqueued || i()
          }), h.unqueued++, n.always(function () {
              n.always(function () {
                  h.unqueued--, m.queue(a, "fx").length || h.empty.fire()
              })
          })), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [p.overflow, p.overflowX, p.overflowY], j = m.css(a, "display"), l = "none" === j ? m._data(a, "olddisplay") || Fa(a.nodeName) : j, "inline" === l && "none" === m.css(a, "float") && (k.inlineBlockNeedsLayout && "inline" !== Fa(a.nodeName) ? p.zoom = 1 : p.display = "inline-block")), c.overflow && (p.overflow = "hidden", k.shrinkWrapBlocks() || n.always(function () {
              p.overflow = c.overflow[0], p.overflowX = c.overflow[1], p.overflowY = c.overflow[2]
          }));
          for (d in b) if (e = b[d], ab.exec(e)) {
              if (delete b[d], f = f || "toggle" === e, e === (q ? "hide" : "show")) {
                  if ("show" !== e || !r || void 0 === r[d]) continue;
                  q = !0
              }
              o[d] = r && r[d] || m.style(a, d)
          } else j = void 0;
          if (m.isEmptyObject(o)) "inline" === ("none" === j ? Fa(a.nodeName) : j) && (p.display = j); else {
              r ? "hidden" in r && (q = r.hidden) : r = m._data(a, "fxshow", {}), f && (r.hidden = !q), q ? m(a).show() : n.done(function () {
                  m(a).hide()
              }), n.done(function () {
                  var b;
                  m._removeData(a, "fxshow");
                  for (b in o) m.style(a, b, o[b])
              });
              for (d in o) g = hb(q ? r[d] : 0, d, n), d in r || (r[d] = g.start, q && (g.end = g.start, g.start = "width" === d || "height" === d ? 1 : 0))
          }
      }
  
      function jb(a, b) {
          var c, d, e, f, g;
          for (c in a) if (d = m.camelCase(c), e = b[d], f = a[c], m.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = m.cssHooks[d], g && "expand" in g) {
              f = g.expand(f), delete a[d];
              for (c in f) c in a || (a[c] = f[c], b[c] = e)
          } else b[d] = e
      }
  
      function kb(a, b, c) {
          var d, e, f = 0, g = db.length, h = m.Deferred().always(function () {
              delete i.elem
          }), i = function () {
              if (e) return !1;
              for (var b = $a || fb(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++) j.tweens[g].run(f);
              return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1)
          }, j = h.promise({
              elem: a,
              props: m.extend({}, b),
              opts: m.extend(!0, {specialEasing: {}}, c),
              originalProperties: b,
              originalOptions: c,
              startTime: $a || fb(),
              duration: c.duration,
              tweens: [],
              createTween: function (b, c) {
                  var d = m.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
                  return j.tweens.push(d), d
              },
              stop: function (b) {
                  var c = 0, d = b ? j.tweens.length : 0;
                  if (e) return this;
                  for (e = !0; d > c; c++) j.tweens[c].run(1);
                  return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]), this
              }
          }), k = j.props;
          for (jb(k, j.opts.specialEasing); g > f; f++) if (d = db[f].call(j, a, k, j.opts)) return d;
          return m.map(k, hb, j), m.isFunction(j.opts.start) && j.opts.start.call(a, j), m.fx.timer(m.extend(i, {
              elem: a,
              anim: j,
              queue: j.opts.queue
          })), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
      }
  
      m.Animation = m.extend(kb, {
          tweener: function (a, b) {
              m.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
              for (var c, d = 0, e = a.length; e > d; d++) c = a[d], eb[c] = eb[c] || [], eb[c].unshift(b)
          }, prefilter: function (a, b) {
              b ? db.unshift(a) : db.push(a)
          }
      }), m.speed = function (a, b, c) {
          var d = a && "object" == typeof a ? m.extend({}, a) : {
              complete: c || !c && b || m.isFunction(a) && a,
              duration: a,
              easing: c && b || b && !m.isFunction(b) && b
          };
          return d.duration = m.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in m.fx.speeds ? m.fx.speeds[d.duration] : m.fx.speeds._default, (null == d.queue || d.queue === !0) && (d.queue = "fx"), d.old = d.complete, d.complete = function () {
              m.isFunction(d.old) && d.old.call(this), d.queue && m.dequeue(this, d.queue)
          }, d
      }, m.fn.extend({
          fadeTo: function (a, b, c, d) {
              return this.filter(U).css("opacity", 0).show().end().animate({opacity: b}, a, c, d)
          }, animate: function (a, b, c, d) {
              var e = m.isEmptyObject(a), f = m.speed(b, c, d), g = function () {
                  var b = kb(this, m.extend({}, a), f);
                  (e || m._data(this, "finish")) && b.stop(!0)
              };
              return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
          }, stop: function (a, b, c) {
              var d = function (a) {
                  var b = a.stop;
                  delete a.stop, b(c)
              };
              return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(function () {
                  var b = !0, e = null != a && a + "queueHooks", f = m.timers, g = m._data(this);
                  if (e) g[e] && g[e].stop && d(g[e]); else for (e in g) g[e] && g[e].stop && cb.test(e) && d(g[e]);
                  for (e = f.length; e--;) f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f.splice(e, 1));
                  (b || !c) && m.dequeue(this, a)
              })
          }, finish: function (a) {
              return a !== !1 && (a = a || "fx"), this.each(function () {
                  var b, c = m._data(this), d = c[a + "queue"], e = c[a + "queueHooks"], f = m.timers,
                      g = d ? d.length : 0;
                  for (c.finish = !0, m.queue(this, a, []), e && e.stop && e.stop.call(this, !0), b = f.length; b--;) f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
                  for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);
                  delete c.finish
              })
          }
      }), m.each(["toggle", "show", "hide"], function (a, b) {
          var c = m.fn[b];
          m.fn[b] = function (a, d, e) {
              return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(gb(b, !0), a, d, e)
          }
      }), m.each({
          slideDown: gb("show"),
          slideUp: gb("hide"),
          slideToggle: gb("toggle"),
          fadeIn: {opacity: "show"},
          fadeOut: {opacity: "hide"},
          fadeToggle: {opacity: "toggle"}
      }, function (a, b) {
          m.fn[a] = function (a, c, d) {
              return this.animate(b, a, c, d)
          }
      }), m.timers = [], m.fx.tick = function () {
          var a, b = m.timers, c = 0;
          for ($a = m.now(); c < b.length; c++) a = b[c], a() || b[c] !== a || b.splice(c--, 1);
          b.length || m.fx.stop(), $a = void 0
      }, m.fx.timer = function (a) {
          m.timers.push(a), a() ? m.fx.start() : m.timers.pop()
      }, m.fx.interval = 13, m.fx.start = function () {
          _a || (_a = setInterval(m.fx.tick, m.fx.interval))
      }, m.fx.stop = function () {
          clearInterval(_a), _a = null
      }, m.fx.speeds = {slow: 600, fast: 200, _default: 400}, m.fn.delay = function (a, b) {
          return a = m.fx ? m.fx.speeds[a] || a : a, b = b || "fx", this.queue(b, function (b, c) {
              var d = setTimeout(b, a);
              c.stop = function () {
                  clearTimeout(d)
              }
          })
      }, function () {
          var a, b, c, d, e;
          b = y.createElement("div"), b.setAttribute("className", "t"), b.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", d = b.getElementsByTagName("a")[0], c = y.createElement("select"), e = c.appendChild(y.createElement("option")), a = b.getElementsByTagName("input")[0], d.style.cssText = "top:1px", k.getSetAttribute = "t" !== b.className, k.style = /top/.test(d.getAttribute("style")), k.hrefNormalized = "/a" === d.getAttribute("href"), k.checkOn = !!a.value, k.optSelected = e.selected, k.enctype = !!y.createElement("form").enctype, c.disabled = !0, k.optDisabled = !e.disabled, a = y.createElement("input"), a.setAttribute("value", ""), k.input = "" === a.getAttribute("value"), a.value = "t", a.setAttribute("type", "radio"), k.radioValue = "t" === a.value
      }();
      var lb = /\r/g;
      m.fn.extend({
          val: function (a) {
              var b, c, d, e = this[0];
              {
                  if (arguments.length) return d = m.isFunction(a), this.each(function (c) {
                      var e;
                      1 === this.nodeType && (e = d ? a.call(this, c, m(this).val()) : a, null == e ? e = "" : "number" == typeof e ? e += "" : m.isArray(e) && (e = m.map(e, function (a) {
                          return null == a ? "" : a + ""
                      })), b = m.valHooks[this.type] || m.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e))
                  });
                  if (e) return b = m.valHooks[e.type] || m.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c = b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(lb, "") : null == c ? "" : c)
              }
          }
      }), m.extend({
          valHooks: {
              option: {
                  get: function (a) {
                      var b = m.find.attr(a, "value");
                      return null != b ? b : m.trim(m.text(a))
                  }
              }, select: {
                  get: function (a) {
                      for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h = f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++) if (c = d[i], !(!c.selected && i !== e || (k.optDisabled ? c.disabled : null !== c.getAttribute("disabled")) || c.parentNode.disabled && m.nodeName(c.parentNode, "optgroup"))) {
                          if (b = m(c).val(), f) return b;
                          g.push(b)
                      }
                      return g
                  }, set: function (a, b) {
                      var c, d, e = a.options, f = m.makeArray(b), g = e.length;
                      while (g--) if (d = e[g], m.inArray(m.valHooks.option.get(d), f) >= 0) try {
                          d.selected = c = !0
                      } catch (h) {
                          d.scrollHeight
                      } else d.selected = !1;
                      return c || (a.selectedIndex = -1), e
                  }
              }
          }
      }), m.each(["radio", "checkbox"], function () {
          m.valHooks[this] = {
              set: function (a, b) {
                  return m.isArray(b) ? a.checked = m.inArray(m(a).val(), b) >= 0 : void 0
              }
          }, k.checkOn || (m.valHooks[this].get = function (a) {
              return null === a.getAttribute("value") ? "on" : a.value
          })
      });
      var mb, nb, ob = m.expr.attrHandle, pb = /^(?:checked|selected)$/i, qb = k.getSetAttribute, rb = k.input;
      m.fn.extend({
          attr: function (a, b) {
              return V(this, m.attr, a, b, arguments.length > 1)
          }, removeAttr: function (a) {
              return this.each(function () {
                  m.removeAttr(this, a)
              })
          }
      }), m.extend({
          attr: function (a, b, c) {
              var d, e, f = a.nodeType;
              if (a && 3 !== f && 8 !== f && 2 !== f) return typeof a.getAttribute === K ? m.prop(a, b, c) : (1 === f && m.isXMLDoc(a) || (b = b.toLowerCase(), d = m.attrHooks[b] || (m.expr.match.bool.test(b) ? nb : mb)), void 0 === c ? d && "get" in d && null !== (e = d.get(a, b)) ? e : (e = m.find.attr(a, b), null == e ? void 0 : e) : null !== c ? d && "set" in d && void 0 !== (e = d.set(a, c, b)) ? e : (a.setAttribute(b, c + ""), c) : void m.removeAttr(a, b))
          }, removeAttr: function (a, b) {
              var c, d, e = 0, f = b && b.match(E);
              if (f && 1 === a.nodeType) while (c = f[e++]) d = m.propFix[c] || c, m.expr.match.bool.test(c) ? rb && qb || !pb.test(c) ? a[d] = !1 : a[m.camelCase("default-" + c)] = a[d] = !1 : m.attr(a, c, ""), a.removeAttribute(qb ? c : d)
          }, attrHooks: {
              type: {
                  set: function (a, b) {
                      if (!k.radioValue && "radio" === b && m.nodeName(a, "input")) {
                          var c = a.value;
                          return a.setAttribute("type", b), c && (a.value = c), b
                      }
                  }
              }
          }
      }), nb = {
          set: function (a, b, c) {
              return b === !1 ? m.removeAttr(a, c) : rb && qb || !pb.test(c) ? a.setAttribute(!qb && m.propFix[c] || c, c) : a[m.camelCase("default-" + c)] = a[c] = !0, c
          }
      }, m.each(m.expr.match.bool.source.match(/\w+/g), function (a, b) {
          var c = ob[b] || m.find.attr;
          ob[b] = rb && qb || !pb.test(b) ? function (a, b, d) {
              var e, f;
              return d || (f = ob[b], ob[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, ob[b] = f), e
          } : function (a, b, c) {
              return c ? void 0 : a[m.camelCase("default-" + b)] ? b.toLowerCase() : null
          }
      }), rb && qb || (m.attrHooks.value = {
          set: function (a, b, c) {
              return m.nodeName(a, "input") ? void(a.defaultValue = b) : mb && mb.set(a, b, c)
          }
      }), qb || (mb = {
          set: function (a, b, c) {
              var d = a.getAttributeNode(c);
              return d || a.setAttributeNode(d = a.ownerDocument.createAttribute(c)), d.value = b += "", "value" === c || b === a.getAttribute(c) ? b : void 0
          }
      }, ob.id = ob.name = ob.coords = function (a, b, c) {
          var d;
          return c ? void 0 : (d = a.getAttributeNode(b)) && "" !== d.value ? d.value : null
      }, m.valHooks.button = {
          get: function (a, b) {
              var c = a.getAttributeNode(b);
              return c && c.specified ? c.value : void 0
          }, set: mb.set
      }, m.attrHooks.contenteditable = {
          set: function (a, b, c) {
              mb.set(a, "" === b ? !1 : b, c)
          }
      }, m.each(["width", "height"], function (a, b) {
          m.attrHooks[b] = {
              set: function (a, c) {
                  return "" === c ? (a.setAttribute(b, "auto"), c) : void 0
              }
          }
      })), k.style || (m.attrHooks.style = {
          get: function (a) {
              return a.style.cssText || void 0
          }, set: function (a, b) {
              return a.style.cssText = b + ""
          }
      });
      var sb = /^(?:input|select|textarea|button|object)$/i, tb = /^(?:a|area)$/i;
      m.fn.extend({
          prop: function (a, b) {
              return V(this, m.prop, a, b, arguments.length > 1)
          }, removeProp: function (a) {
              return a = m.propFix[a] || a, this.each(function () {
                  try {
                      this[a] = void 0, delete this[a]
                  } catch (b) {
                  }
              })
          }
      }), m.extend({
          propFix: {"for": "htmlFor", "class": "className"}, prop: function (a, b, c) {
              var d, e, f, g = a.nodeType;
              if (a && 3 !== g && 8 !== g && 2 !== g) return f = 1 !== g || !m.isXMLDoc(a), f && (b = m.propFix[b] || b, e = m.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in e && null !== (d = e.get(a, b)) ? d : a[b]
          }, propHooks: {
              tabIndex: {
                  get: function (a) {
                      var b = m.find.attr(a, "tabindex");
                      return b ? parseInt(b, 10) : sb.test(a.nodeName) || tb.test(a.nodeName) && a.href ? 0 : -1
                  }
              }
          }
      }), k.hrefNormalized || m.each(["href", "src"], function (a, b) {
          m.propHooks[b] = {
              get: function (a) {
                  return a.getAttribute(b, 4)
              }
          }
      }), k.optSelected || (m.propHooks.selected = {
          get: function (a) {
              var b = a.parentNode;
              return b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex), null
          }
      }), m.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
          m.propFix[this.toLowerCase()] = this
      }), k.enctype || (m.propFix.enctype = "encoding");
      var ub = /[\t\r\n\f]/g;
      m.fn.extend({
          addClass: function (a) {
              var b, c, d, e, f, g, h = 0, i = this.length, j = "string" == typeof a && a;
              if (m.isFunction(a)) return this.each(function (b) {
                  m(this).addClass(a.call(this, b, this.className))
              });
              if (j) for (b = (a || "").match(E) || []; i > h; h++) if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(ub, " ") : " ")) {
                  f = 0;
                  while (e = b[f++]) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
                  g = m.trim(d), c.className !== g && (c.className = g)
              }
              return this
          }, removeClass: function (a) {
              var b, c, d, e, f, g, h = 0, i = this.length, j = 0 === arguments.length || "string" == typeof a && a;
              if (m.isFunction(a)) return this.each(function (b) {
                  m(this).removeClass(a.call(this, b, this.className))
              });
              if (j) for (b = (a || "").match(E) || []; i > h; h++) if (c = this[h], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(ub, " ") : "")) {
                  f = 0;
                  while (e = b[f++]) while (d.indexOf(" " + e + " ") >= 0) d = d.replace(" " + e + " ", " ");
                  g = a ? m.trim(d) : "", c.className !== g && (c.className = g)
              }
              return this
          }, toggleClass: function (a, b) {
              var c = typeof a;
              return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : this.each(m.isFunction(a) ? function (c) {
                  m(this).toggleClass(a.call(this, c, this.className, b), b)
              } : function () {
                  if ("string" === c) {
                      var b, d = 0, e = m(this), f = a.match(E) || [];
                      while (b = f[d++]) e.hasClass(b) ? e.removeClass(b) : e.addClass(b)
                  } else (c === K || "boolean" === c) && (this.className && m._data(this, "__className__", this.className), this.className = this.className || a === !1 ? "" : m._data(this, "__className__") || "")
              })
          }, hasClass: function (a) {
              for (var b = " " + a + " ", c = 0, d = this.length; d > c; c++) if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(ub, " ").indexOf(b) >= 0) return !0;
              return !1
          }
      }), m.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 (a, b) {
          m.fn[b] = function (a, c) {
              return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
          }
      }), m.fn.extend({
          hover: function (a, b) {
              return this.mouseenter(a).mouseleave(b || a)
          }, bind: function (a, b, c) {
              return this.on(a, null, b, c)
          }, unbind: function (a, b) {
              return this.off(a, null, b)
          }, delegate: function (a, b, c, d) {
              return this.on(b, a, c, d)
          }, undelegate: function (a, b, c) {
              return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
          }
      });
      var vb = m.now(), wb = /\?/,
          xb = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
      m.parseJSON = function (b) {
          if (a.JSON && a.JSON.parse) return a.JSON.parse(b + "");
          var c, d = null, e = m.trim(b + "");
          return e && !m.trim(e.replace(xb, function (a, b, e, f) {
              return c && b && (d = 0), 0 === d ? a : (c = e || b, d += !f - !e, "")
          })) ? Function("return " + e)() : m.error("Invalid JSON: " + b)
      }, m.parseXML = function (b) {
          var c, d;
          if (!b || "string" != typeof b) return null;
          try {
              a.DOMParser ? (d = new DOMParser, c = d.parseFromString(b, "text/xml")) : (c = new ActiveXObject("Microsoft.XMLDOM"), c.async = "false", c.loadXML(b))
          } catch (e) {
              c = void 0
          }
          return c && c.documentElement && !c.getElementsByTagName("parsererror").length || m.error("Invalid XML: " + b), c
      };
      var yb, zb, Ab = /#.*$/, Bb = /([?&])_=[^&]*/, Cb = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
          Db = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, Eb = /^(?:GET|HEAD)$/, Fb = /^\/\//,
          Gb = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, Hb = {}, Ib = {}, Jb = "*/".concat("*");
      try {
          zb = location.href
      } catch (Kb) {
          zb = y.createElement("a"), zb.href = "", zb = zb.href
      }
      yb = Gb.exec(zb.toLowerCase()) || [];
  
      function Lb(a) {
          return function (b, c) {
              "string" != typeof b && (c = b, b = "*");
              var d, e = 0, f = b.toLowerCase().match(E) || [];
              if (m.isFunction(c)) while (d = f[e++]) "+" === d.charAt(0) ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c)
          }
      }
  
      function Mb(a, b, c, d) {
          var e = {}, f = a === Ib;
  
          function g(h) {
              var i;
              return e[h] = !0, m.each(a[h] || [], function (a, h) {
                  var j = h(b, c, d);
                  return "string" != typeof j || f || e[j] ? f ? !(i = j) : void 0 : (b.dataTypes.unshift(j), g(j), !1)
              }), i
          }
  
          return g(b.dataTypes[0]) || !e["*"] && g("*")
      }
  
      function Nb(a, b) {
          var c, d, e = m.ajaxSettings.flatOptions || {};
          for (d in b) void 0 !== b[d] && ((e[d] ? a : c || (c = {}))[d] = b[d]);
          return c && m.extend(!0, a, c), a
      }
  
      function Ob(a, b, c) {
          var d, e, f, g, h = a.contents, i = a.dataTypes;
          while ("*" === i[0]) i.shift(), void 0 === e && (e = a.mimeType || b.getResponseHeader("Content-Type"));
          if (e) for (g in h) if (h[g] && h[g].test(e)) {
              i.unshift(g);
              break
          }
          if (i[0] in c) f = i[0]; else {
              for (g in c) {
                  if (!i[0] || a.converters[g + " " + i[0]]) {
                      f = g;
                      break
                  }
                  d || (d = g)
              }
              f = f || d
          }
          return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0
      }
  
      function Pb(a, b, c, d) {
          var e, f, g, h, i, j = {}, k = a.dataTypes.slice();
          if (k[1]) for (g in a.converters) j[g.toLowerCase()] = a.converters[g];
          f = k.shift();
          while (f) if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift()) if ("*" === f) f = i; else if ("*" !== i && i !== f) {
              if (g = j[i + " " + f] || j["* " + f], !g) for (e in j) if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
                  g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
                  break
              }
              if (g !== !0) if (g && a["throws"]) b = g(b); else try {
                  b = g(b)
              } catch (l) {
                  return {state: "parsererror", error: g ? l : "No conversion from " + i + " to " + f}
              }
          }
          return {state: "success", data: b}
      }
  
      m.extend({
          active: 0,
          lastModified: {},
          etag: {},
          ajaxSettings: {
              url: zb,
              type: "GET",
              isLocal: Db.test(yb[1]),
              global: !0,
              processData: !0,
              async: !0,
              contentType: "application/x-www-form-urlencoded; charset=UTF-8",
              accepts: {
                  "*": Jb,
                  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": m.parseJSON, "text xml": m.parseXML},
              flatOptions: {url: !0, context: !0}
          },
          ajaxSetup: function (a, b) {
              return b ? Nb(Nb(a, m.ajaxSettings), b) : Nb(m.ajaxSettings, a)
          },
          ajaxPrefilter: Lb(Hb),
          ajaxTransport: Lb(Ib),
          ajax: function (a, b) {
              "object" == typeof a && (b = a, a = void 0), b = b || {};
              var c, d, e, f, g, h, i, j, k = m.ajaxSetup({}, b), l = k.context || k,
                  n = k.context && (l.nodeType || l.jquery) ? m(l) : m.event, o = m.Deferred(),
                  p = m.Callbacks("once memory"), q = k.statusCode || {}, r = {}, s = {}, t = 0, u = "canceled", v = {
                      readyState: 0, getResponseHeader: function (a) {
                          var b;
                          if (2 === t) {
                              if (!j) {
                                  j = {};
                                  while (b = Cb.exec(f)) j[b[1].toLowerCase()] = b[2]
                              }
                              b = j[a.toLowerCase()]
                          }
                          return null == b ? null : b
                      }, getAllResponseHeaders: function () {
                          return 2 === t ? f : null
                      }, setRequestHeader: function (a, b) {
                          var c = a.toLowerCase();
                          return t || (a = s[c] = s[c] || a, r[a] = b), this
                      }, overrideMimeType: function (a) {
                          return t || (k.mimeType = a), this
                      }, statusCode: function (a) {
                          var b;
                          if (a) if (2 > t) for (b in a) q[b] = [q[b], a[b]]; else v.always(a[v.status]);
                          return this
                      }, abort: function (a) {
                          var b = a || u;
                          return i && i.abort(b), x(0, b), this
                      }
                  };
              if (o.promise(v).complete = p.add, v.success = v.done, v.error = v.fail, k.url = ((a || k.url || zb) + "").replace(Ab, "").replace(Fb, yb[1] + "//"), k.type = b.method || b.type || k.method || k.type, k.dataTypes = m.trim(k.dataType || "*").toLowerCase().match(E) || [""], null == k.crossDomain && (c = Gb.exec(k.url.toLowerCase()), k.crossDomain = !(!c || c[1] === yb[1] && c[2] === yb[2] && (c[3] || ("http:" === c[1] ? "80" : "443")) === (yb[3] || ("http:" === yb[1] ? "80" : "443")))), k.data && k.processData && "string" != typeof k.data && (k.data = m.param(k.data, k.traditional)), Mb(Hb, k, b, v), 2 === t) return v;
              h = m.event && k.global, h && 0 === m.active++ && m.event.trigger("ajaxStart"), k.type = k.type.toUpperCase(), k.hasContent = !Eb.test(k.type), e = k.url, k.hasContent || (k.data && (e = k.url += (wb.test(e) ? "&" : "?") + k.data, delete k.data), k.cache === !1 && (k.url = Bb.test(e) ? e.replace(Bb, "$1_=" + vb++) : e + (wb.test(e) ? "&" : "?") + "_=" + vb++)), k.ifModified && (m.lastModified[e] && v.setRequestHeader("If-Modified-Since", m.lastModified[e]), m.etag[e] && v.setRequestHeader("If-None-Match", m.etag[e])), (k.data && k.hasContent && k.contentType !== !1 || b.contentType) && v.setRequestHeader("Content-Type", k.contentType), v.setRequestHeader("Accept", k.dataTypes[0] && k.accepts[k.dataTypes[0]] ? k.accepts[k.dataTypes[0]] + ("*" !== k.dataTypes[0] ? ", " + Jb + "; q=0.01" : "") : k.accepts["*"]);
              for (d in k.headers) v.setRequestHeader(d, k.headers[d]);
              if (k.beforeSend && (k.beforeSend.call(l, v, k) === !1 || 2 === t)) return v.abort();
              u = "abort";
              for (d in{success: 1, error: 1, complete: 1}) v[d](k[d]);
              if (i = Mb(Ib, k, b, v)) {
                  v.readyState = 1, h && n.trigger("ajaxSend", [v, k]), k.async && k.timeout > 0 && (g = setTimeout(function () {
                      v.abort("timeout")
                  }, k.timeout));
                  try {
                      t = 1, i.send(r, x)
                  } catch (w) {
                      if (!(2 > t)) throw w;
                      x(-1, w)
                  }
              } else x(-1, "No Transport");
  
              function x(a, b, c, d) {
                  var j, r, s, u, w, x = b;
                  2 !== t && (t = 2, g && clearTimeout(g), i = void 0, f = d || "", v.readyState = a > 0 ? 4 : 0, j = a >= 200 && 300 > a || 304 === a, c && (u = Ob(k, v, c)), u = Pb(k, u, v, j), j ? (k.ifModified && (w = v.getResponseHeader("Last-Modified"), w && (m.lastModified[e] = w), w = v.getResponseHeader("etag"), w && (m.etag[e] = w)), 204 === a || "HEAD" === k.type ? x = "nocontent" : 304 === a ? x = "notmodified" : (x = u.state, r = u.data, s = u.error, j = !s)) : (s = x, (a || !x) && (x = "error", 0 > a && (a = 0))), v.status = a, v.statusText = (b || x) + "", j ? o.resolveWith(l, [r, x, v]) : o.rejectWith(l, [v, x, s]), v.statusCode(q), q = void 0, h && n.trigger(j ? "ajaxSuccess" : "ajaxError", [v, k, j ? r : s]), p.fireWith(l, [v, x]), h && (n.trigger("ajaxComplete", [v, k]), --m.active || m.event.trigger("ajaxStop")))
              }
  
              return v
          },
          getJSON: function (a, b, c) {
              return m.get(a, b, c, "json")
          },
          getScript: function (a, b) {
              return m.get(a, void 0, b, "script")
          }
      }), m.each(["get", "post"], function (a, b) {
          m[b] = function (a, c, d, e) {
              return m.isFunction(c) && (e = e || d, d = c, c = void 0), m.ajax({
                  url: a,
                  type: b,
                  dataType: e,
                  data: c,
                  success: d
              })
          }
      }), m._evalUrl = function (a) {
          return m.ajax({url: a, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0})
      }, m.fn.extend({
          wrapAll: function (a) {
              if (m.isFunction(a)) return this.each(function (b) {
                  m(this).wrapAll(a.call(this, b))
              });
              if (this[0]) {
                  var b = m(a, this[0].ownerDocument).eq(0).clone(!0);
                  this[0].parentNode && b.insertBefore(this[0]), b.map(function () {
                      var a = this;
                      while (a.firstChild && 1 === a.firstChild.nodeType) a = a.firstChild;
                      return a
                  }).append(this)
              }
              return this
          }, wrapInner: function (a) {
              return this.each(m.isFunction(a) ? function (b) {
                  m(this).wrapInner(a.call(this, b))
              } : function () {
                  var b = m(this), c = b.contents();
                  c.length ? c.wrapAll(a) : b.append(a)
              })
          }, wrap: function (a) {
              var b = m.isFunction(a);
              return this.each(function (c) {
                  m(this).wrapAll(b ? a.call(this, c) : a)
              })
          }, unwrap: function () {
              return this.parent().each(function () {
                  m.nodeName(this, "body") || m(this).replaceWith(this.childNodes)
              }).end()
          }
      }), m.expr.filters.hidden = function (a) {
          return a.offsetWidth <= 0 && a.offsetHeight <= 0 || !k.reliableHiddenOffsets() && "none" === (a.style && a.style.display || m.css(a, "display"))
      }, m.expr.filters.visible = function (a) {
          return !m.expr.filters.hidden(a)
      };
      var Qb = /%20/g, Rb = /\[\]$/, Sb = /\r?\n/g, Tb = /^(?:submit|button|image|reset|file)$/i,
          Ub = /^(?:input|select|textarea|keygen)/i;
  
      function Vb(a, b, c, d) {
          var e;
          if (m.isArray(b)) m.each(b, function (b, e) {
              c || Rb.test(a) ? d(a, e) : Vb(a + "[" + ("object" == typeof e ? b : "") + "]", e, c, d)
          }); else if (c || "object" !== m.type(b)) d(a, b); else for (e in b) Vb(a + "[" + e + "]", b[e], c, d)
      }
  
      m.param = function (a, b) {
          var c, d = [], e = function (a, b) {
              b = m.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
          };
          if (void 0 === b && (b = m.ajaxSettings && m.ajaxSettings.traditional), m.isArray(a) || a.jquery && !m.isPlainObject(a)) m.each(a, function () {
              e(this.name, this.value)
          }); else for (c in a) Vb(c, a[c], b, e);
          return d.join("&").replace(Qb, "+")
      }, m.fn.extend({
          serialize: function () {
              return m.param(this.serializeArray())
          }, serializeArray: function () {
              return this.map(function () {
                  var a = m.prop(this, "elements");
                  return a ? m.makeArray(a) : this
              }).filter(function () {
                  var a = this.type;
                  return this.name && !m(this).is(":disabled") && Ub.test(this.nodeName) && !Tb.test(a) && (this.checked || !W.test(a))
              }).map(function (a, b) {
                  var c = m(this).val();
                  return null == c ? null : m.isArray(c) ? m.map(c, function (a) {
                      return {name: b.name, value: a.replace(Sb, "\r\n")}
                  }) : {name: b.name, value: c.replace(Sb, "\r\n")}
              }).get()
          }
      }), m.ajaxSettings.xhr = void 0 !== a.ActiveXObject ? function () {
          return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && Zb() || $b()
      } : Zb;
      var Wb = 0, Xb = {}, Yb = m.ajaxSettings.xhr();
      a.attachEvent && a.attachEvent("onunload", function () {
          for (var a in Xb) Xb[a](void 0, !0)
      }), k.cors = !!Yb && "withCredentials" in Yb, Yb = k.ajax = !!Yb, Yb && m.ajaxTransport(function (a) {
          if (!a.crossDomain || k.cors) {
              var b;
              return {
  /*                send: function (c, d) {
                      var e, f = a.xhr(), g = ++Wb;
                      if (f.open(a.type, a.url, a.async, a.username, a.password), a.xhrFields) for (e in a.xhrFields) f[e] = a.xhrFields[e];
                      a.mimeType && f.overrideMimeType && f.overrideMimeType(a.mimeType), a.crossDomain || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest");
                      for (e in c) void 0 !== c[e] && f.setRequestHeader(e, c[e] + "");
                      f.send(a.hasContent && a.data || null), b = function (c, e) {
                          var h, i, j;
                          if (b && (e || 4 === f.readyState)) if (delete Xb[g], b = void 0, f.onreadystatechange = m.noop, e) 4 !== f.readyState && f.abort(); else {
                              j = {}, h = f.status, "string" == typeof f.responseText && (j.text = f.responseText);
                              try {
                                  i = f.statusText
                              } catch (k) {
                                  i = ""
                              }
                              h || !a.isLocal || a.crossDomain ? 1223 === h && (h = 204) : h = j.text ? 200 : 404
                          }
                          j && d(h, i, j, f.getAllResponseHeaders())
                      }, a.async ? 4 === f.readyState ? setTimeout(b) : f.onreadystatechange = Xb[g] = b : b()
                  }, abort: function () {
                      b && b(void 0, !0)
                  }*/
              }
          }
      });
  
      function Zb() {
          try {
              return new a.XMLHttpRequest
          } catch (b) {
          }
      }
  
      function $b() {
          try {
              return new a.ActiveXObject("Microsoft.XMLHTTP")
          } catch (b) {
          }
      }
  
      m.ajaxSetup({
          accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},
          contents: {script: /(?:java|ecma)script/},
          converters: {
              "text script": function (a) {
                  return m.globalEval(a), a
              }
          }
      }), m.ajaxPrefilter("script", function (a) {
          void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1)
      }), m.ajaxTransport("script", function (a) {
          if (a.crossDomain) {
              var b, c = y.head || m("head")[0] || y.documentElement;
              return {
                  send: function (d, e) {
                      b = y.createElement("script"), b.async = !0, a.scriptCharset && (b.charset = a.scriptCharset), b.src = a.url, b.onload = b.onreadystatechange = function (a, c) {
                          (c || !b.readyState || /loaded|complete/.test(b.readyState)) && (b.onload = b.onreadystatechange = null, b.parentNode && b.parentNode.removeChild(b), b = null, c || e(200, "success"))
                      }, c.insertBefore(b, c.firstChild)
                  }, abort: function () {
                      b && b.onload(void 0, !0)
                  }
              }
          }
      });
      var _b = [], ac = /(=)\?(?=&|$)|\?\?/;
      m.ajaxSetup({
          jsonp: "callback", jsonpCallback: function () {
              var a = _b.pop() || m.expando + "_" + vb++;
              return this[a] = !0, a
          }
      }), m.ajaxPrefilter("json jsonp", function (b, c, d) {
          var e, f, g,
              h = b.jsonp !== !1 && (ac.test(b.url) ? "url" : "string" == typeof b.data && !(b.contentType || "").indexOf("application/x-www-form-urlencoded") && ac.test(b.data) && "data");
          return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = m.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback, h ? b[h] = b[h].replace(ac, "$1" + e) : b.jsonp !== !1 && (b.url += (wb.test(b.url) ? "&" : "?") + b.jsonp + "=" + e), b.converters["script json"] = function () {
              return g || m.error(e + " was not called"), g[0]
          }, b.dataTypes[0] = "json", f = a[e], a[e] = function () {
              g = arguments
          }, d.always(function () {
              a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, _b.push(e)), g && m.isFunction(f) && f(g[0]), g = f = void 0
          }), "script") : void 0
      }), m.parseHTML = function (a, b, c) {
          if (!a || "string" != typeof a) return null;
          "boolean" == typeof b && (c = b, b = !1), b = b || y;
          var d = u.exec(a), e = !c && [];
          return d ? [b.createElement(d[1])] : (d = m.buildFragment([a], b, e), e && e.length && m(e).remove(), m.merge([], d.childNodes))
      };
      var bc = m.fn.load;
      m.fn.load = function (a, b, c) {
          if ("string" != typeof a && bc) return bc.apply(this, arguments);
          var d, e, f, g = this, h = a.indexOf(" ");
          return h >= 0 && (d = m.trim(a.slice(h, a.length)), a = a.slice(0, h)), m.isFunction(b) ? (c = b, b = void 0) : b && "object" == typeof b && (f = "POST"), g.length > 0 && m.ajax({
              url: a,
              type: f,
              dataType: "html",
              data: b
          }).done(function (a) {
              e = arguments, g.html(d ? m("<div>").append(m.parseHTML(a)).find(d) : a)
          }).complete(c && function (a, b) {
              g.each(c, e || [a.responseText, b, a])
          }), this
      }, m.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (a, b) {
          m.fn[b] = function (a) {
              return this.on(b, a)
          }
      }), m.expr.filters.animated = function (a) {
          return m.grep(m.timers, function (b) {
              return a === b.elem
          }).length
      };
      var cc = a.document.documentElement;
  
      function dc(a) {
          return m.isWindow(a) ? a : 9 === a.nodeType ? a.defaultView || a.parentWindow : !1
      }
  
      m.offset = {
          setOffset: function (a, b, c) {
              var d, e, f, g, h, i, j, k = m.css(a, "position"), l = m(a), n = {};
              "static" === k && (a.style.position = "relative"), h = l.offset(), f = m.css(a, "top"), i = m.css(a, "left"), j = ("absolute" === k || "fixed" === k) && m.inArray("auto", [f, i]) > -1, j ? (d = l.position(), g = d.top, e = d.left) : (g = parseFloat(f) || 0, e = parseFloat(i) || 0), m.isFunction(b) && (b = b.call(a, c, h)), null != b.top && (n.top = b.top - h.top + g), null != b.left && (n.left = b.left - h.left + e), "using" in b ? b.using.call(a, n) : l.css(n)
          }
      }, m.fn.extend({
          offset: function (a) {
              if (arguments.length) return void 0 === a ? this : this.each(function (b) {
                  m.offset.setOffset(this, a, b)
              });
              var b, c, d = {top: 0, left: 0}, e = this[0], f = e && e.ownerDocument;
              if (f) return b = f.documentElement, m.contains(b, e) ? (typeof e.getBoundingClientRect !== K && (d = e.getBoundingClientRect()), c = dc(f), {
                  top: d.top + (c.pageYOffset || b.scrollTop) - (b.clientTop || 0),
                  left: d.left + (c.pageXOffset || b.scrollLeft) - (b.clientLeft || 0)
              }) : d
          }, position: function () {
              if (this[0]) {
                  var a, b, c = {top: 0, left: 0}, d = this[0];
                  return "fixed" === m.css(d, "position") ? b = d.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), m.nodeName(a[0], "html") || (c = a.offset()), c.top += m.css(a[0], "borderTopWidth", !0), c.left += m.css(a[0], "borderLeftWidth", !0)), {
                      top: b.top - c.top - m.css(d, "marginTop", !0),
                      left: b.left - c.left - m.css(d, "marginLeft", !0)
                  }
              }
          }, offsetParent: function () {
              return this.map(function () {
                  var a = this.offsetParent || cc;
                  while (a && !m.nodeName(a, "html") && "static" === m.css(a, "position")) a = a.offsetParent;
                  return a || cc
              })
          }
      }), m.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (a, b) {
          var c = /Y/.test(b);
          m.fn[a] = function (d) {
              return V(this, function (a, d, e) {
                  var f = dc(a);
                  return void 0 === e ? f ? b in f ? f[b] : f.document.documentElement[d] : a[d] : void(f ? f.scrollTo(c ? m(f).scrollLeft() : e, c ? e : m(f).scrollTop()) : a[d] = e)
              }, a, d, arguments.length, null)
          }
      }), m.each(["top", "left"], function (a, b) {
          m.cssHooks[b] = La(k.pixelPosition, function (a, c) {
              return c ? (c = Ja(a, b), Ha.test(c) ? m(a).position()[b] + "px" : c) : void 0
          })
      }), m.each({Height: "height", Width: "width"}, function (a, b) {
          m.each({padding: "inner" + a, content: b, "": "outer" + a}, function (c, d) {
              m.fn[d] = function (d, e) {
                  var f = arguments.length && (c || "boolean" != typeof d),
                      g = c || (d === !0 || e === !0 ? "margin" : "border");
                  return V(this, function (b, c, d) {
                      var e;
                      return m.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement, Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) : void 0 === d ? m.css(b, c, g) : m.style(b, c, d, g)
                  }, b, f ? d : void 0, f, null)
              }
          })
      }), m.fn.size = function () {
          return this.length
      }, m.fn.andSelf = m.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {
          return m
      });
      var ec = a.jQuery, fc = a.$;
      return m.noConflict = function (b) {
          return a.$ === m && (a.$ = fc), b && a.jQuery === m && (a.jQuery = ec), m
      }, typeof b === K && (a.jQuery = a.$ = m), m
  });
  //# sourceMappingURL=jquery.min.map
  /*bootstrap.min.js*/
  /*!
   * Bootstrap v3.3.6 (http://getbootstrap.com)
   * Copyright 2011-2015 Twitter, Inc.
   * Licensed under the MIT license
   */
  if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery");
  +function (a) {
      "use strict";
      var b = a.fn.jquery.split(" ")[0].split(".");
      if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 2) throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")
  }(jQuery), +function (a) {
      "use strict";
  
      function b() {
          var a = document.createElement("bootstrap"), b = {
              WebkitTransition: "webkitTransitionEnd",
              MozTransition: "transitionend",
              OTransition: "oTransitionEnd otransitionend",
              transition: "transitionend"
          };
          for (var c in b) if (void 0 !== a.style[c]) return {end: b[c]};
          return !1
      }
  
      a.fn.emulateTransitionEnd = function (b) {
          var c = !1, d = this;
          a(this).one("bsTransitionEnd", function () {
              c = !0
          });
          var e = function () {
              c || a(d).trigger(a.support.transition.end)
          };
          return setTimeout(e, b), this
      }, a(function () {
          a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = {
              bindType: a.support.transition.end,
              delegateType: a.support.transition.end,
              handle: function (b) {
                  return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
              }
          })
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var c = a(this), e = c.data("bs.alert");
              e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c)
          })
      }
  
      var c = '[data-dismiss="alert"]', d = function (b) {
          a(b).on("click", c, this.close)
      };
      d.VERSION = "3.3.6", d.TRANSITION_DURATION = 150, d.prototype.close = function (b) {
          function c() {
              g.detach().trigger("closed.bs.alert").remove()
          }
  
          var e = a(this), f = e.attr("data-target");
          f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
          var g = a(f);
          b && b.preventDefault(), g.length || (g = e.closest(".alert")), g.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (g.removeClass("in"), a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c())
      };
      var e = a.fn.alert;
      a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function () {
          return a.fn.alert = e, this
      }, a(document).on("click.bs.alert.data-api", c, d.prototype.close)
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.button"), f = "object" == typeof b && b;
              e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b)
          })
      }
  
      var c = function (b, d) {
          this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1
      };
      c.VERSION = "3.3.6", c.DEFAULTS = {loadingText: "loading..."}, c.prototype.setState = function (b) {
          var c = "disabled", d = this.$element, e = d.is("input") ? "val" : "html", f = d.data();
          b += "Text", null == f.resetText && d.data("resetText", d[e]()), setTimeout(a.proxy(function () {
              d[e](null == f[b] ? this.options[b] : f[b]), "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
          }, this), 0)
      }, c.prototype.toggle = function () {
          var a = !0, b = this.$element.closest('[data-toggle="buttons"]');
          if (b.length) {
              var c = this.$element.find("input");
              "radio" == c.prop("type") ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass("active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1), this.$element.toggleClass("active")), c.prop("checked", this.$element.hasClass("active")), a && c.trigger("change")
          } else this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active")
      };
      var d = a.fn.button;
      a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function () {
          return a.fn.button = d, this
      }, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function (c) {
          var d = a(c.target);
          d.hasClass("btn") || (d = d.closest(".btn")), b.call(d, "toggle"), a(c.target).is('input[type="radio"]') || a(c.target).is('input[type="checkbox"]') || c.preventDefault()
      }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function (b) {
          a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type))
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.carousel"),
                  f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b),
                  g = "string" == typeof b ? b : f.slide;
              e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle()
          })
      }
  
      var c = function (b, c) {
          this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on("keydown.bs.carousel", a.proxy(this.keydown, this)), "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
      };
      c.VERSION = "3.3.6", c.TRANSITION_DURATION = 600, c.DEFAULTS = {
          interval: 5e3,
          pause: "hover",
          wrap: !0,
          keyboard: !0
      }, c.prototype.keydown = function (a) {
          if (!/input|textarea/i.test(a.target.tagName)) {
              switch (a.which) {
                  case 37:
                      this.prev();
                      break;
                  case 39:
                      this.next();
                      break;
                  default:
                      return
              }
              a.preventDefault()
          }
      }, c.prototype.cycle = function (b) {
          return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
      }, c.prototype.getItemIndex = function (a) {
          return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
      }, c.prototype.getItemForDirection = function (a, b) {
          var c = this.getItemIndex(b), d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
          if (d && !this.options.wrap) return b;
          var e = "prev" == a ? -1 : 1, f = (c + e) % this.$items.length;
          return this.$items.eq(f)
      }, c.prototype.to = function (a) {
          var b = this, c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
          return a > this.$items.length - 1 || 0 > a ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function () {
              b.to(a)
          }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
      }, c.prototype.pause = function (b) {
          return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
      }, c.prototype.next = function () {
          return this.sliding ? void 0 : this.slide("next")
      }, c.prototype.prev = function () {
          return this.sliding ? void 0 : this.slide("prev")
      }, c.prototype.slide = function (b, d) {
          var e = this.$element.find(".item.active"), f = d || this.getItemForDirection(b, e), g = this.interval,
              h = "next" == b ? "left" : "right", i = this;
          if (f.hasClass("active")) return this.sliding = !1;
          var j = f[0], k = a.Event("slide.bs.carousel", {relatedTarget: j, direction: h});
          if (this.$element.trigger(k), !k.isDefaultPrevented()) {
              if (this.sliding = !0, g && this.pause(), this.$indicators.length) {
                  this.$indicators.find(".active").removeClass("active");
                  var l = a(this.$indicators.children()[this.getItemIndex(f)]);
                  l && l.addClass("active")
              }
              var m = a.Event("slid.bs.carousel", {relatedTarget: j, direction: h});
              return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one("bsTransitionEnd", function () {
                  f.removeClass([b, h].join(" ")).addClass("active"), e.removeClass(["active", h].join(" ")), i.sliding = !1, setTimeout(function () {
                      i.$element.trigger(m)
                  }, 0)
              }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"), f.addClass("active"), this.sliding = !1, this.$element.trigger(m)), g && this.cycle(), this
          }
      };
      var d = a.fn.carousel;
      a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function () {
          return a.fn.carousel = d, this
      };
      var e = function (c) {
          var d, e = a(this), f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
          if (f.hasClass("carousel")) {
              var g = a.extend({}, f.data(), e.data()), h = e.attr("data-slide-to");
              h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault()
          }
      };
      a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e), a(window).on("load", function () {
          a('[data-ride="carousel"]').each(function () {
              var c = a(this);
              b.call(c, c.data())
          })
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          var c, d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
          return a(d)
      }
  
      function c(b) {
          return this.each(function () {
              var c = a(this), e = c.data("bs.collapse"),
                  f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
              !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data("bs.collapse", e = new d(this, f)), "string" == typeof b && e[b]()
          })
      }
  
      var d = function (b, c) {
          this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle()
      };
      d.VERSION = "3.3.6", d.TRANSITION_DURATION = 350, d.DEFAULTS = {toggle: !0}, d.prototype.dimension = function () {
          var a = this.$element.hasClass("width");
          return a ? "width" : "height"
      }, d.prototype.show = function () {
          if (!this.transitioning && !this.$element.hasClass("in")) {
              var b, e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
              if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) {
                  var f = a.Event("show.bs.collapse");
                  if (this.$element.trigger(f), !f.isDefaultPrevented()) {
                      e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null));
                      var g = this.dimension();
                      this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1;
                      var h = function () {
                          this.$element.removeClass("collapsing").addClass("collapse in")[g](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
                      };
                      if (!a.support.transition) return h.call(this);
                      var i = a.camelCase(["scroll", g].join("-"));
                      this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])
                  }
              }
          }
      }, d.prototype.hide = function () {
          if (!this.transitioning && this.$element.hasClass("in")) {
              var b = a.Event("hide.bs.collapse");
              if (this.$element.trigger(b), !b.isDefaultPrevented()) {
                  var c = this.dimension();
                  this.$element[c](this.$element[c]())[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 e = function () {
                      this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                  };
                  return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this)
              }
          }
      }, d.prototype.toggle = function () {
          this[this.$element.hasClass("in") ? "hide" : "show"]()
      }, d.prototype.getParent = function () {
          return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function (c, d) {
              var e = a(d);
              this.addAriaAndCollapsedClass(b(e), e)
          }, this)).end()
      }, d.prototype.addAriaAndCollapsedClass = function (a, b) {
          var c = a.hasClass("in");
          a.attr("aria-expanded", c), b.toggleClass("collapsed", !c).attr("aria-expanded", c)
      };
      var e = a.fn.collapse;
      a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function () {
          return a.fn.collapse = e, this
      }, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function (d) {
          var e = a(this);
          e.attr("data-target") || d.preventDefault();
          var f = b(e), g = f.data("bs.collapse"), h = g ? "toggle" : e.data();
          c.call(f, h)
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          var c = b.attr("data-target");
          c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
          var d = c && a(c);
          return d && d.length ? d : b.parent()
      }
  
      function c(c) {
          c && 3 === c.which || (a(e).remove(), a(f).each(function () {
              var d = a(this), e = b(d), f = {relatedTarget: this};
              e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass("open").trigger(a.Event("hidden.bs.dropdown", f)))))
          }))
      }
  
      function d(b) {
          return this.each(function () {
              var c = a(this), d = c.data("bs.dropdown");
              d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c)
          })
      }
  
      var e = ".dropdown-backdrop", f = '[data-toggle="dropdown"]', g = function (b) {
          a(b).on("click.bs.dropdown", this.toggle)
      };
      g.VERSION = "3.3.6", g.prototype.toggle = function (d) {
          var e = a(this);
          if (!e.is(".disabled, :disabled")) {
              var f = b(e), g = f.hasClass("open");
              if (c(), !g) {
                  "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c);
                  var h = {relatedTarget: this};
                  if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return;
                  e.trigger("focus").attr("aria-expanded", "true"), f.toggleClass("open").trigger(a.Event("shown.bs.dropdown", h))
              }
              return !1
          }
      }, g.prototype.keydown = function (c) {
          if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
              var d = a(this);
              if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
                  var e = b(d), g = e.hasClass("open");
                  if (!g && 27 != c.which || g && 27 == c.which) return 27 == c.which && e.find(f).trigger("focus"), d.trigger("click");
                  var h = " li:not(.disabled):visible a", i = e.find(".dropdown-menu" + h);
                  if (i.length) {
                      var j = i.index(c.target);
                      38 == c.which && j > 0 && j--, 40 == c.which && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus")
                  }
              }
          }
      };
      var h = a.fn.dropdown;
      a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function () {
          return a.fn.dropdown = h, this
      }, a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function (a) {
          a.stopPropagation()
      }).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b, d) {
          return this.each(function () {
              var e = a(this), f = e.data("bs.modal"), g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
              f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d)
          })
      }
  
      var c = function (b, c) {
          this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function () {
              this.$element.trigger("loaded.bs.modal")
          }, this))
      };
      c.VERSION = "3.3.6", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = {
          backdrop: !0,
          keyboard: !0,
          show: !0
      }, c.prototype.toggle = function (a) {
          return this.isShown ? this.hide() : this.show(a)
      }, c.prototype.show = function (b) {
          var d = this, e = a.Event("show.bs.modal", {relatedTarget: b});
          this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function () {
              d.$element.one("mouseup.dismiss.bs.modal", function (b) {
                  a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
              })
          }), this.backdrop(function () {
              var e = a.support.transition && d.$element.hasClass("fade");
              d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e && d.$element[0].offsetWidth, d.$element.addClass("in"), d.enforceFocus();
              var f = a.Event("shown.bs.modal", {relatedTarget: b});
              e ? d.$dialog.one("bsTransitionEnd", function () {
                  d.$element.trigger("focus").trigger(f)
              }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f)
          }))
      }, c.prototype.hide = function (b) {
          b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal())
      }, c.prototype.enforceFocus = function () {
          a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) {
              this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
          }, this))
      }, c.prototype.escape = function () {
          this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function (a) {
              27 == a.which && this.hide()
          }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
      }, c.prototype.resize = function () {
          this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal")
      }, c.prototype.hideModal = function () {
          var a = this;
          this.$element.hide(), this.backdrop(function () {
              a.$body.removeClass("modal-open"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal")
          })
      }, c.prototype.removeBackdrop = function () {
          this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
      }, c.prototype.backdrop = function (b) {
          var d = this, e = this.$element.hasClass("fade") ? "fade" : "";
          if (this.isShown && this.options.backdrop) {
              var f = a.support.transition && e;
              if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function (a) {
                      return this.ignoreBackdropClick ? void(this.ignoreBackdropClick = !1) : void(a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide()))
                  }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return;
              f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b()
          } else if (!this.isShown && this.$backdrop) {
              this.$backdrop.removeClass("in");
              var g = function () {
                  d.removeBackdrop(), b && b()
              };
              a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g()
          } else b && b()
      }, c.prototype.handleUpdate = function () {
          this.adjustDialog()
      }, c.prototype.adjustDialog = function () {
          var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
          this.$element.css({
              paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "",
              paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : ""
          })
      }, c.prototype.resetAdjustments = function () {
          this.$element.css({paddingLeft: "", paddingRight: ""})
      }, c.prototype.checkScrollbar = function () {
          var a = window.innerWidth;
          if (!a) {
              var b = document.documentElement.getBoundingClientRect();
              a = b.right - Math.abs(b.left)
          }
          this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar()
      }, c.prototype.setScrollbar = function () {
          var a = parseInt(this.$body.css("padding-right") || 0, 10);
          this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css("padding-right", a + this.scrollbarWidth)
      }, c.prototype.resetScrollbar = function () {
          this.$body.css("padding-right", this.originalBodyPad)
      }, c.prototype.measureScrollbar = function () {
          var a = document.createElement("div");
          a.className = "modal-scrollbar-measure", this.$body.append(a);
          var b = a.offsetWidth - a.clientWidth;
          return this.$body[0].removeChild(a), b
      };
      var d = a.fn.modal;
      a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function () {
          return a.fn.modal = d, this
      }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (c) {
          var d = a(this), e = d.attr("href"), f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
              g = f.data("bs.modal") ? "toggle" : a.extend({remote: !/#/.test(e) && e}, f.data(), d.data());
          d.is("a") && c.preventDefault(), f.one("show.bs.modal", function (a) {
              a.isDefaultPrevented() || f.one("hidden.bs.modal", function () {
                  d.is(":visible") && d.trigger("focus")
              })
          }), b.call(f, g, this)
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.tooltip"), f = "object" == typeof b && b;
              (e || !/destroy|hide/.test(b)) && (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
          })
      }
  
      var c = function (a, b) {
          this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", a, b)
      };
      c.VERSION = "3.3.6", c.TRANSITION_DURATION = 150, c.DEFAULTS = {
          animation: !0,
          placement: "top",
          selector: !1,
          template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
          trigger: "hover focus",
          title: "",
          delay: 0,
          html: !1,
          container: !1,
          viewport: {selector: "body", padding: 0}
      }, c.prototype.init = function (b, c, d) {
          if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = {
                  click: !1,
                  hover: !1,
                  focus: !1
              }, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
          for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
              var g = e[f];
              if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != g) {
                  var h = "hover" == g ? "mouseenter" : "focusin", i = "hover" == g ? "mouseleave" : "focusout";
                  this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
              }
          }
          this.options.selector ? this._options = a.extend({}, this.options, {
              trigger: "manual",
              selector: ""
          }) : this.fixTitle()
      }, c.prototype.getDefaults = function () {
          return c.DEFAULTS
      }, c.prototype.getOptions = function (b) {
          return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
              show: b.delay,
              hide: b.delay
          }), b
      }, c.prototype.getDelegateOptions = function () {
          var b = {}, c = this.getDefaults();
          return this._options && a.each(this._options, function (a, d) {
              c[a] != d && (b[a] = d)
          }), b
      }, c.prototype.enter = function (b) {
          var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
          return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass("in") || "in" == c.hoverState ? void(c.hoverState = "in") : (clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout(function () {
              "in" == c.hoverState && c.show()
          }, c.options.delay.show)) : c.show())
      }, c.prototype.isInStateTrue = function () {
          for (var a in this.inState) if (this.inState[a]) return !0;
          return !1
      }, c.prototype.leave = function (b) {
          var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
          return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1), c.isInStateTrue() ? void 0 : (clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout = setTimeout(function () {
              "out" == c.hoverState && c.hide()
          }, c.options.delay.hide)) : c.hide())
      }, c.prototype.show = function () {
          var b = a.Event("show.bs." + this.type);
          if (this.hasContent() && this.enabled) {
              this.$element.trigger(b);
              var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
              if (b.isDefaultPrevented() || !d) return;
              var e = this, f = this.tip(), g = this.getUID(this.type);
              this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options.animation && f.addClass("fade");
              var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement,
                  i = /\s?auto?\s?/i, j = i.test(h);
              j && (h = h.replace(i, "") || "top"), f.detach().css({
                  top: 0,
                  left: 0,
                  display: "block"
              }).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type);
              var k = this.getPosition(), l = f[0].offsetWidth, m = f[0].offsetHeight;
              if (j) {
                  var n = h, o = this.getPosition(this.$viewport);
                  h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f.removeClass(n).addClass(h)
              }
              var p = this.getCalculatedOffset(h, k, l, m);
              this.applyPlacement(p, h);
              var q = function () {
                  var a = e.hoverState;
                  e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e)
              };
              a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q()
          }
      }, c.prototype.applyPlacement = function (b, c) {
          var d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css("margin-top"), 10),
              h = parseInt(d.css("margin-left"), 10);
          isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({
              using: function (a) {
                  d.css({top: Math.round(a.top), left: Math.round(a.left)})
              }
          }, b), 0), d.addClass("in");
          var i = d[0].offsetWidth, j = d[0].offsetHeight;
          "top" == c && j != f && (b.top = b.top + f - j);
          var k = this.getViewportAdjustedDelta(c, b, i, j);
          k.left ? b.left += k.left : b.top += k.top;
          var l = /top|bottom/.test(c), m = l ? 2 * k.left - e + i : 2 * k.top - f + j,
              n = l ? "offsetWidth" : "offsetHeight";
          d.offset(b), this.replaceArrow(m, d[0][n], l)
      }, c.prototype.replaceArrow = function (a, b, c) {
          this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "")
      }, c.prototype.setContent = function () {
          var a = this.tip(), b = this.getTitle();
          a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
      }, c.prototype.hide = function (b) {
          function d() {
              "in" != e.hoverState && f.detach(), e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type), b && b()
          }
  
          var e = this, f = a(this.$tip), g = a.Event("hide.bs." + this.type);
          return this.$element.trigger(g), g.isDefaultPrevented() ? void 0 : (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null, this)
      }, c.prototype.fixTitle = function () {
          var a = this.$element;
          (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
      }, c.prototype.hasContent = function () {
          return this.getTitle()
      }, c.prototype.getPosition = function (b) {
          b = b || this.$element;
          var c = b[0], d = "BODY" == c.tagName, e = c.getBoundingClientRect();
          null == e.width && (e = a.extend({}, e, {width: e.right - e.left, height: e.bottom - e.top}));
          var f = d ? {top: 0, left: 0} : b.offset(),
              g = {scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()},
              h = d ? {width: a(window).width(), height: a(window).height()} : null;
          return a.extend({}, e, g, h, f)
      }, c.prototype.getCalculatedOffset = function (a, b, c, d) {
          return "bottom" == a ? {
              top: b.top + b.height,
              left: b.left + b.width / 2 - c / 2
          } : "top" == a ? {
              top: b.top - d,
              left: b.left + b.width / 2 - c / 2
          } : "left" == a ? {top: b.top + b.height / 2 - d / 2, left: b.left - c} : {
              top: b.top + b.height / 2 - d / 2,
              left: b.left + b.width
          }
      }, c.prototype.getViewportAdjustedDelta = function (a, b, c, d) {
          var e = {top: 0, left: 0};
          if (!this.$viewport) return e;
          var f = this.options.viewport && this.options.viewport.padding || 0, g = this.getPosition(this.$viewport);
          if (/right|left/.test(a)) {
              var h = b.top - f - g.scroll, i = b.top + f - g.scroll + d;
              h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
          } else {
              var j = b.left - f, k = b.left + f + c;
              j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k)
          }
          return e
      }, c.prototype.getTitle = function () {
          var a, b = this.$element, c = this.options;
          return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
      }, c.prototype.getUID = function (a) {
          do a += ~~(1e6 * Math.random()); while (document.getElementById(a));
          return a
      }, c.prototype.tip = function () {
          if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
          return this.$tip
      }, c.prototype.arrow = function () {
          return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
      }, c.prototype.enable = function () {
          this.enabled = !0
      }, c.prototype.disable = function () {
          this.enabled = !1
      }, c.prototype.toggleEnabled = function () {
          this.enabled = !this.enabled
      }, c.prototype.toggle = function (b) {
          var c = this;
          b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
      }, c.prototype.destroy = function () {
          var a = this;
          clearTimeout(this.timeout), this.hide(function () {
              a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow = null, a.$viewport = null
          })
      };
      var d = a.fn.tooltip;
      a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function () {
          return a.fn.tooltip = d, this
      }
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.popover"), f = "object" == typeof b && b;
              (e || !/destroy|hide/.test(b)) && (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
          })
      }
  
      var c = function (a, b) {
          this.init("popover", a, b)
      };
      if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js");
      c.VERSION = "3.3.6", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
          placement: "right",
          trigger: "click",
          content: "",
          template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
      }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function () {
          return c.DEFAULTS
      }, c.prototype.setContent = function () {
          var a = this.tip(), b = this.getTitle(), c = this.getContent();
          a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
      }, c.prototype.hasContent = function () {
          return this.getTitle() || this.getContent()
      }, c.prototype.getContent = function () {
          var a = this.$element, b = this.options;
          return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
      }, c.prototype.arrow = function () {
          return this.$arrow = this.$arrow || this.tip().find(".arrow")
      };
      var d = a.fn.popover;
      a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function () {
          return a.fn.popover = d, this
      }
  }(jQuery), +function (a) {
      "use strict";
  
      function b(c, d) {
          this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process, this)), this.refresh(), this.process()
      }
  
      function c(c) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c;
              e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
          })
      }
  
      b.VERSION = "3.3.6", b.DEFAULTS = {offset: 10}, b.prototype.getScrollHeight = function () {
          return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
      }, b.prototype.refresh = function () {
          var b = this, c = "offset", d = 0;
          this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this.$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function () {
              var b = a(this), e = b.data("target") || b.attr("href"), f = /^#./.test(e) && a(e);
              return f && f.length && f.is(":visible") && [[f[c]().top + d, e]] || null
          }).sort(function (a, b) {
              return a[0] - b[0]
          }).each(function () {
              b.offsets.push(this[0]), b.targets.push(this[1])
          })
      }, b.prototype.process = function () {
          var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(),
              d = this.options.offset + c - this.$scrollElement.height(), e = this.offsets, f = this.targets,
              g = this.activeTarget;
          if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this.activate(a);
          if (g && b < e[0]) return this.activeTarget = null, this.clear();
          for (a = e.length; a--;) g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
      }, b.prototype.activate = function (b) {
          this.activeTarget = b, this.clear();
          var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
              d = a(c).parents("li").addClass("active");
          d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy")
      }, b.prototype.clear = function () {
          a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
      };
      var d = a.fn.scrollspy;
      a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () {
          return a.fn.scrollspy = d, this
      }, a(window).on("load.bs.scrollspy.data-api", function () {
          a('[data-spy="scroll"]').each(function () {
              var b = a(this);
              c.call(b, b.data())
          })
      })
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.tab");
              e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]()
          })
      }
  
      var c = function (b) {
          this.element = a(b)
      };
      c.VERSION = "3.3.6", c.TRANSITION_DURATION = 150, c.prototype.show = function () {
          var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.data("target");
          if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
              var e = c.find(".active:last a"), f = a.Event("hide.bs.tab", {relatedTarget: b[0]}),
                  g = a.Event("show.bs.tab", {relatedTarget: e[0]});
              if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
                  var h = a(d);
                  this.activate(b.closest("li"), c), this.activate(h, h.parent(), function () {
                      e.trigger({type: "hidden.bs.tab", relatedTarget: b[0]}), b.trigger({
                          type: "shown.bs.tab",
                          relatedTarget: e[0]
                      })
                  })
              }
          }
      }, c.prototype.activate = function (b, d, e) {
          function f() {
              g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), h ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), e && e()
          }
  
          var g = d.find("> .active"),
              h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
          g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass("in")
      };
      var d = a.fn.tab;
      a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function () {
          return a.fn.tab = d, this
      };
      var e = function (c) {
          c.preventDefault(), b.call(a(this), "show")
      };
      a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e)
  }(jQuery), +function (a) {
      "use strict";
  
      function b(b) {
          return this.each(function () {
              var d = a(this), e = d.data("bs.affix"), f = "object" == typeof b && b;
              e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]()
          })
      }
  
      var c = function (b, d) {
          this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition()
      };
      c.VERSION = "3.3.6", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = {
          offset: 0,
          target: window
      }, c.prototype.getState = function (a, b, c, d) {
          var e = this.$target.scrollTop(), f = this.$element.offset(), g = this.$target.height();
          if (null != c && "top" == this.affixed) return c > e ? "top" : !1;
          if ("bottom" == this.affixed) return null != c ? e + this.unpin <= f.top ? !1 : "bottom" : a - d >= e + g ? !1 : "bottom";
          var h = null == this.affixed, i = h ? e : f.top, j = h ? g : b;
          return null != c && c >= e ? "top" : null != d && i + j >= a - d ? "bottom" : !1
      }, c.prototype.getPinnedOffset = function () {
          if (this.pinnedOffset) return this.pinnedOffset;
          this.$element.removeClass(c.RESET).addClass("affix");
          var a = this.$target.scrollTop(), b = this.$element.offset();
          return this.pinnedOffset = b.top - a
      }, c.prototype.checkPositionWithEventLoop = function () {
          setTimeout(a.proxy(this.checkPosition, this), 1)
      }, c.prototype.checkPosition = function () {
          if (this.$element.is(":visible")) {
              var b = this.$element.height(), d = this.options.offset, e = d.top, f = d.bottom,
                  g = Math.max(a(document).height(), a(document.body).height());
              "object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f && (f = d.bottom(this.$element));
              var h = this.getState(g, b, e, f);
              if (this.affixed != h) {
                  null != this.unpin && this.$element.css("top", "");
                  var i = "affix" + (h ? "-" + h : ""), j = a.Event(i + ".bs.affix");
                  if (this.$element.trigger(j), j.isDefaultPrevented()) return;
                  this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix")
              }
              "bottom" == h && this.$element.offset({top: g - b - f})
          }
      };
      var d = a.fn.affix;
      a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function () {
          return a.fn.affix = d, this
      }, a(window).on("load", function () {
          a('[data-spy="affix"]').each(function () {
              var c = a(this), d = c.data();
              d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d)
          })
      })
  }(jQuery);
  /*breakpoints.min.js*/
  /*! breakpoints.js - v0.4.2 - 2015-04-22
  * https://github.com/amazingSurge/breakpoints.js
  * Copyright (c) 2015 amazingSurge; Licensed GPL */
  !function (a, b, c) {
      "use strict";
  
      function d(a, b) {
          var c;
          for (var d in a) if (c = b(d, a[d]), c === !1) break
      }
  
      function e(a) {
          return "function" == typeof a || !1
      }
  
      function f(a, b) {
          for (var c in b) a[c] = b[c];
          return a
      }
  
      var g = b.Breakpoints = function () {
          g.define.apply(g, arguments)
      };
      g.defaults = {
          xs: {min: 0, max: 767},
          sm: {min: 768, max: 991},
          md: {min: 992, max: 1199},
          lg: {min: 1200, max: 1 / 0}
      };
      var h = g.mediaBuilder = {
          min: function (a, b) {
              return "(min-width: " + a + b + ")"
          }, max: function (a, b) {
              return "(max-width: " + a + b + ")"
          }, between: function (a, b, c) {
              return "(min-width: " + a + c + ") and (max-width: " + b + c + ")"
          }, get: function (a, b, c) {
              return c || (c = "px"), 0 === a ? this.max(b, c) : b === 1 / 0 ? this.min(a, c) : this.between(a, b, c)
          }
      }, i = function () {
          var a = [];
          return {
              length: 0, add: function (b, c, d) {
                  a.push({fn: b, data: c || {}, one: d || 0}), this.length++
              }, remove: function (b) {
                  for (var c = 0; c < a.length; c++) a[c].fn === b && (a.splice(c, 1), this.length--, c--)
              }, empty: function () {
                  a = [], this.length = 0
              }, call: function (c, d, f) {
                  d || (d = this.length - 1);
                  var g = a[d];
                  e(f) ? f.call(this, c, g, d) : e(g.fn) && g.fn.call(c || b, g.data), g.one && (delete a[d], this.length--)
              }, fire: function (b, c) {
                  for (var d in a) this.call(b, d, c)
              }
          }
      }, j = {
          current: null, callbacks: new i, trigger: function (a) {
              var b = this.current;
              this.current = a, this.callbacks.fire(a, function (c, d) {
                  e(d.fn) && d.fn.call({current: a, previous: b}, d.data)
              })
          }, one: function (a, b) {
              return this.on(a, b, 1)
          }, on: function (a, b, d) {
              return null == b && e(a) && (b = a, a = c), e(b) ? void this.callbacks.add(b, a, d) : this
          }, off: function (a) {
              null == a && this.callbacks.empty()
          }
      }, k = g.mediaQuery = function (a, b) {
          this.name = a, this.media = b, this.initialize.apply(this)
      };
      k.prototype = {
          constructor: k, initialize: function () {
              this.callbacks = {
                  enter: new i,
                  leave: new i
              }, this.mql = b.matchMedia && b.matchMedia(this.media) || {
                  matches: !1,
                  media: this.media,
                  addListener: function () {
                  },
                  removeListener: function () {
                  }
              };
              var a = this;
              this.mqlListener = function (b) {
                  var c = b.matches && "enter" || "leave";
                  a.callbacks[c].fire(a)
              }, this.mql.addListener(this.mqlListener)
          }, on: function (a, b, d, f) {
              var g;
              if ("object" == typeof a) {
                  for (g in a) this.on(g, b, a[g], f);
                  return this
              }
              return null == d && e(b) && (d = b, b = c), e(d) ? (a in this.callbacks && (this.callbacks[a].add(d, b, f), this.isMatched() && "enter" === a && this.callbacks[a].call(this)), this) : this
          }, one: function (a, b, c) {
              return this.on(a, b, c, 1)
          }, off: function (a, b) {
              var c;
              if ("object" == typeof a) {
                  for (c in a) this.off(c, a[c]);
                  return this
              }
              return null == a && (this.callbacks.enter.empty(), this.callbacks.leave.empty()), a in this.callbacks && (b ? this.callbacks[a].remove(b) : this.callbacks[a].empty()), this
          }, isMatched: function () {
              return this.mql.matches
          }, destory: function () {
              this.off()
          }
      };
      var l = function (a, b, c, d) {
          this.name = a, this.min = b ? b : 0, this.max = c ? c : 1 / 0, this.media = h.get(this.min, this.max, d), this.initialize.apply(this);
          var e = this;
          this.changeListener = function () {
              e.isMatched() && j.trigger(e)
          }, this.isMatched() && (j.current = this), this.mql.addListener(this.changeListener)
      };
      l.prototype = k.prototype, l.prototype.constructor = l, f(l.prototype, {
          destory: function () {
              this.off(), this.mql.removeListener(this.changeHander)
          }
      });
      var m = function (a) {
          this.name = a, this.sizes = [];
          var b = this, c = [];
          d(a.split(" "), function (a, d) {
              var e = g.get(d);
              e && (b.sizes.push(e), c.push(e.media))
          }), this.media = c.join(","), this.initialize.apply(this)
      };
      m.prototype = k.prototype, m.prototype.constructor = m;
      var n = {}, o = {};
      g = f(g, {
          defined: !1, define: function (a, b) {
              this.defined && this.destory(), a || (a = g.defaults), this.options = f(b || {}, {unit: "px"});
              for (var c in a) this.set(c, a[c].min, a[c].max, this.options.unit);
              this.defined = !0
          }, destory: function () {
              d(n, function (a, b) {
                  b.destory()
              }), n = {}, j.current = null
          }, is: function (a) {
              var b = this.get(a);
              return b ? b.isMatched() : null
          }, all: function () {
              var a = [];
              return d(n, function (b) {
                  a.push(b)
              }), a
          }, set: function (a, b, c, d) {
              var e = this.get(a);
              return e && e.destory(), n[a] = new l(a, b || null, c || null, d || null), n[a]
          }, get: function (a) {
              return n.hasOwnProperty(a) ? n[a] : null
          }, getUnion: function (a) {
              return o.hasOwnProperty(a) ? o[a] : (o[a] = new m(a), o[a])
          }, getMin: function (a) {
              var b = this.get(a);
              return b ? b.min : null
          }, getMax: function (a) {
              var b = this.get(a);
              return b ? b.max : null
          }, current: function () {
              return j.current
          }, getMedia: function (a) {
              var b = this.get(a);
              return b ? b.media : null
          }, on: function (a, b, c, d, e) {
              if ("change" === a) return d = c, c = b, j.on(c, d, e);
              if (a.indexOf(" ")) {
                  var f = this.getUnion(a);
                  f && f.on(b, c, d, e)
              } else {
                  var g = this.get(a);
                  g && g.on(b, c, d, e)
              }
              return this
          }, one: function (a, b, c, d) {
              return this.on(a, b, c, d, 1)
          }, off: function (a, b, c) {
              if ("change" === a) return j.off(b);
              if (a.indexOf(" ")) {
                  var d = this.getUnion(a);
                  d && d.off(b, c)
              } else {
                  var e = this.get(a);
                  e && e.off(b, c)
              }
              return this
          }
      })
  }(document, window);
  /*Breakpoints*/
  Breakpoints();
  /*core.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  !function (window, document, $) {
      "use strict";
      var $doc = $(document);
      $.site = $.site || {}, $.extend($.site, {
          _queue: {prepare: [], run: [], complete: []}, run: function () {
              var self = this;
              this.dequeue("prepare", function () {
                  self.trigger("before.run", self)
              }), this.dequeue("run", function () {
                  self.dequeue("complete", function () {
                      self.trigger("after.run", self)
                  })
              })
          }, dequeue: function (name, done) {
              var self = this, queue = this.getQueue(name), fn = queue.shift(), next = function () {
                  self.dequeue(name, done)
              };
              fn ? fn.call(this, next) : $.isFunction(done) && done.call(this)
          }, getQueue: function (name) {
              return $.isArray(this._queue[name]) || (this._queue[name] = []), this._queue[name]
          }, extend: function (obj) {
              return $.each(this._queue, function (name, queue) {
                  $.isFunction(obj[name]) && (queue.push(obj[name]), delete obj[name])
              }), $.extend(this, obj), this
          }, trigger: function (name, data, $el) {
              "undefined" != typeof name && ("undefined" == typeof $el && ($el = $doc), $el.trigger(name + ".site", data))
          }, throttle: function (func, wait) {
              var context, args, result, _now = Date.now || function () {
                  return (new Date).getTime()
              }, timeout = null, previous = 0, later = function () {
                  previous = _now(), timeout = null, result = func.apply(context, args), context = args = null
              };
              return function () {
                  var now = _now(), remaining = wait - (now - previous);
                  return context = this, args = arguments, 0 >= remaining ? (clearTimeout(timeout), timeout = null, previous = now, result = func.apply(context, args), context = args = null) : timeout || (timeout = setTimeout(later, remaining)), result
              }
          }, resize: function () {
              if (document.createEvent) {
                  var ev = document.createEvent("Event");
                  ev.initEvent("resize", !0, !0), window.dispatchEvent(ev)
              } else {
                  element = document.documentElement;
                  var event = document.createEventObject();
                  element.fireEvent("onresize", event)
              }
          }
      }), $.configs = $.configs || {}, $.extend($.configs, {
          data: {}, get: function (name) {
              for (var callback = function (data, name) {
                  return data[name]
              }, data = this.data, i = 0; i < arguments.length; i++) name = arguments[i], data = callback(data, name);
              return data
          }, set: function (name, value) {
              this.data[name] = value
          }, extend: function (name, options) {
              var value = this.get(name);
              return $.extend(!0, value, options)
          }
      }), $.colors = function (name, level) {
          if ("primary" === name && (name = $.configs.get("site", "primaryColor"), name || (name = "red")), "undefined" == typeof $.configs.colors) return null;
          if ("undefined" != typeof $.configs.colors[name]) {
              if (level && "undefined" != typeof $.configs.colors[name][level]) return $.configs.colors[name][level];
              if ("undefined" == typeof level) return $.configs.colors[name]
          }
          return null
      }, $.components = $.components || {}, $.extend($.components, {
          _components: {}, register: function (name, obj) {
              this._components[name] = obj
          }, init: function (name, context, args) {
              var self = this;
              if ("undefined" == typeof name) $.each(this._components, function (name) {
                  self.init(name)
              }); else {
                  context = context || document, args = args || [];
                  var obj = this.get(name);
                  if (obj) switch (obj.mode) {
                      case"default":
                          return this._initDefault(name, context);
                      case"init":
                          return this._initComponent(name, obj, context, args);
                      case"api":
                          return this._initApi(name, obj, args);
                      default:
                          return this._initApi(name, obj, context, args), void this._initComponent(name, obj, context, args)
                  }
              }
          }, call: function (name, context) {
              var args = Array.prototype.slice.call(arguments, 2), obj = this.get(name);
              return context = context || document, this._initComponent(name, obj, context, args)
          }, _initDefault: function (name, context) {
              if ($.fn[name]) {
                  var defaults = this.getDefaults(name);
                  $("[data-plugin=" + name + "]", context).each(function () {
                      var $this = $(this), options = $.extend(!0, {}, defaults, $this.data());
                      $this[name](options)
                  })
              }
          }, _initComponent: function (name, obj, context, args) {
              $.isFunction(obj.init) && obj.init.apply(obj, [context].concat(args))
          }, _initApi: function (name, obj, args) {
              "undefined" == typeof obj.apiCalled && $.isFunction(obj.api) && (obj.api.apply(obj, args), obj.apiCalled = !0)
          }, getDefaults: function (name) {
              var component = this.get(name);
              return component && "undefined" != typeof component.defaults ? component.defaults : {}
          }, get: function (name, property) {
              return "undefined" != typeof this._components[name] ? "undefined" != typeof property ? this._components[name][property] : this._components[name] : void 0
          }
      })
  }(window, document, jQuery);
  /*site.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  !function (window, document, $) {
      "use strict";
      var $body = $(document.body);
      $.configs.set("site", {
          fontFamily: "Noto Sans, sans-serif",
          primaryColor: "blue",
          assets: "../assets"
      }), window.Site = $.site.extend({
          run: function (next) {
              this.polyfillIEWidth(), "undefined" != typeof $.site.menu && $.site.menu.init(), "undefined" != typeof $.site.menubar && ($(".site-menubar").on("changing.site.menubar", function () {
                  $('[data-toggle="menubar"]').each(function () {
                      function toggle($el) {
                          $el.toggleClass("hided", !$.site.menubar.opened), $el.toggleClass("unfolded", !$.site.menubar.folded)
                      }
  
                      var $this = $(this), $hamburger = $(this).find(".hamburger");
                      toggle($hamburger.length > 0 ? $hamburger : $this)
                  }), $.site.menu.refresh()
              }), $(document).on("click", '[data-toggle="collapse"]', function (e) {
                  var $trigger = $(e.target);
                  $trigger.is('[data-toggle="collapse"]') || ($trigger = $trigger.parents('[data-toggle="collapse"]'));
                  var href,
                      target = $trigger.attr("data-target") || (href = $trigger.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, ""),
                      $target = $(target);
                  if ($target.hasClass("navbar-search-overlap")) $target.find("input").focus(), e.preventDefault(); else if ("site-navbar-collapse" === $target.attr("id")) {
                      var isOpen = !$trigger.hasClass("collapsed");
                      $body.addClass("site-navbar-collapsing"), $body.toggleClass("site-navbar-collapse-show", isOpen), setTimeout(function () {
                          $body.removeClass("site-navbar-collapsing")
                      }, 350), isOpen && $.site.menubar.scrollable.update()
                  }
              }), $(document).on("click", '[data-toggle="menubar"]', function () {
                  return $.site.menubar.toggle(), !1
              }), $.site.menubar.init(), Breakpoints.on("change", function () {
                  $.site.menubar.change()
              })), "undefined" != typeof $.site.gridmenu && $.site.gridmenu.init(), "undefined" != typeof $.site.sidebar && $.site.sidebar.init(), $(document).tooltip({
                  selector: "[data-tooltip=true]",
                  container: "body"
              }), $('[data-toggle="tooltip"]').tooltip(), $('[data-toggle="popover"]').popover(), "undefined" != typeof screenfull && ($(document).on("click", '[data-toggle="fullscreen"]', function () {
                  return screenfull.enabled && screenfull.toggle(), !1
              }), screenfull.enabled && document.addEventListener(screenfull.raw.fullscreenchange, function () {
                  $('[data-toggle="fullscreen"]').toggleClass("active", screenfull.isFullscreen)
              })), $body.on("click", ".dropdown-menu-media", function (e) {
                  e.stopPropagation()
              }), "undefined" != typeof $.animsition ? this.loadAnimate(function () {
                  $(".animsition").css({"animation-duration": "0s"}), next()
              }) : next(), $(document).on("click", ".navbar-mega .dropdown-menu", function (e) {
                  e.stopPropagation()
              }), $(document).on("show.bs.dropdown", function (e) {
                  var $target = $(e.target),
                      $trigger = e.relatedTarget ? $(e.relatedTarget) : $target.children('[data-toggle="dropdown"]'),
                      animation = $trigger.data("animation");
                  if (animation) {
                      var $menu = $target.children(".dropdown-menu");
                      $menu.addClass("animation-" + animation), $menu.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function () {
                          $menu.removeClass("animation-" + animation)
                      })
                  }
              }), $(document).on("shown.bs.dropdown", function (e) {
                  var $target = $(e.target), $menu = $target.find(".dropdown-menu-media > .list-group");
                  if ($menu.length > 0) {
                      var api = $menu.data("asScrollable");
                      if (api) api.update(); else {
                          var defaults = $.components.getDefaults("scrollable");
                          $menu.asScrollable(defaults)
                      }
                  }
              });
              var pageAsideScroll = $('[data-plugin="pageAsideScroll"]');
              if (pageAsideScroll.length > 0) {
                  pageAsideScroll.asScrollable({
                      namespace: "scrollable",
                      contentSelector: "> [data-role='content']",
                      containerSelector: "> [data-role='container']"
                  });
                  var pageAside = $(".page-aside"), scrollable = pageAsideScroll.data("asScrollable");
                  scrollable && (($body.is(".page-aside-fixed") || $body.is(".page-aside-scroll")) && $(".page-aside").on("transitionend", function () {
                      scrollable.update()
                  }), Breakpoints.on("change", function () {
                      var current = Breakpoints.current().name;
                      $body.is(".page-aside-fixed") || $body.is(".page-aside-scroll") || ("xs" === current ? (scrollable.enable(), pageAside.on("transitionend", function () {
                          scrollable.update()
                      })) : (pageAside.off("transitionend"), scrollable.disable()))
                  }), $(document).on("click.pageAsideScroll", ".page-aside-switch", function () {
                      var isOpen = pageAside.hasClass("open");
                      isOpen ? pageAside.removeClass("open") : (scrollable.update(), pageAside.addClass("open"))
                  }), $(document).on("click.pageAsideScroll", '[data-toggle="collapse"]', function (e) {
                      var $trigger = $(e.target);
                      $trigger.is('[data-toggle="collapse"]') || ($trigger = $trigger.parents('[data-toggle="collapse"]'));
                      var href,
                          target = $trigger.attr("data-target") || (href = $trigger.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, ""),
                          $target = $(target);
                      "site-navbar-collapse" === $target.attr("id") && scrollable.update()
                  }))
              }
              $.components.init(), this.startTour()
          }, polyfillIEWidth: function () {
              if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
                  var msViewportStyle = document.createElement("style");
                  msViewportStyle.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")), document.querySelector("head").appendChild(msViewportStyle)
              }
          }, loadAnimate: function (callback) {
              return $.components.call("animsition", document, callback)
          }, startTour: function (flag) {
              if ("undefined" == typeof this.tour) {
                  if ("undefined" == typeof introJs) return;
                  var tourOptions = $.configs.get("tour"), self = this;
                  flag = $("body").css("overflow"), this.tour = introJs(), this.tour.onbeforechange(function () {
                      $("body").css("overflow", "hidden")
                  }), this.tour.oncomplete(function () {
                      $("body").css("overflow", flag)
                  }), this.tour.onexit(function () {
                      $("body").css("overflow", flag)
                  }), this.tour.setOptions(tourOptions), $(".site-tour-trigger").on("click", function () {
                      self.tour.start()
                  })
              }
          }
      })
  }(window, document, jQuery);
  /*modernizr.min.js*/
  /* Modernizr 2.8.3 (Custom Build) | MIT & BSD
   * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
   */
  ;/*window.Modernizr = function (a, b, c) {
      function C(a) {
          j.cssText = a
      }
  
      function D(a, b) {
          return C(n.join(a + ";") + (b || ""))
      }
  
      function E(a, b) {
          return typeof a === b
      }
  
      function F(a, b) {
          return !!~("" + a).indexOf(b)
      }
  
      function G(a, b) {
          for (var d in a) {
              var e = a[d];
              if (!F(e, "-") && j[e] !== c) return b == "pfx" ? e : !0
          }
          return !1
      }
  
      function H(a, b, d) {
          for (var e in a) {
              var f = b[a[e]];
              if (f !== c) return d === !1 ? a[e] : E(f, "function") ? f.bind(d || b) : f
          }
          return !1
      }
  
      function I(a, b, c) {
          var d = a.charAt(0).toUpperCase() + a.slice(1), e = (a + " " + p.join(d + " ") + d).split(" ");
          return E(b, "string") || E(b, "undefined") ? G(e, b) : (e = (a + " " + q.join(d + " ") + d).split(" "), H(e, b, c))
      }
  
      function J() {
          e.input = function (c) {
              for (var d = 0, e = c.length; d < e; d++) u[c[d]] = c[d] in k;
              return u.list && (u.list = !!b.createElement("datalist") && !!a.HTMLDataListElement), u
          }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")), e.inputtypes = function (a) {
              for (var d = 0, e, f, h, i = a.length; d < i; d++) k.setAttribute("type", f = a[d]), e = k.type !== "text", e && (k.value = l, k.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(f) && k.style.WebkitAppearance !== c ? (g.appendChild(k), h = b.defaultView, e = h.getComputedStyle && h.getComputedStyle(k, null).WebkitAppearance !== "textfield" && k.offsetHeight !== 0, g.removeChild(k)) : /^(search|tel)$/.test(f) || (/^(url|email)$/.test(f) ? e = k.checkValidity && k.checkValidity() === !1 : e = k.value != l)), t[a[d]] = !!e;
              return t
          }("search tel url email datetime date month week time datetime-local number range color".split(" "))
      }
  
      var d = "2.8.3", e = {}, f = !0, g = b.documentElement, h = "modernizr", i = b.createElement(h), j = i.style,
          k = b.createElement("input"), l = ":)", m = {}.toString, n = " -webkit- -moz- -o- -ms- ".split(" "),
          o = "Webkit Moz O ms", p = o.split(" "), q = o.toLowerCase().split(" "),
          r = {svg: "http://www.w3.org/2000/svg"}, s = {}, t = {}, u = {}, v = [], w = v.slice, x,
          y = function (a, c, d, e) {
              var f, i, j, k, l = b.createElement("div"), m = b.body, n = m || b.createElement("body");
              if (parseInt(d, 10)) while (d--) j = b.createElement("div"), j.id = e ? e[d] : h + (d + 1), l.appendChild(j);
              return f = ["&#173;", '<style id="s', h, '">', a, "</style>"].join(""), l.id = h, (m ? l : n).innerHTML += f, n.appendChild(l), m || (n.style.background = "", n.style.overflow = "hidden", k = g.style.overflow, g.style.overflow = "hidden", g.appendChild(n)), i = c(l, a), m ? l.parentNode.removeChild(l) : (n.parentNode.removeChild(n), g.style.overflow = k), !!i
          }, z = function () {
              function d(d, e) {
                  e = e || b.createElement(a[d] || "div"), d = "on" + d;
                  var f = d in e;
                  return f || (e.setAttribute || (e = b.createElement("div")), e.setAttribute && e.removeAttribute && (e.setAttribute(d, ""), f = E(e[d], "function"), E(e[d], "undefined") || (e[d] = c), e.removeAttribute(d))), e = null, f
              }
  
              var a = {
                  select: "input",
                  change: "input",
                  submit: "form",
                  reset: "form",
                  error: "img",
                  load: "img",
                  abort: "img"
              };
              return d
          }(), A = {}.hasOwnProperty, B;
      !E(A, "undefined") && !E(A.call, "undefined") ? B = function (a, b) {
          return A.call(a, b)
      } : B = function (a, b) {
          return b in a && E(a.constructor.prototype[b], "undefined")
      }, Function.prototype.bind || (Function.prototype.bind = function (b) {
          var c = this;
          if (typeof c != "function") throw new TypeError;
          var d = w.call(arguments, 1), e = function () {
              if (this instanceof e) {
                  var a = function () {
                  };
                  a.prototype = c.prototype;
                  var f = new a, g = c.apply(f, d.concat(w.call(arguments)));
                  return Object(g) === g ? g : f
              }
              return c.apply(b, d.concat(w.call(arguments)))
          };
          return e
      }), s.flexbox = function () {
          return I("flexWrap")
      }, s.canvas = function () {
          var a = b.createElement("canvas");
          return !!a.getContext && !!a.getContext("2d")
      }, s.canvastext = function () {
          return !!e.canvas && !!E(b.createElement("canvas").getContext("2d").fillText, "function")
      }, s.webgl = function () {
          return !!a.WebGLRenderingContext
      }, s.touch = function () {
          var c;
          return "ontouchstart" in a || a.DocumentTouch && b instanceof DocumentTouch ? c = !0 : y(["@media (", n.join("touch-enabled),("), h, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function (a) {
              c = a.offsetTop === 9
          }), c
      }, s.geolocation = function () {
          return "geolocation" in navigator
      }, s.postmessage = function () {
          return !!a.postMessage
      }, s.websqldatabase = function () {
          return !!a.openDatabase
      }, s.indexedDB = function () {
          return !!I("indexedDB", a)
      }, s.hashchange = function () {
          return z("hashchange", a) && (b.documentMode === c || b.documentMode > 7)
      }, s.history = function () {
          return !!a.history && !!history.pushState
      }, s.draganddrop = function () {
          var a = b.createElement("div");
          return "draggable" in a || "ondragstart" in a && "ondrop" in a
      }, s.websockets = function () {
          return "WebSocket" in a || "MozWebSocket" in a
      }, s.rgba = function () {
          return C("background-color:rgba(150,255,150,.5)"), F(j.backgroundColor, "rgba")
      }, s.hsla = function () {
          return C("background-color:hsla(120,40%,100%,.5)"), F(j.backgroundColor, "rgba") || F(j.backgroundColor, "hsla")
      }, s.multiplebgs = function () {
          return C("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(j.background)
      }, s.backgroundsize = function () {
          return I("backgroundSize")
      }, s.borderimage = function () {
          return I("borderImage")
      }, s.borderradius = function () {
          return I("borderRadius")
      }, s.boxshadow = function () {
          return I("boxShadow")
      }, s.textshadow = function () {
          return b.createElement("div").style.textShadow === ""
      }, s.opacity = function () {
          return D("opacity:.55"), /^0.55$/.test(j.opacity)
      }, s.cssanimations = function () {
          return I("animationName")
      }, s.csscolumns = function () {
          return I("columnCount")
      }, s.cssgradients = function () {
          var a = "background-image:", b = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
              c = "linear-gradient(left top,#9f9, white);";
          return C((a + "-webkit- ".split(" ").join(b + a) + n.join(c + a)).slice(0, -a.length)), F(j.backgroundImage, "gradient")
      }, s.cssreflections = function () {
          return I("boxReflect")
      }, s.csstransforms = function () {
          return !!I("transform")
      }, s.csstransforms3d = function () {
          var a = !!I("perspective");
          return a && "webkitPerspective" in g.style && y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function (b, c) {
              a = b.offsetLeft === 9 && b.offsetHeight === 3
          }), a
      }, s.csstransitions = function () {
          return I("transition")
      }, s.fontface = function () {
          var a;
          return y('@font-face {font-family:"font";src:url("https://")}', function (c, d) {
              var e = b.getElementById("smodernizr"), f = e.sheet || e.styleSheet,
                  g = f ? f.cssRules && f.cssRules[0] ? f.cssRules[0].cssText : f.cssText || "" : "";
              a = /src/i.test(g) && g.indexOf(d.split(" ")[0]) === 0
          }), a
      }, s.generatedcontent = function () {
          var a;
          return y(["#", h, "{font:0/0 a}#", h, ':after{content:"', l, '";visibility:hidden;font:3px/1 a}'].join(""), function (b) {
              a = b.offsetHeight >= 3
          }), a
      }, s.video = function () {
          var a = b.createElement("video"), c = !1;
          try {
              if (c = !!a.canPlayType) c = new Boolean(c), c.ogg = a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), c.h264 = a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), c.webm = a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, "")
          } catch (d) {
          }
          return c
      }, s.audio = function () {
          var a = b.createElement("audio"), c = !1;
          try {
              if (c = !!a.canPlayType) c = new Boolean(c), c.ogg = a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), c.mp3 = a.canPlayType("audio/mpeg;").replace(/^no$/, ""), c.wav = a.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), c.m4a = (a.canPlayType("audio/x-m4a;") || a.canPlayType("audio/aac;")).replace(/^no$/, "")
          } catch (d) {
          }
          return c
      }, s.localstorage = function () {
          try {
              return localStorage.setItem(h, h), localStorage.removeItem(h), !0
          } catch (a) {
              return !1
          }
      }, s.sessionstorage = function () {
          try {
              return sessionStorage.setItem(h, h), sessionStorage.removeItem(h), !0
          } catch (a) {
              return !1
          }
      }, s.webworkers = function () {
          return !!a.Worker
      }, s.applicationcache = function () {
          return !!a.applicationCache
      }, s.svg = function () {
          return !!b.createElementNS && !!b.createElementNS(r.svg, "svg").createSVGRect
      }, s.inlinesvg = function () {
          var a = b.createElement("div");
          return a.innerHTML = "<svg/>", (a.firstChild && a.firstChild.namespaceURI) == r.svg
      }, s.smil = function () {
          return !!b.createElementNS && /SVGAnimate/.test(m.call(b.createElementNS(r.svg, "animate")))
      }, s.svgclippaths = function () {
          return !!b.createElementNS && /SVGClipPath/.test(m.call(b.createElementNS(r.svg, "clipPath")))
      };
      for (var K in s) B(s, K) && (x = K.toLowerCase(), e[x] = s[K](), v.push((e[x] ? "" : "no-") + x));
      return e.input || J(), e.addTest = function (a, b) {
          if (typeof a == "object") for (var d in a) B(a, d) && e.addTest(d, a[d]); else {
              a = a.toLowerCase();
              if (e[a] !== c) return e;
              b = typeof b == "function" ? b() : b, typeof f != "undefined" && f && (g.className += " " + (b ? "" : "no-") + a), e[a] = b
          }
          return e
      }, C(""), i = k = null, function (a, b) {
          function l(a, b) {
              var c = a.createElement("p"), d = a.getElementsByTagName("head")[0] || a.documentElement;
              return c.innerHTML = "x<style>" + b + "</style>", d.insertBefore(c.lastChild, d.firstChild)
          }
  
          function m() {
              var a = s.elements;
              return typeof a == "string" ? a.split(" ") : a
          }
  
          function n(a) {
              var b = j[a[h]];
              return b || (b = {}, i++, a[h] = i, j[i] = b), b
          }
  
          function o(a, c, d) {
              c || (c = b);
              if (k) return c.createElement(a);
              d || (d = n(c));
              var g;
              return d.cache[a] ? g = d.cache[a].cloneNode() : f.test(a) ? g = (d.cache[a] = d.createElem(a)).cloneNode() : g = d.createElem(a), g.canHaveChildren && !e.test(a) && !g.tagUrn ? d.frag.appendChild(g) : g
          }
  
          function p(a, c) {
              a || (a = b);
              if (k) return a.createDocumentFragment();
              c = c || n(a);
              var d = c.frag.cloneNode(), e = 0, f = m(), g = f.length;
              for (; e < g; e++) d.createElement(f[e]);
              return d
          }
  
          function q(a, b) {
              b.cache || (b.cache = {}, b.createElem = a.createElement, b.createFrag = a.createDocumentFragment, b.frag = b.createFrag()), a.createElement = function (c) {
                  return s.shivMethods ? o(c, a, b) : b.createElem(c)
              }, a.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + m().join().replace(/[\w\-]+/g, function (a) {
                  return b.createElem(a), b.frag.createElement(a), 'c("' + a + '")'
              }) + ");return n}")(s, b.frag)
          }
  
          function r(a) {
              a || (a = b);
              var c = n(a);
              return s.shivCSS && !g && !c.hasCSS && (c.hasCSS = !!l(a, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), k || q(a, c), a
          }
  
          var c = "3.7.0", d = a.html5 || {}, e = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
              f = /^(?: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,
              g, h = "_html5shiv", i = 0, j = {}, k;
          (function () {
              try {
                  var a = b.createElement("a");
                  a.innerHTML = "<xyz></xyz>", g = "hidden" in a, k = a.childNodes.length == 1 || function () {
                      b.createElement("a");
                      var a = b.createDocumentFragment();
                      return typeof a.cloneNode == "undefined" || typeof a.createDocumentFragment == "undefined" || typeof a.createElement == "undefined"
                  }()
              } catch (c) {
                  g = !0, k = !0
              }
          })();
          var s = {
              elements: d.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: c,
              shivCSS: d.shivCSS !== !1,
              supportsUnknownElements: k,
              shivMethods: d.shivMethods !== !1,
              type: "default",
              shivDocument: r,
              createElement: o,
              createDocumentFragment: p
          };
          a.html5 = s, r(b)
      }(this, b), e._version = d, e._prefixes = n, e._domPrefixes = q, e._cssomPrefixes = p, e.hasEvent = z, e.testProp = function (a) {
          return G([a])
      }, e.testAllProps = I, e.testStyles = y, e.prefixed = function (a, b, c) {
          return b ? I(a, b, c) : I(a, "pfx")
      }, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (f ? " js " + v.join(" ") : ""), e
  }(this, this.document), function (a, b, c) {
      function d(a) {
          return "[object Function]" == o.call(a)
      }
  
      function e(a) {
          return "string" == typeof a
      }
  
      function f() {
      }
  
      function g(a) {
          return !a || "loaded" == a || "complete" == a || "uninitialized" == a
      }
  
      function h() {
          var a = p.shift();
          q = 1, a ? a.t ? m(function () {
              ("c" == a.t ? B.injectCss : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1)
          }, 0) : (a(), h()) : q = 0
      }
  
      function i(a, c, d, e, f, i, j) {
          function k(b) {
              if (!o && g(l.readyState) && (u.r = o = 1, !q && h(), l.onload = l.onreadystatechange = null, b)) {
                  "img" != a && m(function () {
                      t.removeChild(l)
                  }, 50);
                  for (var d in y[c]) y[c].hasOwnProperty(d) && y[c][d].onload()
              }
          }
  
          var j = j || B.errorTimeout, l = b.createElement(a), o = 0, r = 0, u = {t: d, s: c, e: f, a: i, x: j};
          1 === y[c] && (r = 1, y[c] = []), "object" == a ? l.data = c : (l.src = c, l.type = a), l.width = l.height = "0", l.onerror = l.onload = l.onreadystatechange = function () {
              k.call(this, r)
          }, p.splice(e, 0, u), "img" != a && (r || 2 === y[c] ? (t.insertBefore(l, s ? null : n), m(k, j)) : y[c].push(l))
      }
  
      function j(a, b, c, d, f) {
          return q = 0, b = b || "j", e(a) ? i("c" == b ? v : u, a, b, this.i++, c, d, f) : (p.splice(this.i++, 0, a), 1 == p.length && h()), this
      }
  
      function k() {
          var a = B;
          return a.loader = {load: j, i: 0}, a
      }
  
      var l = b.documentElement, m = a.setTimeout, n = b.getElementsByTagName("script")[0], o = {}.toString, p = [],
          q = 0, r = "MozAppearance" in l.style, s = r && !!b.createRange().compareNode, t = s ? l : n.parentNode,
          l = a.opera && "[object Opera]" == o.call(a.opera), l = !!b.attachEvent && !l,
          u = r ? "object" : l ? "script" : "img", v = l ? "script" : u, w = Array.isArray || function (a) {
              return "[object Array]" == o.call(a)
          }, x = [], y = {}, z = {
              timeout: function (a, b) {
                  return b.length && (a.timeout = b[0]), a
              }
          }, A, B;
      B = function (a) {
          function b(a) {
              var a = a.split("!"), b = x.length, c = a.pop(), d = a.length, c = {url: c, origUrl: c, prefixes: a}, e, f,
                  g;
              for (f = 0; f < d; f++) g = a[f].split("="), (e = z[g.shift()]) && (c = e(c, g));
              for (f = 0; f < b; f++) c = x[f](c);
              return c
          }
  
          function g(a, e, f, g, h) {
              var i = b(a), j = i.autoCallback;
              i.url.split(".").pop().split("?").shift(), i.bypass || (e && (e = d(e) ? e : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]), i.instead ? i.instead(a, e, f, g, h) : (y[i.url] ? i.noexec = !0 : y[i.url] = 1, f.load(i.url, i.forceCSS || !i.forceJS && "css" == i.url.split(".").pop().split("?").shift() ? "c" : c, i.noexec, i.attrs, i.timeout), (d(e) || d(j)) && f.load(function () {
                  k(), e && e(i.origUrl, h, g), j && j(i.origUrl, h, g), y[i.url] = 2
              })))
          }
  
          function h(a, b) {
              function c(a, c) {
                  if (a) {
                      if (e(a)) c || (j = function () {
                          var a = [].slice.call(arguments);
                          k.apply(this, a), l()
                      }), g(a, j, b, 0, h); else if (Object(a) === a) for (n in m = function () {
                          var b = 0, c;
                          for (c in a) a.hasOwnProperty(c) && b++;
                          return b
                      }(), a) a.hasOwnProperty(n) && (!c && !--m && (d(j) ? j = function () {
                          var a = [].slice.call(arguments);
                          k.apply(this, a), l()
                      } : j[n] = function (a) {
                          return function () {
                              var b = [].slice.call(arguments);
                              a && a.apply(this, b), l()
                          }
                      }(k[n])), g(a[n], j, b, n, h))
                  } else !c && l()
              }
  
              var h = !!a.test, i = a.load || a.both, j = a.callback || f, k = j, l = a.complete || f, m, n;
              c(h ? a.yep : a.nope, !!i), i && c(i)
          }
  
          var i, j, l = this.yepnope.loader;
          if (e(a)) g(a, 0, l, 0); else if (w(a)) for (i = 0; i < a.length; i++) j = a[i], e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l); else Object(a) === a && h(a, l)
      }, B.addPrefix = function (a, b) {
          z[a] = b
      }, B.addFilter = function (a) {
          x.push(a)
      }, B.errorTimeout = 1e4, null == b.readyState && b.addEventListener && (b.readyState = "loading", b.addEventListener("DOMContentLoaded", A = function () {
          b.removeEventListener("DOMContentLoaded", A, 0), b.readyState = "complete"
      }, 0)), a.yepnope = k(), a.yepnope.executeStack = h, a.yepnope.injectJs = function (a, c, d, e, i, j) {
          var k = b.createElement("script"), l, o, e = e || B.errorTimeout;
          k.src = a;
          for (o in d) k.setAttribute(o, d[o]);
          c = j ? h : c || f, k.onreadystatechange = k.onload = function () {
              !l && g(k.readyState) && (l = 1, c(), k.onload = k.onreadystatechange = null)
          }, m(function () {
              l || (l = 1, c(1))
          }, e), i ? k.onload() : n.parentNode.insertBefore(k, n)
      }, a.yepnope.injectCss = function (a, c, d, e, g, i) {
          var e = b.createElement("link"), j, c = i ? h : c || f;
          e.href = a, e.rel = "stylesheet", e.type = "text/css";
          for (j in d) e.setAttribute(j, d[j]);
          g || (n.parentNode.insertBefore(e, n), m(c, 0))
      }
  }(this, document), Modernizr.load = function () {
      yepnope.apply(window, [].slice.call(arguments, 0))
  };*/
  /*formValidation.min.js*/
  /*!
   * FormValidation (http://formvalidation.io)
   * The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
   *
   * @version     v0.6.2-dev, built on 2015-03-13 8:15:45 AM
   * @author      https://twitter.com/nghuuphuoc
   * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
   * @license     http://formvalidation.io/license/
   */
  if (window.FormValidation = {
          AddOn: {},
          Framework: {},
          I18n: {},
          Validator: {}
      }, "undefined" == typeof jQuery) throw new Error("FormValidation requires jQuery");
  !function (a) {
      var b = a.fn.jquery.split(" ")[0].split(".");
      if (+b[0] < 2 && +b[1] < 9 || 1 === +b[0] && 9 === +b[1] && +b[2] < 1) throw new Error("FormValidation requires jQuery version 1.9.1 or higher")
  }(jQuery), function (a) {
      FormValidation.Base = function (b, c, d) {
          this.$form = a(b), this.options = a.extend({}, a.fn.formValidation.DEFAULT_OPTIONS, c), this._namespace = d || "fv", this.$invalidFields = a([]), this.$submitButton = null, this.$hiddenButton = null, this.STATUS_NOT_VALIDATED = "NOT_VALIDATED", this.STATUS_VALIDATING = "VALIDATING", this.STATUS_INVALID = "INVALID", this.STATUS_VALID = "VALID", this.STATUS_IGNORED = "IGNORED";
          var e = function () {
              for (var a = 3, b = document.createElement("div"), c = b.all || []; b.innerHTML = "<!--[if gt IE " + ++a + "]><br><![endif]-->", c[0];) ;
              return a > 4 ? a : !a
          }(), f = document.createElement("div");
          this._changeEvent = 9 !== e && "oninput" in f ? "input" : "keyup", this._submitIfValid = null, this._cacheFields = {}, this._init()
      }, FormValidation.Base.prototype = {
          constructor: FormValidation.Base, _exceedThreshold: function (b) {
              var c = this._namespace, d = b.attr("data-" + c + "-field"),
                  e = this.options.fields[d].threshold || this.options.threshold;
              if (!e) return !0;
              var f = -1 !== a.inArray(b.attr("type"), ["button", "checkbox", "file", "hidden", "image", "radio", "reset", "submit"]);
              return f || b.val().length >= e
          }, _init: function () {
              var b = this, c = this._namespace, d = {
                  addOns: {},
                  autoFocus: this.$form.attr("data-" + c + "-autofocus"),
                  button: {
                      selector: this.$form.attr("data-" + c + "-button-selector") || this.$form.attr("data-" + c + "-submitbuttons"),
                      disabled: this.$form.attr("data-" + c + "-button-disabled")
                  },
                  control: {
                      valid: this.$form.attr("data-" + c + "-control-valid"),
                      invalid: this.$form.attr("data-" + c + "-control-invalid")
                  },
                  err: {
                      clazz: this.$form.attr("data-" + c + "-err-clazz"),
                      container: this.$form.attr("data-" + c + "-err-container") || this.$form.attr("data-" + c + "-container"),
                      parent: this.$form.attr("data-" + c + "-err-parent")
                  },
                  events: {
                      formInit: this.$form.attr("data-" + c + "-events-form-init"),
                      formError: this.$form.attr("data-" + c + "-events-form-error"),
                      formSuccess: this.$form.attr("data-" + c + "-events-form-success"),
                      fieldAdded: this.$form.attr("data-" + c + "-events-field-added"),
                      fieldRemoved: this.$form.attr("data-" + c + "-events-field-removed"),
                      fieldInit: this.$form.attr("data-" + c + "-events-field-init"),
                      fieldError: this.$form.attr("data-" + c + "-events-field-error"),
                      fieldSuccess: this.$form.attr("data-" + c + "-events-field-success"),
                      fieldStatus: this.$form.attr("data-" + c + "-events-field-status"),
                      localeChanged: this.$form.attr("data-" + c + "-events-locale-changed"),
                      validatorError: this.$form.attr("data-" + c + "-events-validator-error"),
                      validatorSuccess: this.$form.attr("data-" + c + "-events-validator-success"),
                      validatorIgnored: this.$form.attr("data-" + c + "-events-validator-ignored")
                  },
                  excluded: this.$form.attr("data-" + c + "-excluded"),
                  icon: {
                      valid: this.$form.attr("data-" + c + "-icon-valid") || this.$form.attr("data-" + c + "-feedbackicons-valid"),
                      invalid: this.$form.attr("data-" + c + "-icon-invalid") || this.$form.attr("data-" + c + "-feedbackicons-invalid"),
                      validating: this.$form.attr("data-" + c + "-icon-validating") || this.$form.attr("data-" + c + "-feedbackicons-validating"),
                      feedback: this.$form.attr("data-" + c + "-icon-feedback")
                  },
                  live: this.$form.attr("data-" + c + "-live"),
                  locale: this.$form.attr("data-" + c + "-locale"),
                  message: this.$form.attr("data-" + c + "-message"),
                  onError: this.$form.attr("data-" + c + "-onerror"),
                  onSuccess: this.$form.attr("data-" + c + "-onsuccess"),
                  row: {
                      selector: this.$form.attr("data-" + c + "-row-selector") || this.$form.attr("data-" + c + "-group"),
                      valid: this.$form.attr("data-" + c + "-row-valid"),
                      invalid: this.$form.attr("data-" + c + "-row-invalid"),
                      feedback: this.$form.attr("data-" + c + "-row-feedback")
                  },
                  threshold: this.$form.attr("data-" + c + "-threshold"),
                  trigger: this.$form.attr("data-" + c + "-trigger"),
                  verbose: this.$form.attr("data-" + c + "-verbose"),
                  fields: {}
              };
              this.$form.attr("novalidate", "novalidate").addClass(this.options.elementClass).on("submit." + c, function (a) {
                  a.preventDefault(), b.validate()
              }).on("click." + c, this.options.button.selector, function () {
                  b.$submitButton = a(this), b._submitIfValid = !0
              }), (this.options.declarative === !0 || "true" === this.options.declarative) && this.$form.find("[name], [data-" + c + "-field]").each(function () {
                  var e = a(this), f = e.attr("name") || e.attr("data-" + c + "-field"), g = b._parseOptions(e);
                  g && (e.attr("data-" + c + "-field", f), d.fields[f] = a.extend({}, g, d.fields[f]))
              }), this.options = a.extend(!0, this.options, d), "string" == typeof this.options.err.parent && (this.options.err.parent = new RegExp(this.options.err.parent)), this.options.container && (this.options.err.container = this.options.container, delete this.options.container), this.options.feedbackIcons && (this.options.icon = a.extend(!0, this.options.icon, this.options.feedbackIcons), delete this.options.feedbackIcons), this.options.group && (this.options.row.selector = this.options.group, delete this.options.group), this.options.submitButtons && (this.options.button.selector = this.options.submitButtons, delete this.options.submitButtons), FormValidation.I18n[this.options.locale] || (this.options.locale = a.fn.formValidation.DEFAULT_OPTIONS.locale), (this.options.declarative === !0 || "true" === this.options.declarative) && (this.options = a.extend(!0, this.options, {addOns: this._parseAddOnOptions()})), this.$hiddenButton = a("<button/>").attr("type", "submit").prependTo(this.$form).addClass("fv-hidden-submit").css({
                  display: "none",
                  width: 0,
                  height: 0
              }), this.$form.on("click." + this._namespace, '[type="submit"]', function (c) {
                  if (!c.isDefaultPrevented()) {
                      var d = a(c.target), e = d.is('[type="submit"]') ? d.eq(0) : d.parent('[type="submit"]').eq(0);
                      !b.options.button.selector || e.is(b.options.button.selector) || e.is(b.$hiddenButton) || b.$form.off("submit." + b._namespace).submit()
                  }
              });
              for (var e in this.options.fields) this._initField(e);
              for (var f in this.options.addOns) "function" == typeof FormValidation.AddOn[f].init && FormValidation.AddOn[f].init(this, this.options.addOns[f]);
              this.$form.trigger(a.Event(this.options.events.formInit), {
                  bv: this,
                  fv: this,
                  options: this.options
              }), this.options.onSuccess && this.$form.on(this.options.events.formSuccess, function (a) {
                  FormValidation.Helper.call(b.options.onSuccess, [a])
              }), this.options.onError && this.$form.on(this.options.events.formError, function (a) {
                  FormValidation.Helper.call(b.options.onError, [a])
              })
          }, _initField: function (b) {
              var c = this._namespace, d = a([]);
              switch (typeof b) {
                  case"object":
                      d = b, b = b.attr("data-" + c + "-field");
                      break;
                  case"string":
                      d = this.getFieldElements(b), d.attr("data-" + c + "-field", b)
              }
              if (0 !== d.length && null !== this.options.fields[b] && null !== this.options.fields[b].validators) {
                  var e;
                  for (e in this.options.fields[b].validators) FormValidation.Validator[e] || delete this.options.fields[b].validators[e];
                  null === this.options.fields[b].enabled && (this.options.fields[b].enabled = !0);
                  for (var f = this, g = d.length, h = d.attr("type"), i = 1 === g || "radio" === h || "checkbox" === h, j = this._getFieldTrigger(d.eq(0)), k = a.map(j, function (a) {
                      return a + ".update." + c
                  }).join(" "), l = 0; g > l; l++) {
                      var m = d.eq(l), n = this.options.fields[b].row || this.options.row.selector, o = m.closest(n),
                          p = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ? (this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, m, this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container,
                          q = p && "tooltip" !== p && "popover" !== p ? a(p) : this._getMessageContainer(m, n);
                      p && "tooltip" !== p && "popover" !== p && q.addClass(this.options.err.clazz), q.find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + c + "-validator][data-" + c + '-for="' + b + '"]').remove(), o.find("i[data-" + c + '-icon-for="' + b + '"]').remove(), m.off(k).on(k, function () {
                          f.updateStatus(a(this), f.STATUS_NOT_VALIDATED)
                      }), m.data(c + ".messages", q);
                      for (e in this.options.fields[b].validators) m.data(c + ".result." + e, this.STATUS_NOT_VALIDATED), i && l !== g - 1 || a("<small/>").css("display", "none").addClass(this.options.err.clazz).attr("data-" + c + "-validator", e).attr("data-" + c + "-for", b).attr("data-" + c + "-result", this.STATUS_NOT_VALIDATED).html(this._getMessage(b, e)).appendTo(q), "function" == typeof FormValidation.Validator[e].init && FormValidation.Validator[e].init(this, m, this.options.fields[b].validators[e]);
                      if (this.options.fields[b].icon !== !1 && "false" !== this.options.fields[b].icon && this.options.icon && this.options.icon.valid && this.options.icon.invalid && this.options.icon.validating && (!i || l === g - 1)) {
                          o.addClass(this.options.row.feedback);
                          var r = a("<i/>").css("display", "none").addClass(this.options.icon.feedback).attr("data-" + c + "-icon-for", b).insertAfter(m);
                          (i ? d : m).data(c + ".icon", r), ("tooltip" === p || "popover" === p) && ((i ? d : m).on(this.options.events.fieldError, function () {
                              o.addClass("fv-has-tooltip")
                          }).on(this.options.events.fieldSuccess, function () {
                              o.removeClass("fv-has-tooltip")
                          }), m.off("focus.container." + c).on("focus.container." + c, function () {
                              f._showTooltip(m, p)
                          }).off("blur.container." + c).on("blur.container." + c, function () {
                              f._hideTooltip(m, p)
                          })), "string" == typeof this.options.fields[b].icon && "true" !== this.options.fields[b].icon ? r.appendTo(a(this.options.fields[b].icon)) : this._fixIcon(m, r)
                      }
                  }
                  d.on(this.options.events.fieldSuccess, function (a, b) {
                      var c = f.getOptions(b.field, null, "onSuccess");
                      c && FormValidation.Helper.call(c, [a, b])
                  }).on(this.options.events.fieldError, function (a, b) {
                      var c = f.getOptions(b.field, null, "onError");
                      c && FormValidation.Helper.call(c, [a, b])
                  }).on(this.options.events.fieldStatus, function (a, b) {
                      var c = f.getOptions(b.field, null, "onStatus");
                      c && FormValidation.Helper.call(c, [a, b])
                  }).on(this.options.events.validatorError, function (a, b) {
                      var c = f.getOptions(b.field, b.validator, "onError");
                      c && FormValidation.Helper.call(c, [a, b])
                  }).on(this.options.events.validatorSuccess, function (a, b) {
                      var c = f.getOptions(b.field, b.validator, "onSuccess");
                      c && FormValidation.Helper.call(c, [a, b])
                  }), this.onLiveChange(d, "live", function () {
                      f._exceedThreshold(a(this)) && f.validateField(a(this))
                  }), d.trigger(a.Event(this.options.events.fieldInit), {bv: this, fv: this, field: b, element: d})
              }
          }, _isExcluded: function (b) {
              var c = this._namespace, d = b.attr("data-" + c + "-excluded"),
                  e = b.attr("data-" + c + "-field") || b.attr("name");
              switch (!0) {
                  case!!e && this.options.fields && this.options.fields[e] && ("true" === this.options.fields[e].excluded || this.options.fields[e].excluded === !0):
                  case"true" === d:
                  case"" === d:
                      return !0;
                  case!!e && this.options.fields && this.options.fields[e] && ("false" === this.options.fields[e].excluded || this.options.fields[e].excluded === !1):
                  case"false" === d:
                      return !1;
                  case!!e && this.options.fields && this.options.fields[e] && "function" == typeof this.options.fields[e].excluded:
                      return this.options.fields[e].excluded.call(this, b, this);
                  case!!e && this.options.fields && this.options.fields[e] && "string" == typeof this.options.fields[e].excluded:
                  case d:
                      return FormValidation.Helper.call(this.options.fields[e].excluded, [b, this]);
                  default:
                      if (this.options.excluded) {
                          "string" == typeof this.options.excluded && (this.options.excluded = a.map(this.options.excluded.split(","), function (b) {
                              return a.trim(b)
                          }));
                          for (var f = this.options.excluded.length, g = 0; f > g; g++) if ("string" == typeof this.options.excluded[g] && b.is(this.options.excluded[g]) || "function" == typeof this.options.excluded[g] && this.options.excluded[g].call(this, b, this) === !0) return !0
                      }
                      return !1
              }
          }, _getFieldTrigger: function (a) {
              var b = this._namespace, c = a.data(b + ".trigger");
              if (c) return c;
              var d = a.attr("type"), e = a.attr("data-" + b + "-field"),
                  f = "radio" === d || "checkbox" === d || "file" === d || "SELECT" === a.get(0).tagName ? "change" : this._changeEvent;
              return c = ((this.options.fields[e] ? this.options.fields[e].trigger : null) || this.options.trigger || f).split(" "), a.data(b + ".trigger", c), c
          }, _getMessage: function (a, b) {
              if (!(this.options.fields[a] && FormValidation.Validator[b] && this.options.fields[a].validators && this.options.fields[a].validators[b])) return "";
              switch (!0) {
                  case!!this.options.fields[a].validators[b].message:
                      return this.options.fields[a].validators[b].message;
                  case!!this.options.fields[a].message:
                      return this.options.fields[a].message;
                  case!!FormValidation.I18n[this.options.locale] && !!FormValidation.I18n[this.options.locale][b] && !!FormValidation.I18n[this.options.locale][b]["default"]:
                      return FormValidation.I18n[this.options.locale][b]["default"];
                  default:
                      return this.options.message
              }
          }, _getMessageContainer: function (a, b) {
              if (!this.options.err.parent) throw new Error("The err.parent option is not defined");
              var c = a.parent();
              if (c.is(b)) return c;
              var d = c.attr("class");
              return d && this.options.err.parent.test(d) ? c : this._getMessageContainer(c, b)
          }, _parseAddOnOptions: function () {
              var a = this._namespace, b = this.$form.attr("data-" + a + "-addons"), c = this.options.addOns || {};
              if (b) {
                  b = b.replace(/\s/g, "").split(",");
                  for (var d = 0; d < b.length; d++) c[b[d]] || (c[b[d]] = {})
              }
              var e, f, g, h;
              for (e in c) if (FormValidation.AddOn[e]) {
                  if (f = FormValidation.AddOn[e].html5Attributes) for (g in f) h = this.$form.attr("data-" + a + "-addons-" + e.toLowerCase() + "-" + g.toLowerCase()), h && (c[e][f[g]] = h)
              } else delete c[e];
              return c
          }, _parseOptions: function (b) {
              var c, d, e, f, g, h, i, j, k, l = this._namespace, m = b.attr("name") || b.attr("data-" + l + "-field"),
                  n = {};
              for (d in FormValidation.Validator) if (c = FormValidation.Validator[d], e = "data-" + l + "-" + d.toLowerCase(), f = b.attr(e) + "", k = "function" == typeof c.enableByHtml5 ? c.enableByHtml5(b) : null, k && "false" !== f || k !== !0 && ("" === f || "true" === f || e === f.toLowerCase())) {
                  c.html5Attributes = a.extend({}, {
                      message: "message",
                      onerror: "onError",
                      onsuccess: "onSuccess",
                      transformer: "transformer"
                  }, c.html5Attributes), n[d] = a.extend({}, k === !0 ? {} : k, n[d]);
                  for (j in c.html5Attributes) g = c.html5Attributes[j], h = "data-" + l + "-" + d.toLowerCase() + "-" + j, i = b.attr(h), i && ("true" === i || h === i.toLowerCase() ? i = !0 : "false" === i && (i = !1), n[d][g] = i)
              }
              var o = {
                  autoFocus: b.attr("data-" + l + "-autofocus"),
                  err: b.attr("data-" + l + "-err-container") || b.attr("data-" + l + "-container"),
                  excluded: b.attr("data-" + l + "-excluded"),
                  icon: b.attr("data-" + l + "-icon") || b.attr("data-" + l + "-feedbackicons") || (this.options.fields && this.options.fields[m] ? this.options.fields[m].feedbackIcons : null),
                  message: b.attr("data-" + l + "-message"),
                  onError: b.attr("data-" + l + "-onerror"),
                  onStatus: b.attr("data-" + l + "-onstatus"),
                  onSuccess: b.attr("data-" + l + "-onsuccess"),
                  row: b.attr("data-" + l + "-row") || b.attr("data-" + l + "-group") || (this.options.fields && this.options.fields[m] ? this.options.fields[m].group : null),
                  selector: b.attr("data-" + l + "-selector"),
                  threshold: b.attr("data-" + l + "-threshold"),
                  transformer: b.attr("data-" + l + "-transformer"),
                  trigger: b.attr("data-" + l + "-trigger"),
                  verbose: b.attr("data-" + l + "-verbose"),
                  validators: n
              }, p = a.isEmptyObject(o), q = a.isEmptyObject(n);
              return !q || !p && this.options.fields && this.options.fields[m] ? (o.validators = n, o) : null
          }, _submit: function () {
              var b = this.isValid();
              if (null !== b) {
                  var c = b ? this.options.events.formSuccess : this.options.events.formError, d = a.Event(c);
                  this.$form.trigger(d), this.$submitButton && (b ? this._onSuccess(d) : this._onError(d))
              }
          }, _onError: function (b) {
              if (!b.isDefaultPrevented()) {
                  if ("submitted" === this.options.live) {
                      this.options.live = "enabled";
                      var c = this;
                      for (var d in this.options.fields) !function (b) {
                          var d = c.getFieldElements(b);
                          d.length && c.onLiveChange(d, "live", function () {
                              c._exceedThreshold(a(this)) && c.validateField(a(this))
                          })
                      }(d)
                  }
                  for (var e = this._namespace, f = 0; f < this.$invalidFields.length; f++) {
                      var g = this.$invalidFields.eq(f),
                          h = this.isOptionEnabled(g.attr("data-" + e + "-field"), "autoFocus");
                      if (h) {
                          g.focus();
                          break
                      }
                  }
              }
          }, _onFieldValidated: function (b, c) {
              var d = this._namespace, e = b.attr("data-" + d + "-field"), f = this.options.fields[e].validators, g = {},
                  h = 0,
                  i = {bv: this, fv: this, field: e, element: b, validator: c, result: b.data(d + ".response." + c)};
              if (c) switch (b.data(d + ".result." + c)) {
                  case this.STATUS_INVALID:
                      b.trigger(a.Event(this.options.events.validatorError), i);
                      break;
                  case this.STATUS_VALID:
                      b.trigger(a.Event(this.options.events.validatorSuccess), i);
                      break;
                  case this.STATUS_IGNORED:
                      b.trigger(a.Event(this.options.events.validatorIgnored), i)
              }
              g[this.STATUS_NOT_VALIDATED] = 0, g[this.STATUS_VALIDATING] = 0, g[this.STATUS_INVALID] = 0, g[this.STATUS_VALID] = 0, g[this.STATUS_IGNORED] = 0;
              for (var j in f) if (f[j].enabled !== !1) {
                  h++;
                  var k = b.data(d + ".result." + j);
                  k && g[k]++
              }
              g[this.STATUS_VALID] + g[this.STATUS_IGNORED] === h ? (this.$invalidFields = this.$invalidFields.not(b), b.trigger(a.Event(this.options.events.fieldSuccess), i)) : (0 === g[this.STATUS_NOT_VALIDATED] || !this.isOptionEnabled(e, "verbose")) && 0 === g[this.STATUS_VALIDATING] && g[this.STATUS_INVALID] > 0 && (this.$invalidFields = this.$invalidFields.add(b), b.trigger(a.Event(this.options.events.fieldError), i))
          }, _onSuccess: function (a) {
              a.isDefaultPrevented() || this.disableSubmitButtons(!0).defaultSubmit()
          }, _fixIcon: function () {
          }, _createTooltip: function () {
          }, _destroyTooltip: function () {
          }, _hideTooltip: function () {
          }, _showTooltip: function () {
          }, defaultSubmit: function () {
              var b = this._namespace;
              this.$submitButton && a("<input/>").attr({
                  type: "hidden",
                  name: this.$submitButton.attr("name")
              }).attr("data-" + b + "-submit-hidden", "").val(this.$submitButton.val()).appendTo(this.$form), this.$form.off("submit." + b).submit()
          }, disableSubmitButtons: function (a) {
              return a ? "disabled" !== this.options.live && this.$form.find(this.options.button.selector).attr("disabled", "disabled").addClass(this.options.button.disabled) : this.$form.find(this.options.button.selector).removeAttr("disabled").removeClass(this.options.button.disabled), this
          }, getFieldElements: function (b) {
              if (!this._cacheFields[b]) if (this.options.fields[b] && this.options.fields[b].selector) {
                  var c = this.$form.find(this.options.fields[b].selector);
                  this._cacheFields[b] = c.length ? c : a(this.options.fields[b].selector)
              } else this._cacheFields[b] = this.$form.find('[name="' + b + '"]');
              return this._cacheFields[b]
          }, getFieldValue: function (a, b) {
              var c, d = this._namespace;
              if ("string" == typeof a) {
                  if (c = this.getFieldElements(a), 0 === c.length) return null
              } else c = a, a = c.attr("data-" + d + "-field");
              if (!a || !this.options.fields[a]) return c.val();
              var e = (this.options.fields[a].validators && this.options.fields[a].validators[b] ? this.options.fields[a].validators[b].transformer : null) || this.options.fields[a].transformer;
              return e ? FormValidation.Helper.call(e, [c, b, this]) : c.val()
          }, getNamespace: function () {
              return this._namespace
          }, getOptions: function (a, b, c) {
              var d = this._namespace;
              if (!a) return c ? this.options[c] : this.options;
              if ("object" == typeof a && (a = a.attr("data-" + d + "-field")), !this.options.fields[a]) return null;
              var e = this.options.fields[a];
              return b ? e.validators && e.validators[b] ? c ? e.validators[b][c] : e.validators[b] : null : c ? e[c] : e
          }, getStatus: function (a, b) {
              var c = this._namespace;
              switch (typeof a) {
                  case"object":
                      return a.data(c + ".result." + b);
                  case"string":
                  default:
                      return this.getFieldElements(a).eq(0).data(c + ".result." + b)
              }
          }, isOptionEnabled: function (a, b) {
              return !this.options.fields[a] || "true" !== this.options.fields[a][b] && this.options.fields[a][b] !== !0 ? !this.options.fields[a] || "false" !== this.options.fields[a][b] && this.options.fields[a][b] !== !1 ? "true" === this.options[b] || this.options[b] === !0 : !1 : !0
          }, isValid: function () {
              for (var a in this.options.fields) {
                  var b = this.isValidField(a);
                  if (null === b) return null;
                  if (b === !1) return !1
              }
              return !0
          }, isValidContainer: function (b) {
              var c = this, d = this._namespace, e = [], f = "string" == typeof b ? a(b) : b;
              if (0 === f.length) return !0;
              f.find("[data-" + d + "-field]").each(function () {
                  var b = a(this);
                  c._isExcluded(b) || e.push(b)
              });
              for (var g = e.length, h = 0; g > h; h++) {
                  var i = e[h], j = i.attr("data-" + d + "-field"),
                      k = i.data(d + ".messages").find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + d + "-validator][data-" + d + '-for="' + j + '"]');
                  if (k.filter("[data-" + d + '-result="' + this.STATUS_INVALID + '"]').length > 0) return !1;
                  if (k.filter("[data-" + d + '-result="' + this.STATUS_NOT_VALIDATED + '"]').length > 0 || k.filter("[data-" + d + '-result="' + this.STATUS_VALIDATING + '"]').length > 0) return null
              }
              return !0
          }, isValidField: function (b) {
              var c = this._namespace, d = a([]);
              switch (typeof b) {
                  case"object":
                      d = b, b = b.attr("data-" + c + "-field");
                      break;
                  case"string":
                      d = this.getFieldElements(b)
              }
              if (0 === d.length || !this.options.fields[b] || this.options.fields[b].enabled === !1) return !0;
              for (var e, f, g, h = d.attr("type"), i = "radio" === h || "checkbox" === h ? 1 : d.length, j = 0; i > j; j++) if (e = d.eq(j), !this._isExcluded(e)) for (f in this.options.fields[b].validators) if (this.options.fields[b].validators[f].enabled !== !1) {
                  if (g = e.data(c + ".result." + f), g === this.STATUS_VALIDATING || g === this.STATUS_NOT_VALIDATED) return null;
                  if (g === this.STATUS_INVALID) return !1
              }
              return !0
          }, offLiveChange: function (b, c) {
              if (null === b || 0 === b.length) return this;
              var d = this._namespace, e = this._getFieldTrigger(b.eq(0)), f = a.map(e, function (a) {
                  return a + "." + c + "." + d
              }).join(" ");
              return b.off(f), this
          }, onLiveChange: function (b, c, d) {
              if (null === b || 0 === b.length) return this;
              var e = this._namespace, f = this._getFieldTrigger(b.eq(0)), g = a.map(f, function (a) {
                  return a + "." + c + "." + e
              }).join(" ");
              switch (this.options.live) {
                  case"submitted":
                      break;
                  case"disabled":
                      b.off(g);
                      break;
                  case"enabled":
                  default:
                      b.off(g).on(g, function () {
                          d.apply(this, arguments)
                      })
              }
              return this
          }, updateMessage: function (b, c, d) {
              var e = this, f = this._namespace, g = a([]);
              switch (typeof b) {
                  case"object":
                      g = b, b = b.attr("data-" + f + "-field");
                      break;
                  case"string":
                      g = this.getFieldElements(b)
              }
              return g.each(function () {
                  a(this).data(f + ".messages").find("." + e.options.err.clazz + "[data-" + f + '-validator="' + c + '"][data-' + f + '-for="' + b + '"]').html(d)
              }), this
          }, updateStatus: function (b, c, d) {
              var e = this._namespace, f = a([]);
              switch (typeof b) {
                  case"object":
                      f = b, b = b.attr("data-" + e + "-field");
                      break;
                  case"string":
                      f = this.getFieldElements(b)
              }
              if (!b || !this.options.fields[b]) return this;
              c === this.STATUS_NOT_VALIDATED && (this._submitIfValid = !1);
              for (var g = this, h = f.attr("type"), i = this.options.fields[b].row || this.options.row.selector, j = "radio" === h || "checkbox" === h ? 1 : f.length, k = 0; j > k; k++) {
                  var l = f.eq(k);
                  if (!this._isExcluded(l)) {
                      var m, n, o = l.closest(i), p = l.data(e + ".messages"),
                          q = p.find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + e + "-validator][data-" + e + '-for="' + b + '"]'),
                          r = d ? q.filter("[data-" + e + '-validator="' + d + '"]') : q, s = l.data(e + ".icon"),
                          t = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ? (this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, l, this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container,
                          u = null;
                      if (d) l.data(e + ".result." + d, c); else for (var v in this.options.fields[b].validators) l.data(e + ".result." + v, c);
                      switch (r.attr("data-" + e + "-result", c), c) {
                          case this.STATUS_VALIDATING:
                              u = null, this.disableSubmitButtons(!0), l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid), o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), s && s.removeClass(this.options.icon.valid).removeClass(this.options.icon.invalid).addClass(this.options.icon.validating).show();
                              break;
                          case this.STATUS_INVALID:
                              u = !1, this.disableSubmitButtons(!0), l.removeClass(this.options.control.valid).addClass(this.options.control.invalid), o.removeClass(this.options.row.valid).addClass(this.options.row.invalid), s && s.removeClass(this.options.icon.valid).removeClass(this.options.icon.validating).addClass(this.options.icon.invalid).show();
                              break;
                          case this.STATUS_VALID:
                          case this.STATUS_IGNORED:
                              m = q.filter("[data-" + e + '-result="' + this.STATUS_VALIDATING + '"]').length > 0, n = q.filter("[data-" + e + '-result="' + this.STATUS_NOT_VALIDATED + '"]').length > 0, u = m || n ? null : q.filter("[data-" + e + '-result="' + this.STATUS_VALID + '"]').length + q.filter("[data-" + e + '-result="' + this.STATUS_IGNORED + '"]').length === q.length, l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid), u === !0 ? (this.disableSubmitButtons(this.isValid() === !1), c === this.STATUS_VALID && l.addClass(this.options.control.valid)) : u === !1 && (this.disableSubmitButtons(!0), c === this.STATUS_VALID && l.addClass(this.options.control.invalid)), s && (s.removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).removeClass(this.options.icon.valid), c === this.STATUS_VALID && s.addClass(null === u ? "" : u ? this.options.icon.valid : m ? this.options.icon.validating : this.options.icon.invalid).show());
                              var w = this.isValidContainer(o);
                              null !== w && (o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), (c === this.STATUS_VALID || q.length > 1) && o.addClass(w ? this.options.row.valid : this.options.row.invalid));
                              break;
                          case this.STATUS_NOT_VALIDATED:
                          default:
                              u = null, this.disableSubmitButtons(!1), l.removeClass(this.options.control.valid).removeClass(this.options.control.invalid), o.removeClass(this.options.row.valid).removeClass(this.options.row.invalid), s && s.removeClass(this.options.icon.valid).removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).hide()
                      }
                      !s || "tooltip" !== t && "popover" !== t ? c === this.STATUS_INVALID ? r.show() : r.hide() : u === !1 ? this._createTooltip(l, q.filter("[data-" + e + '-result="' + g.STATUS_INVALID + '"]').eq(0).html(), t) : this._destroyTooltip(l, t), l.trigger(a.Event(this.options.events.fieldStatus), {
                          bv: this,
                          fv: this,
                          field: b,
                          element: l,
                          status: c
                      }), this._onFieldValidated(l, d)
                  }
              }
              return this
          }, validate: function () {
              if (a.isEmptyObject(this.options.fields)) return this._submit(), this;
              this.disableSubmitButtons(!0), this._submitIfValid = !1;
              for (var b in this.options.fields) this.validateField(b);
              return this._submit(), this._submitIfValid = !0, this
          }, validateField: function (b) {
              var c = this._namespace, d = a([]);
              switch (typeof b) {
                  case"object":
                      d = b, b = b.attr("data-" + c + "-field");
                      break;
                  case"string":
                      d = this.getFieldElements(b)
              }
              if (0 === d.length || !this.options.fields[b] || this.options.fields[b].enabled === !1) return this;
              for (var e, f, g = this, h = d.attr("type"), i = "radio" === h || "checkbox" === h ? 1 : d.length, j = "radio" === h || "checkbox" === h, k = this.options.fields[b].validators, l = this.isOptionEnabled(b, "verbose"), m = 0; i > m; m++) {
                  var n = d.eq(m);
                  if (!this._isExcluded(n)) {
                      var o = !1;
                      for (e in k) {
                          if (n.data(c + ".dfs." + e) && n.data(c + ".dfs." + e).reject(), o) break;
                          var p = n.data(c + ".result." + e);
                          if (p !== this.STATUS_VALID && p !== this.STATUS_INVALID) if (k[e].enabled !== !1) if (n.data(c + ".result." + e, this.STATUS_VALIDATING), f = FormValidation.Validator[e].validate(this, n, k[e]), "object" == typeof f && f.resolve) this.updateStatus(j ? b : n, this.STATUS_VALIDATING, e), n.data(c + ".dfs." + e, f), f.done(function (a, b, d) {
                              a.removeData(c + ".dfs." + b).data(c + ".response." + b, d), d.message && g.updateMessage(a, b, d.message), g.updateStatus(j ? a.attr("data-" + c + "-field") : a, d.valid === !0 ? g.STATUS_VALID : d.valid === !1 ? g.STATUS_INVALID : g.STATUS_IGNORED, b), d.valid && g._submitIfValid === !0 ? g._submit() : d.valid !== !1 || l || (o = !0)
                          }); else if ("object" == typeof f && void 0 !== f.valid) {
                              if (n.data(c + ".response." + e, f), f.message && this.updateMessage(j ? b : n, e, f.message), this.updateStatus(j ? b : n, f.valid === !0 ? this.STATUS_VALID : f.valid === !1 ? this.STATUS_INVALID : this.STATUS_IGNORED, e), f.valid === !1 && !l) break
                          } else if ("boolean" == typeof f) {
                              if (n.data(c + ".response." + e, f), this.updateStatus(j ? b : n, f ? this.STATUS_VALID : this.STATUS_INVALID, e), !f && !l) break
                          } else (null === f || void 0 === f) && (n.data(c + ".response." + e, f), this.updateStatus(j ? b : n, this.STATUS_IGNORED, e)); else this.updateStatus(j ? b : n, this.STATUS_VALID, e); else this._onFieldValidated(n, e)
                      }
                  }
              }
              return this
          }, addField: function (b, c) {
              var d = this._namespace, e = a([]);
              switch (typeof b) {
                  case"object":
                      e = b, b = b.attr("data-" + d + "-field") || b.attr("name");
                      break;
                  case"string":
                      delete this._cacheFields[b], e = this.getFieldElements(b)
              }
              e.attr("data-" + d + "-field", b);
              for (var f = e.attr("type"), g = "radio" === f || "checkbox" === f ? 1 : e.length, h = 0; g > h; h++) {
                  var i = e.eq(h), j = this._parseOptions(i);
                  j = null === j ? c : a.extend(!0, j, c), this.options.fields[b] = a.extend(!0, this.options.fields[b], j), this._cacheFields[b] = this._cacheFields[b] ? this._cacheFields[b].add(i) : i, this._initField("checkbox" === f || "radio" === f ? b : i)
              }
              return this.disableSubmitButtons(!1), this.$form.trigger(a.Event(this.options.events.fieldAdded), {
                  field: b,
                  element: e,
                  options: this.options.fields[b]
              }), this
          }, destroy: function () {
              var a, b, c, d, e, f, g, h = this._namespace;
              for (b in this.options.fields) for (c = this.getFieldElements(b), a = 0; a < c.length; a++) {
                  d = c.eq(a);
                  for (e in this.options.fields[b].validators) d.data(h + ".dfs." + e) && d.data(h + ".dfs." + e).reject(), d.removeData(h + ".result." + e).removeData(h + ".response." + e).removeData(h + ".dfs." + e), "function" == typeof FormValidation.Validator[e].destroy && FormValidation.Validator[e].destroy(this, d, this.options.fields[b].validators[e])
              }
              for (b in this.options.fields) for (c = this.getFieldElements(b), g = this.options.fields[b].row || this.options.row.selector, a = 0; a < c.length; a++) {
                  d = c.eq(a), d.data(h + ".messages").find("." + this.options.err.clazz.split(" ").join(".") + "[data-" + h + "-validator][data-" + h + '-for="' + b + '"]').remove().end().end().removeData(h + ".messages").closest(g).removeClass(this.options.row.valid).removeClass(this.options.row.invalid).removeClass(this.options.row.feedback).end().off("." + h).removeAttr("data-" + h + "-field");
                  var i = "function" == typeof(this.options.fields[b].container || this.options.fields[b].err || this.options.err.container) ? (this.options.fields[b].container || this.options.fields[b].err || this.options.err.container).call(this, d, this) : this.options.fields[b].container || this.options.fields[b].err || this.options.err.container;
                  ("tooltip" === i || "popover" === i) && this._destroyTooltip(d, i), f = d.data(h + ".icon"), f && f.remove(), d.removeData(h + ".icon").removeData(h + ".trigger")
              }
              for (var j in this.options.addOns) "function" == typeof FormValidation.AddOn[j].destroy && FormValidation.AddOn[j].destroy(this, this.options.addOns[j]);
              this.disableSubmitButtons(!1), this.$hiddenButton.remove(), this.$form.removeClass(this.options.elementClass).off("." + h).removeData("bootstrapValidator").removeData("formValidation").find("[data-" + h + "-submit-hidden]").remove().end().find('[type="submit"]').off("click." + h)
          }, enableFieldValidators: function (a, b, c) {
              var d = this.options.fields[a].validators;
              if (c && d && d[c] && d[c].enabled !== b) this.options.fields[a].validators[c].enabled = b, this.updateStatus(a, this.STATUS_NOT_VALIDATED, c); else if (!c && this.options.fields[a].enabled !== b) {
                  this.options.fields[a].enabled = b;
                  for (var e in d) this.enableFieldValidators(a, b, e)
              }
              return this
          }, getDynamicOption: function (a, b) {
              var c = "string" == typeof a ? this.getFieldElements(a) : a, d = c.val();
              if ("function" == typeof b) return FormValidation.Helper.call(b, [d, this, c]);
              if ("string" == typeof b) {
                  var e = this.getFieldElements(b);
                  return e.length ? e.val() : FormValidation.Helper.call(b, [d, this, c]) || b
              }
              return null
          }, getForm: function () {
              return this.$form
          }, getInvalidFields: function () {
              return this.$invalidFields
          }, getLocale: function () {
              return this.options.locale
          }, getMessages: function (b, c) {
              var d = this, e = this._namespace, f = [], g = a([]);
              switch (!0) {
                  case b && "object" == typeof b:
                      g = b;
                      break;
                  case b && "string" == typeof b:
                      var h = this.getFieldElements(b);
                      if (h.length > 0) {
                          var i = h.attr("type");
                          g = "radio" === i || "checkbox" === i ? h.eq(0) : h
                      }
                      break;
                  default:
                      g = this.$invalidFields
              }
              var j = c ? "[data-" + e + '-validator="' + c + '"]' : "";
              return g.each(function () {
                  f = f.concat(a(this).data(e + ".messages").find("." + d.options.err.clazz + "[data-" + e + '-for="' + a(this).attr("data-" + e + "-field") + '"][data-' + e + '-result="' + d.STATUS_INVALID + '"]' + j).map(function () {
                      var b = a(this).attr("data-" + e + "-validator"), c = a(this).attr("data-" + e + "-for");
                      return d.options.fields[c].validators[b].enabled === !1 ? "" : a(this).html()
                  }).get())
              }), f
          }, getSubmitButton: function () {
              return this.$submitButton
          }, removeField: function (b) {
              var c = this._namespace, d = a([]);
              switch (typeof b) {
                  case"object":
                      d = b, b = b.attr("data-" + c + "-field") || b.attr("name"), d.attr("data-" + c + "-field", b);
                      break;
                  case"string":
                      d = this.getFieldElements(b)
              }
              if (0 === d.length) return this;
              for (var e = d.attr("type"), f = "radio" === e || "checkbox" === e ? 1 : d.length, g = 0; f > g; g++) {
                  var h = d.eq(g);
                  this.$invalidFields = this.$invalidFields.not(h), this._cacheFields[b] = this._cacheFields[b].not(h)
              }
              return this._cacheFields[b] && 0 !== this._cacheFields[b].length || delete this.options.fields[b], ("checkbox" === e || "radio" === e) && this._initField(b), this.disableSubmitButtons(!1), this.$form.trigger(a.Event(this.options.events.fieldRemoved), {
                  field: b,
                  element: d
              }), this
          }, resetField: function (b, c) {
              var d = this._namespace, e = a([]);
              switch (typeof b) {
                  case"object":
                      e = b, b = b.attr("data-" + d + "-field");
                      break;
                  case"string":
                      e = this.getFieldElements(b)
              }
              var f = e.length;
              if (this.options.fields[b]) for (var g = 0; f > g; g++) for (var h in this.options.fields[b].validators) e.eq(g).removeData(d + ".dfs." + h);
              if (c) {
                  var i = e.attr("type");
                  "radio" === i || "checkbox" === i ? e.prop("checked", !1).removeAttr("selected") : e.val("")
              }
              return this.updateStatus(b, this.STATUS_NOT_VALIDATED), this
          }, resetForm: function (b) {
              for (var c in this.options.fields) this.resetField(c, b);
              return this.$invalidFields = a([]), this.$submitButton = null, this.disableSubmitButtons(!1), this
          }, revalidateField: function (a) {
              return this.updateStatus(a, this.STATUS_NOT_VALIDATED).validateField(a), this
          }, setLocale: function (b) {
              return this.options.locale = b, this.$form.trigger(a.Event(this.options.events.localeChanged), {
                  locale: b,
                  bv: this,
                  fv: this
              }), this
          }, updateOption: function (a, b, c, d) {
              var e = this._namespace;
              return "object" == typeof a && (a = a.attr("data-" + e + "-field")), this.options.fields[a] && this.options.fields[a].validators[b] && (this.options.fields[a].validators[b][c] = d, this.updateStatus(a, this.STATUS_NOT_VALIDATED, b)), this
          }, validateContainer: function (b) {
              var c = this, d = this._namespace, e = [], f = "string" == typeof b ? a(b) : b;
              if (0 === f.length) return this;
              f.find("[data-" + d + "-field]").each(function () {
                  var b = a(this);
                  c._isExcluded(b) || e.push(b)
              });
              for (var g = e.length, h = 0; g > h; h++) this.validateField(e[h]);
              return this
          }
      }, a.fn.formValidation = function (b) {
          var c = arguments;
          return this.each(function () {
              var d = a(this), e = d.data("formValidation"), f = "object" == typeof b && b;
              if (!e) {
                  var g = (f.framework || d.attr("data-fv-framework") || "bootstrap").toLowerCase(),
                      h = g.substr(0, 1).toUpperCase() + g.substr(1);
                  if ("undefined" == typeof FormValidation.Framework[h]) throw new Error("The class FormValidation.Framework." + h + " is not implemented");
                  e = new FormValidation.Framework[h](this, f), d.addClass("fv-form-" + g).data("formValidation", e)
              }
              "string" == typeof b && e[b].apply(e, Array.prototype.slice.call(c, 1))
          })
      }, a.fn.formValidation.Constructor = FormValidation.Base, a.fn.formValidation.DEFAULT_OPTIONS = {
          autoFocus: !0,
          declarative: !0,
          elementClass: "fv-form",
          events: {
              formInit: "init.form.fv",
              formError: "err.form.fv",
              formSuccess: "success.form.fv",
              fieldAdded: "added.field.fv",
              fieldRemoved: "removed.field.fv",
              fieldInit: "init.field.fv",
              fieldError: "err.field.fv",
              fieldSuccess: "success.field.fv",
              fieldStatus: "status.field.fv",
              localeChanged: "changed.locale.fv",
              validatorError: "err.validator.fv",
              validatorSuccess: "success.validator.fv",
              validatorIgnored: "ignored.validator.fv"
          },
          excluded: [":disabled", ":hidden", ":not(:visible)"],
          fields: null,
          live: "enabled",
          locale: "en_US",
          message: "This value is not valid",
          threshold: null,
          verbose: !0,
          button: {selector: '[type="submit"]', disabled: ""},
          control: {valid: "", invalid: ""},
          err: {clazz: "", container: null, parent: null},
          icon: {valid: null, invalid: null, validating: null, feedback: ""},
          row: {selector: null, valid: "", invalid: "", feedback: ""}
      }
  }(jQuery), function (a) {
      FormValidation.Helper = {
          call: function (a, b) {
              if ("function" == typeof a) return a.apply(this, b);
              if ("string" == typeof a) {
                  "()" === a.substring(a.length - 2) && (a = a.substring(0, a.length - 2));
                  for (var c = a.split("."), d = c.pop(), e = window, f = 0; f < c.length; f++) e = e[c[f]];
                  return "undefined" == typeof e[d] ? null : e[d].apply(this, b)
              }
          }, date: function (a, b, c, d) {
              if (isNaN(a) || isNaN(b) || isNaN(c)) return !1;
              if (c.length > 2 || b.length > 2 || a.length > 4) return !1;
              if (c = parseInt(c, 10), b = parseInt(b, 10), a = parseInt(a, 10), 1e3 > a || a > 9999 || 0 >= b || b > 12) return !1;
              var e = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
              if ((a % 400 === 0 || a % 100 !== 0 && a % 4 === 0) && (e[1] = 29), 0 >= c || c > e[b - 1]) return !1;
              if (d === !0) {
                  var f = new Date, g = f.getFullYear(), h = f.getMonth(), i = f.getDate();
                  return g > a || a === g && h > b - 1 || a === g && b - 1 === h && i > c
              }
              return !0
          }, format: function (b, c) {
              a.isArray(c) || (c = [c]);
              for (var d in c) b = b.replace("%s", c[d]);
              return b
          }, luhn: function (a) {
              for (var b = a.length, c = 0, d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]], e = 0; b--;) e += d[c][parseInt(a.charAt(b), 10)], c ^= 1;
              return e % 10 === 0 && e > 0
          }, mod11And10: function (a) {
              for (var b = 5, c = a.length, d = 0; c > d; d++) b = (2 * (b || 10) % 11 + parseInt(a.charAt(d), 10)) % 10;
              return 1 === b
          }, mod37And36: function (a, b) {
              b = b || "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
              for (var c = b.length, d = a.length, e = Math.floor(c / 2), f = 0; d > f; f++) e = (2 * (e || c) % (c + 1) + b.indexOf(a.charAt(f))) % c;
              return 1 === e
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {base64: {"default": "Please enter a valid base 64 encoded"}}}), FormValidation.Validator.base64 = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "base64");
              return "" === c ? !0 : /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(c)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              between: {
                  "default": "Please enter a value between %s and %s",
                  notInclusive: "Please enter a value between %s and %s strictly"
              }
          }
      }), FormValidation.Validator.between = {
          html5Attributes: {
              message: "message",
              min: "min",
              max: "max",
              inclusive: "inclusive"
          }, enableByHtml5: function (a) {
              return "range" === a.attr("type") ? {min: a.attr("min"), max: a.attr("max")} : !1
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "between");
              if ("" === e) return !0;
              if (e = this._format(e), !a.isNumeric(e)) return !1;
              var f = b.getLocale(), g = a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min),
                  h = a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max), i = this._format(g), j = this._format(h);
              return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
                  valid: e >= i && j >= e,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].between["default"], [g, h])
              } : {
                  valid: e > i && j > e,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].between.notInclusive, [g, h])
              }
          }, _format: function (a) {
              return (a + "").replace(",", ".")
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {bic: {"default": "Please enter a valid BIC number"}}}), FormValidation.Validator.bic = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "bic");
              return "" === c ? !0 : /^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$/.test(c)
          }
      }
  }(jQuery), function () {
      FormValidation.Validator.blank = {
          validate: function () {
              return !0
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {callback: {"default": "Please enter a valid value"}}}), FormValidation.Validator.callback = {
          html5Attributes: {
              message: "message",
              callback: "callback"
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "callback"), f = new a.Deferred, g = {valid: !0};
              if (d.callback) {
                  var h = FormValidation.Helper.call(d.callback, [e, b, c]);
                  g = "boolean" == typeof h || null === h ? {valid: h} : h
              }
              return f.resolve(c, "callback", g), f
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              choice: {
                  "default": "Please enter a valid value",
                  less: "Please choose %s options at minimum",
                  more: "Please choose %s options at maximum",
                  between: "Please choose %s - %s options"
              }
          }
      }), FormValidation.Validator.choice = {
          html5Attributes: {message: "message", min: "min", max: "max"},
          validate: function (b, c, d) {
              var e = b.getLocale(), f = b.getNamespace(),
                  g = c.is("select") ? b.getFieldElements(c.attr("data-" + f + "-field")).find("option").filter(":selected").length : b.getFieldElements(c.attr("data-" + f + "-field")).filter(":checked").length,
                  h = d.min ? a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min) : null,
                  i = d.max ? a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max) : null, j = !0,
                  k = d.message || FormValidation.I18n[e].choice["default"];
              switch ((h && g < parseInt(h, 10) || i && g > parseInt(i, 10)) && (j = !1), !0) {
                  case!!h && !!i:
                      k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.between, [parseInt(h, 10), parseInt(i, 10)]);
                      break;
                  case!!h:
                      k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.less, parseInt(h, 10));
                      break;
                  case!!i:
                      k = FormValidation.Helper.format(d.message || FormValidation.I18n[e].choice.more, parseInt(i, 10))
              }
              return {valid: j, message: k}
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {color: {"default": "Please enter a valid color"}}}), FormValidation.Validator.color = {
          html5Attributes: {
              message: "message",
              type: "type"
          },
          enableByHtml5: function (a) {
              return "color" === a.attr("type")
          },
          SUPPORTED_TYPES: ["hex", "rgb", "rgba", "hsl", "hsla", "keyword"],
          KEYWORD_COLORS: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"],
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "color");
              if ("" === e) return !0;
              if (this.enableByHtml5(c)) return /^#[0-9A-F]{6}$/i.test(e);
              var f = d.type || this.SUPPORTED_TYPES;
              a.isArray(f) || (f = f.replace(/s/g, "").split(","));
              for (var g, h, i = !1, j = 0; j < f.length; j++) if (h = f[j], g = "_" + h.toLowerCase(), i = i || this[g](e)) return !0;
              return !1
          },
          _hex: function (a) {
              return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)
          },
          _hsl: function (a) {
              return /^hsl\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/.test(a)
          },
          _hsla: function (a) {
              return /^hsla\((\s*(-?\d+)\s*,)(\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/.test(a)
          },
          _keyword: function (b) {
              return a.inArray(b, this.KEYWORD_COLORS) >= 0
          },
          _rgb: function (a) {
              var b = /^rgb\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){2}(\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*)\)$/,
                  c = /^rgb\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){2}(\s*(\b(0?\d{1,2}|100)\b%)\s*)\)$/;
              return b.test(a) || c.test(a)
          },
          _rgba: function (a) {
              var b = /^rgba\((\s*(\b([01]?\d{1,2}|2[0-4]\d|25[0-5])\b)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/,
                  c = /^rgba\((\s*(\b(0?\d{1,2}|100)\b%)\s*,){3}(\s*(0?(\.\d+)?|1(\.0+)?)\s*)\)$/;
              return b.test(a) || c.test(a)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {creditCard: {"default": "Please enter a valid credit card number"}}}), FormValidation.Validator.creditCard = {
          validate: function (b, c) {
              var d = b.getFieldValue(c, "creditCard");
              if ("" === d) return !0;
              if (/[^0-9-\s]+/.test(d)) return !1;
              if (d = d.replace(/\D/g, ""), !FormValidation.Helper.luhn(d)) return !1;
              var e, f, g = {
                  AMERICAN_EXPRESS: {length: [15], prefix: ["34", "37"]},
                  DINERS_CLUB: {length: [14], prefix: ["300", "301", "302", "303", "304", "305", "36"]},
                  DINERS_CLUB_US: {length: [16], prefix: ["54", "55"]},
                  DISCOVER: {
                      length: [16],
                      prefix: ["6011", "622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925", "644", "645", "646", "647", "648", "649", "65"]
                  },
                  JCB: {length: [16], prefix: ["3528", "3529", "353", "354", "355", "356", "357", "358"]},
                  LASER: {length: [16, 17, 18, 19], prefix: ["6304", "6706", "6771", "6709"]},
                  MAESTRO: {
                      length: [12, 13, 14, 15, 16, 17, 18, 19],
                      prefix: ["5018", "5020", "5038", "6304", "6759", "6761", "6762", "6763", "6764", "6765", "6766"]
                  },
                  MASTERCARD: {length: [16], prefix: ["51", "52", "53", "54", "55"]},
                  SOLO: {length: [16, 18, 19], prefix: ["6334", "6767"]},
                  UNIONPAY: {
                      length: [16, 17, 18, 19],
                      prefix: ["622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925"]
                  },
                  VISA: {length: [16], prefix: ["4"]}
              };
              for (e in g) for (f in g[e].prefix) if (d.substr(0, g[e].prefix[f].length) === g[e].prefix[f] && -1 !== a.inArray(d.length, g[e].length)) return {
                  valid: !0,
                  type: e
              };
              return !1
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {cusip: {"default": "Please enter a valid CUSIP number"}}}), FormValidation.Validator.cusip = {
          validate: function (b, c) {
              var d = b.getFieldValue(c, "cusip");
              if ("" === d) return !0;
              if (d = d.toUpperCase(), !/^[0-9A-Z]{9}$/.test(d)) return !1;
              for (var e = a.map(d.split(""), function (a) {
                  var b = a.charCodeAt(0);
                  return b >= "A".charCodeAt(0) && b <= "Z".charCodeAt(0) ? b - "A".charCodeAt(0) + 10 : a
              }), f = e.length, g = 0, h = 0; f - 1 > h; h++) {
                  var i = parseInt(e[h], 10);
                  h % 2 !== 0 && (i *= 2), i > 9 && (i -= 9), g += i
              }
              return g = (10 - g % 10) % 10, g === parseInt(e[f - 1], 10)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {cvv: {"default": "Please enter a valid CVV number"}}}), FormValidation.Validator.cvv = {
          html5Attributes: {
              message: "message",
              ccfield: "creditCardField"
          }, init: function (a, b, c) {
              if (c.creditCardField) {
                  var d = a.getFieldElements(c.creditCardField);
                  a.onLiveChange(d, "live_cvv", function () {
                      var c = a.getStatus(b, "cvv");
                      c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
                  })
              }
          }, destroy: function (a, b, c) {
              if (c.creditCardField) {
                  var d = a.getFieldElements(c.creditCardField);
                  a.offLiveChange(d, "live_cvv")
              }
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "cvv");
              if ("" === e) return !0;
              if (!/^[0-9]{3,4}$/.test(e)) return !1;
              if (!d.creditCardField) return !0;
              var f = b.getFieldElements(d.creditCardField).val();
              if ("" === f) return !0;
              f = f.replace(/\D/g, "");
              var g, h, i = {
                  AMERICAN_EXPRESS: {length: [15], prefix: ["34", "37"]},
                  DINERS_CLUB: {length: [14], prefix: ["300", "301", "302", "303", "304", "305", "36"]},
                  DINERS_CLUB_US: {length: [16], prefix: ["54", "55"]},
                  DISCOVER: {
                      length: [16],
                      prefix: ["6011", "622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925", "644", "645", "646", "647", "648", "649", "65"]
                  },
                  JCB: {length: [16], prefix: ["3528", "3529", "353", "354", "355", "356", "357", "358"]},
                  LASER: {length: [16, 17, 18, 19], prefix: ["6304", "6706", "6771", "6709"]},
                  MAESTRO: {
                      length: [12, 13, 14, 15, 16, 17, 18, 19],
                      prefix: ["5018", "5020", "5038", "6304", "6759", "6761", "6762", "6763", "6764", "6765", "6766"]
                  },
                  MASTERCARD: {length: [16], prefix: ["51", "52", "53", "54", "55"]},
                  SOLO: {length: [16, 18, 19], prefix: ["6334", "6767"]},
                  UNIONPAY: {
                      length: [16, 17, 18, 19],
                      prefix: ["622126", "622127", "622128", "622129", "62213", "62214", "62215", "62216", "62217", "62218", "62219", "6222", "6223", "6224", "6225", "6226", "6227", "6228", "62290", "62291", "622920", "622921", "622922", "622923", "622924", "622925"]
                  },
                  VISA: {length: [16], prefix: ["4"]}
              }, j = null;
              for (g in i) for (h in i[g].prefix) if (f.substr(0, i[g].prefix[h].length) === i[g].prefix[h] && -1 !== a.inArray(f.length, i[g].length)) {
                  j = g;
                  break
              }
              return null === j ? !1 : "AMERICAN_EXPRESS" === j ? 4 === e.length : 3 === e.length
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              date: {
                  "default": "Please enter a valid date",
                  min: "Please enter a date after %s",
                  max: "Please enter a date before %s",
                  range: "Please enter a date in the range %s - %s"
              }
          }
      }), FormValidation.Validator.date = {
          html5Attributes: {
              message: "message",
              format: "format",
              min: "min",
              max: "max",
              separator: "separator"
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "date");
              if ("" === e) return !0;
              d.format = d.format || "MM/DD/YYYY", "date" === c.attr("type") && (d.format = "YYYY-MM-DD");
              var f = b.getLocale(), g = d.message || FormValidation.I18n[f].date["default"], h = d.format.split(" "),
                  i = h[0], j = h.length > 1 ? h[1] : null, k = h.length > 2 ? h[2] : null, l = e.split(" "), m = l[0],
                  n = l.length > 1 ? l[1] : null;
              if (h.length !== l.length) return {valid: !1, message: g};
              var o = d.separator;
              if (o || (o = -1 !== m.indexOf("/") ? "/" : -1 !== m.indexOf("-") ? "-" : -1 !== m.indexOf(".") ? "." : null), null === o || -1 === m.indexOf(o)) return {
                  valid: !1,
                  message: g
              };
              if (m = m.split(o), i = i.split(o), m.length !== i.length) return {valid: !1, message: g};
              var p = m[a.inArray("YYYY", i)], q = m[a.inArray("MM", i)], r = m[a.inArray("DD", i)];
              if (!p || !q || !r || 4 !== p.length) return {valid: !1, message: g};
              var s = null, t = null, u = null;
              if (j) {
                  if (j = j.split(":"), n = n.split(":"), j.length !== n.length) return {valid: !1, message: g};
                  if (t = n.length > 0 ? n[0] : null, s = n.length > 1 ? n[1] : null, u = n.length > 2 ? n[2] : null, "" === t || "" === s || "" === u) return {
                      valid: !1,
                      message: g
                  };
                  if (u) {
                      if (isNaN(u) || u.length > 2) return {valid: !1, message: g};
                      if (u = parseInt(u, 10), 0 > u || u > 60) return {valid: !1, message: g}
                  }
                  if (t) {
                      if (isNaN(t) || t.length > 2) return {valid: !1, message: g};
                      if (t = parseInt(t, 10), 0 > t || t >= 24 || k && t > 12) return {valid: !1, message: g}
                  }
                  if (s) {
                      if (isNaN(s) || s.length > 2) return {valid: !1, message: g};
                      if (s = parseInt(s, 10), 0 > s || s > 59) return {valid: !1, message: g}
                  }
              }
              var v = FormValidation.Helper.date(p, q, r), w = null, x = null, y = d.min, z = d.max;
              switch (y && (isNaN(Date.parse(y)) && (y = b.getDynamicOption(c, y)), w = y instanceof Date ? y : this._parseDate(y, i, o), y = y instanceof Date ? this._formatDate(y, d.format) : y), z && (isNaN(Date.parse(z)) && (z = b.getDynamicOption(c, z)), x = z instanceof Date ? z : this._parseDate(z, i, o), z = z instanceof Date ? this._formatDate(z, d.format) : z), m = new Date(p, q - 1, r, t, s, u), !0) {
                  case y && !z && v:
                      v = m.getTime() >= w.getTime(), g = d.message || FormValidation.Helper.format(FormValidation.I18n[f].date.min, y);
                      break;
                  case z && !y && v:
                      v = m.getTime() <= x.getTime(), g = d.message || FormValidation.Helper.format(FormValidation.I18n[f].date.max, z);
                      break;
                  case z && y && v:
                      v = m.getTime() <= x.getTime() && m.getTime() >= w.getTime(), g = d.message || FormValidation.Helper.format(FormValidation.I18n[f].date.range, [y, z])
              }
              return {valid: v, message: g}
          }, _parseDate: function (b, c, d) {
              var e = 0, f = 0, g = 0, h = b.split(" "), i = h[0], j = h.length > 1 ? h[1] : null;
              i = i.split(d);
              var k = i[a.inArray("YYYY", c)], l = i[a.inArray("MM", c)], m = i[a.inArray("DD", c)];
              return j && (j = j.split(":"), f = j.length > 0 ? j[0] : null, e = j.length > 1 ? j[1] : null, g = j.length > 2 ? j[2] : null), new Date(k, l - 1, m, f, e, g)
          }, _formatDate: function (a, b) {
              b = b.replace(/Y/g, "y").replace(/M/g, "m").replace(/D/g, "d").replace(/:m/g, ":M").replace(/:mm/g, ":MM").replace(/:S/, ":s").replace(/:SS/, ":ss");
              var c = {
                  d: function (a) {
                      return a.getDate()
                  }, dd: function (a) {
                      var b = a.getDate();
                      return 10 > b ? "0" + b : b
                  }, m: function (a) {
                      return a.getMonth() + 1
                  }, mm: function (a) {
                      var b = a.getMonth() + 1;
                      return 10 > b ? "0" + b : b
                  }, yy: function (a) {
                      return ("" + a.getFullYear()).substr(2)
                  }, yyyy: function (a) {
                      return a.getFullYear()
                  }, h: function (a) {
                      return a.getHours() % 12 || 12
                  }, hh: function (a) {
                      var b = a.getHours() % 12 || 12;
                      return 10 > b ? "0" + b : b
                  }, H: function (a) {
                      return a.getHours()
                  }, HH: function (a) {
                      var b = a.getHours();
                      return 10 > b ? "0" + b : b
                  }, M: function (a) {
                      return a.getMinutes()
                  }, MM: function (a) {
                      var b = a.getMinutes();
                      return 10 > b ? "0" + b : b
                  }, s: function (a) {
                      return a.getSeconds()
                  }, ss: function (a) {
                      var b = a.getSeconds();
                      return 10 > b ? "0" + b : b
                  }
              };
              return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMs])\1?|"[^"]*"|'[^']*'/g, function (b) {
                  return c[b] ? c[b](a) : b.slice(1, b.length - 1)
              })
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {different: {"default": "Please enter a different value"}}}), FormValidation.Validator.different = {
          html5Attributes: {
              message: "message",
              field: "field"
          }, init: function (a, b, c) {
              for (var d = c.field.split(","), e = 0; e < d.length; e++) {
                  var f = a.getFieldElements(d[e]);
                  a.onLiveChange(f, "live_different", function () {
                      var c = a.getStatus(b, "different");
                      c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
                  })
              }
          }, destroy: function (a, b, c) {
              for (var d = c.field.split(","), e = 0; e < d.length; e++) {
                  var f = a.getFieldElements(d[e]);
                  a.offLiveChange(f, "live_different")
              }
          }, validate: function (a, b, c) {
              var d = a.getFieldValue(b, "different");
              if ("" === d) return !0;
              for (var e = c.field.split(","), f = !0, g = 0; g < e.length; g++) {
                  var h = a.getFieldElements(e[g]);
                  if (null != h && 0 !== h.length) {
                      var i = a.getFieldValue(h, "different");
                      d === i ? f = !1 : "" !== i && a.updateStatus(h, a.STATUS_VALID, "different")
                  }
              }
              return f
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {digits: {"default": "Please enter only digits"}}}), FormValidation.Validator.digits = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "digits");
              return "" === c ? !0 : /^\d+$/.test(c)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {ean: {"default": "Please enter a valid EAN number"}}}), FormValidation.Validator.ean = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "ean");
              if ("" === c) return !0;
              if (!/^(\d{8}|\d{12}|\d{13})$/.test(c)) return !1;
              for (var d = c.length, e = 0, f = 8 === d ? [3, 1] : [1, 3], g = 0; d - 1 > g; g++) e += parseInt(c.charAt(g), 10) * f[g % 2];
              return e = (10 - e % 10) % 10, e + "" === c.charAt(d - 1)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {ein: {"default": "Please enter a valid EIN number"}}}), FormValidation.Validator.ein = {
          CAMPUS: {
              ANDOVER: ["10", "12"],
              ATLANTA: ["60", "67"],
              AUSTIN: ["50", "53"],
              BROOKHAVEN: ["01", "02", "03", "04", "05", "06", "11", "13", "14", "16", "21", "22", "23", "25", "34", "51", "52", "54", "55", "56", "57", "58", "59", "65"],
              CINCINNATI: ["30", "32", "35", "36", "37", "38", "61"],
              FRESNO: ["15", "24"],
              KANSAS_CITY: ["40", "44"],
              MEMPHIS: ["94", "95"],
              OGDEN: ["80", "90"],
              PHILADELPHIA: ["33", "39", "41", "42", "43", "46", "48", "62", "63", "64", "66", "68", "71", "72", "73", "74", "75", "76", "77", "81", "82", "83", "84", "85", "86", "87", "88", "91", "92", "93", "98", "99"],
              INTERNET: ["20", "26", "27", "45", "46"],
              SMALL_BUSINESS_ADMINISTRATION: ["31"]
          }, validate: function (b, c) {
              var d = b.getFieldValue(c, "ein");
              if ("" === d) return !0;
              if (!/^[0-9]{2}-?[0-9]{7}$/.test(d)) return !1;
              var e = d.substr(0, 2) + "";
              for (var f in this.CAMPUS) if (-1 !== a.inArray(e, this.CAMPUS[f])) return {valid: !0, campus: f};
              return !1
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {emailAddress: {"default": "Please enter a valid email address"}}}), FormValidation.Validator.emailAddress = {
          html5Attributes: {
              message: "message",
              multiple: "multiple",
              separator: "separator"
          }, enableByHtml5: function (a) {
              return "email" === a.attr("type")
          }, validate: function (a, b, c) {
              var d = a.getFieldValue(b, "emailAddress");
              if ("" === d) return !0;
              var e = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
                  f = c.multiple === !0 || "true" === c.multiple;
              if (f) {
                  for (var g = c.separator || /[,;]/, h = this._splitEmailAddresses(d, g), i = 0; i < h.length; i++) if (!e.test(h[i])) return !1;
                  return !0
              }
              return e.test(d)
          }, _splitEmailAddresses: function (a, b) {
              for (var c = a.split(/"/), d = c.length, e = [], f = "", g = 0; d > g; g++) if (g % 2 === 0) {
                  var h = c[g].split(b), i = h.length;
                  if (1 === i) f += h[0]; else {
                      e.push(f + h[0]);
                      for (var j = 1; i - 1 > j; j++) e.push(h[j]);
                      f = h[i - 1]
                  }
              } else f += '"' + c[g], d - 1 > g && (f += '"');
              return e.push(f), e
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {file: {"default": "Please choose a valid file"}}}), FormValidation.Validator.file = {
          html5Attributes: {
              extension: "extension",
              maxfiles: "maxFiles",
              minfiles: "minFiles",
              maxsize: "maxSize",
              minsize: "minSize",
              maxtotalsize: "maxTotalSize",
              mintotalsize: "minTotalSize",
              message: "message",
              type: "type"
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "file");
              if ("" === e) return !0;
              var f, g = d.extension ? d.extension.toLowerCase().split(",") : null,
                  h = d.type ? d.type.toLowerCase().split(",") : null,
                  i = window.File && window.FileList && window.FileReader;
              if (i) {
                  var j = c.get(0).files, k = j.length, l = 0;
                  if (d.maxFiles && k > parseInt(d.maxFiles, 10) || d.minFiles && k < parseInt(d.minFiles, 10)) return !1;
                  for (var m = 0; k > m; m++) if (l += j[m].size, f = j[m].name.substr(j[m].name.lastIndexOf(".") + 1), d.minSize && j[m].size < parseInt(d.minSize, 10) || d.maxSize && j[m].size > parseInt(d.maxSize, 10) || g && -1 === a.inArray(f.toLowerCase(), g) || j[m].type && h && -1 === a.inArray(j[m].type.toLowerCase(), h)) return !1;
                  if (d.maxTotalSize && l > parseInt(d.maxTotalSize, 10) || d.minTotalSize && l < parseInt(d.minTotalSize, 10)) return !1
              } else if (f = e.substr(e.lastIndexOf(".") + 1), g && -1 === a.inArray(f.toLowerCase(), g)) return !1;
              return !0
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              greaterThan: {
                  "default": "Please enter a value greater than or equal to %s",
                  notInclusive: "Please enter a value greater than %s"
              }
          }
      }), FormValidation.Validator.greaterThan = {
          html5Attributes: {
              message: "message",
              value: "value",
              inclusive: "inclusive"
          }, enableByHtml5: function (a) {
              var b = a.attr("type"), c = a.attr("min");
              return c && "date" !== b ? {value: c} : !1
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "greaterThan");
              if ("" === e) return !0;
              if (e = this._format(e), !a.isNumeric(e)) return !1;
              var f = b.getLocale(), g = a.isNumeric(d.value) ? d.value : b.getDynamicOption(c, d.value),
                  h = this._format(g);
              return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
                  valid: e >= h,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].greaterThan["default"], g)
              } : {
                  valid: e > h,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].greaterThan.notInclusive, g)
              }
          }, _format: function (a) {
              return (a + "").replace(",", ".")
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {grid: {"default": "Please enter a valid GRId number"}}}), FormValidation.Validator.grid = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "grid");
              return "" === c ? !0 : (c = c.toUpperCase(), /^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(c) ? (c = c.replace(/\s/g, "").replace(/-/g, ""), "GRID:" === c.substr(0, 5) && (c = c.substr(5)), FormValidation.Helper.mod37And36(c)) : !1)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {hex: {"default": "Please enter a valid hexadecimal number"}}}), FormValidation.Validator.hex = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "hex");
              return "" === c ? !0 : /^[0-9a-fA-F]+$/.test(c)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              iban: {
                  "default": "Please enter a valid IBAN number",
                  country: "Please enter a valid IBAN number in %s",
                  countries: {
                      AD: "Andorra",
                      AE: "United Arab Emirates",
                      AL: "Albania",
                      AO: "Angola",
                      AT: "Austria",
                      AZ: "Azerbaijan",
                      BA: "Bosnia and Herzegovina",
                      BE: "Belgium",
                      BF: "Burkina Faso",
                      BG: "Bulgaria",
                      BH: "Bahrain",
                      BI: "Burundi",
                      BJ: "Benin",
                      BR: "Brazil",
                      CH: "Switzerland",
                      CI: "Ivory Coast",
                      CM: "Cameroon",
                      CR: "Costa Rica",
                      CV: "Cape Verde",
                      CY: "Cyprus",
                      CZ: "Czech Republic",
                      DE: "Germany",
                      DK: "Denmark",
                      DO: "Dominican Republic",
                      DZ: "Algeria",
                      EE: "Estonia",
                      ES: "Spain",
                      FI: "Finland",
                      FO: "Faroe Islands",
                      FR: "France",
                      GB: "United Kingdom",
                      GE: "Georgia",
                      GI: "Gibraltar",
                      GL: "Greenland",
                      GR: "Greece",
                      GT: "Guatemala",
                      HR: "Croatia",
                      HU: "Hungary",
                      IE: "Ireland",
                      IL: "Israel",
                      IR: "Iran",
                      IS: "Iceland",
                      IT: "Italy",
                      JO: "Jordan",
                      KW: "Kuwait",
                      KZ: "Kazakhstan",
                      LB: "Lebanon",
                      LI: "Liechtenstein",
                      LT: "Lithuania",
                      LU: "Luxembourg",
                      LV: "Latvia",
                      MC: "Monaco",
                      MD: "Moldova",
                      ME: "Montenegro",
                      MG: "Madagascar",
                      MK: "Macedonia",
                      ML: "Mali",
                      MR: "Mauritania",
                      MT: "Malta",
                      MU: "Mauritius",
                      MZ: "Mozambique",
                      NL: "Netherlands",
                      NO: "Norway",
                      PK: "Pakistan",
                      PL: "Poland",
                      PS: "Palestine",
                      PT: "Portugal",
                      QA: "Qatar",
                      RO: "Romania",
                      RS: "Serbia",
                      SA: "Saudi Arabia",
                      SE: "Sweden",
                      SI: "Slovenia",
                      SK: "Slovakia",
                      SM: "San Marino",
                      SN: "Senegal",
                      TN: "Tunisia",
                      TR: "Turkey",
                      VG: "Virgin Islands, British"
                  }
              }
          }
      }), FormValidation.Validator.iban = {
          html5Attributes: {message: "message", country: "country"},
          REGEX: {
              AD: "AD[0-9]{2}[0-9]{4}[0-9]{4}[A-Z0-9]{12}",
              AE: "AE[0-9]{2}[0-9]{3}[0-9]{16}",
              AL: "AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}",
              AO: "AO[0-9]{2}[0-9]{21}",
              AT: "AT[0-9]{2}[0-9]{5}[0-9]{11}",
              AZ: "AZ[0-9]{2}[A-Z]{4}[A-Z0-9]{20}",
              BA: "BA[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{8}[0-9]{2}",
              BE: "BE[0-9]{2}[0-9]{3}[0-9]{7}[0-9]{2}",
              BF: "BF[0-9]{2}[0-9]{23}",
              BG: "BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}",
              BH: "BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}",
              BI: "BI[0-9]{2}[0-9]{12}",
              BJ: "BJ[0-9]{2}[A-Z]{1}[0-9]{23}",
              BR: "BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z][A-Z0-9]",
              CH: "CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
              CI: "CI[0-9]{2}[A-Z]{1}[0-9]{23}",
              CM: "CM[0-9]{2}[0-9]{23}",
              CR: "CR[0-9]{2}[0-9]{3}[0-9]{14}",
              CV: "CV[0-9]{2}[0-9]{21}",
              CY: "CY[0-9]{2}[0-9]{3}[0-9]{5}[A-Z0-9]{16}",
              CZ: "CZ[0-9]{2}[0-9]{20}",
              DE: "DE[0-9]{2}[0-9]{8}[0-9]{10}",
              DK: "DK[0-9]{2}[0-9]{14}",
              DO: "DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}",
              DZ: "DZ[0-9]{2}[0-9]{20}",
              EE: "EE[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{11}[0-9]{1}",
              ES: "ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{1}[0-9]{1}[0-9]{10}",
              FI: "FI[0-9]{2}[0-9]{6}[0-9]{7}[0-9]{1}",
              FO: "FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
              FR: "FR[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
              GB: "GB[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
              GE: "GE[0-9]{2}[A-Z]{2}[0-9]{16}",
              GI: "GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}",
              GL: "GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",
              GR: "GR[0-9]{2}[0-9]{3}[0-9]{4}[A-Z0-9]{16}",
              GT: "GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}",
              HR: "HR[0-9]{2}[0-9]{7}[0-9]{10}",
              HU: "HU[0-9]{2}[0-9]{3}[0-9]{4}[0-9]{1}[0-9]{15}[0-9]{1}",
              IE: "IE[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",
              IL: "IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}",
              IR: "IR[0-9]{2}[0-9]{22}",
              IS: "IS[0-9]{2}[0-9]{4}[0-9]{2}[0-9]{6}[0-9]{10}",
              IT: "IT[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
              JO: "JO[0-9]{2}[A-Z]{4}[0-9]{4}[0]{8}[A-Z0-9]{10}",
              KW: "KW[0-9]{2}[A-Z]{4}[0-9]{22}",
              KZ: "KZ[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
              LB: "LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}",
              LI: "LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}",
              LT: "LT[0-9]{2}[0-9]{5}[0-9]{11}",
              LU: "LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}",
              LV: "LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}",
              MC: "MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",
              MD: "MD[0-9]{2}[A-Z0-9]{20}",
              ME: "ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
              MG: "MG[0-9]{2}[0-9]{23}",
              MK: "MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}",
              ML: "ML[0-9]{2}[A-Z]{1}[0-9]{23}",
              MR: "MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}",
              MT: "MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}",
              MU: "MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{3}",
              MZ: "MZ[0-9]{2}[0-9]{21}",
              NL: "NL[0-9]{2}[A-Z]{4}[0-9]{10}",
              NO: "NO[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{1}",
              PK: "PK[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
              PL: "PL[0-9]{2}[0-9]{8}[0-9]{16}",
              PS: "PS[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
              PT: "PT[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{11}[0-9]{2}",
              QA: "QA[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",
              RO: "RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",
              RS: "RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
              SA: "SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}",
              SE: "SE[0-9]{2}[0-9]{3}[0-9]{16}[0-9]{1}",
              SI: "SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}",
              SK: "SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}",
              SM: "SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",
              SN: "SN[0-9]{2}[A-Z]{1}[0-9]{23}",
              TN: "TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",
              TR: "TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}",
              VG: "VG[0-9]{2}[A-Z]{4}[0-9]{16}"
          },
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "iban");
              if ("" === e) return !0;
              e = e.replace(/[^a-zA-Z0-9]/g, "").toUpperCase();
              var f = d.country;
              f ? "string" == typeof f && this.REGEX[f] || (f = b.getDynamicOption(c, f)) : f = e.substr(0, 2);
              var g = b.getLocale();
              if (!this.REGEX[f]) return !0;
              if (!new RegExp("^" + this.REGEX[f] + "$").test(e)) return {
                  valid: !1,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[g].iban.country, FormValidation.I18n[g].iban.countries[f])
              };
              e = e.substr(4) + e.substr(0, 4), e = a.map(e.split(""), function (a) {
                  var b = a.charCodeAt(0);
                  return b >= "A".charCodeAt(0) && b <= "Z".charCodeAt(0) ? b - "A".charCodeAt(0) + 10 : a
              }), e = e.join("");
              for (var h = parseInt(e.substr(0, 1), 10), i = e.length, j = 1; i > j; ++j) h = (10 * h + parseInt(e.substr(j, 1), 10)) % 97;
              return {
                  valid: 1 === h,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[g].iban.country, FormValidation.I18n[g].iban.countries[f])
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              id: {
                  "default": "Please enter a valid identification number",
                  country: "Please enter a valid identification number in %s",
                  countries: {
                      BA: "Bosnia and Herzegovina",
                      BG: "Bulgaria",
                      BR: "Brazil",
                      CH: "Switzerland",
                      CL: "Chile",
                      CN: "China",
                      CZ: "Czech Republic",
                      DK: "Denmark",
                      EE: "Estonia",
                      ES: "Spain",
                      FI: "Finland",
                      HR: "Croatia",
                      IE: "Ireland",
                      IS: "Iceland",
                      LT: "Lithuania",
                      LV: "Latvia",
                      ME: "Montenegro",
                      MK: "Macedonia",
                      NL: "Netherlands",
                      PL: "Poland",
                      RO: "Romania",
                      RS: "Serbia",
                      SE: "Sweden",
                      SI: "Slovenia",
                      SK: "Slovakia",
                      SM: "San Marino",
                      TH: "Thailand",
                      ZA: "South Africa"
                  }
              }
          }
      }), FormValidation.Validator.id = {
          html5Attributes: {message: "message", country: "country"},
          COUNTRY_CODES: ["BA", "BG", "BR", "CH", "CL", "CN", "CZ", "DK", "EE", "ES", "FI", "HR", "IE", "IS", "LT", "LV", "ME", "MK", "NL", "PL", "RO", "RS", "SE", "SI", "SK", "SM", "TH", "ZA"],
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "id");
              if ("" === e) return !0;
              var f = b.getLocale(), g = d.country;
              if (g ? ("string" != typeof g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)) : g = e.substr(0, 2), -1 === a.inArray(g, this.COUNTRY_CODES)) return !0;
              var h = ["_", g.toLowerCase()].join("");
              return this[h](e) ? !0 : {
                  valid: !1,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].id.country, FormValidation.I18n[f].id.countries[g.toUpperCase()])
              }
          },
          _validateJMBG: function (a, b) {
              if (!/^\d{13}$/.test(a)) return !1;
              var c = parseInt(a.substr(0, 2), 10), d = parseInt(a.substr(2, 2), 10),
                  e = (parseInt(a.substr(4, 3), 10), parseInt(a.substr(7, 2), 10)), f = parseInt(a.substr(12, 1), 10);
              if (c > 31 || d > 12) return !1;
              for (var g = 0, h = 0; 6 > h; h++) g += (7 - h) * (parseInt(a.charAt(h), 10) + parseInt(a.charAt(h + 6), 10));
              if (g = 11 - g % 11, (10 === g || 11 === g) && (g = 0), g !== f) return !1;
              switch (b.toUpperCase()) {
                  case"BA":
                      return e >= 10 && 19 >= e;
                  case"MK":
                      return e >= 41 && 49 >= e;
                  case"ME":
                      return e >= 20 && 29 >= e;
                  case"RS":
                      return e >= 70 && 99 >= e;
                  case"SI":
                      return e >= 50 && 59 >= e;
                  default:
                      return !0
              }
          },
          _ba: function (a) {
              return this._validateJMBG(a, "BA")
          },
          _mk: function (a) {
              return this._validateJMBG(a, "MK")
          },
          _me: function (a) {
              return this._validateJMBG(a, "ME")
          },
          _rs: function (a) {
              return this._validateJMBG(a, "RS")
          },
          _si: function (a) {
              return this._validateJMBG(a, "SI")
          },
          _bg: function (a) {
              if (!/^\d{10}$/.test(a) && !/^\d{6}\s\d{3}\s\d{1}$/.test(a)) return !1;
              a = a.replace(/\s/g, "");
              var b = parseInt(a.substr(0, 2), 10) + 1900, c = parseInt(a.substr(2, 2), 10),
                  d = parseInt(a.substr(4, 2), 10);
              if (c > 40 ? (b += 100, c -= 40) : c > 20 && (b -= 100, c -= 20), !FormValidation.Helper.date(b, c, d)) return !1;
              for (var e = 0, f = [2, 4, 8, 5, 10, 9, 7, 3, 6], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
              return e = e % 11 % 10, e + "" === a.substr(9, 1)
          },
          _br: function (a) {
              if (a = a.replace(/\D/g, ""), !/^\d{11}$/.test(a) || /^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(a)) return !1;
              for (var b = 0, c = 0; 9 > c; c++) b += (10 - c) * parseInt(a.charAt(c), 10);
              if (b = 11 - b % 11, (10 === b || 11 === b) && (b = 0), b + "" !== a.charAt(9)) return !1;
              var d = 0;
              for (c = 0; 10 > c; c++) d += (11 - c) * parseInt(a.charAt(c), 10);
              return d = 11 - d % 11, (10 === d || 11 === d) && (d = 0), d + "" === a.charAt(10)
          },
          _ch: function (a) {
              if (!/^756[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{2}$/.test(a)) return !1;
              a = a.replace(/\D/g, "").substr(3);
              for (var b = a.length, c = 0, d = 8 === b ? [3, 1] : [1, 3], e = 0; b - 1 > e; e++) c += parseInt(a.charAt(e), 10) * d[e % 2];
              return c = 10 - c % 10, c + "" === a.charAt(b - 1)
          },
          _cl: function (a) {
              if (!/^\d{7,8}[-]{0,1}[0-9K]$/i.test(a)) return !1;
              for (a = a.replace(/\-/g, ""); a.length < 9;) a = "0" + a;
              for (var b = 0, c = [3, 2, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b = 11 - b % 11, 11 === b ? b = 0 : 10 === b && (b = "K"), b + "" === a.charAt(8).toUpperCase()
          },
          _cn: function (b) {
              if (b = b.trim(), !/^\d{15}$/.test(b) && !/^\d{17}[\dXx]{1}$/.test(b)) return !1;
              var c = {
                  11: {0: [0], 1: [[0, 9], [11, 17]], 2: [0, 28, 29]},
                  12: {0: [0], 1: [[0, 16]], 2: [0, 21, 23, 25]},
                  13: {
                      0: [0],
                      1: [[0, 5], 7, 8, 21, [23, 33], [81, 85]],
                      2: [[0, 5], [7, 9], [23, 25], 27, 29, 30, 81, 83],
                      3: [[0, 4], [21, 24]],
                      4: [[0, 4], 6, 21, [23, 35], 81],
                      5: [[0, 3], [21, 35], 81, 82],
                      6: [[0, 4], [21, 38], [81, 84]],
                      7: [[0, 3], 5, 6, [21, 33]],
                      8: [[0, 4], [21, 28]],
                      9: [[0, 3], [21, 30], [81, 84]],
                      10: [[0, 3], [22, 26], 28, 81, 82],
                      11: [[0, 2], [21, 28], 81, 82]
                  },
                  14: {
                      0: [0],
                      1: [0, 1, [5, 10], [21, 23], 81],
                      2: [[0, 3], 11, 12, [21, 27]],
                      3: [[0, 3], 11, 21, 22],
                      4: [[0, 2], 11, 21, [23, 31], 81],
                      5: [[0, 2], 21, 22, 24, 25, 81],
                      6: [[0, 3], [21, 24]],
                      7: [[0, 2], [21, 29], 81],
                      8: [[0, 2], [21, 30], 81, 82],
                      9: [[0, 2], [21, 32], 81],
                      10: [[0, 2], [21, 34], 81, 82],
                      11: [[0, 2], [21, 30], 81, 82],
                      23: [[0, 3], 22, 23, [25, 30], 32, 33]
                  },
                  15: {
                      0: [0],
                      1: [[0, 5], [21, 25]],
                      2: [[0, 7], [21, 23]],
                      3: [[0, 4]],
                      4: [[0, 4], [21, 26], [28, 30]],
                      5: [[0, 2], [21, 26], 81],
                      6: [[0, 2], [21, 27]],
                      7: [[0, 3], [21, 27], [81, 85]],
                      8: [[0, 2], [21, 26]],
                      9: [[0, 2], [21, 29], 81],
                      22: [[0, 2], [21, 24]],
                      25: [[0, 2], [22, 31]],
                      26: [[0, 2], [24, 27], [29, 32], 34],
                      28: [0, 1, [22, 27]],
                      29: [0, [21, 23]]
                  },
                  21: {
                      0: [0],
                      1: [[0, 6], [11, 14], [22, 24], 81],
                      2: [[0, 4], [11, 13], 24, [81, 83]],
                      3: [[0, 4], 11, 21, 23, 81],
                      4: [[0, 4], 11, [21, 23]],
                      5: [[0, 5], 21, 22],
                      6: [[0, 4], 24, 81, 82],
                      7: [[0, 3], 11, 26, 27, 81, 82],
                      8: [[0, 4], 11, 81, 82],
                      9: [[0, 5], 11, 21, 22],
                      10: [[0, 5], 11, 21, 81],
                      11: [[0, 3], 21, 22],
                      12: [[0, 2], 4, 21, 23, 24, 81, 82],
                      13: [[0, 3], 21, 22, 24, 81, 82],
                      14: [[0, 4], 21, 22, 81]
                  },
                  22: {
                      0: [0],
                      1: [[0, 6], 12, 22, [81, 83]],
                      2: [[0, 4], 11, 21, [81, 84]],
                      3: [[0, 3], 22, 23, 81, 82],
                      4: [[0, 3], 21, 22],
                      5: [[0, 3], 21, 23, 24, 81, 82],
                      6: [[0, 2], 4, 5, [21, 23], 25, 81],
                      7: [[0, 2], [21, 24], 81],
                      8: [[0, 2], 21, 22, 81, 82],
                      24: [[0, 6], 24, 26]
                  },
                  23: {
                      0: [0],
                      1: [[0, 12], 21, [23, 29], [81, 84]],
                      2: [[0, 8], 21, [23, 25], 27, [29, 31], 81],
                      3: [[0, 7], 21, 81, 82],
                      4: [[0, 7], 21, 22],
                      5: [[0, 3], 5, 6, [21, 24]],
                      6: [[0, 6], [21, 24]],
                      7: [[0, 16], 22, 81],
                      8: [[0, 5], 11, 22, 26, 28, 33, 81, 82],
                      9: [[0, 4], 21],
                      10: [[0, 5], 24, 25, 81, [83, 85]],
                      11: [[0, 2], 21, 23, 24, 81, 82],
                      12: [[0, 2], [21, 26], [81, 83]],
                      27: [[0, 4], [21, 23]]
                  },
                  31: {0: [0], 1: [0, 1, [3, 10], [12, 20]], 2: [0, 30]},
                  32: {
                      0: [0],
                      1: [[0, 7], 11, [13, 18], 24, 25],
                      2: [[0, 6], 11, 81, 82],
                      3: [[0, 5], 11, 12, [21, 24], 81, 82],
                      4: [[0, 2], 4, 5, 11, 12, 81, 82],
                      5: [[0, 9], [81, 85]],
                      6: [[0, 2], 11, 12, 21, 23, [81, 84]],
                      7: [0, 1, 3, 5, 6, [21, 24]],
                      8: [[0, 4], 11, 26, [29, 31]],
                      9: [[0, 3], [21, 25], 28, 81, 82],
                      10: [[0, 3], 11, 12, 23, 81, 84, 88],
                      11: [[0, 2], 11, 12, [81, 83]],
                      12: [[0, 4], [81, 84]],
                      13: [[0, 2], 11, [21, 24]]
                  },
                  33: {
                      0: [0],
                      1: [[0, 6], [8, 10], 22, 27, 82, 83, 85],
                      2: [0, 1, [3, 6], 11, 12, 25, 26, [81, 83]],
                      3: [[0, 4], 22, 24, [26, 29], 81, 82],
                      4: [[0, 2], 11, 21, 24, [81, 83]],
                      5: [[0, 3], [21, 23]],
                      6: [[0, 2], 21, 24, [81, 83]],
                      7: [[0, 3], 23, 26, 27, [81, 84]],
                      8: [[0, 3], 22, 24, 25, 81],
                      9: [[0, 3], 21, 22],
                      10: [[0, 4], [21, 24], 81, 82],
                      11: [[0, 2], [21, 27], 81]
                  },
                  34: {
                      0: [0],
                      1: [[0, 4], 11, [21, 24], 81],
                      2: [[0, 4], 7, 8, [21, 23], 25],
                      3: [[0, 4], 11, [21, 23]],
                      4: [[0, 6], 21],
                      5: [[0, 4], 6, [21, 23]],
                      6: [[0, 4], 21],
                      7: [[0, 3], 11, 21],
                      8: [[0, 3], 11, [22, 28], 81],
                      10: [[0, 4], [21, 24]],
                      11: [[0, 3], 22, [24, 26], 81, 82],
                      12: [[0, 4], 21, 22, 25, 26, 82],
                      13: [[0, 2], [21, 24]],
                      14: [[0, 2], [21, 24]],
                      15: [[0, 3], [21, 25]],
                      16: [[0, 2], [21, 23]],
                      17: [[0, 2], [21, 23]],
                      18: [[0, 2], [21, 25], 81]
                  },
                  35: {
                      0: [0],
                      1: [[0, 5], 11, [21, 25], 28, 81, 82],
                      2: [[0, 6], [11, 13]],
                      3: [[0, 5], 22],
                      4: [[0, 3], 21, [23, 30], 81],
                      5: [[0, 5], 21, [24, 27], [81, 83]],
                      6: [[0, 3], [22, 29], 81],
                      7: [[0, 2], [21, 25], [81, 84]],
                      8: [[0, 2], [21, 25], 81],
                      9: [[0, 2], [21, 26], 81, 82]
                  },
                  36: {
                      0: [0],
                      1: [[0, 5], 11, [21, 24]],
                      2: [[0, 3], 22, 81],
                      3: [[0, 2], 13, [21, 23]],
                      4: [[0, 3], 21, [23, 30], 81, 82],
                      5: [[0, 2], 21],
                      6: [[0, 2], 22, 81],
                      7: [[0, 2], [21, 35], 81, 82],
                      8: [[0, 3], [21, 30], 81],
                      9: [[0, 2], [21, 26], [81, 83]],
                      10: [[0, 2], [21, 30]],
                      11: [[0, 2], [21, 30], 81]
                  },
                  37: {
                      0: [0],
                      1: [[0, 5], 12, 13, [24, 26], 81],
                      2: [[0, 3], 5, [11, 14], [81, 85]],
                      3: [[0, 6], [21, 23]],
                      4: [[0, 6], 81],
                      5: [[0, 3], [21, 23]],
                      6: [[0, 2], [11, 13], 34, [81, 87]],
                      7: [[0, 5], 24, 25, [81, 86]],
                      8: [[0, 2], 11, [26, 32], [81, 83]],
                      9: [[0, 3], 11, 21, 23, 82, 83],
                      10: [[0, 2], [81, 83]],
                      11: [[0, 3], 21, 22],
                      12: [[0, 3]],
                      13: [[0, 2], 11, 12, [21, 29]],
                      14: [[0, 2], [21, 28], 81, 82],
                      15: [[0, 2], [21, 26], 81],
                      16: [[0, 2], [21, 26]],
                      17: [[0, 2], [21, 28]]
                  },
                  41: {
                      0: [0],
                      1: [[0, 6], 8, 22, [81, 85]],
                      2: [[0, 5], 11, [21, 25]],
                      3: [[0, 7], 11, [22, 29], 81],
                      4: [[0, 4], 11, [21, 23], 25, 81, 82],
                      5: [[0, 3], 5, 6, 22, 23, 26, 27, 81],
                      6: [[0, 3], 11, 21, 22],
                      7: [[0, 4], 11, 21, [24, 28], 81, 82],
                      8: [[0, 4], 11, [21, 23], 25, [81, 83]],
                      9: [[0, 2], 22, 23, [26, 28]],
                      10: [[0, 2], [23, 25], 81, 82],
                      11: [[0, 4], [21, 23]],
                      12: [[0, 2], 21, 22, 24, 81, 82],
                      13: [[0, 3], [21, 30], 81],
                      14: [[0, 3], [21, 26], 81],
                      15: [[0, 3], [21, 28]],
                      16: [[0, 2], [21, 28], 81],
                      17: [[0, 2], [21, 29]],
                      90: [0, 1]
                  },
                  42: {
                      0: [0],
                      1: [[0, 7], [11, 17]],
                      2: [[0, 5], 22, 81],
                      3: [[0, 3], [21, 25], 81],
                      5: [[0, 6], [25, 29], [81, 83]],
                      6: [[0, 2], 6, 7, [24, 26], [82, 84]],
                      7: [[0, 4]],
                      8: [[0, 2], 4, 21, 22, 81],
                      9: [[0, 2], [21, 23], 81, 82, 84],
                      10: [[0, 3], [22, 24], 81, 83, 87],
                      11: [[0, 2], [21, 27], 81, 82],
                      12: [[0, 2], [21, 24], 81],
                      13: [[0, 3], 21, 81],
                      28: [[0, 2], 22, 23, [25, 28]],
                      90: [0, [4, 6], 21]
                  },
                  43: {
                      0: [0],
                      1: [[0, 5], 11, 12, 21, 22, 24, 81],
                      2: [[0, 4], 11, 21, [23, 25], 81],
                      3: [[0, 2], 4, 21, 81, 82],
                      4: [0, 1, [5, 8], 12, [21, 24], 26, 81, 82],
                      5: [[0, 3], 11, [21, 25], [27, 29], 81],
                      6: [[0, 3], 11, 21, 23, 24, 26, 81, 82],
                      7: [[0, 3], [21, 26], 81],
                      8: [[0, 2], 11, 21, 22],
                      9: [[0, 3], [21, 23], 81],
                      10: [[0, 3], [21, 28], 81],
                      11: [[0, 3], [21, 29]],
                      12: [[0, 2], [21, 30], 81],
                      13: [[0, 2], 21, 22, 81, 82],
                      31: [0, 1, [22, 27], 30]
                  },
                  44: {
                      0: [0],
                      1: [[0, 7], [11, 16], 83, 84],
                      2: [[0, 5], 21, 22, 24, 29, 32, 33, 81, 82],
                      3: [0, 1, [3, 8]],
                      4: [[0, 4]],
                      5: [0, 1, [6, 15], 23, 82, 83],
                      6: [0, 1, [4, 8]],
                      7: [0, 1, [3, 5], 81, [83, 85]],
                      8: [[0, 4], 11, 23, 25, [81, 83]],
                      9: [[0, 3], 23, [81, 83]],
                      12: [[0, 3], [23, 26], 83, 84],
                      13: [[0, 3], [22, 24], 81],
                      14: [[0, 2], [21, 24], 26, 27, 81],
                      15: [[0, 2], 21, 23, 81],
                      16: [[0, 2], [21, 25]],
                      17: [[0, 2], 21, 23, 81],
                      18: [[0, 3], 21, 23, [25, 27], 81, 82],
                      19: [0],
                      20: [0],
                      51: [[0, 3], 21, 22],
                      52: [[0, 3], 21, 22, 24, 81],
                      53: [[0, 2], [21, 23], 81]
                  },
                  45: {
                      0: [0],
                      1: [[0, 9], [21, 27]],
                      2: [[0, 5], [21, 26]],
                      3: [[0, 5], 11, 12, [21, 32]],
                      4: [0, 1, [3, 6], 11, [21, 23], 81],
                      5: [[0, 3], 12, 21],
                      6: [[0, 3], 21, 81],
                      7: [[0, 3], 21, 22],
                      8: [[0, 4], 21, 81],
                      9: [[0, 3], [21, 24], 81],
                      10: [[0, 2], [21, 31]],
                      11: [[0, 2], [21, 23]],
                      12: [[0, 2], [21, 29], 81],
                      13: [[0, 2], [21, 24], 81],
                      14: [[0, 2], [21, 25], 81]
                  },
                  46: {0: [0], 1: [0, 1, [5, 8]], 2: [0, 1], 3: [0, [21, 23]], 90: [[0, 3], [5, 7], [21, 39]]},
                  50: {0: [0], 1: [[0, 19]], 2: [0, [22, 38], [40, 43]], 3: [0, [81, 84]]},
                  51: {
                      0: [0],
                      1: [0, 1, [4, 8], [12, 15], [21, 24], 29, 31, 32, [81, 84]],
                      3: [[0, 4], 11, 21, 22],
                      4: [[0, 3], 11, 21, 22],
                      5: [[0, 4], 21, 22, 24, 25],
                      6: [0, 1, 3, 23, 26, [81, 83]],
                      7: [0, 1, 3, 4, [22, 27], 81],
                      8: [[0, 2], 11, 12, [21, 24]],
                      9: [[0, 4], [21, 23]],
                      10: [[0, 2], 11, 24, 25, 28],
                      11: [[0, 2], [11, 13], 23, 24, 26, 29, 32, 33, 81],
                      13: [[0, 4], [21, 25], 81],
                      14: [[0, 2], [21, 25]],
                      15: [[0, 3], [21, 29]],
                      16: [[0, 3], [21, 23], 81],
                      17: [[0, 3], [21, 25], 81],
                      18: [[0, 3], [21, 27]],
                      19: [[0, 3], [21, 23]],
                      20: [[0, 2], 21, 22, 81],
                      32: [0, [21, 33]],
                      33: [0, [21, 38]],
                      34: [0, 1, [22, 37]]
                  },
                  52: {
                      0: [0],
                      1: [[0, 3], [11, 15], [21, 23], 81],
                      2: [0, 1, 3, 21, 22],
                      3: [[0, 3], [21, 30], 81, 82],
                      4: [[0, 2], [21, 25]],
                      5: [[0, 2], [21, 27]],
                      6: [[0, 3], [21, 28]],
                      22: [0, 1, [22, 30]],
                      23: [0, 1, [22, 28]],
                      24: [0, 1, [22, 28]],
                      26: [0, 1, [22, 36]],
                      27: [[0, 2], 22, 23, [25, 32]]
                  },
                  53: {
                      0: [0],
                      1: [[0, 3], [11, 14], 21, 22, [24, 29], 81],
                      3: [[0, 2], [21, 26], 28, 81],
                      4: [[0, 2], [21, 28]],
                      5: [[0, 2], [21, 24]],
                      6: [[0, 2], [21, 30]],
                      7: [[0, 2], [21, 24]],
                      8: [[0, 2], [21, 29]],
                      9: [[0, 2], [21, 27]],
                      23: [0, 1, [22, 29], 31],
                      25: [[0, 4], [22, 32]],
                      26: [0, 1, [21, 28]],
                      27: [0, 1, [22, 30]],
                      28: [0, 1, 22, 23],
                      29: [0, 1, [22, 32]],
                      31: [0, 2, 3, [22, 24]],
                      34: [0, [21, 23]],
                      33: [0, 21, [23, 25]],
                      35: [0, [21, 28]]
                  },
                  54: {
                      0: [0],
                      1: [[0, 2], [21, 27]],
                      21: [0, [21, 29], 32, 33],
                      22: [0, [21, 29], [31, 33]],
                      23: [0, 1, [22, 38]],
                      24: [0, [21, 31]],
                      25: [0, [21, 27]],
                      26: [0, [21, 27]]
                  },
                  61: {
                      0: [0],
                      1: [[0, 4], [11, 16], 22, [24, 26]],
                      2: [[0, 4], 22],
                      3: [[0, 4], [21, 24], [26, 31]],
                      4: [[0, 4], [22, 31], 81],
                      5: [[0, 2], [21, 28], 81, 82],
                      6: [[0, 2], [21, 32]],
                      7: [[0, 2], [21, 30]],
                      8: [[0, 2], [21, 31]],
                      9: [[0, 2], [21, 29]],
                      10: [[0, 2], [21, 26]]
                  },
                  62: {
                      0: [0],
                      1: [[0, 5], 11, [21, 23]],
                      2: [0, 1],
                      3: [[0, 2], 21],
                      4: [[0, 3], [21, 23]],
                      5: [[0, 3], [21, 25]],
                      6: [[0, 2], [21, 23]],
                      7: [[0, 2], [21, 25]],
                      8: [[0, 2], [21, 26]],
                      9: [[0, 2], [21, 24], 81, 82],
                      10: [[0, 2], [21, 27]],
                      11: [[0, 2], [21, 26]],
                      12: [[0, 2], [21, 28]],
                      24: [0, 21, [24, 29]],
                      26: [0, 21, [23, 30]],
                      29: [0, 1, [21, 27]],
                      30: [0, 1, [21, 27]]
                  },
                  63: {
                      0: [0],
                      1: [[0, 5], [21, 23]],
                      2: [0, 2, [21, 25]],
                      21: [0, [21, 23], [26, 28]],
                      22: [0, [21, 24]],
                      23: [0, [21, 24]],
                      25: [0, [21, 25]],
                      26: [0, [21, 26]],
                      27: [0, 1, [21, 26]],
                      28: [[0, 2], [21, 23]]
                  },
                  64: {
                      0: [0],
                      1: [0, 1, [4, 6], 21, 22, 81],
                      2: [[0, 3], 5, [21, 23]],
                      3: [[0, 3], [21, 24], 81],
                      4: [[0, 2], [21, 25]],
                      5: [[0, 2], 21, 22]
                  },
                  65: {
                      0: [0],
                      1: [[0, 9], 21],
                      2: [[0, 5]],
                      21: [0, 1, 22, 23],
                      22: [0, 1, 22, 23],
                      23: [[0, 3], [23, 25], 27, 28],
                      28: [0, 1, [22, 29]],
                      29: [0, 1, [22, 29]],
                      30: [0, 1, [22, 24]],
                      31: [0, 1, [21, 31]],
                      32: [0, 1, [21, 27]],
                      40: [0, 2, 3, [21, 28]],
                      42: [[0, 2], 21, [23, 26]],
                      43: [0, 1, [21, 26]],
                      90: [[0, 4]],
                      27: [[0, 2], 22, 23]
                  },
                  71: {0: [0]},
                  81: {0: [0]},
                  82: {0: [0]}
              }, d = parseInt(b.substr(0, 2), 10), e = parseInt(b.substr(2, 2), 10), f = parseInt(b.substr(4, 2), 10);
              if (!c[d] || !c[d][e]) return !1;
              for (var g = !1, h = c[d][e], i = 0; i < h.length; i++) if (a.isArray(h[i]) && h[i][0] <= f && f <= h[i][1] || !a.isArray(h[i]) && f === h[i]) {
                  g = !0;
                  break
              }
              if (!g) return !1;
              var j;
              j = 18 === b.length ? b.substr(6, 8) : "19" + b.substr(6, 6);
              var k = parseInt(j.substr(0, 4), 10), l = parseInt(j.substr(4, 2), 10), m = parseInt(j.substr(6, 2), 10);
              if (!FormValidation.Helper.date(k, l, m)) return !1;
              if (18 === b.length) {
                  var n = 0, o = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
                  for (i = 0; 17 > i; i++) n += parseInt(b.charAt(i), 10) * o[i];
                  n = (12 - n % 11) % 11;
                  var p = "X" !== b.charAt(17).toUpperCase() ? parseInt(b.charAt(17), 10) : 10;
                  return p === n
              }
              return !0
          },
          _cz: function (a) {
              if (!/^\d{9,10}$/.test(a)) return !1;
              var b = 1900 + parseInt(a.substr(0, 2), 10), c = parseInt(a.substr(2, 2), 10) % 50 % 20,
                  d = parseInt(a.substr(4, 2), 10);
              if (9 === a.length) {
                  if (b >= 1980 && (b -= 100), b > 1953) return !1
              } else 1954 > b && (b += 100);
              if (!FormValidation.Helper.date(b, c, d)) return !1;
              if (10 === a.length) {
                  var e = parseInt(a.substr(0, 9), 10) % 11;
                  return 1985 > b && (e %= 10), e + "" === a.substr(9, 1)
              }
              return !0
          },
          _dk: function (a) {
              if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(a)) return !1;
              a = a.replace(/-/g, "");
              var b = parseInt(a.substr(0, 2), 10), c = parseInt(a.substr(2, 2), 10), d = parseInt(a.substr(4, 2), 10);
              switch (!0) {
                  case-1 !== "5678".indexOf(a.charAt(6)) && d >= 58:
                      d += 1800;
                      break;
                  case-1 !== "0123".indexOf(a.charAt(6)):
                  case-1 !== "49".indexOf(a.charAt(6)) && d >= 37:
                      d += 1900;
                      break;
                  default:
                      d += 2e3
              }
              return FormValidation.Helper.date(d, c, b)
          },
          _ee: function (a) {
              return this._lt(a)
          },
          _es: function (a) {
              var b = /^[0-9]{8}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(a),
                  c = /^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(a),
                  d = /^[A-HNPQS][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-J]$/.test(a);
              if (!b && !c && !d) return !1;
              a = a.replace(/-/g, "");
              var e;
              if (b || c) {
                  var f = "XYZ".indexOf(a.charAt(0));
                  return -1 !== f && (a = f + a.substr(1) + ""), e = parseInt(a.substr(0, 8), 10), e = "TRWAGMYFPDXBNJZSQVHLCKE"[e % 23], e === a.substr(8, 1)
              }
              e = a.substr(1, 7);
              for (var g = a[0], h = a.substr(-1), i = 0, j = 0; j < e.length; j++) if (j % 2 !== 0) i += parseInt(e[j], 10); else {
                  var k = "" + 2 * parseInt(e[j], 10);
                  i += parseInt(k[0], 10), 2 === k.length && (i += parseInt(k[1], 10))
              }
              var l = i - 10 * Math.floor(i / 10);
              return 0 !== l && (l = 10 - l), -1 !== "KQS".indexOf(g) ? h === "JABCDEFGHI"[l] : -1 !== "ABEH".indexOf(g) ? h === "" + l : h === "" + l || h === "JABCDEFGHI"[l]
          },
          _fi: function (a) {
              if (!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(a)) return !1;
              var b = parseInt(a.substr(0, 2), 10), c = parseInt(a.substr(2, 2), 10), d = parseInt(a.substr(4, 2), 10),
                  e = {"+": 1800, "-": 1900, A: 2e3};
              if (d = e[a.charAt(6)] + d, !FormValidation.Helper.date(d, c, b)) return !1;
              var f = parseInt(a.substr(7, 3), 10);
              if (2 > f) return !1;
              var g = a.substr(0, 6) + a.substr(7, 3) + "";
              return g = parseInt(g, 10), "0123456789ABCDEFHJKLMNPRSTUVWXY".charAt(g % 31) === a.charAt(10)
          },
          _hr: function (a) {
              return /^[0-9]{11}$/.test(a) ? FormValidation.Helper.mod11And10(a) : !1
          },
          _ie: function (a) {
              if (!/^\d{7}[A-W][AHWTX]?$/.test(a)) return !1;
              var b = function (a) {
                  for (; a.length < 7;) a = "0" + a;
                  for (var b = "WABCDEFGHIJKLMNOPQRSTUV", c = 0, d = 0; 7 > d; d++) c += parseInt(a.charAt(d), 10) * (8 - d);
                  return c += 9 * b.indexOf(a.substr(7)), b[c % 23]
              };
              return 9 !== a.length || "A" !== a.charAt(8) && "H" !== a.charAt(8) ? a.charAt(7) === b(a.substr(0, 7)) : a.charAt(7) === b(a.substr(0, 7) + a.substr(8) + "")
          },
          _is: function (a) {
              if (!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(a)) return !1;
              a = a.replace(/-/g, "");
              var b = parseInt(a.substr(0, 2), 10), c = parseInt(a.substr(2, 2), 10), d = parseInt(a.substr(4, 2), 10),
                  e = parseInt(a.charAt(9), 10);
              if (d = 9 === e ? 1900 + d : 100 * (20 + e) + d, !FormValidation.Helper.date(d, c, b, !0)) return !1;
              for (var f = 0, g = [3, 2, 7, 6, 5, 4, 3, 2], h = 0; 8 > h; h++) f += parseInt(a.charAt(h), 10) * g[h];
              return f = 11 - f % 11, f + "" === a.charAt(8)
          },
          _lt: function (a) {
              if (!/^[0-9]{11}$/.test(a)) return !1;
              var b = parseInt(a.charAt(0), 10), c = parseInt(a.substr(1, 2), 10), d = parseInt(a.substr(3, 2), 10),
                  e = parseInt(a.substr(5, 2), 10), f = b % 2 === 0 ? 17 + b / 2 : 17 + (b + 1) / 2;
              if (c = 100 * f + c, !FormValidation.Helper.date(c, d, e, !0)) return !1;
              for (var g = 0, h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1], i = 0; 10 > i; i++) g += parseInt(a.charAt(i), 10) * h[i];
              if (g %= 11, 10 !== g) return g + "" === a.charAt(10);
              for (g = 0, h = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3], i = 0; 10 > i; i++) g += parseInt(a.charAt(i), 10) * h[i];
              return g %= 11, 10 === g && (g = 0), g + "" === a.charAt(10)
          },
          _lv: function (a) {
              if (!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(a)) return !1;
              a = a.replace(/\D/g, "");
              var b = parseInt(a.substr(0, 2), 10), c = parseInt(a.substr(2, 2), 10), d = parseInt(a.substr(4, 2), 10);
              if (d = d + 1800 + 100 * parseInt(a.charAt(6), 10), !FormValidation.Helper.date(d, c, b, !0)) return !1;
              for (var e = 0, f = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9], g = 0; 10 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
              return e = (e + 1) % 11 % 10, e + "" === a.charAt(10)
          },
          _nl: function (a) {
              for (; a.length < 9;) a = "0" + a;
              if (!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(a)) return !1;
              if (a = a.replace(/\./g, ""), 0 === parseInt(a, 10)) return !1;
              for (var b = 0, c = a.length, d = 0; c - 1 > d; d++) b += (9 - d) * parseInt(a.charAt(d), 10);
              return b %= 11, 10 === b && (b = 0), b + "" === a.charAt(c - 1)
          },
          _pl: function (a) {
              if (!/^[0-9]{11}$/.test(a)) return !1;
              for (var b = 0, c = a.length, d = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 7], e = 0; c - 1 > e; e++) b += d[e] * parseInt(a.charAt(e), 10);
              return b %= 10, 0 === b && (b = 10), b = 10 - b, b + "" === a.charAt(c - 1)
          },
          _ro: function (a) {
              if (!/^[0-9]{13}$/.test(a)) return !1;
              var b = parseInt(a.charAt(0), 10);
              if (0 === b || 7 === b || 8 === b) return !1;
              var c = parseInt(a.substr(1, 2), 10), d = parseInt(a.substr(3, 2), 10), e = parseInt(a.substr(5, 2), 10),
                  f = {1: 1900, 2: 1900, 3: 1800, 4: 1800, 5: 2e3, 6: 2e3};
              if (e > 31 && d > 12) return !1;
              if (9 !== b && (c = f[b + ""] + c, !FormValidation.Helper.date(c, d, e))) return !1;
              for (var g = 0, h = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9], i = a.length, j = 0; i - 1 > j; j++) g += parseInt(a.charAt(j), 10) * h[j];
              return g %= 11, 10 === g && (g = 1), g + "" === a.charAt(i - 1)
          },
          _se: function (a) {
              if (!/^[0-9]{10}$/.test(a) && !/^[0-9]{6}[-|+][0-9]{4}$/.test(a)) return !1;
              a = a.replace(/[^0-9]/g, "");
              var b = parseInt(a.substr(0, 2), 10) + 1900, c = parseInt(a.substr(2, 2), 10),
                  d = parseInt(a.substr(4, 2), 10);
              return FormValidation.Helper.date(b, c, d) ? FormValidation.Helper.luhn(a) : !1
          },
          _sk: function (a) {
              return this._cz(a)
          },
          _sm: function (a) {
              return /^\d{5}$/.test(a)
          },
          _th: function (a) {
              if (13 !== a.length) return !1;
              for (var b = 0, c = 0; 12 > c; c++) b += parseInt(a.charAt(c), 10) * (13 - c);
              return (11 - b % 11) % 10 === parseInt(a.charAt(12), 10)
          },
          _za: function (a) {
              if (!/^[0-9]{10}[0|1][8|9][0-9]$/.test(a)) return !1;
              var b = parseInt(a.substr(0, 2), 10), c = (new Date).getFullYear() % 100, d = parseInt(a.substr(2, 2), 10),
                  e = parseInt(a.substr(4, 2), 10);
              return b = b >= c ? b + 1900 : b + 2e3, FormValidation.Helper.date(b, d, e) ? FormValidation.Helper.luhn(a) : !1
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {identical: {"default": "Please enter the same value"}}}), FormValidation.Validator.identical = {
          html5Attributes: {
              message: "message",
              field: "field"
          }, init: function (a, b, c) {
              var d = a.getFieldElements(c.field);
              a.onLiveChange(d, "live_identical", function () {
                  var c = a.getStatus(b, "identical");
                  c !== a.STATUS_NOT_VALIDATED && a.revalidateField(b)
              })
          }, destroy: function (a, b, c) {
              var d = a.getFieldElements(c.field);
              a.offLiveChange(d, "live_identical")
          }, validate: function (a, b, c) {
              var d = a.getFieldValue(b, "identical"), e = a.getFieldElements(c.field);
              if (null === e || 0 === e.length || !e.val() || !b.val()) return !0;
              var f = a.getFieldValue(e, "identical");
              return d === f ? (a.updateStatus(e, a.STATUS_VALID, "identical"), !0) : !1
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {imei: {"default": "Please enter a valid IMEI number"}}}), FormValidation.Validator.imei = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "imei");
              if ("" === c) return !0;
              switch (!0) {
                  case/^\d{15}$/.test(c):
                  case/^\d{2}-\d{6}-\d{6}-\d{1}$/.test(c):
                  case/^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(c):
                      return c = c.replace(/[^0-9]/g, ""), FormValidation.Helper.luhn(c);
                  case/^\d{14}$/.test(c):
                  case/^\d{16}$/.test(c):
                  case/^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(c):
                  case/^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(c):
                      return !0;
                  default:
                      return !1
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {imo: {"default": "Please enter a valid IMO number"}}}), FormValidation.Validator.imo = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "imo");
              if ("" === c) return !0;
              if (!/^IMO \d{7}$/i.test(c)) return !1;
              for (var d = 0, e = c.replace(/^.*(\d{7})$/, "$1"), f = 6; f >= 1; f--) d += e.slice(6 - f, -f) * (f + 1);
              return d % 10 === parseInt(e.charAt(6), 10)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {integer: {"default": "Please enter a valid number"}}}), FormValidation.Validator.integer = {
          enableByHtml5: function (a) {
              return "number" === a.attr("type") && (void 0 === a.attr("step") || a.attr("step") % 1 === 0)
          }, validate: function (a, b) {
              if (this.enableByHtml5(b) && b.get(0).validity && b.get(0).validity.badInput === !0) return !1;
              var c = a.getFieldValue(b, "integer");
              return "" === c ? !0 : /^(?:-?(?:0|[1-9][0-9]*))$/.test(c)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              ip: {
                  "default": "Please enter a valid IP address",
                  ipv4: "Please enter a valid IPv4 address",
                  ipv6: "Please enter a valid IPv6 address"
              }
          }
      }), FormValidation.Validator.ip = {
          html5Attributes: {message: "message", ipv4: "ipv4", ipv6: "ipv6"},
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "ip");
              if ("" === e) return !0;
              d = a.extend({}, {ipv4: !0, ipv6: !0}, d);
              var f, g = b.getLocale(),
                  h = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
                  i = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,
                  j = !1;
              switch (!0) {
                  case d.ipv4 && !d.ipv6:
                      j = h.test(e), f = d.message || FormValidation.I18n[g].ip.ipv4;
                      break;
                  case!d.ipv4 && d.ipv6:
                      j = i.test(e), f = d.message || FormValidation.I18n[g].ip.ipv6;
                      break;
                  case d.ipv4 && d.ipv6:
                  default:
                      j = h.test(e) || i.test(e), f = d.message || FormValidation.I18n[g].ip["default"]
              }
              return {valid: j, message: f}
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {isbn: {"default": "Please enter a valid ISBN number"}}}), FormValidation.Validator.isbn = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "isbn");
              if ("" === c) return !0;
              var d;
              switch (!0) {
                  case/^\d{9}[\dX]$/.test(c):
                  case 13 === c.length && /^(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):
                  case 13 === c.length && /^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):
                      d = "ISBN10";
                      break;
                  case/^(978|979)\d{9}[\dX]$/.test(c):
                  case 17 === c.length && /^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):
                  case 17 === c.length && /^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):
                      d = "ISBN13";
                      break;
                  default:
                      return !1
              }
              c = c.replace(/[^0-9X]/gi, "");
              var e, f, g = c.split(""), h = g.length, i = 0;
              switch (d) {
                  case"ISBN10":
                      for (i = 0, e = 0; h - 1 > e; e++) i += parseInt(g[e], 10) * (10 - e);
                      return f = 11 - i % 11, 11 === f ? f = 0 : 10 === f && (f = "X"), f + "" === g[h - 1];
                  case"ISBN13":
                      for (i = 0, e = 0; h - 1 > e; e++) i += e % 2 === 0 ? parseInt(g[e], 10) : 3 * parseInt(g[e], 10);
                      return f = 10 - i % 10, 10 === f && (f = "0"), f + "" === g[h - 1];
                  default:
                      return !1
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {isin: {"default": "Please enter a valid ISIN number"}}}), FormValidation.Validator.isin = {
          COUNTRY_CODES: "AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW",
          validate: function (a, b) {
              var c = a.getFieldValue(b, "isin");
              if ("" === c) return !0;
              c = c.toUpperCase();
              var d = new RegExp("^(" + this.COUNTRY_CODES + ")[0-9A-Z]{10}$");
              if (!d.test(c)) return !1;
              for (var e = "", f = c.length, g = 0; f - 1 > g; g++) {
                  var h = c.charCodeAt(g);
                  e += h > 57 ? (h - 55).toString() : c.charAt(g)
              }
              var i = "", j = e.length, k = j % 2 !== 0 ? 0 : 1;
              for (g = 0; j > g; g++) i += parseInt(e[g], 10) * (g % 2 === k ? 2 : 1) + "";
              var l = 0;
              for (g = 0; g < i.length; g++) l += parseInt(i.charAt(g), 10);
              return l = (10 - l % 10) % 10, l + "" === c.charAt(f - 1)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {ismn: {"default": "Please enter a valid ISMN number"}}}), FormValidation.Validator.ismn = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "ismn");
              if ("" === c) return !0;
              var d;
              switch (!0) {
                  case/^M\d{9}$/.test(c):
                  case/^M-\d{4}-\d{4}-\d{1}$/.test(c):
                  case/^M\s\d{4}\s\d{4}\s\d{1}$/.test(c):
                      d = "ISMN10";
                      break;
                  case/^9790\d{9}$/.test(c):
                  case/^979-0-\d{4}-\d{4}-\d{1}$/.test(c):
                  case/^979\s0\s\d{4}\s\d{4}\s\d{1}$/.test(c):
                      d = "ISMN13";
                      break;
                  default:
                      return !1
              }
              "ISMN10" === d && (c = "9790" + c.substr(1)), c = c.replace(/[^0-9]/gi, "");
              for (var e = c.length, f = 0, g = [1, 3], h = 0; e - 1 > h; h++) f += parseInt(c.charAt(h), 10) * g[h % 2];
              return f = 10 - f % 10, f + "" === c.charAt(e - 1)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {issn: {"default": "Please enter a valid ISSN number"}}}), FormValidation.Validator.issn = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "issn");
              if ("" === c) return !0;
              if (!/^\d{4}\-\d{3}[\dX]$/.test(c)) return !1;
              c = c.replace(/[^0-9X]/gi, "");
              var d = c.split(""), e = d.length, f = 0;
              "X" === d[7] && (d[7] = 10);
              for (var g = 0; e > g; g++) f += parseInt(d[g], 10) * (8 - g);
              return f % 11 === 0
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              lessThan: {
                  "default": "Please enter a value less than or equal to %s",
                  notInclusive: "Please enter a value less than %s"
              }
          }
      }), FormValidation.Validator.lessThan = {
          html5Attributes: {
              message: "message",
              value: "value",
              inclusive: "inclusive"
          }, enableByHtml5: function (a) {
              var b = a.attr("type"), c = a.attr("max");
              return c && "date" !== b ? {value: c} : !1
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "lessThan");
              if ("" === e) return !0;
              if (e = this._format(e), !a.isNumeric(e)) return !1;
              var f = b.getLocale(), g = a.isNumeric(d.value) ? d.value : b.getDynamicOption(c, d.value),
                  h = this._format(g);
              return e = parseFloat(e), d.inclusive === !0 || void 0 === d.inclusive ? {
                  valid: h >= e,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].lessThan["default"], g)
              } : {
                  valid: h > e,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].lessThan.notInclusive, g)
              }
          }, _format: function (a) {
              return (a + "").replace(",", ".")
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {mac: {"default": "Please enter a valid MAC address"}}}), FormValidation.Validator.mac = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "mac");
              return "" === c ? !0 : /^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/.test(c)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {meid: {"default": "Please enter a valid MEID number"}}}), FormValidation.Validator.meid = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "meid");
              if ("" === c) return !0;
              switch (!0) {
                  case/^[0-9A-F]{15}$/i.test(c):
                  case/^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}[- ][0-9A-F]$/i.test(c):
                  case/^\d{19}$/.test(c):
                  case/^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}[- ]\d$/.test(c):
                      var d = c.charAt(c.length - 1);
                      if (c = c.replace(/[- ]/g, ""), c.match(/^\d*$/i)) return FormValidation.Helper.luhn(c);
                      c = c.slice(0, -1);
                      for (var e = "", f = 1; 13 >= f; f += 2) e += (2 * parseInt(c.charAt(f), 16)).toString(16);
                      var g = 0;
                      for (f = 0; f < e.length; f++) g += parseInt(e.charAt(f), 16);
                      return g % 10 === 0 ? "0" === d : d === (2 * (10 * Math.floor((g + 10) / 10) - g)).toString(16);
                  case/^[0-9A-F]{14}$/i.test(c):
                  case/^[0-9A-F]{2}[- ][0-9A-F]{6}[- ][0-9A-F]{6}$/i.test(c):
                  case/^\d{18}$/.test(c):
                  case/^\d{5}[- ]\d{5}[- ]\d{4}[- ]\d{4}$/.test(c):
                      return !0;
                  default:
                      return !1
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {notEmpty: {"default": "Please enter a value"}}}), FormValidation.Validator.notEmpty = {
          enableByHtml5: function (a) {
              var b = a.attr("required") + "";
              return "required" === b || "true" === b
          }, validate: function (b, c) {
              var d = c.attr("type");
              if ("radio" === d || "checkbox" === d) {
                  var e = b.getNamespace();
                  return b.getFieldElements(c.attr("data-" + e + "-field")).filter(":checked").length > 0
              }
              if ("number" === d && c.get(0).validity && c.get(0).validity.badInput === !0) return !0;
              var f = b.getFieldValue(c, "notEmpty");
              return "" !== a.trim(f)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {numeric: {"default": "Please enter a valid float number"}}}), FormValidation.Validator.numeric = {
          html5Attributes: {
              message: "message",
              separator: "separator"
          }, enableByHtml5: function (a) {
              return "number" === a.attr("type") && void 0 !== a.attr("step") && a.attr("step") % 1 !== 0
          }, validate: function (a, b, c) {
              if (this.enableByHtml5(b) && b.get(0).validity && b.get(0).validity.badInput === !0) return !1;
              var d = a.getFieldValue(b, "numeric");
              if ("" === d) return !0;
              var e = c.separator || ".";
              return "." !== e && (d = d.replace(e, ".")), !isNaN(parseFloat(d)) && isFinite(d)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              phone: {
                  "default": "Please enter a valid phone number",
                  country: "Please enter a valid phone number in %s",
                  countries: {
                      AE: "United Arab Emirates",
                      BG: "Bulgaria",
                      BR: "Brazil",
                      CN: "China",
                      CZ: "Czech Republic",
                      DE: "Germany",
                      DK: "Denmark",
                      ES: "Spain",
                      FR: "France",
                      GB: "United Kingdom",
                      IN: "India",
                      MA: "Morocco",
                      NL: "Netherlands",
                      PK: "Pakistan",
                      RO: "Romania",
                      RU: "Russia",
                      SK: "Slovakia",
                      TH: "Thailand",
                      US: "USA",
                      VE: "Venezuela"
                  }
              }
          }
      }), FormValidation.Validator.phone = {
          html5Attributes: {message: "message", country: "country"},
          COUNTRY_CODES: ["AE", "BG", "BR", "CN", "CZ", "DE", "DK", "ES", "FR", "GB", "IN", "MA", "NL", "PK", "RO", "RU", "SK", "TH", "US", "VE"],
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "phone");
              if ("" === e) return !0;
              var f = b.getLocale(), g = d.country;
              if (("string" != typeof g || -1 === a.inArray(g, this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)), !g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) return !0;
              var h = !0;
              switch (g.toUpperCase()) {
                  case"AE":
                      e = a.trim(e), h = /^(((\+|00)?971[\s\.-]?(\(0\)[\s\.-]?)?|0)(\(5(0|2|5|6)\)|5(0|2|5|6)|2|3|4|6|7|9)|60)([\s\.-]?[0-9]){7}$/.test(e);
                      break;
                  case"BG":
                      e = e.replace(/\+|\s|-|\/|\(|\)/gi, ""), h = /^(0|359|00)(((700|900)[0-9]{5}|((800)[0-9]{5}|(800)[0-9]{4}))|(87|88|89)([0-9]{7})|((2[0-9]{7})|(([3-9][0-9])(([0-9]{6})|([0-9]{5})))))$/.test(e);
                      break;
                  case"BR":
                      e = a.trim(e), h = /^(([\d]{4}[-.\s]{1}[\d]{2,3}[-.\s]{1}[\d]{2}[-.\s]{1}[\d]{2})|([\d]{4}[-.\s]{1}[\d]{3}[-.\s]{1}[\d]{4})|((\(?\+?[0-9]{2}\)?\s?)?(\(?\d{2}\)?\s?)?\d{4,5}[-.\s]?\d{4}))$/.test(e);
                      break;
                  case"CN":
                      e = a.trim(e), h = /^((00|\+)?(86(?:-| )))?((\d{11})|(\d{3}[- ]{1}\d{4}[- ]{1}\d{4})|((\d{2,4}[- ]){1}(\d{7,8}|(\d{3,4}[- ]{1}\d{4}))([- ]{1}\d{1,4})?))$/.test(e);
                      break;
                  case"CZ":
                      h = /^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);
                      break;
                  case"DE":
                      e = a.trim(e), h = /^(((((((00|\+)49[ \-/]?)|0)[1-9][0-9]{1,4})[ \-/]?)|((((00|\+)49\()|\(0)[1-9][0-9]{1,4}\)[ \-/]?))[0-9]{1,7}([ \-/]?[0-9]{1,5})?)$/.test(e);
                      break;
                  case"DK":
                      e = a.trim(e), h = /^(\+45|0045|\(45\))?\s?[2-9](\s?\d){7}$/.test(e);
                      break;
                  case"ES":
                      e = a.trim(e), h = /^(?:(?:(?:\+|00)34\D?))?(?:5|6|7|8|9)(?:\d\D?){8}$/.test(e);
                      break;
                  case"FR":
                      e = a.trim(e), h = /^(?:(?:(?:\+|00)33[ ]?(?:\(0\)[ ]?)?)|0){1}[1-9]{1}([ .-]?)(?:\d{2}\1?){3}\d{2}$/.test(e);
                      break;
                  case"GB":
                      e = a.trim(e), h = /^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$/.test(e);
                      break;
                  case"IN":
                      e = a.trim(e), h = /((\+?)((0[ -]+)*|(91 )*)(\d{12}|\d{10}))|\d{5}([- ]*)\d{6}/.test(e);
                      break;
                  case"MA":
                      e = a.trim(e), h = /^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/.test(e);
                      break;
                  case"NL":
                      e = a.trim(e), h = /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9])((\s|\s?-\s?)?[0-9])((\s|\s?-\s?)?[0-9])\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]$/gm.test(e);
                      break;
                  case"PK":
                      e = a.trim(e), h = /^0?3[0-9]{2}[0-9]{7}$/.test(e);
                      break;
                  case"RO":
                      h = /^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g.test(e);
                      break;
                  case"RU":
                      h = /^((8|\+7|007)[\-\.\/ ]?)?([\(\/\.]?\d{3}[\)\/\.]?[\-\.\/ ]?)?[\d\-\.\/ ]{7,10}$/g.test(e);
                      break;
                  case"SK":
                      h = /^(((00)([- ]?)|\+)(421)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(e);
                      break;
                  case"TH":
                      h = /^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/.test(e);
                      break;
                  case"VE":
                      e = a.trim(e), h = /^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/.test(e);
                      break;
                  case"US":
                  default:
                      h = /^(?:(1\-?)|(\+1 ?))?\(?(\d{3})[\)\-\.]?(\d{3})[\-\.]?(\d{4})$/.test(e)
              }
              return {
                  valid: h,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].phone.country, FormValidation.I18n[f].phone.countries[g])
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {regexp: {"default": "Please enter a value matching the pattern"}}}), FormValidation.Validator.regexp = {
          html5Attributes: {
              message: "message",
              regexp: "regexp"
          }, enableByHtml5: function (a) {
              var b = a.attr("pattern");
              return b ? {regexp: b} : !1
          }, validate: function (a, b, c) {
              var d = a.getFieldValue(b, "regexp");
              if ("" === d) return !0;
              var e = "string" == typeof c.regexp ? new RegExp(c.regexp) : c.regexp;
              return e.test(d)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {remote: {"default": "Please enter a valid value"}}}), FormValidation.Validator.remote = {
          html5Attributes: {
              crossdomain: "crossDomain",
              data: "data",
              datatype: "dataType",
              delay: "delay",
              message: "message",
              name: "name",
              type: "type",
              url: "url",
              validkey: "validKey"
          }, destroy: function (a, b) {
              var c = a.getNamespace(), d = b.data(c + ".remote.timer");
              d && (clearTimeout(d), b.removeData(c + ".remote.timer"))
          }, validate: function (b, c, d) {
              function e() {
                  var b = a.ajax(m);
                  return b.success(function (a) {
                      a.valid = a[l] === !0 || "true" === a[l] ? !0 : a[l] === !1 || "false" === a[l] ? !1 : null, h.resolve(c, "remote", a)
                  }).error(function () {
                      h.resolve(c, "remote", {valid: !1})
                  }), h.fail(function () {
                      b.abort()
                  }), h
              }
  
              var f = b.getNamespace(), g = b.getFieldValue(c, "remote"), h = new a.Deferred;
              if ("" === g) return h.resolve(c, "remote", {valid: !0}), h;
              var i = c.attr("data-" + f + "-field"), j = d.data || {}, k = d.url, l = d.validKey || "valid";
              "function" == typeof j && (j = j.call(this, b)), "string" == typeof j && (j = JSON.parse(j)), "function" == typeof k && (k = k.call(this, b)), j[d.name || i] = g;
              var m = {data: j, dataType: d.dataType || "json", headers: d.headers || {}, type: d.type || "GET", url: k};
              return null !== d.crossDomain && (m.crossDomain = d.crossDomain === !0 || "true" === d.crossDomain), d.delay ? (c.data(f + ".remote.timer") && clearTimeout(c.data(f + ".remote.timer")), c.data(f + ".remote.timer", setTimeout(e, d.delay)), h) : e()
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {rtn: {"default": "Please enter a valid RTN number"}}}), FormValidation.Validator.rtn = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "rtn");
              if ("" === c) return !0;
              if (!/^\d{9}$/.test(c)) return !1;
              for (var d = 0, e = 0; e < c.length; e += 3) d += 3 * parseInt(c.charAt(e), 10) + 7 * parseInt(c.charAt(e + 1), 10) + parseInt(c.charAt(e + 2), 10);
              return 0 !== d && d % 10 === 0
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {sedol: {"default": "Please enter a valid SEDOL number"}}}), FormValidation.Validator.sedol = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "sedol");
              if ("" === c) return !0;
              if (c = c.toUpperCase(), !/^[0-9A-Z]{7}$/.test(c)) return !1;
              for (var d = 0, e = [1, 3, 1, 7, 3, 9, 1], f = c.length, g = 0; f - 1 > g; g++) d += e[g] * parseInt(c.charAt(g), 36);
              return d = (10 - d % 10) % 10, d + "" === c.charAt(f - 1)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {siren: {"default": "Please enter a valid SIREN number"}}}), FormValidation.Validator.siren = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "siren");
              return "" === c ? !0 : /^\d{9}$/.test(c) ? FormValidation.Helper.luhn(c) : !1
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {siret: {"default": "Please enter a valid SIRET number"}}}), FormValidation.Validator.siret = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "siret");
              if ("" === c) return !0;
              for (var d, e = 0, f = c.length, g = 0; f > g; g++) d = parseInt(c.charAt(g), 10), g % 2 === 0 && (d = 2 * d, d > 9 && (d -= 9)), e += d;
              return e % 10 === 0
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {step: {"default": "Please enter a valid step of %s"}}}), FormValidation.Validator.step = {
          html5Attributes: {
              message: "message",
              base: "baseValue",
              step: "step"
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "step");
              if ("" === e) return !0;
              if (d = a.extend({}, {baseValue: 0, step: 1}, d), e = parseFloat(e), !a.isNumeric(e)) return !1;
              var f = function (a, b) {
                  var c = Math.pow(10, b);
                  a *= c;
                  var d = a > 0 | -(0 > a), e = a % 1 === .5 * d;
                  return e ? (Math.floor(a) + (d > 0)) / c : Math.round(a) / c
              }, g = function (a, b) {
                  if (0 === b) return 1;
                  var c = (a + "").split("."), d = (b + "").split("."),
                      e = (1 === c.length ? 0 : c[1].length) + (1 === d.length ? 0 : d[1].length);
                  return f(a - b * Math.floor(a / b), e)
              }, h = b.getLocale(), i = g(e - d.baseValue, d.step);
              return {
                  valid: 0 === i || i === d.step,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[h].step["default"], [d.step])
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              stringCase: {
                  "default": "Please enter only lowercase characters",
                  upper: "Please enter only uppercase characters"
              }
          }
      }), FormValidation.Validator.stringCase = {
          html5Attributes: {message: "message", "case": "case"},
          validate: function (a, b, c) {
              var d = a.getFieldValue(b, "stringCase");
              if ("" === d) return !0;
              var e = a.getLocale(), f = (c["case"] || "lower").toLowerCase();
              return {
                  valid: "upper" === f ? d === d.toUpperCase() : d === d.toLowerCase(),
                  message: c.message || ("upper" === f ? FormValidation.I18n[e].stringCase.upper : FormValidation.I18n[e].stringCase["default"])
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              stringLength: {
                  "default": "Please enter a value with valid length",
                  less: "Please enter less than %s characters",
                  more: "Please enter more than %s characters",
                  between: "Please enter value between %s and %s characters long"
              }
          }
      }), FormValidation.Validator.stringLength = {
          html5Attributes: {
              message: "message",
              min: "min",
              max: "max",
              trim: "trim",
              utf8bytes: "utf8Bytes"
          }, enableByHtml5: function (b) {
              var c = {}, d = b.attr("maxlength"), e = b.attr("minlength");
              return d && (c.max = parseInt(d, 10)), e && (c.min = parseInt(e, 10)), a.isEmptyObject(c) ? !1 : c
          }, validate: function (b, c, d) {
              var e = b.getFieldValue(c, "stringLength");
              if ((d.trim === !0 || "true" === d.trim) && (e = a.trim(e)), "" === e) return !0;
              var f = b.getLocale(), g = a.isNumeric(d.min) ? d.min : b.getDynamicOption(c, d.min),
                  h = a.isNumeric(d.max) ? d.max : b.getDynamicOption(c, d.max), i = function (a) {
                      for (var b = a.length, c = a.length - 1; c >= 0; c--) {
                          var d = a.charCodeAt(c);
                          d > 127 && 2047 >= d ? b++ : d > 2047 && 65535 >= d && (b += 2), d >= 56320 && 57343 >= d && c--
                      }
                      return b
                  }, j = d.utf8Bytes ? i(e) : e.length, k = !0,
                  l = d.message || FormValidation.I18n[f].stringLength["default"];
              switch ((g && j < parseInt(g, 10) || h && j > parseInt(h, 10)) && (k = !1), !0) {
                  case!!g && !!h:
                      l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.between, [parseInt(g, 10), parseInt(h, 10)]);
                      break;
                  case!!g:
                      l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.more, parseInt(g, 10));
                      break;
                  case!!h:
                      l = FormValidation.Helper.format(d.message || FormValidation.I18n[f].stringLength.less, parseInt(h, 10))
              }
              return {valid: k, message: l}
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {uri: {"default": "Please enter a valid URI"}}}), FormValidation.Validator.uri = {
          html5Attributes: {
              message: "message",
              allowlocal: "allowLocal",
              allowemptyprotocol: "allowEmptyProtocol",
              protocol: "protocol"
          }, enableByHtml5: function (a) {
              return "url" === a.attr("type")
          }, validate: function (a, b, c) {
              var d = a.getFieldValue(b, "uri");
              if ("" === d) return !0;
              var e = c.allowLocal === !0 || "true" === c.allowLocal,
                  f = c.allowEmptyProtocol === !0 || "true" === c.allowEmptyProtocol,
                  g = (c.protocol || "http, https, ftp").split(",").join("|").replace(/\s/g, ""),
                  h = new RegExp("^(?:(?:" + g + ")://)" + (f ? "?" : "") + "(?:\\S+(?::\\S*)?@)?(?:" + (e ? "" : "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})") + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-?)*[a-z\\u00a1-\\uffff0-9])*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + (e ? "?" : "") + ")(?::\\d{2,5})?(?:/[^\\s]*)?$", "i");
              return h.test(d)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              uuid: {
                  "default": "Please enter a valid UUID number",
                  version: "Please enter a valid UUID version %s number"
              }
          }
      }), FormValidation.Validator.uuid = {
          html5Attributes: {message: "message", version: "version"},
          validate: function (a, b, c) {
              var d = a.getFieldValue(b, "uuid");
              if ("" === d) return !0;
              var e = a.getLocale(), f = {
                  3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
                  4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
                  5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
                  all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
              }, g = c.version ? c.version + "" : "all";
              return {
                  valid: null === f[g] ? !0 : f[g].test(d),
                  message: c.version ? FormValidation.Helper.format(c.message || FormValidation.I18n[e].uuid.version, c.version) : c.message || FormValidation.I18n[e].uuid["default"]
              }
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              vat: {
                  "default": "Please enter a valid VAT number",
                  country: "Please enter a valid VAT number in %s",
                  countries: {
                      AT: "Austria",
                      BE: "Belgium",
                      BG: "Bulgaria",
                      BR: "Brazil",
                      CH: "Switzerland",
                      CY: "Cyprus",
                      CZ: "Czech Republic",
                      DE: "Germany",
                      DK: "Denmark",
                      EE: "Estonia",
                      ES: "Spain",
                      FI: "Finland",
                      FR: "France",
                      GB: "United Kingdom",
                      GR: "Greek",
                      EL: "Greek",
                      HU: "Hungary",
                      HR: "Croatia",
                      IE: "Ireland",
                      IS: "Iceland",
                      IT: "Italy",
                      LT: "Lithuania",
                      LU: "Luxembourg",
                      LV: "Latvia",
                      MT: "Malta",
                      NL: "Netherlands",
                      NO: "Norway",
                      PL: "Poland",
                      PT: "Portugal",
                      RO: "Romania",
                      RU: "Russia",
                      RS: "Serbia",
                      SE: "Sweden",
                      SI: "Slovenia",
                      SK: "Slovakia",
                      VE: "Venezuela",
                      ZA: "South Africa"
                  }
              }
          }
      }), FormValidation.Validator.vat = {
          html5Attributes: {message: "message", country: "country"},
          COUNTRY_CODES: ["AT", "BE", "BG", "BR", "CH", "CY", "CZ", "DE", "DK", "EE", "EL", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IS", "IT", "LT", "LU", "LV", "MT", "NL", "NO", "PL", "PT", "RO", "RU", "RS", "SE", "SK", "SI", "VE", "ZA"],
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "vat");
              if ("" === e) return !0;
              var f = b.getLocale(), g = d.country;
              if (g ? ("string" != typeof g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)) : g = e.substr(0, 2), -1 === a.inArray(g, this.COUNTRY_CODES)) return !0;
              var h = ["_", g.toLowerCase()].join("");
              return this[h](e) ? !0 : {
                  valid: !1,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].vat.country, FormValidation.I18n[f].vat.countries[g.toUpperCase()])
              }
          },
          _at: function (a) {
              if (/^ATU[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^U[0-9]{8}$/.test(a)) return !1;
              a = a.substr(1);
              for (var b = 0, c = [1, 2, 1, 2, 1, 2, 1], d = 0, e = 0; 7 > e; e++) d = parseInt(a.charAt(e), 10) * c[e], d > 9 && (d = Math.floor(d / 10) + d % 10), b += d;
              return b = 10 - (b + 4) % 10, 10 === b && (b = 0), b + "" === a.substr(7, 1)
          },
          _be: function (a) {
              if (/^BE[0]{0,1}[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0]{0,1}[0-9]{9}$/.test(a)) return !1;
              if (9 === a.length && (a = "0" + a), "0" === a.substr(1, 1)) return !1;
              var b = parseInt(a.substr(0, 8), 10) + parseInt(a.substr(8, 2), 10);
              return b % 97 === 0
          },
          _bg: function (a) {
              if (/^BG[0-9]{9,10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9,10}$/.test(a)) return !1;
              var b = 0, c = 0;
              if (9 === a.length) {
                  for (c = 0; 8 > c; c++) b += parseInt(a.charAt(c), 10) * (c + 1);
                  if (b %= 11, 10 === b) for (b = 0, c = 0; 8 > c; c++) b += parseInt(a.charAt(c), 10) * (c + 3);
                  return b %= 10, b + "" === a.substr(8)
              }
              if (10 === a.length) {
                  var d = function (a) {
                      var b = parseInt(a.substr(0, 2), 10) + 1900, c = parseInt(a.substr(2, 2), 10),
                          d = parseInt(a.substr(4, 2), 10);
                      if (c > 40 ? (b += 100, c -= 40) : c > 20 && (b -= 100, c -= 20), !FormValidation.Helper.date(b, c, d)) return !1;
                      for (var e = 0, f = [2, 4, 8, 5, 10, 9, 7, 3, 6], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
                      return e = e % 11 % 10, e + "" === a.substr(9, 1)
                  }, e = function (a) {
                      for (var b = 0, c = [21, 19, 17, 13, 11, 9, 7, 3, 1], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
                      return b %= 10, b + "" === a.substr(9, 1)
                  }, f = function (a) {
                      for (var b = 0, c = [4, 3, 2, 7, 6, 5, 4, 3, 2], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
                      return b = 11 - b % 11, 10 === b ? !1 : (11 === b && (b = 0), b + "" === a.substr(9, 1))
                  };
                  return d(a) || e(a) || f(a)
              }
              return !1
          },
          _br: function (a) {
              if ("" === a) return !0;
              var b = a.replace(/[^\d]+/g, "");
              if ("" === b || 14 !== b.length) return !1;
              if ("00000000000000" === b || "11111111111111" === b || "22222222222222" === b || "33333333333333" === b || "44444444444444" === b || "55555555555555" === b || "66666666666666" === b || "77777777777777" === b || "88888888888888" === b || "99999999999999" === b) return !1;
              for (var c = b.length - 2, d = b.substring(0, c), e = b.substring(c), f = 0, g = c - 7, h = c; h >= 1; h--) f += parseInt(d.charAt(c - h), 10) * g--, 2 > g && (g = 9);
              var i = 2 > f % 11 ? 0 : 11 - f % 11;
              if (i !== parseInt(e.charAt(0), 10)) return !1;
              for (c += 1, d = b.substring(0, c), f = 0, g = c - 7, h = c; h >= 1; h--) f += parseInt(d.charAt(c - h), 10) * g--, 2 > g && (g = 9);
              return i = 2 > f % 11 ? 0 : 11 - f % 11, i === parseInt(e.charAt(1), 10)
          },
          _ch: function (a) {
              if (/^CHE[0-9]{9}(MWST)?$/.test(a) && (a = a.substr(2)), !/^E[0-9]{9}(MWST)?$/.test(a)) return !1;
              a = a.substr(1);
              for (var b = 0, c = [5, 4, 3, 2, 7, 6, 5, 4], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b = 11 - b % 11, 10 === b ? !1 : (11 === b && (b = 0), b + "" === a.substr(8, 1))
          },
          _cy: function (a) {
              if (/^CY[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a) && (a = a.substr(2)), !/^[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a)) return !1;
              if ("12" === a.substr(0, 2)) return !1;
              for (var b = 0, c = {0: 1, 1: 0, 2: 5, 3: 7, 4: 9, 5: 13, 6: 15, 7: 17, 8: 19, 9: 21}, d = 0; 8 > d; d++) {
                  var e = parseInt(a.charAt(d), 10);
                  d % 2 === 0 && (e = c[e + ""]), b += e
              }
              return b = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[b % 26], b + "" === a.substr(8, 1)
          },
          _cz: function (a) {
              if (/^CZ[0-9]{8,10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8,10}$/.test(a)) return !1;
              var b = 0, c = 0;
              if (8 === a.length) {
                  if (a.charAt(0) + "" == "9") return !1;
                  for (b = 0, c = 0; 7 > c; c++) b += parseInt(a.charAt(c), 10) * (8 - c);
                  return b = 11 - b % 11, 10 === b && (b = 0), 11 === b && (b = 1), b + "" === a.substr(7, 1)
              }
              if (9 === a.length && a.charAt(0) + "" == "6") {
                  for (b = 0, c = 0; 7 > c; c++) b += parseInt(a.charAt(c + 1), 10) * (8 - c);
                  return b = 11 - b % 11, 10 === b && (b = 0), 11 === b && (b = 1), b = [8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 10][b - 1], b + "" === a.substr(8, 1)
              }
              if (9 === a.length || 10 === a.length) {
                  var d = 1900 + parseInt(a.substr(0, 2), 10), e = parseInt(a.substr(2, 2), 10) % 50 % 20,
                      f = parseInt(a.substr(4, 2), 10);
                  if (9 === a.length) {
                      if (d >= 1980 && (d -= 100), d > 1953) return !1
                  } else 1954 > d && (d += 100);
                  if (!FormValidation.Helper.date(d, e, f)) return !1;
                  if (10 === a.length) {
                      var g = parseInt(a.substr(0, 9), 10) % 11;
                      return 1985 > d && (g %= 10), g + "" === a.substr(9, 1)
                  }
                  return !0
              }
              return !1
          },
          _de: function (a) {
              return /^DE[0-9]{9}$/.test(a) && (a = a.substr(2)), /^[0-9]{9}$/.test(a) ? FormValidation.Helper.mod11And10(a) : !1
          },
          _dk: function (a) {
              if (/^DK[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
              for (var b = 0, c = [2, 7, 6, 5, 4, 3, 2, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 11 === 0
          },
          _ee: function (a) {
              if (/^EE[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
              for (var b = 0, c = [3, 7, 1, 3, 7, 1, 3, 7, 1], d = 0; 9 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 10 === 0
          },
          _es: function (a) {
              if (/^ES[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a) && (a = a.substr(2)), !/^[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a)) return !1;
              var b = function (a) {
                  var b = parseInt(a.substr(0, 8), 10);
                  return b = "TRWAGMYFPDXBNJZSQVHLCKE"[b % 23], b + "" === a.substr(8, 1)
              }, c = function (a) {
                  var b = ["XYZ".indexOf(a.charAt(0)), a.substr(1)].join("");
                  return b = parseInt(b, 10), b = "TRWAGMYFPDXBNJZSQVHLCKE"[b % 23], b + "" === a.substr(8, 1)
              }, d = function (a) {
                  var b, c = a.charAt(0);
                  if (-1 !== "KLM".indexOf(c)) return b = parseInt(a.substr(1, 8), 10), b = "TRWAGMYFPDXBNJZSQVHLCKE"[b % 23], b + "" === a.substr(8, 1);
                  if (-1 !== "ABCDEFGHJNPQRSUVW".indexOf(c)) {
                      for (var d = 0, e = [2, 1, 2, 1, 2, 1, 2], f = 0, g = 0; 7 > g; g++) f = parseInt(a.charAt(g + 1), 10) * e[g], f > 9 && (f = Math.floor(f / 10) + f % 10), d += f;
                      return d = 10 - d % 10, 10 === d && (d = 0), d + "" === a.substr(8, 1) || "JABCDEFGHI"[d] === a.substr(8, 1)
                  }
                  return !1
              }, e = a.charAt(0);
              return /^[0-9]$/.test(e) ? b(a) : /^[XYZ]$/.test(e) ? c(a) : d(a)
          },
          _fi: function (a) {
              if (/^FI[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
              for (var b = 0, c = [7, 9, 10, 5, 8, 4, 2, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 11 === 0
          },
          _fr: function (a) {
              if (/^FR[0-9A-Z]{2}[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9A-Z]{2}[0-9]{9}$/.test(a)) return !1;
              if (!FormValidation.Helper.luhn(a.substr(2))) return !1;
              if (/^[0-9]{2}$/.test(a.substr(0, 2))) return a.substr(0, 2) === parseInt(a.substr(2) + "12", 10) % 97 + "";
              var b, c = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
              return b = /^[0-9]{1}$/.test(a.charAt(0)) ? 24 * c.indexOf(a.charAt(0)) + c.indexOf(a.charAt(1)) - 10 : 34 * c.indexOf(a.charAt(0)) + c.indexOf(a.charAt(1)) - 100, (parseInt(a.substr(2), 10) + 1 + Math.floor(b / 11)) % 11 === b % 11
          },
          _gb: function (a) {
              if ((/^GB[0-9]{9}$/.test(a) || /^GB[0-9]{12}$/.test(a) || /^GBGD[0-9]{3}$/.test(a) || /^GBHA[0-9]{3}$/.test(a) || /^GB(GD|HA)8888[0-9]{5}$/.test(a)) && (a = a.substr(2)), !(/^[0-9]{9}$/.test(a) || /^[0-9]{12}$/.test(a) || /^GD[0-9]{3}$/.test(a) || /^HA[0-9]{3}$/.test(a) || /^(GD|HA)8888[0-9]{5}$/.test(a))) return !1;
              var b = a.length;
              if (5 === b) {
                  var c = a.substr(0, 2), d = parseInt(a.substr(2), 10);
                  return "GD" === c && 500 > d || "HA" === c && d >= 500
              }
              if (11 === b && ("GD8888" === a.substr(0, 6) || "HA8888" === a.substr(0, 6))) return "GD" === a.substr(0, 2) && parseInt(a.substr(6, 3), 10) >= 500 || "HA" === a.substr(0, 2) && parseInt(a.substr(6, 3), 10) < 500 ? !1 : parseInt(a.substr(6, 3), 10) % 97 === parseInt(a.substr(9, 2), 10);
              if (9 === b || 12 === b) {
                  for (var e = 0, f = [8, 7, 6, 5, 4, 3, 2, 10, 1], g = 0; 9 > g; g++) e += parseInt(a.charAt(g), 10) * f[g];
                  return e %= 97, parseInt(a.substr(0, 3), 10) >= 100 ? 0 === e || 42 === e || 55 === e : 0 === e
              }
              return !0
          },
          _gr: function (a) {
              if (/^(GR|EL)[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
              8 === a.length && (a = "0" + a);
              for (var b = 0, c = [256, 128, 64, 32, 16, 8, 4, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b = b % 11 % 10, b + "" === a.substr(8, 1)
          },
          _el: function (a) {
              return this._gr(a)
          },
          _hu: function (a) {
              if (/^HU[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
              for (var b = 0, c = [9, 7, 3, 1, 9, 7, 3, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 10 === 0
          },
          _hr: function (a) {
              return /^HR[0-9]{11}$/.test(a) && (a = a.substr(2)), /^[0-9]{11}$/.test(a) ? FormValidation.Helper.mod11And10(a) : !1
          },
          _ie: function (a) {
              if (/^IE[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a) && (a = a.substr(2)), !/^[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a)) return !1;
              var b = function (a) {
                  for (; a.length < 7;) a = "0" + a;
                  for (var b = "WABCDEFGHIJKLMNOPQRSTUV", c = 0, d = 0; 7 > d; d++) c += parseInt(a.charAt(d), 10) * (8 - d);
                  return c += 9 * b.indexOf(a.substr(7)), b[c % 23]
              };
              return /^[0-9]+$/.test(a.substr(0, 7)) ? a.charAt(7) === b(a.substr(0, 7) + a.substr(8) + "") : -1 !== "ABCDEFGHIJKLMNOPQRSTUVWXYZ+*".indexOf(a.charAt(1)) ? a.charAt(7) === b(a.substr(2, 5) + a.substr(0, 1) + "") : !0
          },
          _is: function (a) {
              return /^IS[0-9]{5,6}$/.test(a) && (a = a.substr(2)), /^[0-9]{5,6}$/.test(a)
          },
          _it: function (a) {
              if (/^IT[0-9]{11}$/.test(a) && (a = a.substr(2)), !/^[0-9]{11}$/.test(a)) return !1;
              if (0 === parseInt(a.substr(0, 7), 10)) return !1;
              var b = parseInt(a.substr(7, 3), 10);
              return 1 > b || b > 201 && 999 !== b && 888 !== b ? !1 : FormValidation.Helper.luhn(a)
          },
          _lt: function (a) {
              if (/^LT([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a) && (a = a.substr(2)), !/^([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a)) return !1;
              var b, c = a.length, d = 0;
              for (b = 0; c - 1 > b; b++) d += parseInt(a.charAt(b), 10) * (1 + b % 9);
              var e = d % 11;
              if (10 === e) for (d = 0, b = 0; c - 1 > b; b++) d += parseInt(a.charAt(b), 10) * (1 + (b + 2) % 9);
              return e = e % 11 % 10, e + "" === a.charAt(c - 1)
          },
          _lu: function (a) {
              return /^LU[0-9]{8}$/.test(a) && (a = a.substr(2)), /^[0-9]{8}$/.test(a) ? parseInt(a.substr(0, 6), 10) % 89 + "" === a.substr(6, 2) : !1
          },
          _lv: function (a) {
              if (/^LV[0-9]{11}$/.test(a) && (a = a.substr(2)), !/^[0-9]{11}$/.test(a)) return !1;
              var b, c = parseInt(a.charAt(0), 10), d = 0, e = [], f = a.length;
              if (c > 3) {
                  for (d = 0, e = [9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1], b = 0; f > b; b++) d += parseInt(a.charAt(b), 10) * e[b];
                  return d %= 11, 3 === d
              }
              var g = parseInt(a.substr(0, 2), 10), h = parseInt(a.substr(2, 2), 10), i = parseInt(a.substr(4, 2), 10);
              if (i = i + 1800 + 100 * parseInt(a.charAt(6), 10), !FormValidation.Helper.date(i, h, g)) return !1;
              for (d = 0, e = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9], b = 0; f - 1 > b; b++) d += parseInt(a.charAt(b), 10) * e[b];
              return d = (d + 1) % 11 % 10, d + "" === a.charAt(f - 1)
          },
          _mt: function (a) {
              if (/^MT[0-9]{8}$/.test(a) && (a = a.substr(2)), !/^[0-9]{8}$/.test(a)) return !1;
              for (var b = 0, c = [3, 4, 6, 7, 8, 9, 10, 1], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 37 === 0
          },
          _nl: function (a) {
              if (/^NL[0-9]{9}B[0-9]{2}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}B[0-9]{2}$/.test(a)) return !1;
              for (var b = 0, c = [9, 8, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b %= 11, b > 9 && (b = 0), b + "" === a.substr(8, 1)
          },
          _no: function (a) {
              if (/^NO[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
              for (var b = 0, c = [3, 2, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b = 11 - b % 11, 11 === b && (b = 0), b + "" === a.substr(8, 1)
          },
          _pl: function (a) {
              if (/^PL[0-9]{10}$/.test(a) && (a = a.substr(2)), !/^[0-9]{10}$/.test(a)) return !1;
              for (var b = 0, c = [6, 5, 7, 2, 3, 4, 5, 6, 7, -1], d = 0; 10 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b % 11 === 0
          },
          _pt: function (a) {
              if (/^PT[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
              for (var b = 0, c = [9, 8, 7, 6, 5, 4, 3, 2], d = 0; 8 > d; d++) b += parseInt(a.charAt(d), 10) * c[d];
              return b = 11 - b % 11, b > 9 && (b = 0), b + "" === a.substr(8, 1)
          },
          _ro: function (a) {
              if (/^RO[1-9][0-9]{1,9}$/.test(a) && (a = a.substr(2)), !/^[1-9][0-9]{1,9}$/.test(a)) return !1;
              for (var b = a.length, c = [7, 5, 3, 2, 1, 7, 5, 3, 2].slice(10 - b), d = 0, e = 0; b - 1 > e; e++) d += parseInt(a.charAt(e), 10) * c[e];
              return d = 10 * d % 11 % 10, d + "" === a.substr(b - 1, 1)
          },
          _ru: function (a) {
              if (/^RU([0-9]{10}|[0-9]{12})$/.test(a) && (a = a.substr(2)), !/^([0-9]{10}|[0-9]{12})$/.test(a)) return !1;
              var b = 0;
              if (10 === a.length) {
                  var c = 0, d = [2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
                  for (b = 0; 10 > b; b++) c += parseInt(a.charAt(b), 10) * d[b];
                  return c %= 11, c > 9 && (c %= 10), c + "" === a.substr(9, 1)
              }
              if (12 === a.length) {
                  var e = 0, f = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0], g = 0, h = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8, 0];
                  for (b = 0; 11 > b; b++) e += parseInt(a.charAt(b), 10) * f[b], g += parseInt(a.charAt(b), 10) * h[b];
                  return e %= 11, e > 9 && (e %= 10), g %= 11, g > 9 && (g %= 10), e + "" === a.substr(10, 1) && g + "" === a.substr(11, 1)
              }
              return !1
          },
          _rs: function (a) {
              if (/^RS[0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[0-9]{9}$/.test(a)) return !1;
              for (var b = 10, c = 0, d = 0; 8 > d; d++) c = (parseInt(a.charAt(d), 10) + b) % 10, 0 === c && (c = 10), b = 2 * c % 11;
              return (b + parseInt(a.substr(8, 1), 10)) % 10 === 1
          },
          _se: function (a) {
              return /^SE[0-9]{10}01$/.test(a) && (a = a.substr(2)), /^[0-9]{10}01$/.test(a) ? (a = a.substr(0, 10), FormValidation.Helper.luhn(a)) : !1
          },
          _si: function (a) {
              var b = a.match(/^(SI)?([1-9][0-9]{7})$/);
              if (!b) return !1;
              b[1] && (a = a.substr(2));
              for (var c = 0, d = [8, 7, 6, 5, 4, 3, 2], e = 0; 7 > e; e++) c += parseInt(a.charAt(e), 10) * d[e];
              return c = 11 - c % 11, 10 === c && (c = 0), c + "" === a.substr(7, 1)
          },
          _sk: function (a) {
              return /^SK[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a) && (a = a.substr(2)), /^[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a) ? parseInt(a, 10) % 11 === 0 : !1
          },
          _ve: function (a) {
              if (/^VE[VEJPG][0-9]{9}$/.test(a) && (a = a.substr(2)), !/^[VEJPG][0-9]{9}$/.test(a)) return !1;
              for (var b = {
                  V: 4,
                  E: 8,
                  J: 12,
                  P: 16,
                  G: 20
              }, c = b[a.charAt(0)], d = [3, 2, 7, 6, 5, 4, 3, 2], e = 0; 8 > e; e++) c += parseInt(a.charAt(e + 1), 10) * d[e];
              return c = 11 - c % 11, (11 === c || 10 === c) && (c = 0), c + "" === a.substr(9, 1)
          },
          _za: function (a) {
              return /^ZA4[0-9]{9}$/.test(a) && (a = a.substr(2)), /^4[0-9]{9}$/.test(a)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {en_US: {vin: {"default": "Please enter a valid VIN number"}}}), FormValidation.Validator.vin = {
          validate: function (a, b) {
              var c = a.getFieldValue(b, "vin");
              if ("" === c) return !0;
              if (!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(c)) return !1;
              c = c.toUpperCase();
              for (var d = {
                  A: 1,
                  B: 2,
                  C: 3,
                  D: 4,
                  E: 5,
                  F: 6,
                  G: 7,
                  H: 8,
                  J: 1,
                  K: 2,
                  L: 3,
                  M: 4,
                  N: 5,
                  P: 7,
                  R: 9,
                  S: 2,
                  T: 3,
                  U: 4,
                  V: 5,
                  W: 6,
                  X: 7,
                  Y: 8,
                  Z: 9,
                  1: 1,
                  2: 2,
                  3: 3,
                  4: 4,
                  5: 5,
                  6: 6,
                  7: 7,
                  8: 8,
                  9: 9,
                  0: 0
              }, e = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2], f = 0, g = c.length, h = 0; g > h; h++) f += d[c.charAt(h) + ""] * e[h];
              var i = f % 11;
              return 10 === i && (i = "X"), i + "" === c.charAt(8)
          }
      }
  }(jQuery), function (a) {
      FormValidation.I18n = a.extend(!0, FormValidation.I18n || {}, {
          en_US: {
              zipCode: {
                  "default": "Please enter a valid postal code",
                  country: "Please enter a valid postal code in %s",
                  countries: {
                      AT: "Austria",
                      BG: "Bulgaria",
                      BR: "Brazil",
                      CA: "Canada",
                      CH: "Switzerland",
                      CZ: "Czech Republic",
                      DE: "Germany",
                      DK: "Denmark",
                      ES: "Spain",
                      FR: "France",
                      GB: "United Kingdom",
                      IE: "Ireland",
                      IN: "India",
                      IT: "Italy",
                      MA: "Morocco",
                      NL: "Netherlands",
                      PL: "Poland",
                      PT: "Portugal",
                      RO: "Romania",
                      RU: "Russia",
                      SE: "Sweden",
                      SG: "Singapore",
                      SK: "Slovakia",
                      US: "USA"
                  }
              }
          }
      }), FormValidation.Validator.zipCode = {
          html5Attributes: {message: "message", country: "country"},
          COUNTRY_CODES: ["AT", "BG", "BR", "CA", "CH", "CZ", "DE", "DK", "ES", "FR", "GB", "IE", "IN", "IT", "MA", "NL", "PL", "PT", "RO", "RU", "SE", "SG", "SK", "US"],
          validate: function (b, c, d) {
              var e = b.getFieldValue(c, "zipCode");
              if ("" === e || !d.country) return !0;
              var f = b.getLocale(), g = d.country;
              if (("string" != typeof g || -1 === a.inArray(g, this.COUNTRY_CODES)) && (g = b.getDynamicOption(c, g)), !g || -1 === a.inArray(g.toUpperCase(), this.COUNTRY_CODES)) return !0;
              var h = !1;
              switch (g = g.toUpperCase()) {
                  case"AT":
                      h = /^([1-9]{1})(\d{3})$/.test(e);
                      break;
                  case"BG":
                      h = /^([1-9]{1}[0-9]{3})$/.test(a.trim(e));
                      break;
                  case"BR":
                      h = /^(\d{2})([\.]?)(\d{3})([\-]?)(\d{3})$/.test(e);
                      break;
                  case"CA":
                      h = /^(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}\s?[0-9]{1}(?:A|B|C|E|G|H|J|K|L|M|N|P|R|S|T|V|W|X|Y|Z){1}[0-9]{1}$/i.test(e);
                      break;
                  case"CH":
                      h = /^([1-9]{1})(\d{3})$/.test(e);
                      break;
                  case"CZ":
                      h = /^(\d{3})([ ]?)(\d{2})$/.test(e);
                      break;
                  case"DE":
                      h = /^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(e);
                      break;
                  case"DK":
                      h = /^(DK(-|\s)?)?\d{4}$/i.test(e);
                      break;
                  case"ES":
                      h = /^(?:0[1-9]|[1-4][0-9]|5[0-2])\d{3}$/.test(e);
                      break;
                  case"FR":
                      h = /^[0-9]{5}$/i.test(e);
                      break;
                  case"GB":
                      h = this._gb(e);
                      break;
                  case"IN":
                      h = /^\d{3}\s?\d{3}$/.test(e);
                      break;
                  case"IE":
                      h = /^(D6W|[ACDEFHKNPRTVWXY]\d{2})\s[0-9ACDEFHKNPRTVWXY]{4}$/.test(e);
                      break;
                  case"IT":
                      h = /^(I-|IT-)?\d{5}$/i.test(e);
                      break;
                  case"MA":
                      h = /^[1-9][0-9]{4}$/i.test(e);
                      break;
                  case"NL":
                      h = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i.test(e);
                      break;
                  case"PL":
                      h = /^[0-9]{2}\-[0-9]{3}$/.test(e);
                      break;
                  case"PT":
                      h = /^[1-9]\d{3}-\d{3}$/.test(e);
                      break;
                  case"RO":
                      h = /^(0[1-8]{1}|[1-9]{1}[0-5]{1})?[0-9]{4}$/i.test(e);
                      break;
                  case"RU":
                      h = /^[0-9]{6}$/i.test(e);
                      break;
                  case"SE":
                      h = /^(S-)?\d{3}\s?\d{2}$/i.test(e);
                      break;
                  case"SG":
                      h = /^([0][1-9]|[1-6][0-9]|[7]([0-3]|[5-9])|[8][0-2])(\d{4})$/i.test(e);
                      break;
                  case"SK":
                      h = /^(\d{3})([ ]?)(\d{2})$/.test(e);
                      break;
                  case"US":
                  default:
                      h = /^\d{4,5}([\-]?\d{4})?$/.test(e)
              }
              return {
                  valid: h,
                  message: FormValidation.Helper.format(d.message || FormValidation.I18n[f].zipCode.country, FormValidation.I18n[f].zipCode.countries[g])
              }
          },
          _gb: function (a) {
              for (var b = "[ABCDEFGHIJKLMNOPRSTUWYZ]", c = "[ABCDEFGHKLMNOPQRSTUVWXY]", d = "[ABCDEFGHJKPMNRSTUVWXY]", e = "[ABEHMNPRVWXY]", f = "[ABDEFGHJLNPQRSTUWXYZ]", g = [new RegExp("^(" + b + "{1}" + c + "?[0-9]{1,2})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp("^(" + b + "{1}[0-9]{1}" + d + "{1})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp("^(" + b + "{1}" + c + "{1}?[0-9]{1}" + e + "{1})(\\s*)([0-9]{1}" + f + "{2})$", "i"), new RegExp("^(BF1)(\\s*)([0-6]{1}[ABDEFGHJLNPQRST]{1}[ABDEFGHJLNPQRSTUWZYZ]{1})$", "i"), /^(GIR)(\s*)(0AA)$/i, /^(BFPO)(\s*)([0-9]{1,4})$/i, /^(BFPO)(\s*)(c\/o\s*[0-9]{1,3})$/i, /^([A-Z]{4})(\s*)(1ZZ)$/i, /^(AI-2640)$/i], h = 0; h < g.length; h++) if (g[h].test(a)) return !0;
              return !1
          }
      }
  }(jQuery);
  /*bootstrap.min.js*/
  /*!
   * FormValidation (http://formvalidation.io)
   * The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
   *
   * @version     v0.6.2-dev, built on 2015-03-13 8:15:46 AM
   * @author      https://twitter.com/nghuuphuoc
   * @copyright   (c) 2013 - 2015 Nguyen Huu Phuoc
   * @license     http://formvalidation.io/license/
   */
  !function (a) {
      FormValidation.Framework.Bootstrap = function (b, c, d) {
          c = a.extend(!0, {
              button: {selector: '[type="submit"]', disabled: "disabled"},
              err: {clazz: "help-block", parent: "^(.*)col-(xs|sm|md|lg)-(offset-){0,1}[0-9]+(.*)$"},
              icon: {valid: null, invalid: null, validating: null, feedback: "form-control-feedback"},
              row: {selector: ".form-group", valid: "has-success", invalid: "has-error", feedback: "has-feedback"}
          }, c), FormValidation.Base.apply(this, [b, c, d])
      }, FormValidation.Framework.Bootstrap.prototype = a.extend({}, FormValidation.Base.prototype, {
          _fixIcon: function (a, b) {
              var c = this._namespace, d = a.attr("type"), e = a.attr("data-" + c + "-field"),
                  f = this.options.fields[e].row || this.options.row.selector, g = a.closest(f);
              if ("checkbox" === d || "radio" === d) {
                  var h = a.parent();
                  h.hasClass(d) ? b.insertAfter(h) : h.parent().hasClass(d) && b.insertAfter(h.parent())
              }
              0 === g.find("label").length && b.addClass("fv-icon-no-label"), 0 !== g.find(".input-group").length && b.addClass("fv-bootstrap-icon-input-group").insertAfter(g.find(".input-group").eq(0))
          }, _createTooltip: function (a, b, c) {
              var d = this._namespace, e = a.data(d + ".icon");
              if (e) switch (c) {
                  case"popover":
                      e.css({cursor: "pointer", "pointer-events": "auto"}).popover("destroy").popover({
                          container: "body",
                          content: b,
                          html: !0,
                          placement: "auto top",
                          trigger: "hover click"
                      });
                      break;
                  case"tooltip":
                  default:
                      e.css({cursor: "pointer", "pointer-events": "auto"}).tooltip("destroy").tooltip({
                          container: "body",
                          html: !0,
                          placement: "auto top",
                          title: b
                      })
              }
          }, _destroyTooltip: function (a, b) {
              var c = this._namespace, d = a.data(c + ".icon");
              if (d) switch (b) {
                  case"popover":
                      d.css({cursor: "", "pointer-events": "none"}).popover("destroy");
                      break;
                  case"tooltip":
                  default:
                      d.css({cursor: "", "pointer-events": "none"}).tooltip("destroy")
              }
          }, _hideTooltip: function (a, b) {
              var c = this._namespace, d = a.data(c + ".icon");
              if (d) switch (b) {
                  case"popover":
                      d.popover("hide");
                      break;
                  case"tooltip":
                  default:
                      d.tooltip("hide")
              }
          }, _showTooltip: function (a, b) {
              var c = this._namespace, d = a.data(c + ".icon");
              if (d) switch (b) {
                  case"popover":
                      d.popover("show");
                      break;
                  case"tooltip":
                  default:
                      d.tooltip("show")
              }
          }
      }), a.fn.bootstrapValidator = function (b) {
          var c = arguments;
          return this.each(function () {
              var d = a(this), e = d.data("formValidation") || d.data("bootstrapValidator"),
                  f = "object" == typeof b && b;
              e || (e = new FormValidation.Framework.Bootstrap(this, a.extend({}, {
                  events: {
                      formInit: "init.form.bv",
                      formError: "error.form.bv",
                      formSuccess: "success.form.bv",
                      fieldAdded: "added.field.bv",
                      fieldRemoved: "removed.field.bv",
                      fieldInit: "init.field.bv",
                      fieldError: "error.field.bv",
                      fieldSuccess: "success.field.bv",
                      fieldStatus: "status.field.bv",
                      localeChanged: "changed.locale.bv",
                      validatorError: "error.validator.bv",
                      validatorSuccess: "success.validator.bv"
                  }
              }, f), "bv"), d.addClass("fv-form-bootstrap").data("formValidation", e).data("bootstrapValidator", e)), "string" == typeof b && e[b].apply(e, Array.prototype.slice.call(c, 1))
          })
      }, a.fn.bootstrapValidator.Constructor = FormValidation.Framework.Bootstrap
  }(jQuery);
  /*jquery.placeholder.min.js*/
  /* HTML5 Placeholder jQuery Plugin - v2.3.1
   * Copyright (c)2015 Mathias Bynens
   * 2015-12-16
   */
  !function (a) {
      "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof module && module.exports ? require("jquery") : jQuery)
  }(function (a) {
      function b(b) {
          var c = {}, d = /^jQuery\d+$/;
          return a.each(b.attributes, function (a, b) {
              b.specified && !d.test(b.name) && (c[b.name] = b.value)
          }), c
      }
  
      function c(b, c) {
          var d = this, f = a(this);
          if (d.value === f.attr(h ? "placeholder-x" : "placeholder") && f.hasClass(n.customClass)) if (d.value = "", f.removeClass(n.customClass), f.data("placeholder-password")) {
              if (f = f.hide().nextAll('input[type="password"]:first').show().attr("id", f.removeAttr("id").data("placeholder-id")), b === !0) return f[0].value = c, c;
              f.focus()
          } else d == e() && d.select()
      }
  
      function d(d) {
          var e, f = this, g = a(this), i = f.id;
          if (!d || "blur" !== d.type || !g.hasClass(n.customClass)) if ("" === f.value) {
              if ("password" === f.type) {
                  if (!g.data("placeholder-textinput")) {
                      try {
                          e = g.clone().prop({type: "text"})
                      } catch (j) {
                          e = a("<input>").attr(a.extend(b(this), {type: "text"}))
                      }
                      e.removeAttr("name").data({
                          "placeholder-enabled": !0,
                          "placeholder-password": g,
                          "placeholder-id": i
                      }).bind("focus.placeholder", c), g.data({"placeholder-textinput": e, "placeholder-id": i}).before(e)
                  }
                  f.value = "", g = g.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id", g.data("placeholder-id")).show()
              } else {
                  var k = g.data("placeholder-password");
                  k && (k[0].value = "", g.attr("id", g.data("placeholder-id")).show().nextAll('input[type="password"]:last').hide().removeAttr("id"))
              }
              g.addClass(n.customClass), g[0].value = g.attr(h ? "placeholder-x" : "placeholder")
          } else g.removeClass(n.customClass)
      }
  
      function e() {
          try {
              return document.activeElement
          } catch (a) {
          }
      }
  
      var f, g, h = !1, i = "[object OperaMini]" === Object.prototype.toString.call(window.operamini),
          j = "placeholder" in document.createElement("input") && !i && !h,
          k = "placeholder" in document.createElement("textarea") && !i && !h, l = a.valHooks, m = a.propHooks, n = {};
      j && k ? (g = a.fn.placeholder = function () {
          return this
      }, g.input = !0, g.textarea = !0) : (g = a.fn.placeholder = function (b) {
          var e = {customClass: "placeholder"};
          return n = a.extend({}, e, b), this.filter((j ? "textarea" : ":input") + "[" + (h ? "placeholder-x" : "placeholder") + "]").not("." + n.customClass).not(":radio, :checkbox, [type=hidden]").bind({
              "focus.placeholder": c,
              "blur.placeholder": d
          }).data("placeholder-enabled", !0).trigger("blur.placeholder")
      }, g.input = j, g.textarea = k, f = {
          get: function (b) {
              var c = a(b), d = c.data("placeholder-password");
              return d ? d[0].value : c.data("placeholder-enabled") && c.hasClass(n.customClass) ? "" : b.value
          }, set: function (b, f) {
              var g, h, i = a(b);
              return "" !== f && (g = i.data("placeholder-textinput"), h = i.data("placeholder-password"), g ? (c.call(g[0], !0, f) || (b.value = f), g[0].value = f) : h && (c.call(b, !0, f) || (h[0].value = f), b.value = f)), i.data("placeholder-enabled") ? ("" === f ? (b.value = f, b != e() && d.call(b)) : (i.hasClass(n.customClass) && c.call(b), b.value = f), i) : (b.value = f, i)
          }
      }, j || (l.input = f, m.value = f), k || (l.textarea = f, m.value = f), a(function () {
          a(document).delegate("form", "submit.placeholder", function () {
              var b = a("." + n.customClass, this).each(function () {
                  c.call(this, !0, "")
              });
              setTimeout(function () {
                  b.each(d)
              }, 10)
          })
      }), a(window).bind("beforeunload.placeholder", function () {
          var b = !0;
          try {
              "javascript:void(0)" === document.activeElement.toString() && (b = !1)
          } catch (c) {
          }
          b && a("." + n.customClass).each(function () {
              this.value = ""
          })
      }))
  });
  /*jquery-placeholder.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("placeholder", {
      mode: "init", init: function (context) {
          $.fn.placeholder && $("input, textarea", context).placeholder()
      }
  });
  /*jquery.asScrollable.all.min.js*/
  /*! jQuery asScrollable - v0.3.1 - 2015-06-15
  * https://github.com/amazingSurge/jquery-asScrollable
  * Copyright (c) 2015 amazingSurge; Licensed GPL */
  !function (a, b, c, d) {
      "use strict";
  
      function e() {
          return "undefined" != typeof a.performance && a.performance.now ? a.performance.now() : Date.now()
      }
  
      function f(a) {
          return "string" == typeof a && -1 != a.indexOf("%")
      }
  
      function g(a) {
          return parseFloat(a.slice(0, -1) / 100, 10)
      }
  
      function h(a) {
          return a && "matrix" == a.substr(0, 6) ? a.replace(/^.*\((.*)\)$/g, "$1").replace(/px/g, "").split(/, +/) : !1
      }
  
      var i = "asScrollbar";
      Date.now || (Date.now = function () {
          return (new Date).getTime()
      });
      for (var j = ["webkit", "moz"], k = 0; k < j.length && !a.requestAnimationFrame; ++k) {
          var l = j[k];
          a.requestAnimationFrame = a[l + "RequestAnimationFrame"], a.cancelAnimationFrame = a[l + "CancelAnimationFrame"] || a[l + "CancelRequestAnimationFrame"]
      }
      if (/iP(ad|hone|od).*OS (6|7|8)/.test(a.navigator.userAgent) || !a.requestAnimationFrame || !a.cancelAnimationFrame) {
          var m = 0;
          a.requestAnimationFrame = function (a) {
              var b = e(), c = Math.max(m + 16, b);
              return setTimeout(function () {
                  a(m = c)
              }, c - b)
          }, a.cancelAnimationFrame = clearTimeout
      }
      var n = c[i] = function (a, b) {
          this.$bar = c(b), a = this.options = c.extend({}, n.defaults, a || {}, this.$bar.data("options") || {}), b.direction = this.options.direction, this.classes = {
              directionClass: a.namespace + "-" + a.direction,
              barClass: a.barClass ? a.barClass : a.namespace,
              handleClass: a.handleClass ? a.handleClass : a.namespace + "-handle"
          }, "vertical" === this.options.direction ? this.attributes = {
              axis: "Y",
              position: "top",
              length: "height",
              clientLength: "clientHeight"
          } : "horizontal" === this.options.direction && (this.attributes = {
              axis: "X",
              position: "left",
              length: "width",
              clientLength: "clientWidth"
          }), this._states = {}, this._drag = {
              time: null,
              pointer: null
          }, this._frameId = null, this.handlePosition = 0, this.easing = n.easing[this.options.easing] || n.easing.ease, this.init()
      };
      n.defaults = {
          namespace: "asScrollbar",
          skin: null,
          handleSelector: null,
          handleTemplate: '<div class="{{handle}}"></div>',
          barClass: null,
          handleClass: null,
          disabledClass: "is-disabled",
          draggingClass: "is-dragging",
          hoveringClass: "is-hovering",
          direction: "vertical",
          barLength: null,
          handleLength: null,
          minHandleLength: 30,
          maxHandleLength: null,
          mouseDrag: !0,
          touchDrag: !0,
          pointerDrag: !0,
          clickMove: !0,
          clickMoveStep: .3,
          mousewheel: !0,
          mousewheelSpeed: 50,
          keyboard: !0,
          useCssTransforms3d: !0,
          useCssTransforms: !0,
          useCssTransitions: !0,
          duration: "500",
          easing: "ease"
      };
      var o = {};
      n.support = o, function (e) {
          function f(a, b) {
              var e = !1, f = a.charAt(0).toUpperCase() + a.slice(1);
              return h[a] !== d && (e = a), e || c.each(i, function (a, b) {
                  return h[b + f] !== d ? (e = "-" + b.toLowerCase() + "-" + f, !1) : void 0
              }), b ? e : e ? !0 : !1
          }
  
          function g(a) {
              return f(a, !0)
          }
  
          var h = c("<support>").get(0).style, i = ["webkit", "Moz", "O", "ms"], j = {
              transition: {
                  end: {
                      WebkitTransition: "webkitTransitionEnd",
                      MozTransition: "transitionend",
                      OTransition: "oTransitionEnd",
                      transition: "transitionend"
                  }
              },
              animation: {
                  end: {
                      WebkitAnimation: "webkitAnimationEnd",
                      MozAnimation: "animationend",
                      OAnimation: "oAnimationEnd",
                      animation: "animationend"
                  }
              }
          }, k = {
              csstransforms: function () {
                  return !!f("transform")
              }, csstransforms3d: function () {
                  return !!f("perspective")
              }, csstransitions: function () {
                  return !!f("transition")
              }, cssanimations: function () {
                  return !!f("animation")
              }
          };
          k.csstransitions() && (e.transition = new String(g("transition")), e.transition.end = j.transition.end[e.transition]), k.cssanimations() && (e.animation = new String(g("animation")), e.animation.end = j.animation.end[e.animation]), k.csstransforms() && (e.transform = new String(g("transform")), e.transform3d = k.csstransforms3d()), e.touch = "ontouchstart" in a || a.DocumentTouch && b instanceof a.DocumentTouch ? !0 : !1, e.pointer = a.PointerEvent || a.MSPointerEvent ? !0 : !1, e.prefixPointerEvent = function (b) {
              return a.MSPointerEvent ? "MSPointer" + b.charAt(9).toUpperCase() + b.substr(10) : b
          }
      }(o);
      var p = function (a, b, c, d) {
          function e(a, b) {
              return 1 - 3 * b + 3 * a
          }
  
          function f(a, b) {
              return 3 * b - 6 * a
          }
  
          function g(a) {
              return 3 * a
          }
  
          function h(a, b, c) {
              return ((e(b, c) * a + f(b, c)) * a + g(b)) * a
          }
  
          function i(a, b, c) {
              return 3 * e(b, c) * a * a + 2 * f(b, c) * a + g(b)
          }
  
          function j(b) {
              for (var d = b, e = 0; 4 > e; ++e) {
                  var f = i(d, a, c);
                  if (0 === f) return d;
                  var g = h(d, a, c) - b;
                  d -= g / f
              }
              return d
          }
  
          return a === b && c === d ? {
              css: "linear", fn: function (a) {
                  return a
              }
          } : {
              css: "cubic-bezier(" + a + "," + b + "," + c + "," + d + ")", fn: function (a) {
                  return h(j(a), b, d)
              }
          }
      };
      c.extend(n.easing = {}, {
          ease: p(.25, .1, .25, 1),
          linear: p(0, 0, 1, 1),
          "ease-in": p(.42, 0, 1, 1),
          "ease-out": p(0, 0, .58, 1),
          "ease-in-out": p(.42, 0, .58, 1)
      }), n.prototype = {
          constructor: n, init: function () {
              var a = this.options;
              this.$handle = this.$bar.find(this.options.handleSelector), 0 === this.$handle.length ? this.$handle = c(a.handleTemplate.replace(/\{\{handle\}\}/g, this.classes.handleClass)).appendTo(this.$bar) : this.$handle.addClass(this.classes.handleClass), this.$bar.addClass(this.classes.barClass).addClass(this.classes.directionClass).attr("draggable", !1), a.skin && this.$bar.addClass(a.skin), null !== a.barLength && this.setBarLength(a.barLength), null !== a.handleLength && this.setHandleLength(a.handleLength), this.updateLength(), this.bindEvents()
          }, trigger: function (a) {
              var b = Array.prototype.slice.call(arguments, 1), c = [this].concat(b);
              this.$bar.trigger(i + "::" + a, c), a = a.replace(/\b\w+\b/g, function (a) {
                  return a.substring(0, 1).toUpperCase() + a.substring(1)
              });
              var d = "on" + a;
              "function" == typeof this.options[d] && this.options[d].apply(this, b)
          }, is: function (a) {
              return this._states[a] && this._states[a] > 0
          }, enter: function (a) {
              this._states[a] === d && (this._states[a] = 0), this._states[a]++
          }, leave: function (a) {
              this._states[a]--
          }, eventName: function (a) {
              if ("string" != typeof a || "" === a) return "." + this.options.namespace;
              a = a.split(" ");
              for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace;
              return a.join(" ")
          }, bindEvents: function () {
              var a = this;
              this.options.mouseDrag && (this.$handle.on(this.eventName("mousedown"), c.proxy(this.onDragStart, this)), this.$handle.on(this.eventName("dragstart selectstart"), function () {
                  return !1
              })), this.options.touchDrag && o.touch && (this.$handle.on(this.eventName("touchstart"), c.proxy(this.onDragStart, this)), this.$handle.on(this.eventName("touchcancel"), c.proxy(this.onDragEnd, this))), this.options.pointerDrag && o.pointer && (this.$handle.on(this.eventName(o.prefixPointerEvent("pointerdown")), c.proxy(this.onDragStart, this)), this.$handle.on(this.eventName(o.prefixPointerEvent("pointercancel")), c.proxy(this.onDragEnd, this))), this.options.clickMove && this.$bar.on(this.eventName("mousedown"), c.proxy(this.onClick, this)), this.options.mousewheel && this.$bar.on(this.eventName("mousewheel"), function (b, c) {
                  var d = a.getHandlePosition();
                  return 0 >= d && c > 0 ? !0 : d >= a.barLength && 0 > c ? !0 : (d -= a.options.mousewheelSpeed * c, a.move(d, !0), !1)
              }), this.$bar.on(this.eventName("mouseenter"), function () {
                  a.$bar.addClass(a.options.hoveringClass), a.enter("hovering"), a.trigger("hover")
              }), this.$bar.on(this.eventName("mouseleave"), function () {
                  a.$bar.removeClass(a.options.hoveringClass), a.is("hovering") && (a.leave("hovering"), a.trigger("hovered"))
              }), this.options.keyboard && c(b).on(this.eventName("keydown"), function (d) {
                  if ((!d.isDefaultPrevented || !d.isDefaultPrevented()) && a.is("hovering")) {
                      for (var e = b.activeElement; e.shadowRoot;) e = e.shadowRoot.activeElement;
                      if (!c(e).is(":input,select,option,[contenteditable]")) {
                          var f = 0, g = null;
                          switch (d.which) {
                              case 37:
                              case 63232:
                                  f = -30;
                                  break;
                              case 38:
                              case 63233:
                                  f = -30;
                                  break;
                              case 39:
                              case 63234:
                                  f = 30;
                                  break;
                              case 40:
                              case 63235:
                                  f = 30;
                                  break;
                              case 33:
                              case 63276:
                                  f = -90;
                                  break;
                              case 32:
                              case 34:
                              case 63277:
                                  f = -90;
                                  break;
                              case 35:
                              case 63275:
                                  g = "100%";
                                  break;
                              case 36:
                              case 63273:
                                  g = 0;
                                  break;
                              default:
                                  return
                          }
                          (f || null !== g) && (f ? a.moveBy(f, !0) : null !== g && a.moveTo(g, !0), d.preventDefault())
                      }
                  }
              })
          }, onClick: function (a) {
              if (3 !== a.which && a.target !== this.$handle[0]) {
                  this._drag.time = (new Date).getTime(), this._drag.pointer = this.pointer(a);
                  var b = this.$handle.offset(), c = this.distance({x: b.left, y: b.top}, this._drag.pointer), d = 1;
                  c > 0 ? c -= this.handleLength : (c = Math.abs(c), d = -1), c > this.barLength * this.options.clickMoveStep && (c = this.barLength * this.options.clickMoveStep), this.moveBy(d * c, !0)
              }
          }, onDragStart: function (a) {
              var d = this;
              if (3 !== a.which) {
                  this.$bar.addClass(this.options.draggingClass), this._drag.time = (new Date).getTime(), this._drag.pointer = this.pointer(a);
                  var e = function () {
                      d.enter("dragging"), d.trigger("drag")
                  };
                  this.options.mouseDrag && (c(b).on(d.eventName("mouseup"), c.proxy(this.onDragEnd, this)), c(b).one(d.eventName("mousemove"), c.proxy(function () {
                      c(b).on(d.eventName("mousemove"), c.proxy(this.onDragMove, this)), e()
                  }, this))), this.options.touchDrag && o.touch && (c(b).on(d.eventName("touchend"), c.proxy(this.onDragEnd, this)), c(b).one(d.eventName("touchmove"), c.proxy(function () {
                      c(b).on(d.eventName("touchmove"), c.proxy(this.onDragMove, this)), e()
                  }, this))), this.options.pointerDrag && o.pointer && (c(b).on(d.eventName(o.prefixPointerEvent("pointerup")), c.proxy(this.onDragEnd, this)), c(b).one(d.eventName(o.prefixPointerEvent("pointermove")), c.proxy(function () {
                      c(b).on(d.eventName(o.prefixPointerEvent("pointermove")), c.proxy(this.onDragMove, this)), e()
                  }, this))), c(b).on(d.eventName("blur"), c.proxy(this.onDragEnd, this))
              }
          }, onDragMove: function (a) {
              var b = this.distance(this._drag.pointer, this.pointer(a));
              this.is("dragging") && (a.preventDefault(), this.moveBy(b, !0))
          }, onDragEnd: function () {
              c(b).off(this.eventName("mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur")), this.$bar.removeClass(this.options.draggingClass), this.handlePosition = this.getHandlePosition(), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"))
          }, pointer: function (b) {
              var c = {x: null, y: null};
              return b = b.originalEvent || b || a.event, b = b.touches && b.touches.length ? b.touches[0] : b.changedTouches && b.changedTouches.length ? b.changedTouches[0] : b, b.pageX ? (c.x = b.pageX, c.y = b.pageY) : (c.x = b.clientX, c.y = b.clientY), c
          }, distance: function (a, b) {
              return "vertical" === this.options.direction ? b.y - a.y : b.x - a.x
          }, setBarLength: function (a, b) {
              "undefined" != typeof a && this.$bar.css(this.attributes.length, a), b !== !1 && this.updateLength()
          }, setHandleLength: function (a, b) {
              "undefined" != typeof a && (a < this.options.minHandleLength ? a = this.options.minHandleLength : this.options.maxHandleLength && a > this.options.maxHandleLength && (a = this.options.maxHandleLength), this.$handle.css(this.attributes.length, a), b !== !1 && this.updateLength(a))
          }, updateLength: function (a, b) {
              this.handleLength = "undefined" != typeof a ? a : this.getHandleLenght(), this.barLength = "undefined" != typeof b ? b : this.getBarLength()
          }, getBarLength: function () {
              return this.$bar[0][this.attributes.clientLength]
          }, getHandleLenght: function () {
              return this.$handle[0][this.attributes.clientLength]
          }, getHandlePosition: function () {
              var a;
              if (this.options.useCssTransforms && o.transform) {
                  if (a = h(this.$handle.css(o.transform)), !a) return 0;
                  a = "X" === this.attributes.axis ? a[12] || a[4] : a[13] || a[5]
              } else a = this.$handle.css(this.attributes.position);
              return parseFloat(a.replace("px", ""))
          }, makeHandlePositionStyle: function (a) {
              var b, c = "0", d = "0";
              this.options.useCssTransforms && o.transform ? ("X" === this.attributes.axis ? c = a + "px" : d = a + "px", b = o.transform.toString(), a = this.options.useCssTransforms3d && o.transform3d ? "translate3d(" + c + "," + d + ",0)" : "translate(" + c + "," + d + ")") : b = this.attributes.position;
              var e = {};
              return e[b] = a, e
          }, setHandlePosition: function (a) {
              var b = this.makeHandlePositionStyle(a);
              this.$handle.css(b), this.is("dragging") || (this.handlePosition = parseFloat(a))
          }, moveTo: function (a, b, c) {
              var d = typeof a;
              "string" === d && (f(a) && (a = g(a) * (this.barLength - this.handleLength)), a = parseFloat(a), d = "number"), "number" === d && this.move(a, b, c)
          }, moveBy: function (a, b, c) {
              var d = typeof a;
              "string" === d && (f(a) && (a = g(a) * (this.barLength - this.handleLength)), a = parseFloat(a), d = "number"), "number" === d && this.move(this.handlePosition + a, b, c)
          }, move: function (a, b, c) {
              "number" != typeof a || this.is("disabled") || (0 > a ? a = 0 : a + this.handleLength > this.barLength && (a = this.barLength - this.handleLength), this.is("dragging") || c === !0 ? (this.setHandlePosition(a), b && this.trigger("change", a / (this.barLength - this.handleLength))) : this.doMove(a, this.options.duration, this.options.easing, b))
          }, doMove: function (b, c, d, f) {
              this.enter("moving"), c = c ? c : this.options.duration, d = d ? d : this.options.easing;
              var g = this, h = this.makeHandlePositionStyle(b);
              for (var i in h) break;
              if (this.options.useCssTransitions && o.transition) g.enter("transition"), this.prepareTransition(i, c, d), this.$handle.one(o.transition.end, function () {
                  g.$handle.css(o.transition, ""), f && g.trigger("change", b / (g.barLength - g.handleLength)), g.leave("transition"), g.leave("moving")
              }), g.setHandlePosition(b); else {
                  g.enter("animating");
                  var j = e(), k = g.getHandlePosition(), l = b, m = function (b) {
                      var c = (b - j) / g.options.duration;
                      c > 1 && (c = 1), c = g.easing.fn(c);
                      var d = parseFloat(k + c * (l - k), 10);
                      g.setHandlePosition(d), f && g.trigger("change", d / (g.barLength - g.handleLength)), 1 === c ? (a.cancelAnimationFrame(g._frameId), g._frameId = null, g.leave("animating"), g.leave("moving")) : g._frameId = a.requestAnimationFrame(m)
                  };
                  g._frameId = a.requestAnimationFrame(m)
              }
          }, prepareTransition: function (a, b, d, e) {
              var f = [];
              a && f.push(a), b && (c.isNumeric(b) && (b += "ms"), f.push(b)), f.push(d ? d : this.easing.css), e && f.push(e), this.$handle.css(o.transition, f.join(" "))
          }, enable: function () {
              this._states.disabled = 0, this.$bar.removeClass(this.options.disabledClass)
          }, disable: function () {
              this._states.disabled = 1, this.$bar.addClass(this.options.disabledClass)
          }, destory: function () {
              this.$bar.on(this.eventName())
          }
      }, c.fn[i] = function (a) {
          if ("string" != typeof a) return this.each(function () {
              c(this).data(i) || c(this).data(i, new n(a, this))
          });
          var b = Array.prototype.slice.call(arguments, 1);
          this.each(function () {
              var d = c(this).data(i);
              return d && c.isFunction(d[a]) && "_" !== a.charAt(0) ? void d[a].apply(d, b) : !1
          })
      }
  }(window, document, jQuery, void 0), function (a, b, c, d, e) {
      "use strict";
  
      function f() {
          return "undefined" != typeof a.performance && a.performance.now ? a.performance.now() : Date.now()
      }
  
      function g(a) {
          return "string" == typeof a && -1 != a.indexOf("%")
      }
  
      function h(a) {
          return 0 > a ? a = 0 : a > 1 && (a = 1), 100 * parseFloat(a).toFixed(4) + "%"
      }
  
      function i(a) {
          return parseFloat(a.slice(0, -1) / 100, 10)
      }
  
      var j = "asScrollable", k = 0, l = function () {
          var b, c, d;
          return c = a.navigator.userAgent, (b = /(?=.+Mac OS X)(?=.+Firefox)/.test(c)) ? (d = /Firefox\/\d{2}\./.exec(c), d && (d = d[0].replace(/\D+/g, "")), b && +d > 23) : !1
      }(), m = c[j] = function (a, b) {
          this.$element = c(b), a = this.options = c.extend({}, m.defaults, a || {}, this.$element.data("options") || {}), this.classes = {
              wrap: a.namespace,
              content: a.namespace + "-content",
              container: a.namespace + "-container",
              bar: a.namespace + "-bar",
              barHide: a.namespace + "-bar-hide",
              skin: a.skin
          }, this.attributes = {
              vertical: {
                  axis: "Y",
                  overflow: "overflow-y",
                  scroll: "scrollTop",
                  scrollLength: "scrollHeight",
                  pageOffset: "pageYOffset",
                  ffPadding: "padding-right",
                  length: "height",
                  clientLength: "clientHeight",
                  offset: "offsetHeight",
                  crossLength: "width",
                  crossClientLength: "clientWidth",
                  crossOffset: "offsetWidth"
              },
              horizontal: {
                  axis: "X",
                  overflow: "overflow-x",
                  scroll: "scrollLeft",
                  scrollLength: "scrollWidth",
                  pageOffset: "pageXOffset",
                  ffPadding: "padding-bottom",
                  length: "width",
                  clientLength: "clientWidth",
                  offset: "offsetWidth",
                  crossLength: "height",
                  crossClientLength: "clientHeight",
                  crossOffset: "offsetHeight"
              }
          }, this._states = {}, this.horizontal = null, this.vertical = null, this.$bar = null, this._frameId = null, this._timeoutId = null, this.instanceId = ++k, this.easing = d.easing[this.options.easing] || d.easing.ease;
          var e = this.$element.css("position");
          this.options.containerSelector ? (this.$container = this.$element.find(this.options.containerSelector), this.$wrap = this.$element, "static" == e && this.$wrap.css("position", "relative")) : (this.$container = this.$element.wrap("<div>"), this.$wrap = this.$container.parent(), this.$wrap.height(this.$element.height()), "static" !== e ? this.$wrap.css("position", e) : this.$wrap.css("position", "relative")), this.options.contentSelector ? this.$content = this.$container.find(this.options.contentSelector) : (this.$content = this.$container.wrap("<div>"), this.$container = this.$content.parent()), this.init()
      };
      m.defaults = {
          namespace: j,
          skin: null,
          contentSelector: null,
          containerSelector: null,
          enabledClass: "is-enabled",
          disabledClass: "is-disabled",
          draggingClass: "is-dragging",
          hoveringClass: "is-hovering",
          scrollingClass: "is-scrolling",
          direction: "vertical",
          showOnHover: !0,
          showOnBarHover: !1,
          duration: 500,
          easing: "ease-in",
          responsive: !0,
          throttle: 20,
          scrollbar: {}
      }, m.prototype = {
          constructor: m, init: function () {
              switch (this.options.direction) {
                  case"vertical":
                      this.vertical = !0;
                      break;
                  case"horizontal":
                      this.horizontal = !0;
                      break;
                  case"both":
                      this.horizontal = !0, this.vertical = !0;
                      break;
                  case"auto":
                      var a = this.$element.css("overflow-x"), b = this.$element.css("overflow-y");
                      ("scroll" === a || "auto" === a) && (this.horizontal = !0), ("scroll" === b || "auto" === b) && (this.vertical = !0)
              }
              (this.vertical || this.horizontal) && (this.$wrap.addClass(this.classes.wrap), this.$container.addClass(this.classes.container), this.$content.addClass(this.classes.content), this.options.skin && this.$wrap.addClass(this.classes.skin), this.$wrap.addClass(this.options.enabledClass), this.vertical && (this.$wrap.addClass(this.classes.wrap + "-vertical"), this.initLayout("vertical"), this.createBar("vertical")), this.horizontal && (this.$wrap.addClass(this.classes.wrap + "-horizontal"), this.initLayout("horizontal"), this.createBar("horizontal")), this.bindEvents())
          }, bindEvents: function () {
              var b = this, d = this.options;
              d.responsive && (c(a).on(this.eventNameWithId("orientationchange"), function () {
                  b.update.call(b)
              }), c(a).on(this.eventNameWithId("resize"), this.throttle(function () {
                  b.update.call(b)
              }, d.throttle))), (this.horizontal || this.vertical) && (this.$wrap.on(this.eventName("mouseenter"), function () {
                  b.$wrap.addClass(b.options.hoveringClass), b.enter("hovering"), b.trigger("hover")
              }), this.$wrap.on(this.eventName("mouseleave"), function () {
                  b.$wrap.removeClass(b.options.hoveringClass), b.is("hovering") && (b.leave("hovering"), b.trigger("hovered"))
              }), d.showOnHover && (d.showOnBarHover ? this.$bar.on("asScrollbar::hover", function () {
                  b.showBar(this.direction)
              }).on("asScrollbar::hovered", function () {
                  b.hideBar(this.direction)
              }) : (this.$element.on(j + "::hover", c.proxy(this.showBar, this)), this.$element.on(j + "::hovered", c.proxy(this.hideBar, this)))), this.$container.on(this.eventName("scroll"), function () {
                  if (b.horizontal) {
                      var a = b.offsetLeft;
                      b.offsetLeft = b.getOffset("horizontal"), a !== b.offsetLeft && (b.trigger("scroll", b.getPercentOffset("horizontal"), "horizontal"), 0 === b.offsetLeft && b.trigger("scrolltop", "horizontal"), b.offsetLeft === b.getScrollLength("horizontal") && b.trigger("scrollend", "horizontal"))
                  }
                  if (b.vertical) {
                      var c = b.offsetTop;
                      b.offsetTop = b.getOffset("vertical"), c !== b.offsetTop && (b.trigger("scroll", b.getPercentOffset("vertical"), "vertical"), 0 === b.offsetTop && b.trigger("scrolltop", "vertical"), b.offsetTop === b.getScrollLength("vertical") && b.trigger("scrollend", "vertical"))
                  }
              }), this.$element.on(j + "::scroll", function (a, c, d, e) {
                  b.is("scrolling") || (b.enter("scrolling"), b.$wrap.addClass(b.options.scrollingClass));
                  var f = c.getBarApi(e);
                  f.moveTo(h(d), !1, !0), clearTimeout(b._timeoutId), b._timeoutId = setTimeout(function () {
                      b.$wrap.removeClass(b.options.scrollingClass), b.leave("scrolling")
                  }, 200)
              }), this.$bar.on("asScrollbar::change", function (a, c, d) {
                  b.scrollTo(this.direction, h(d), !1, !0)
              }), this.$bar.on("asScrollbar::drag", function () {
                  b.$wrap.addClass(b.options.draggingClass)
              }).on("asScrollbar::dragged", function () {
                  b.$wrap.removeClass(b.options.draggingClass)
              }))
          }, unbindEvents: function () {
              this.$wrap.off(this.eventName()), this.$element.off(j + "::scroll").off(j + "::hover").off(j + "::hovered"), this.$container.off(this.eventName()), c(a).off(this.eventNameWithId())
          }, initLayout: function (a) {
              "vertical" === a && this.$container.css("height", this.$wrap.height());
              var b = this.attributes[a], c = this.$container[0], d = this.getBrowserScrollbarWidth(a),
                  e = c.parentNode[b.crossClientLength];
              this.$content.css(b.crossLength, e + "px"), this.$container.css(b.crossLength, d + e + "px"), 0 === d && l && this.$container.css(b.ffPadding, 16)
          }, createBar: function (a) {
              var b = c.extend(this.options.scrollbar, {
                  namespace: this.classes.bar,
                  direction: a,
                  useCssTransitions: !1,
                  keyboard: !1
              }), d = c("<div>");
              d.asScrollbar(b), this.options.showOnHover && d.addClass(this.classes.barHide), d.appendTo(this.$wrap), this["$" + a] = d, this.$bar = null === this.$bar ? d : this.$bar.add(d), this.updateBarHandle(a)
          }, trigger: function (a) {
              var b = Array.prototype.slice.call(arguments, 1), c = [this].concat(b);
              this.$element.trigger(j + "::" + a, c), a = a.replace(/\b\w+\b/g, function (a) {
                  return a.substring(0, 1).toUpperCase() + a.substring(1)
              });
              var d = "on" + a;
              "function" == typeof this.options[d] && this.options[d].apply(this, b)
          }, is: function (a) {
              return this._states[a] && this._states[a] > 0
          }, enter: function (a) {
              this._states[a] === e && (this._states[a] = 0), this._states[a]++
          }, leave: function (a) {
              this._states[a]--
          }, eventName: function (a) {
              if ("string" != typeof a || "" === a) return "." + this.options.namespace;
              a = a.split(" ");
              for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace;
              return a.join(" ")
          }, eventNameWithId: function (a) {
              if ("string" != typeof a || "" === a) return this.options.namespace + "-" + this.instanceId;
              a = a.split(" ");
              for (var b = a.length, c = 0; b > c; c++) a[c] = a[c] + "." + this.options.namespace + "-" + this.instanceId;
              return a.join(" ")
          }, throttle: function (a, b) {
              var c, d, e, f = Date.now || function () {
                  return (new Date).getTime()
              }, g = null, h = 0, i = function () {
                  h = f(), g = null, e = a.apply(c, d), c = d = null
              };
              return function () {
                  var j = f(), k = b - (j - h);
                  return c = this, d = arguments, 0 >= k ? (clearTimeout(g), g = null, h = j, e = a.apply(c, d), c = d = null) : g || (g = setTimeout(i, k)), e
              }
          }, getBrowserScrollbarWidth: function (a) {
              var c, d, e = this.attributes[a];
              return e.scrollbarWidth ? e.scrollbarWidth : (c = b.createElement("div"), d = c.style, d.position = "absolute", d.width = "100px", d.height = "100px", d.overflow = "scroll", d.top = "-9999px", b.body.appendChild(c), e.scrollbarWidth = c[e.offset] - c[e.clientLength], b.body.removeChild(c), e.scrollbarWidth)
          }, getOffset: function (a) {
              var b = this.attributes[a], c = this.$container[0];
              return c[b.pageOffset] || c[b.scroll]
          }, getPercentOffset: function (a) {
              return this.getOffset(a) / this.getScrollLength(a)
          }, getContainerLength: function (a) {
              return this.$container[0][this.attributes[a].clientLength]
          }, getScrollLength: function (a) {
              var b = this.$content[0][this.attributes[a].scrollLength];
              return b - this.getContainerLength(a)
          }, scrollTo: function (a, b, c, d) {
              var e = typeof b;
              "string" === e && (g(b) && (b = i(b) * this.getScrollLength(a)), b = parseFloat(b), e = "number"), "number" === e && this.move(a, b, c, d)
          }, scrollBy: function (a, b, c, d) {
              var e = typeof b;
              "string" === e && (g(b) && (b = i(b) * this.getScrollLength(a)), b = parseFloat(b), e = "number"), "number" === e && this.move(a, this.getOffset(a) + b, c, d)
          }, move: function (b, c, d, e) {
              if (this[b] === !0 && "number" == typeof c) {
                  var g = this;
                  this.enter("moving"), 0 > c ? c = 0 : c > this.getScrollLength(b) && (c = this.getScrollLength(b));
                  var h = this.attributes[b], i = function () {
                      g.leave("moving")
                  };
                  if (e) this.$container[0][h.scroll] = c, d !== !1 && this.trigger("change", c / this.getScrollLength(b)), i(); else {
                      g.enter("animating");
                      var j = f(), k = g.getOffset(b), l = c, m = function (e) {
                          var f = (e - j) / g.options.duration;
                          f > 1 && (f = 1), f = g.easing.fn(f);
                          var n = parseFloat(k + f * (l - k), 10);
                          g.$container[0][h.scroll] = n, d !== !1 && g.trigger("change", c / g.getScrollLength(b)), 1 === f ? (a.cancelAnimationFrame(g._frameId), g._frameId = null, g.leave("animating"), i()) : g._frameId = a.requestAnimationFrame(m)
                      };
                      g._frameId = a.requestAnimationFrame(m)
                  }
              }
          }, scrollXto: function (a, b, c) {
              return this.scrollTo("horizontal", a, b, c)
          }, scrollYto: function (a, b, c) {
              return this.scrollTo("vertical", a, b, c)
          }, scrollXby: function (a, b, c) {
              return this.scrollBy("horizontal", a, b, c)
          }, scrollYby: function (a, b, c) {
              return this.scrollBy("vertical", a, b, c)
          }, getBar: function (a) {
              return a && this["$" + a] ? this["$" + a] : this.$bar
          }, getBarApi: function (a) {
              return this.getBar(a).data("asScrollbar")
          }, getBarX: function () {
              return this.getBar("horizontal")
          }, getBarY: function () {
              return this.getBar("vertical")
          }, showBar: function (a) {
              this.getBar(a).removeClass(this.classes.barHide)
          }, hideBar: function (a) {
              this.getBar(a).addClass(this.classes.barHide)
          }, updateBarHandle: function (a) {
              var b = this.getBarApi(a), c = this.getScrollLength(a), d = this.getContainerLength(a);
              c > 0 ? (b.is("disabled") && b.enable(), b.setHandleLength(b.getBarLength() * d / (c + d), !0)) : b.disable()
          }, disable: function () {
              this.is("disabled") || (this.enter("disabled"), this.$wrap.addClass(this.options.disabledClass).removeClass(this.options.enabledClass), this.unbindEvents(), this.unStyle())
          }, enable: function () {
              this.is("disabled") && (this.leave("disabled"), this.$wrap.addClass(this.options.enabledClass).removeClass(this.options.disabledClass), this.bindEvents(), this.update())
          }, update: function () {
              this.is("disabled") || (this.vertical && (this.initLayout("vertical"), this.updateBarHandle("vertical")), this.horizontal && (this.initLayout("horizontal"), this.updateBarHandle("horizontal")))
          }, unStyle: function () {
              this.horizontal && (this.$container.css({
                  height: "",
                  "padding-bottom": ""
              }), this.$content.css({height: ""})), this.vertical && (this.$container.css({
                  width: "",
                  height: "",
                  "padding-right": ""
              }), this.$content.css({width: ""})), this.options.containerSelector || this.$wrap.css({height: ""})
          }, destory: function () {
              this.$wrap.removeClass(this.classes.wrap + "-vertical").removeClass(this.classes.wrap + "-horizontal").removeClass(this.classes.wrap).removeClass(this.options.enabledClass).removeClass(this.classes.disabledClass), this.unStyle(), this.$bar && this.$bar.remove(), this.unbindEvents(), this.options.containerSelector ? this.$container.removeClass(this.classes.container) : this.$container.unwrap(), this.options.contentSelector || this.$content.unwrap(), this.$content.removeClass(this.classes.content), this.$element.data(j, null)
          }
      }, c.fn[j] = function (a) {
          if ("string" != typeof a) return this.each(function () {
              c(this).data(j) ? c(this).data(j).update() : c(this).data(j, new m(a, this))
          });
          var b = a, d = Array.prototype.slice.call(arguments, 1);
          if (/^\_/.test(b)) return !1;
          if (!/^(get)/.test(b)) return this.each(function () {
              var a = c.data(this, j);
              a && "function" == typeof a[b] && a[b].apply(a, d)
          });
          var e = this.first().data(j);
          return e && "function" == typeof e[b] ? e[b].apply(e, d) : this
      }
  }(window, document, jQuery, function (a) {
      "use strict";
      return void 0 === a.asScrollbar ? !1 : a.asScrollbar
  }(jQuery));
  /*asscrollable.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("scrollable", {
      mode: "init",
      defaults: {
          namespace: "scrollable",
          contentSelector: "> [data-role='content']",
          containerSelector: "> [data-role='container']"
      },
      init: function (context) {
          if (!$.fn.asScrollable) return;
          var defaults = $.components.getDefaults("scrollable");
  
          $('[data-plugin="scrollable"]', context).each(function () {
              var options = $.extend({}, defaults, $(this).data());
  
              $(this).asScrollable(options);
          });
      }
  });
  
  /*alertify.js*/
  (function () {
  
      "use strict";
  
      var TRANSITION_FALLBACK_DURATION = 500;
      var hideElement = function (el) {
  
          if (!el) {
              return;
          }
  
          var removeThis = function () {
              if (el && el.parentNode) {
                  el.parentNode.removeChild(el);
              }
          };
  
          el.classList.remove("show");
          el.classList.add("hide");
          el.addEventListener("transitionend", removeThis);
  
          // Fallback for no transitions.
          setTimeout(removeThis, TRANSITION_FALLBACK_DURATION);
  
      };
  
      function Alertify() {
  
          /**
           * Alertify private object
           * @type {Object}
           */
          var _alertify = {
  
              version: "1.0.8",
              defaultOkLabel: "Ok",
              okLabel: "Ok",
              defaultCancelLabel: "Cancel",
              cancelLabel: "Cancel",
              defaultMaxLogItems: 2,
              maxLogItems: 2,
              promptValue: "",
              promptPlaceholder: "",
              closeLogOnClick: false,
              closeLogOnClickDefault: false,
              delay: 5000,
              defaultDelay: 5000,
              logContainerClass: "alertify-logs",
              logContainerDefaultClass: "alertify-logs",
              dialogs: {
                  buttons: {
                      holder: "<nav>{{buttons}}</nav>",
                      ok: "<button class='ok' tabindex='1'>{{ok}}</button>",
                      cancel: "<button class='cancel' tabindex='2'>{{cancel}}</button>"
                  },
                  input: "<input type='text'>",
                  message: "<p class='msg'>{{message}}</p>",
                  log: "<div class='{{class}}'>{{message}}</div>"
              },
  
              defaultDialogs: {
                  buttons: {
                      holder: "<nav>{{buttons}}</nav>",
                      ok: "<button class='ok' tabindex='1'>{{ok}}</button>",
                      cancel: "<button class='cancel' tabindex='2'>{{cancel}}</button>"
                  },
                  input: "<input type='text'>",
                  message: "<p class='msg'>{{message}}</p>",
                  log: "<div class='{{class}}'>{{message}}</div>"
              },
  
              /**
               * Build the proper message box
               *
               * @param  {Object} item    Current object in the queue
               *
               * @return {String}         An HTML string of the message box
               */
              build: function (item) {
  
                  var btnTxt = this.dialogs.buttons.ok;
                  var html = "<div class='dialog'>" + "<div>" + this.dialogs.message.replace("{{message}}", item.message);
  
                  if (item.type === "confirm" || item.type === "prompt") {
                      btnTxt = this.dialogs.buttons.cancel + this.dialogs.buttons.ok;
                  }
  
                  if (item.type === "prompt") {
                      html += this.dialogs.input;
                  }
  
                  html = (html + this.dialogs.buttons.holder + "</div>" + "</div>")
                      .replace("{{buttons}}", btnTxt)
                      .replace("{{ok}}", this.okLabel)
                      .replace("{{cancel}}", this.cancelLabel);
  
                  return html;
  
              },
  
              setCloseLogOnClick: function (bool) {
                  this.closeLogOnClick = !!bool;
              },
  
              /**
               * Close the log messages
               *
               * @param  {Object} elem    HTML Element of log message to close
               * @param  {Number} wait    [optional] Time (in ms) to wait before automatically hiding the message, if 0 never hide
               *
               * @return {undefined}
               */
              close: function (elem, wait) {
  
                  if (this.closeLogOnClick) {
                      elem.addEventListener("click", function (ev) {
                          hideElement(ev.srcElement);
                      });
                  }
  
                  wait = wait && !isNaN(+wait) ? +wait : this.delay;
  
                  if (wait < 0) {
                      hideElement(elem);
                  } else if (wait > 0) {
                      setTimeout(function () {
                          hideElement(elem);
                      }, wait);
                  }
  
              },
  
              /**
               * Create a dialog box
               *
               * @param  {String}   message      The message passed from the callee
               * @param  {String}   type         Type of dialog to create
               * @param  {Function} onOkay       [Optional] Callback function when clicked okay.
               * @param  {Function} onCancel     [Optional] Callback function when cancelled.
               *
               * @return {Object}
               */
              dialog: function (message, type, onOkay, onCancel) {
                  return this.setup({
                      type: type,
                      message: message,
                      onOkay: onOkay,
                      onCancel: onCancel
                  });
              },
  
              /**
               * Show a new log message box
               *
               * @param  {String} message    The message passed from the callee
               * @param  {String} type       [Optional] Optional type of log message
               * @param  {Number} wait       [Optional] Time (in ms) to wait before auto-hiding the log
               *
               * @return {Object}
               */
              log: function (message, type, click) {
  
                  var existing = document.querySelectorAll(".alertify-logs > div");
                  if (existing) {
                      var diff = existing.length - this.maxLogItems;
                      if (diff >= 0) {
                          for (var i = 0, _i = diff + 1; i < _i; i++) {
                              this.close(existing[i], -1);
                          }
                      }
                  }
  
                  this.notify(message, type, click);
              },
  
              setLogPosition: function (str) {
                  this.logContainerClass = "alertify-logs " + str;
              },
  
              setupLogContainer: function () {
  
                  var elLog = document.querySelector(".alertify-logs");
                  var className = this.logContainerClass;
                  if (!elLog) {
                      elLog = document.createElement("div");
                      elLog.className = className;
                      document.body.appendChild(elLog);
                  }
  
                  // Make sure it's positioned properly.
                  if (elLog.className !== className) {
                      elLog.className = className;
                  }
  
                  return elLog;
  
              },
  
              /**
               * Add new log message
               * If a type is passed, a class name "{type}" will get added.
               * This allows for custom look and feel for various types of notifications.
               *
               * @param  {String} message    The message passed from the callee
               * @param  {String} type       [Optional] Type of log message
               * @param  {Number} wait       [Optional] Time (in ms) to wait before auto-hiding
               *
               * @return {undefined}
               */
              notify: function (message, type, click) {
  
                  var elLog = this.setupLogContainer();
                  var log = document.createElement("div");
  
                  log.className = (type || "default");
                  if (_alertify.logTemplateMethod) {
                      log.innerHTML = _alertify.logTemplateMethod(message);
                  } else {
                      log.innerHTML = message;
                  }
  
                  // Add the click handler, if specified.
                  if ("function" === typeof click) {
                      log.addEventListener("click", click);
                  }
  
                  elLog.appendChild(log);
                  setTimeout(function () {
                      log.className += " show";
                  }, 10);
  
                  this.close(log, this.delay);
  
              },
  
              /**
               * Initiate all the required pieces for the dialog box
               *
               * @return {undefined}
               */
              setup: function (item) {
  
                  var el = document.createElement("div");
                  el.className = "alertify hide";
                  el.innerHTML = this.build(item);
  
                  var btnOK = el.querySelector(".ok");
                  var btnCancel = el.querySelector(".cancel");
                  var input = el.querySelector("input");
                  var label = el.querySelector("label");
  
                  // Set default value/placeholder of input
                  if (input) {
                      if (typeof this.promptPlaceholder === "string") {
                          // Set the label, if available, for MDL, etc.
                          if (label) {
                              label.textContent = this.promptPlaceholder;
                          } else {
                              input.placeholder = this.promptPlaceholder;
                          }
                      }
                      if (typeof this.promptValue === "string") {
                          input.value = this.promptValue;
                      }
                  }
  
                  function setupHandlers(resolve) {
                      if ("function" !== typeof resolve) {
                          // promises are not available so resolve is a no-op
                          resolve = function () {
                          };
                      }
  
                      if (btnOK) {
                          btnOK.addEventListener("click", function (ev) {
                              if (item.onOkay && "function" === typeof item.onOkay) {
                                  if (input) {
                                      item.onOkay(input.value, ev);
                                  } else {
                                      item.onOkay(ev);
                                  }
                              }
  
                              if (input) {
                                  resolve({
                                      buttonClicked: "ok",
                                      inputValue: input.value,
                                      event: ev
                                  });
                              } else {
                                  resolve({
                                      buttonClicked: "ok",
                                      event: ev
                                  });
                              }
  
                              hideElement(el);
                          });
                      }
  
                      if (btnCancel) {
                          btnCancel.addEventListener("click", function (ev) {
                              if (item.onCancel && "function" === typeof item.onCancel) {
                                  item.onCancel(ev);
                              }
  
                              resolve({
                                  buttonClicked: "cancel",
                                  event: ev
                              });
  
                              hideElement(el);
                          });
                      }
                  }
  
                  var promise;
  
                  if (typeof Promise === "function") {
                      promise = new Promise(setupHandlers);
                  } else {
                      setupHandlers();
                  }
  
                  document.body.appendChild(el);
                  setTimeout(function () {
                      el.classList.remove("hide");
                      if (input && item.type && item.type === "prompt") {
                          input.select();
                          input.focus();
                      } else {
                          if (btnOK) {
                              btnOK.focus();
                          }
                      }
                  }, 100);
  
                  return promise;
              },
  
              okBtn: function (label) {
                  this.okLabel = label;
                  return this;
              },
  
              setDelay: function (time) {
                  var dur = parseInt(time || 0, 10);
                  this.delay = isNaN(dur) ? this.defultDelay : time;
                  return this;
              },
  
              cancelBtn: function (str) {
                  this.cancelLabel = str;
                  return this;
              },
  
              setMaxLogItems: function (num) {
                  this.maxLogItems = parseInt(num || this.defaultMaxLogItems);
              },
  
              theme: function (themeStr) {
                  switch (themeStr.toLowerCase()) {
                      case "bootstrap":
                          this.dialogs.buttons.ok = "<button class='ok btn btn-primary' tabindex='1'>{{ok}}</button>";
                          this.dialogs.buttons.cancel = "<button class='cancel btn btn-default' tabindex='2'>{{cancel}}</button>";
                          this.dialogs.input = "<input type='text' class='form-control'>";
                          break;
                      case "purecss":
                          this.dialogs.buttons.ok = "<button class='ok pure-button' tabindex='1'>{{ok}}</button>";
                          this.dialogs.buttons.cancel = "<button class='cancel pure-button' tabindex='2'>{{cancel}}</button>";
                          break;
                      case "mdl":
                      case "material-design-light":
                          this.dialogs.buttons.ok = "<button class='ok mdl-button mdl-js-button mdl-js-ripple-effect'  tabindex='1'>{{ok}}</button>";
                          this.dialogs.buttons.cancel = "<button class='cancel mdl-button mdl-js-button mdl-js-ripple-effect' tabindex='2'>{{cancel}}</button>";
                          this.dialogs.input = "<div class='mdl-textfield mdl-js-textfield'><input class='mdl-textfield__input'><label class='md-textfield__label'></label></div>";
                          break;
                      case "angular-material":
                          this.dialogs.buttons.ok = "<button class='ok md-primary md-button' tabindex='1'>{{ok}}</button>";
                          this.dialogs.buttons.cancel = "<button class='cancel md-button' tabindex='2'>{{cancel}}</button>";
                          this.dialogs.input = "<div layout='column'><md-input-container md-no-float><input type='text'></md-input-container></div>";
                          break;
                      case "default":
                      default:
                          this.dialogs.buttons.ok = this.defaultDialogs.buttons.ok;
                          this.dialogs.buttons.cancel = this.defaultDialogs.buttons.cancel;
                          this.dialogs.input = this.defaultDialogs.input;
                          break;
                  }
              },
  
              reset: function () {
                  this.theme("default");
                  this.okBtn(this.defaultOkLabel);
                  this.cancelBtn(this.defaultCancelLabel);
                  this.setMaxLogItems();
                  this.promptValue = "";
                  this.promptPlaceholder = "";
                  this.delay = this.defaultDelay;
                  this.setCloseLogOnClick(this.closeLogOnClickDefault);
                  this.setLogPosition("bottom left");
                  this.logTemplateMethod = null;
              },
  
              injectCSS: function () {
                  if (!document.querySelector("#alertifyCSS")) {
                      var head = document.getElementsByTagName("head")[0];
                      var css = document.createElement("style");
                      css.type = "text/css";
                      css.id = "alertifyCSS";
                      css.innerHTML = "/* style.css */";
                      head.insertBefore(css, head.firstChild);
                  }
              },
  
              removeCSS: function () {
                  var css = document.querySelector("#alertifyCSS");
                  if (css && css.parentNode) {
                      css.parentNode.removeChild(css);
                  }
              }
  
          };
  
          _alertify.injectCSS();
  
          return {
              _$$alertify: _alertify,
              reset: function () {
                  _alertify.reset();
                  return this;
              },
              alert: function (message, onOkay, onCancel) {
                  return _alertify.dialog(message, "alert", onOkay, onCancel) || this;
              },
              confirm: function (message, onOkay, onCancel) {
                  return _alertify.dialog(message, "confirm", onOkay, onCancel) || this;
              },
              prompt: function (message, onOkay, onCancel) {
                  return _alertify.dialog(message, "prompt", onOkay, onCancel) || this;
              },
              log: function (message, click) {
                  _alertify.log(message, "default", click);
                  return this;
              },
              theme: function (themeStr) {
                  _alertify.theme(themeStr);
                  return this;
              },
              success: function (message, click) {
                  _alertify.log(message, "success", click);
                  return this;
              },
              error: function (message, click) {
                  _alertify.log(message, "error", click);
                  return this;
              },
              cancelBtn: function (label) {
                  _alertify.cancelBtn(label);
                  return this;
              },
              okBtn: function (label) {
                  _alertify.okBtn(label);
                  return this;
              },
              delay: function (time) {
                  _alertify.setDelay(time);
                  return this;
              },
              placeholder: function (str) {
                  _alertify.promptPlaceholder = str;
                  return this;
              },
              defaultValue: function (str) {
                  _alertify.promptValue = str;
                  return this;
              },
              maxLogItems: function (num) {
                  _alertify.setMaxLogItems(num);
                  return this;
              },
              closeLogOnClick: function (bool) {
                  _alertify.setCloseLogOnClick(!!bool);
                  return this;
              },
              logPosition: function (str) {
                  _alertify.setLogPosition(str || "");
                  return this;
              },
              setLogTemplate: function (templateMethod) {
                  _alertify.logTemplateMethod = templateMethod;
                  return this;
              },
              clearLogs: function () {
                  _alertify.setupLogContainer().innerHTML = "";
                  return this;
              },
              version: _alertify.version
          };
      }
  
      // AMD, window, and NPM support
      if ("undefined" !== typeof module && !!module && !!module.exports) {
          // Preserve backwards compatibility
          module.exports = function () {
              return new Alertify();
          };
          var obj = new Alertify();
          for (var key in obj) {
              module.exports[key] = obj[key];
          }
      } else if (typeof define === "function" && define.amd) {
          define(function () {
              return new Alertify();
          });
      } else {
          window.alertify = new Alertify();
      }
  
  }());
  
  /*jquery.appear.js*/
  /*
   * jQuery appear plugin
   *
   * Copyright (c) 2012 Andrey Sidorov
   * licensed under MIT license.
   *
   * https://github.com/morr/jquery.appear/
   *
   * Version: 0.3.6
   */
  (function ($) {
      var selectors = [];
  
      var check_binded = false;
      var check_lock = false;
      var defaults = {
          interval: 250,
          force_process: false
      };
      var $window = $(window);
  
      var $prior_appeared = [];
  
      function process() {
          check_lock = false;
          for (var index = 0, selectorsLength = selectors.length; index < selectorsLength; index++) {
              var $appeared = $(selectors[index]).filter(function () {
                  return $(this).is(':appeared');
              });
  
              $appeared.trigger('appear', [$appeared]);
  
              if ($prior_appeared[index]) {
                  var $disappeared = $prior_appeared[index].not($appeared);
                  $disappeared.trigger('disappear', [$disappeared]);
              }
              $prior_appeared[index] = $appeared;
          }
      };
  
      function add_selector(selector) {
          selectors.push(selector);
          $prior_appeared.push();
      }
  
      // "appeared" custom filter
      $.expr[':']['appeared'] = function (element) {
          var $element = $(element);
          if (!$element.is(':visible')) {
              return false;
          }
  
          var window_left = $window.scrollLeft();
          var window_top = $window.scrollTop();
          var offset = $element.offset();
          var left = offset.left;
          var top = offset.top;
  
          if (top + $element.height() >= window_top &&
              top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
              left + $element.width() >= window_left &&
              left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
              return true;
          } else {
              return false;
          }
      };
  
      $.fn.extend({
          // watching for element's appearance in browser viewport
          appear: function (options) {
              var opts = $.extend({}, defaults, options || {});
              var selector = this.selector || this;
              if (!check_binded) {
                  var on_check = function () {
                      if (check_lock) {
                          return;
                      }
                      check_lock = true;
  
                      setTimeout(process, opts.interval);
                  };
  
                  $(window).scroll(on_check).resize(on_check);
                  check_binded = true;
              }
  
              if (opts.force_process) {
                  setTimeout(process, opts.interval);
              }
              add_selector(selector);
              return $(selector);
          }
      });
  
      $.extend({
          // force elements's appearance check
          force_appear: function () {
              if (check_binded) {
                  process();
                  return true;
              }
              return false;
          }
      });
  })(function () {
      if (typeof module !== 'undefined') {
          // Node
          return require('jquery');
      } else {
          return jQuery;
      }
  }());
  
  /*jquery-appear.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("appear", {
      defaults: {}, api: function (context) {
          $.fn.appear && ($(document).on("appear", '[data-plugin="appear"]', function () {
              var $item = $(this), animate = $item.data("animate");
              $item.hasClass("appear-no-repeat") || ($item.removeClass("invisible").addClass("animation-" + animate), $item.data("repeat") === !1 && $item.addClass("appear-no-repeat"))
          }), $(document).on("disappear", '[data-plugin="appear"]', function () {
              var $item = $(this), animate = $item.data("animate");
              $item.hasClass("appear-no-repeat") || $item.addClass("invisible").removeClass("animation-" + animate)
          }))
      }, init: function (context) {
          if ($.fn.appear) {
              var defaults = $.components.getDefaults("appear");
              $('[data-plugin="appear"]', context).appear(defaults), $('[data-plugin="appear"]', context).not(":appeared").addClass("invisible")
          }
      }
  });
  /*bootstrap-hover-dropdown.min.js*/
  /**
   * @preserve
   * Project: Bootstrap Hover Dropdown
   * Author: Cameron Spear
   * Version: v2.2.1
   * Contributors: Mattia Larentis
   * Dependencies: Bootstrap's Dropdown plugin, jQuery
   * Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
   * License: MIT
   * Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
   */
  !function (e, n) {
      var o = e();
      e.fn.dropdownHover = function (t) {
          return "ontouchstart" in document ? this : (o = o.add(this.parent()), this.each(function () {
              function r() {
                  d.parents(".navbar").find(".navbar-toggle").is(":visible") || (n.clearTimeout(a), n.clearTimeout(i), i = n.setTimeout(function () {
                      o.find(":focus").blur(), v.instantlyCloseOthers === !0 && o.removeClass("open"), n.clearTimeout(i), d.attr("aria-expanded", "true"), s.addClass("open"), d.trigger(h)
                  }, v.hoverDelay))
              }
  
              var a, i, d = e(this), s = d.parent(), u = {delay: 500, hoverDelay: 0, instantlyCloseOthers: !0}, l = {
                  delay: e(this).data("delay"),
                  hoverDelay: e(this).data("hover-delay"),
                  instantlyCloseOthers: e(this).data("close-others")
              }, h = "show.bs.dropdown", c = "hide.bs.dropdown", v = e.extend(!0, {}, u, t, l);
              s.hover(function (e) {
                  return s.hasClass("open") || d.is(e.target) ? void r(e) : !0
              }, function () {
                  n.clearTimeout(i), a = n.setTimeout(function () {
                      d.attr("aria-expanded", "false"), s.removeClass("open"), d.trigger(c)
                  }, v.delay)
              }), d.hover(function (e) {
                  return s.hasClass("open") || s.is(e.target) ? void r(e) : !0
              }), s.find(".dropdown-submenu").each(function () {
                  var o, t = e(this);
                  t.hover(function () {
                      n.clearTimeout(o), t.children(".dropdown-menu").show(), t.siblings().children(".dropdown-menu").hide()
                  }, function () {
                      var e = t.children(".dropdown-menu");
                      o = n.setTimeout(function () {
                          e.hide()
                      }, v.delay)
                  })
              })
          }))
      }, e(document).ready(function () {
          e('[data-hover="dropdown"]').dropdownHover()
      })
  }(jQuery, window);
  /*jquery.webui-popover.min.js*/
  /*
   *  webui popover plugin  - v1.2.3
   *  A lightWeight popover plugin with jquery ,enchance the  popover plugin of bootstrap with some awesome new features. It works well with bootstrap ,but bootstrap is not necessary!
   *  https://github.com/sandywalker/webui-popover
   *
   *  Made by Sandy Duan
   *  Under MIT License
   */
  !function (a, b, c) {
      "use strict";
  
      function d(b, c) {
          this.$element = a(b), c && ("string" === a.type(c.delay) || "number" === a.type(c.delay)) && (c.delay = {
              show: c.delay,
              hide: c.delay
          }), this.options = a.extend({}, h, c), this._defaults = h, this._name = e, this._targetclick = !1, this.init(), i.push(this.$element)
      }
  
      var e = "webuiPopover", f = "webui-popover", g = "webui.popover", h = {
              placement: "auto",
              width: "auto",
              height: "auto",
              trigger: "click",
              style: "",
              delay: {show: null, hide: null},
              async: {before: null, success: null},
              cache: !0,
              multi: !1,
              arrow: !0,
              title: "",
              content: "",
              closeable: !1,
              padding: !0,
              url: "",
              type: "html",
              animation: null,
              template: '<div class="webui-popover"><div class="arrow"></div><div class="webui-popover-inner"><a href="#" class="close">&times;</a><h3 class="webui-popover-title"></h3><div class="webui-popover-content"><i class="icon-refresh"></i> <p>&nbsp;</p></div></div></div>',
              backdrop: !1,
              dismissible: !0,
              onShow: null,
              onHide: null,
              abortXHR: !0,
              autoHide: !1,
              offsetTop: 0,
              offsetLeft: 0,
              iframeOptions: {
                  frameborder: "0",
                  allowtransparency: "true",
                  id: "",
                  name: "",
                  scrolling: "",
                  onload: "",
                  height: "",
                  width: ""
              }
          }, i = [], j = a('<div class="webui-popover-backdrop"></div>'), k = 0, l = !1, m = -2e3, n = a(c),
          o = function (a, b) {
              return isNaN(a) ? b || 0 : Number(a)
          }, p = function (a) {
              return a.data("plugin_" + e)
          }, q = function () {
              for (var a = 0; a < i.length; a++) i[a].webuiPopover("hide");
              n.trigger("hiddenAll." + g)
          }, r = function (a) {
              var b = {x: 0, y: 0};
              if ("touchstart" === a.type || "touchmove" === a.type || "touchend" === a.type || "touchcancel" === a.type) {
                  var c = a.originalEvent.touches[0] || a.originalEvent.changedTouches[0];
                  b.x = c.pageX, b.y = c.pageY
              } else ("mousedown" === a.type || "mouseup" === a.type || "click" === a.type) && (b.x = a.pageX, b.y = a.pageY);
              return b
          };
      d.prototype = {
          init: function () {
              "click" === this.getTrigger() ? this.$element.off("click touchend").on("click touchend", a.proxy(this.toggle, this)) : "hover" === this.getTrigger() && this.$element.off("mouseenter mouseleave click").on("mouseenter", a.proxy(this.mouseenterHandler, this)).on("mouseleave", a.proxy(this.mouseleaveHandler, this)), this._poped = !1, this._inited = !0, this._opened = !1, this._idSeed = k, this.options.backdrop && j.appendTo(c.body).hide(), k++, "sticky" === this.getTrigger() && this.show()
          }, destroy: function () {
              for (var a = -1, b = 0; b < i.length; b++) if (i[b] === this.$element) {
                  a = b;
                  break
              }
              i.splice(a, 1), this.hide(), this.$element.data("plugin_" + e, null), "click" === this.getTrigger() ? this.$element.off("click") : "hover" === this.getTrigger() && this.$element.off("mouseenter mouseleave"), this.$target && this.$target.remove()
          }, hide: function (b, c) {
              if ((b || "sticky" !== this.getTrigger()) && this._opened) {
                  c && (c.preventDefault(), c.stopPropagation()), this.xhr && this.options.abortXHR === !0 && (this.xhr.abort(), this.xhr = null);
                  var d = a.Event("hide." + g);
                  if (this.$element.trigger(d, [this.$target]), this.$target) {
                      this.$target.removeClass("in").addClass(this.getHideAnimation());
                      var e = this;
                      setTimeout(function () {
                          e.$target.hide()
                      }, 300)
                  }
                  this.options.backdrop && j.hide(), this._opened = !1, this.$element.trigger("hidden." + g, [this.$target]), this.options.onHide && this.options.onHide(this.$target)
              }
          }, resetAutoHide: function () {
              var a = this, b = a.getAutoHide();
              b && (a.autoHideHandler && clearTimeout(a.autoHideHandler), a.autoHideHandler = setTimeout(function () {
                  a.hide()
              }, b))
          }, toggle: function (a) {
              a && (a.preventDefault(), a.stopPropagation()), this[this.getTarget().hasClass("in") ? "hide" : "show"]()
          }, hideAll: function () {
              q()
          }, show: function () {
              var a = this.getTarget().removeClass().addClass(f).addClass(this._customTargetClass);
              this.options.multi || this.hideAll(), this._opened || (this.getCache() && this._poped && "" !== this.content || (this.content = "", this.setTitle(this.getTitle()), this.options.closeable || a.find(".close").off("click").remove(), this.isAsync() ? this.setContentASync(this.options.content) : this.setContent(this.getContent()), a.show()), this.displayContent(), this.options.onShow && this.options.onShow(a), this.bindBodyEvents(), this.options.backdrop && j.show(), this._opened = !0, this.resetAutoHide())
          }, displayContent: function () {
              var b = this.getElementPosition(),
                  d = this.getTarget().removeClass().addClass(f).addClass(this._customTargetClass),
                  e = this.getContentElement(), h = d[0].offsetWidth, i = d[0].offsetHeight, j = "bottom",
                  k = a.Event("show." + g);
              this.$element.trigger(k, [d]);
              var l = this.$element.data("width") || this.options.width;
              "" === l && (l = this._defaults.width), "auto" !== l && d.width(l);
              var n = this.$element.data("height") || this.options.height;
              "" === n && (n = this._defaults.height), "auto" !== n && e.height(n), this.options.style && this.$target.addClass(f + "-" + this.options.style), this.options.arrow || d.find(".arrow").remove(), d.detach().css({
                  top: m,
                  left: m,
                  display: "block"
              }), this.getAnimation() && d.addClass(this.getAnimation()), d.appendTo(c.body), j = this.getPlacement(b), this.$element.trigger("added." + g), this.initTargetEvents(), this.options.padding || ("auto" !== this.options.height && e.css("height", e.outerHeight()), this.$target.addClass("webui-no-padding")), h = d[0].offsetWidth, i = d[0].offsetHeight;
              var o = this.getTargetPositin(b, j, h, i);
              if (this.$target.css(o.position).addClass(j).addClass("in"), "iframe" === this.options.type) {
                  var p = d.find("iframe"), q = d.width(), r = p.parent().height();
                  "" !== this.options.iframeOptions.width && "auto" !== this.options.iframeOptions.width && (q = this.options.iframeOptions.width), "" !== this.options.iframeOptions.height && "auto" !== this.options.iframeOptions.height && (r = this.options.iframeOptions.height), p.width(q).height(r)
              }
              if (this.options.arrow || this.$target.css({margin: 0}), this.options.arrow) {
                  var s = this.$target.find(".arrow");
                  s.removeAttr("style"), "left" === j || "right" === j ? s.css({top: this.$target.height() / 2}) : ("top" === j || "bottom" === j) && s.css({left: this.$target.width() / 2}), o.arrowOffset && (-1 === o.arrowOffset.left || -1 === o.arrowOffset.top ? s.hide() : s.css(o.arrowOffset))
              }
              this._poped = !0, this.$element.trigger("shown." + g, [this.$target])
          }, isTargetLoaded: function () {
              return 0 === this.getTarget().find("i.glyphicon-refresh").length
          }, getTriggerElement: function () {
              return this.$element
          }, getTarget: function () {
              if (!this.$target) {
                  var b = e + this._idSeed;
                  this.$target = a(this.options.template).attr("id", b).data("trigger-element", this.getTriggerElement()), this._customTargetClass = this.$target.attr("class") !== f ? this.$target.attr("class") : null, this.getTriggerElement().attr("data-target", b)
              }
              return this.$target
          }, getTitleElement: function () {
              return this.getTarget().find("." + f + "-title")
          }, getContentElement: function () {
              return this.$contentElement || (this.$contentElement = this.getTarget().find("." + f + "-content")), this.$contentElement
          }, getTitle: function () {
              return this.$element.attr("data-title") || this.options.title || this.$element.attr("title")
          }, getUrl: function () {
              return this.$element.attr("data-url") || this.options.url
          }, getAutoHide: function () {
              return this.$element.attr("data-auto-hide") || this.options.autoHide
          }, getOffsetTop: function () {
              return o(this.$element.attr("data-offset-top")) || this.options.offsetTop
          }, getOffsetLeft: function () {
              return o(this.$element.attr("data-offset-left")) || this.options.offsetLeft
          }, getCache: function () {
              var a = this.$element.attr("data-cache");
              if ("undefined" != typeof a) switch (a.toLowerCase()) {
                  case"true":
                  case"yes":
                  case"1":
                      return !0;
                  case"false":
                  case"no":
                  case"0":
                      return !1
              }
              return this.options.cache
          }, getTrigger: function () {
              return this.$element.attr("data-trigger") || this.options.trigger
          }, getDelayShow: function () {
              var a = this.$element.attr("data-delay-show");
              return "undefined" != typeof a ? a : 0 === this.options.delay.show ? 0 : this.options.delay.show || 100
          }, getHideDelay: function () {
              var a = this.$element.attr("data-delay-hide");
              return "undefined" != typeof a ? a : 0 === this.options.delay.hide ? 0 : this.options.delay.hide || 100
          }, getAnimation: function () {
              var a = this.$element.attr("data-animation");
              return a || this.options.animation
          }, getHideAnimation: function () {
              var a = this.getAnimation();
              return a ? a + "-out" : "out"
          }, setTitle: function (a) {
              var b = this.getTitleElement();
              a ? b.html(a) : b.remove()
          }, hasContent: function () {
              return this.getContent()
          }, getIframe: function () {
              var b = a("<iframe></iframe>").attr("src", this.getUrl()), c = this;
              return a.each(this._defaults.iframeOptions, function (a) {
                  "undefined" != typeof c.options.iframeOptions[a] && b.attr(a, c.options.iframeOptions[a])
              }), b
          }, getContent: function () {
              if (this.getUrl()) switch (this.options.type) {
                  case"iframe":
                      this.content = this.getIframe();
                      break;
                  case"html":
                      try {
                          this.content = a(this.getUrl()), this.content.is(":visible") || this.content.show()
                      } catch (b) {
                          throw new Error("Unable to get popover content. Invalid selector specified.")
                      }
              } else if (!this.content) {
                  var c = "";
                  if (c = a.isFunction(this.options.content) ? this.options.content.apply(this.$element[0], [this]) : this.options.content, this.content = this.$element.attr("data-content") || c, !this.content) {
                      var d = this.$element.next();
                      d && d.hasClass(f + "-content") && (this.content = d)
                  }
              }
              return this.content
          }, setContent: function (a) {
              var b = this.getTarget(), c = this.getContentElement();
              "string" == typeof a ? c.html(a) : a instanceof jQuery && (a.removeClass(f + "-content"), c.html(""), a.appendTo(c)), this.$target = b
          }, isAsync: function () {
              return "async" === this.options.type
          }, setContentASync: function (b) {
              var c = this;
              this.xhr || (this.xhr = a.ajax({
                  url: this.getUrl(),
                  type: "GET",
                  cache: this.getCache(),
                  beforeSend: function (a) {
                      c.options.async.before && c.options.async.before(c, a)
                  },
                  success: function (d) {
                      c.bindBodyEvents(), c.content = b && a.isFunction(b) ? b.apply(c.$element[0], [d]) : d, c.setContent(c.content);
                      var e = c.getContentElement();
                      e.removeAttr("style"), c.displayContent(), c.options.async.success && c.options.async.success(c, d)
                  },
                  complete: function () {
                      c.xhr = null
                  }
              }))
          }, bindBodyEvents: function () {
              this.options.dismissible && "click" === this.getTrigger() && !l && (n.off("keyup.webui-popover").on("keyup.webui-popover", a.proxy(this.escapeHandler, this)), n.off("click.webui-popover touchend.webui-popover").on("click.webui-popover touchend.webui-popover", a.proxy(this.bodyClickHandler, this)))
          }, mouseenterHandler: function () {
              var a = this;
              a._timeout && clearTimeout(a._timeout), a._enterTimeout = setTimeout(function () {
                  a.getTarget().is(":visible") || a.show()
              }, this.getDelayShow())
          }, mouseleaveHandler: function () {
              var a = this;
              clearTimeout(a._enterTimeout), a._timeout = setTimeout(function () {
                  a.hide()
              }, this.getHideDelay())
          }, escapeHandler: function (a) {
              27 === a.keyCode && this.hideAll()
          }, bodyClickHandler: function (a) {
              l = !0;
              for (var b = !0, c = 0; c < i.length; c++) {
                  var d = p(i[c]);
                  if (d._opened) {
                      var e = d.getTarget().offset().left, f = d.getTarget().offset().top,
                          g = d.getTarget().offset().left + d.getTarget().width(),
                          h = d.getTarget().offset().top + d.getTarget().height(), j = r(a),
                          k = j.x >= e && j.x <= g && j.y >= f && j.y <= h;
                      if (k) {
                          b = !1;
                          break
                      }
                  }
              }
              b && q()
          }, initTargetEvents: function () {
              "hover" === this.getTrigger() && this.$target.off("mouseenter mouseleave").on("mouseenter", a.proxy(this.mouseenterHandler, this)).on("mouseleave", a.proxy(this.mouseleaveHandler, this)), this.$target.find(".close").off("click").on("click", a.proxy(this.hide, this, !0))
          }, getPlacement: function (a) {
              var b, d = c.documentElement, e = c.body, f = d.clientWidth, g = d.clientHeight,
                  h = Math.max(e.scrollTop, d.scrollTop), i = Math.max(e.scrollLeft, d.scrollLeft),
                  j = Math.max(0, a.left - i), k = Math.max(0, a.top - h);
              b = "function" == typeof this.options.placement ? this.options.placement.call(this, this.getTarget()[0], this.$element[0]) : this.$element.data("placement") || this.options.placement;
              var l = "horizontal" === b, m = "vertical" === b, n = "auto" === b || l || m;
              return n ? b = f / 3 > j ? g / 3 > k ? l ? "right-bottom" : "bottom-right" : 2 * g / 3 > k ? m ? g / 2 >= k ? "bottom-right" : "top-right" : "right" : l ? "right-top" : "top-right" : 2 * f / 3 > j ? g / 3 > k ? l ? f / 2 >= j ? "right-bottom" : "left-bottom" : "bottom" : 2 * g / 3 > k ? l ? f / 2 >= j ? "right" : "left" : g / 2 >= k ? "bottom" : "top" : l ? f / 2 >= j ? "right-top" : "left-top" : "top" : g / 3 > k ? l ? "left-bottom" : "bottom-left" : 2 * g / 3 > k ? m ? g / 2 >= k ? "bottom-left" : "top-left" : "left" : l ? "left-top" : "top-left" : "auto-top" === b ? b = f / 3 > j ? "top-right" : 2 * f / 3 > j ? "top" : "top-left" : "auto-bottom" === b ? b = f / 3 > j ? "bottom-right" : 2 * f / 3 > j ? "bottom" : "bottom-left" : "auto-left" === b ? b = g / 3 > k ? "left-top" : 2 * g / 3 > k ? "left" : "left-bottom" : "auto-right" === b && (b = g / 3 > k ? "right-top" : 2 * g / 3 > k ? "right" : "right-bottom"), b
          }, getElementPosition: function () {
              return a.extend({}, this.$element.offset(), {
                  width: this.$element[0].offsetWidth,
                  height: this.$element[0].offsetHeight
              })
          }, getTargetPositin: function (a, b, d, e) {
              var f = a, g = c.documentElement, h = c.body, i = g.clientWidth, j = g.clientHeight,
                  k = this.$element.outerWidth(), l = this.$element.outerHeight(), n = Math.max(h.scrollTop, g.scrollTop),
                  o = Math.max(h.scrollLeft, g.scrollLeft), p = {}, q = null, r = this.options.arrow ? 20 : 0, s = 10,
                  t = r + s > k ? r : 0, u = r + s > l ? r : 0, v = 0, w = j + n, x = i + o,
                  y = f.left + f.width / 2 - t > 0, z = f.left + f.width / 2 + t < x, A = f.top + f.height / 2 - u > 0,
                  B = f.top + f.height / 2 + u < w;
              switch (b) {
                  case"bottom":
                      p = {top: f.top + f.height, left: f.left + f.width / 2 - d / 2};
                      break;
                  case"top":
                      p = {top: f.top - e, left: f.left + f.width / 2 - d / 2};
                      break;
                  case"left":
                      p = {top: f.top + f.height / 2 - e / 2, left: f.left - d};
                      break;
                  case"right":
                      p = {top: f.top + f.height / 2 - e / 2, left: f.left + f.width};
                      break;
                  case"top-right":
                      p = {top: f.top - e, left: y ? f.left - t : s}, q = {left: y ? Math.min(k, d) / 2 + t : m};
                      break;
                  case"top-left":
                      v = z ? t : -s, p = {
                          top: f.top - e,
                          left: f.left - d + f.width + v
                      }, q = {left: z ? d - Math.min(k, d) / 2 - t : m};
                      break;
                  case"bottom-right":
                      p = {top: f.top + f.height, left: y ? f.left - t : s}, q = {left: y ? Math.min(k, d) / 2 + t : m};
                      break;
                  case"bottom-left":
                      v = z ? t : -s, p = {
                          top: f.top + f.height,
                          left: f.left - d + f.width + v
                      }, q = {left: z ? d - Math.min(k, d) / 2 - t : m};
                      break;
                  case"right-top":
                      v = B ? u : -s, p = {
                          top: f.top - e + f.height + v,
                          left: f.left + f.width
                      }, q = {top: B ? e - Math.min(l, e) / 2 - u : m};
                      break;
                  case"right-bottom":
                      p = {top: A ? f.top - u : s, left: f.left + f.width}, q = {top: A ? Math.min(l, e) / 2 + u : m};
                      break;
                  case"left-top":
                      v = B ? u : -s, p = {
                          top: f.top - e + f.height + v,
                          left: f.left - d
                      }, q = {top: B ? e - Math.min(l, e) / 2 - u : m};
                      break;
                  case"left-bottom":
                      p = {top: A ? f.top - u : s, left: f.left - d}, q = {top: A ? Math.min(l, e) / 2 + u : m}
              }
              return p.top += this.getOffsetTop(), p.left += this.getOffsetLeft(), {position: p, arrowOffset: q}
          }
      }, a.fn[e] = function (b, c) {
          var f = [], g = this.each(function () {
              var g = a.data(this, "plugin_" + e);
              g ? "destroy" === b ? g.destroy() : "string" == typeof b && f.push(g[b]()) : (b ? "string" == typeof b ? "destroy" !== b && (c || (g = new d(this, null), f.push(g[b]()))) : "object" == typeof b && (g = new d(this, b)) : g = new d(this, null), a.data(this, "plugin_" + e, g))
          });
          return f.length ? f : g
      }
  }(jQuery, window, document);
  /*webui-popover.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("webuiPopover", {
      mode: "default",
      defaults: {trigger: "click", width: 320, multi: !0, cloaseable: !1, style: "", delay: 300, padding: !0}
  });
  /*masonry.pkgd.min.js*/
  /*!
   * Masonry PACKAGED v3.3.2
   * Cascading grid layout library
   * http://masonry.desandro.com
   * MIT License
   * by David DeSandro
   */
  
  !function (a) {
      function b() {
      }
  
      function c(a) {
          function c(b) {
              b.prototype.option || (b.prototype.option = function (b) {
                  a.isPlainObject(b) && (this.options = a.extend(!0, this.options, b))
              })
          }
  
          function e(b, c) {
              a.fn[b] = function (e) {
                  if ("string" == typeof e) {
                      for (var g = d.call(arguments, 1), h = 0, i = this.length; i > h; h++) {
                          var j = this[h], k = a.data(j, b);
                          if (k) if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
                              var l = k[e].apply(k, g);
                              if (void 0 !== l) return l
                          } else f("no such method '" + e + "' for " + b + " instance"); else f("cannot call methods on " + b + " prior to initialization; attempted to call '" + e + "'")
                      }
                      return this
                  }
                  return this.each(function () {
                      var d = a.data(this, b);
                      d ? (d.option(e), d._init()) : (d = new c(this, e), a.data(this, b, d))
                  })
              }
          }
  
          if (a) {
              var f = "undefined" == typeof console ? b : function (a) {
                  console.error(a)
              };
              return a.bridget = function (a, b) {
                  c(b), e(a, b)
              }, a.bridget
          }
      }
  
      var d = Array.prototype.slice;
      "function" == typeof define && define.amd ? define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" == typeof exports ? require("jquery") : a.jQuery)
  }(window), function (a) {
      function b(b) {
          var c = a.event;
          return c.target || c.srcElement || b, c
      }
  
      var c = document.documentElement, d = function () {
      };
      c.addEventListener ? d = function (a, b, c) {
          a.addEventListener(b, c, !1)
      } : c.attachEvent && (d = function (a, c, d) {
          a[c + d] = d.handleEvent ? function () {
              var c = b(a);
              d.handleEvent.call(d, c)
          } : function () {
              var c = b(a);
              d.call(a, c)
          }, a.attachEvent("on" + c, a[c + d])
      });
      var e = function () {
      };
      c.removeEventListener ? e = function (a, b, c) {
          a.removeEventListener(b, c, !1)
      } : c.detachEvent && (e = function (a, b, c) {
          a.detachEvent("on" + b, a[b + c]);
          try {
              delete a[b + c]
          } catch (d) {
              a[b + c] = void 0
          }
      });
      var f = {bind: d, unbind: e};
      "function" == typeof define && define.amd ? define("eventie/eventie", f) : "object" == typeof exports ? module.exports = f : a.eventie = f
  }(window), function () {
      function a() {
      }
  
      function b(a, b) {
          for (var c = a.length; c--;) if (a[c].listener === b) return c;
          return -1
      }
  
      function c(a) {
          return function () {
              return this[a].apply(this, arguments)
          }
      }
  
      var d = a.prototype, e = this, f = e.EventEmitter;
      d.getListeners = function (a) {
          var b, c, d = this._getEvents();
          if (a instanceof RegExp) {
              b = {};
              for (c in d) d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
          } else b = d[a] || (d[a] = []);
          return b
      }, d.flattenListeners = function (a) {
          var b, c = [];
          for (b = 0; b < a.length; b += 1) c.push(a[b].listener);
          return c
      }, d.getListenersAsObject = function (a) {
          var b, c = this.getListeners(a);
          return c instanceof Array && (b = {}, b[a] = c), b || c
      }, d.addListener = function (a, c) {
          var d, e = this.getListenersAsObject(a), f = "object" == typeof c;
          for (d in e) e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c : {listener: c, once: !1});
          return this
      }, d.on = c("addListener"), d.addOnceListener = function (a, b) {
          return this.addListener(a, {listener: b, once: !0})
      }, d.once = c("addOnceListener"), d.defineEvent = function (a) {
          return this.getListeners(a), this
      }, d.defineEvents = function (a) {
          for (var b = 0; b < a.length; b += 1) this.defineEvent(a[b]);
          return this
      }, d.removeListener = function (a, c) {
          var d, e, f = this.getListenersAsObject(a);
          for (e in f) f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d && f[e].splice(d, 1));
          return this
      }, d.off = c("removeListener"), d.addListeners = function (a, b) {
          return this.manipulateListeners(!1, a, b)
      }, d.removeListeners = function (a, b) {
          return this.manipulateListeners(!0, a, b)
      }, d.manipulateListeners = function (a, b, c) {
          var d, e, f = a ? this.removeListener : this.addListener, g = a ? this.removeListeners : this.addListeners;
          if ("object" != typeof b || b instanceof RegExp) for (d = c.length; d--;) f.call(this, b, c[d]); else for (d in b) b.hasOwnProperty(d) && (e = b[d]) && ("function" == typeof e ? f.call(this, d, e) : g.call(this, d, e));
          return this
      }, d.removeEvent = function (a) {
          var b, c = typeof a, d = this._getEvents();
          if ("string" === c) delete d[a]; else if (a instanceof RegExp) for (b in d) d.hasOwnProperty(b) && a.test(b) && delete d[b]; else delete this._events;
          return this
      }, d.removeAllListeners = c("removeEvent"), d.emitEvent = function (a, b) {
          var c, d, e, f, g = this.getListenersAsObject(a);
          for (e in g) if (g.hasOwnProperty(e)) for (d = g[e].length; d--;) c = g[e][d], c.once === !0 && this.removeListener(a, c.listener), f = c.listener.apply(this, b || []), f === this._getOnceReturnValue() && this.removeListener(a, c.listener);
          return this
      }, d.trigger = c("emitEvent"), d.emit = function (a) {
          var b = Array.prototype.slice.call(arguments, 1);
          return this.emitEvent(a, b)
      }, d.setOnceReturnValue = function (a) {
          return this._onceReturnValue = a, this
      }, d._getOnceReturnValue = function () {
          return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0
      }, d._getEvents = function () {
          return this._events || (this._events = {})
      }, a.noConflict = function () {
          return e.EventEmitter = f, a
      }, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function () {
          return a
      }) : "object" == typeof module && module.exports ? module.exports = a : e.EventEmitter = a
  }.call(this), function (a) {
      function b(a) {
          if (a) {
              if ("string" == typeof d[a]) return a;
              a = a.charAt(0).toUpperCase() + a.slice(1);
              for (var b, e = 0, f = c.length; f > e; e++) if (b = c[e] + a, "string" == typeof d[b]) return b
          }
      }
  
      var c = "Webkit Moz ms Ms O".split(" "), d = document.documentElement.style;
      "function" == typeof define && define.amd ? define("get-style-property/get-style-property", [], function () {
          return b
      }) : "object" == typeof exports ? module.exports = b : a.getStyleProperty = b
  }(window), function (a) {
      function b(a) {
          var b = parseFloat(a), c = -1 === a.indexOf("%") && !isNaN(b);
          return c && b
      }
  
      function c() {
      }
  
      function d() {
          for (var a = {
              width: 0,
              height: 0,
              innerWidth: 0,
              innerHeight: 0,
              outerWidth: 0,
              outerHeight: 0
          }, b = 0, c = g.length; c > b; b++) {
              var d = g[b];
              a[d] = 0
          }
          return a
      }
  
      function e(c) {
          function e() {
              if (!m) {
                  m = !0;
                  var d = a.getComputedStyle;
                  if (j = function () {
                          var a = d ? function (a) {
                              return d(a, null)
                          } : function (a) {
                              return a.currentStyle
                          };
                          return function (b) {
                              var c = a(b);
                              return c || f("Style returned " + c + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), c
                          }
                      }(), k = c("boxSizing")) {
                      var e = document.createElement("div");
                      e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style[k] = "border-box";
                      var g = document.body || document.documentElement;
                      g.appendChild(e);
                      var h = j(e);
                      l = 200 === b(h.width), g.removeChild(e)
                  }
              }
          }
  
          function h(a) {
              if (e(), "string" == typeof a && (a = document.querySelector(a)), a && "object" == typeof a && a.nodeType) {
                  var c = j(a);
                  if ("none" === c.display) return d();
                  var f = {};
                  f.width = a.offsetWidth, f.height = a.offsetHeight;
                  for (var h = f.isBorderBox = !(!k || !c[k] || "border-box" !== c[k]), m = 0, n = g.length; n > m; m++) {
                      var o = g[m], p = c[o];
                      p = i(a, p);
                      var q = parseFloat(p);
                      f[o] = isNaN(q) ? 0 : q
                  }
                  var r = f.paddingLeft + f.paddingRight, s = f.paddingTop + f.paddingBottom,
                      t = f.marginLeft + f.marginRight, u = f.marginTop + f.marginBottom,
                      v = f.borderLeftWidth + f.borderRightWidth, w = f.borderTopWidth + f.borderBottomWidth, x = h && l,
                      y = b(c.width);
                  y !== !1 && (f.width = y + (x ? 0 : r + v));
                  var z = b(c.height);
                  return z !== !1 && (f.height = z + (x ? 0 : s + w)), f.innerWidth = f.width - (r + v), f.innerHeight = f.height - (s + w), f.outerWidth = f.width + t, f.outerHeight = f.height + u, f
              }
          }
  
          function i(b, c) {
              if (a.getComputedStyle || -1 === c.indexOf("%")) return c;
              var d = b.style, e = d.left, f = b.runtimeStyle, g = f && f.left;
              return g && (f.left = b.currentStyle.left), d.left = c, c = d.pixelLeft, d.left = e, g && (f.left = g), c
          }
  
          var j, k, l, m = !1;
          return h
      }
  
      var f = "undefined" == typeof console ? c : function (a) {
              console.error(a)
          },
          g = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"];
      "function" == typeof define && define.amd ? define("get-size/get-size", ["get-style-property/get-style-property"], e) : "object" == typeof exports ? module.exports = e(require("desandro-get-style-property")) : a.getSize = e(a.getStyleProperty)
  }(window), function (a) {
      function b(a) {
          "function" == typeof a && (b.isReady ? a() : g.push(a))
      }
  
      function c(a) {
          var c = "readystatechange" === a.type && "complete" !== f.readyState;
          b.isReady || c || d()
      }
  
      function d() {
          b.isReady = !0;
          for (var a = 0, c = g.length; c > a; a++) {
              var d = g[a];
              d()
          }
      }
  
      function e(e) {
          return "complete" === f.readyState ? d() : (e.bind(f, "DOMContentLoaded", c), e.bind(f, "readystatechange", c), e.bind(a, "load", c)), b
      }
  
      var f = a.document, g = [];
      b.isReady = !1, "function" == typeof define && define.amd ? define("doc-ready/doc-ready", ["eventie/eventie"], e) : "object" == typeof exports ? module.exports = e(require("eventie")) : a.docReady = e(a.eventie)
  }(window), function (a) {
      function b(a, b) {
          return a[g](b)
      }
  
      function c(a) {
          if (!a.parentNode) {
              var b = document.createDocumentFragment();
              b.appendChild(a)
          }
      }
  
      function d(a, b) {
          c(a);
          for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length; f > e; e++) if (d[e] === a) return !0;
          return !1
      }
  
      function e(a, d) {
          return c(a), b(a, d)
      }
  
      var f, g = function () {
          if (a.matches) return "matches";
          if (a.matchesSelector) return "matchesSelector";
          for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d > c; c++) {
              var e = b[c], f = e + "MatchesSelector";
              if (a[f]) return f
          }
      }();
      if (g) {
          var h = document.createElement("div"), i = b(h, "div");
          f = i ? b : e
      } else f = d;
      "function" == typeof define && define.amd ? define("matches-selector/matches-selector", [], function () {
          return f
      }) : "object" == typeof exports ? module.exports = f : window.matchesSelector = f
  }(Element.prototype), function (a, b) {
      "function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["doc-ready/doc-ready", "matches-selector/matches-selector"], function (c, d) {
          return b(a, c, d)
      }) : "object" == typeof exports ? module.exports = b(a, require("doc-ready"), require("desandro-matches-selector")) : a.fizzyUIUtils = b(a, a.docReady, a.matchesSelector)
  }(window, function (a, b, c) {
      var d = {};
      d.extend = function (a, b) {
          for (var c in b) a[c] = b[c];
          return a
      }, d.modulo = function (a, b) {
          return (a % b + b) % b
      };
      var e = Object.prototype.toString;
      d.isArray = function (a) {
          return "[object Array]" == e.call(a)
      }, d.makeArray = function (a) {
          var b = [];
          if (d.isArray(a)) b = a; else if (a && "number" == typeof a.length) for (var c = 0, e = a.length; e > c; c++) b.push(a[c]); else b.push(a);
          return b
      }, d.indexOf = Array.prototype.indexOf ? function (a, b) {
          return a.indexOf(b)
      } : function (a, b) {
          for (var c = 0, d = a.length; d > c; c++) if (a[c] === b) return c;
          return -1
      }, d.removeFrom = function (a, b) {
          var c = d.indexOf(a, b);
          -1 != c && a.splice(c, 1)
      }, d.isElement = "function" == typeof HTMLElement || "object" == typeof HTMLElement ? function (a) {
          return a instanceof HTMLElement
      } : function (a) {
          return a && "object" == typeof a && 1 == a.nodeType && "string" == typeof a.nodeName
      }, d.setText = function () {
          function a(a, c) {
              b = b || (void 0 !== document.documentElement.textContent ? "textContent" : "innerText"), a[b] = c
          }
  
          var b;
          return a
      }(), d.getParent = function (a, b) {
          for (; a != document.body;) if (a = a.parentNode, c(a, b)) return a
      }, d.getQueryElement = function (a) {
          return "string" == typeof a ? document.querySelector(a) : a
      }, d.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, d.filterFindElements = function (a, b) {
          a = d.makeArray(a);
          for (var e = [], f = 0, g = a.length; g > f; f++) {
              var h = a[f];
              if (d.isElement(h)) if (b) {
                  c(h, b) && e.push(h);
                  for (var i = h.querySelectorAll(b), j = 0, k = i.length; k > j; j++) e.push(i[j])
              } else e.push(h)
          }
          return e
      }, d.debounceMethod = function (a, b, c) {
          var d = a.prototype[b], e = b + "Timeout";
          a.prototype[b] = function () {
              var a = this[e];
              a && clearTimeout(a);
              var b = arguments, f = this;
              this[e] = setTimeout(function () {
                  d.apply(f, b), delete f[e]
              }, c || 100)
          }
      }, d.toDashed = function (a) {
          return a.replace(/(.)([A-Z])/g, function (a, b, c) {
              return b + "-" + c
          }).toLowerCase()
      };
      var f = a.console;
      return d.htmlInit = function (c, e) {
          b(function () {
              for (var b = d.toDashed(e), g = document.querySelectorAll(".js-" + b), h = "data-" + b + "-options", i = 0, j = g.length; j > i; i++) {
                  var k, l = g[i], m = l.getAttribute(h);
                  try {
                      k = m && JSON.parse(m)
                  } catch (n) {
                      f && f.error("Error parsing " + h + " on " + l.nodeName.toLowerCase() + (l.id ? "#" + l.id : "") + ": " + n);
                      continue
                  }
                  var o = new c(l, k), p = a.jQuery;
                  p && p.data(l, e, o)
              }
          })
      }, d
  }), function (a, b) {
      "function" == typeof define && define.amd ? define("outlayer/item", ["eventEmitter/EventEmitter", "get-size/get-size", "get-style-property/get-style-property", "fizzy-ui-utils/utils"], function (c, d, e, f) {
          return b(a, c, d, e, f)
      }) : "object" == typeof exports ? module.exports = b(a, require("wolfy87-eventemitter"), require("get-size"), require("desandro-get-style-property"), require("fizzy-ui-utils")) : (a.Outlayer = {}, a.Outlayer.Item = b(a, a.EventEmitter, a.getSize, a.getStyleProperty, a.fizzyUIUtils))
  }(window, function (a, b, c, d, e) {
      function f(a) {
          for (var b in a) return !1;
          return b = null, !0
      }
  
      function g(a, b) {
          a && (this.element = a, this.layout = b, this.position = {x: 0, y: 0}, this._create())
      }
  
      function h(a) {
          return a.replace(/([A-Z])/g, function (a) {
              return "-" + a.toLowerCase()
          })
      }
  
      var i = a.getComputedStyle, j = i ? function (a) {
          return i(a, null)
      } : function (a) {
          return a.currentStyle
      }, k = d("transition"), l = d("transform"), m = k && l, n = !!d("perspective"), o = {
          WebkitTransition: "webkitTransitionEnd",
          MozTransition: "transitionend",
          OTransition: "otransitionend",
          transition: "transitionend"
      }[k], p = ["transform", "transition", "transitionDuration", "transitionProperty"], q = function () {
          for (var a = {}, b = 0, c = p.length; c > b; b++) {
              var e = p[b], f = d(e);
              f && f !== e && (a[e] = f)
          }
          return a
      }();
      e.extend(g.prototype, b.prototype), g.prototype._create = function () {
          this._transn = {ingProperties: {}, clean: {}, onEnd: {}}, this.css({position: "absolute"})
      }, g.prototype.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, g.prototype.getSize = function () {
          this.size = c(this.element)
      }, g.prototype.css = function (a) {
          var b = this.element.style;
          for (var c in a) {
              var d = q[c] || c;
              b[d] = a[c]
          }
      }, g.prototype.getPosition = function () {
          var a = j(this.element), b = this.layout.options, c = b.isOriginLeft, d = b.isOriginTop,
              e = a[c ? "left" : "right"], f = a[d ? "top" : "bottom"], g = this.layout.size,
              h = -1 != e.indexOf("%") ? parseFloat(e) / 100 * g.width : parseInt(e, 10),
              i = -1 != f.indexOf("%") ? parseFloat(f) / 100 * g.height : parseInt(f, 10);
          h = isNaN(h) ? 0 : h, i = isNaN(i) ? 0 : i, h -= c ? g.paddingLeft : g.paddingRight, i -= d ? g.paddingTop : g.paddingBottom, this.position.x = h, this.position.y = i
      }, g.prototype.layoutPosition = function () {
          var a = this.layout.size, b = this.layout.options, c = {}, d = b.isOriginLeft ? "paddingLeft" : "paddingRight",
              e = b.isOriginLeft ? "left" : "right", f = b.isOriginLeft ? "right" : "left", g = this.position.x + a[d];
          c[e] = this.getXValue(g), c[f] = "";
          var h = b.isOriginTop ? "paddingTop" : "paddingBottom", i = b.isOriginTop ? "top" : "bottom",
              j = b.isOriginTop ? "bottom" : "top", k = this.position.y + a[h];
          c[i] = this.getYValue(k), c[j] = "", this.css(c), this.emitEvent("layout", [this])
      }, g.prototype.getXValue = function (a) {
          var b = this.layout.options;
          return b.percentPosition && !b.isHorizontal ? a / this.layout.size.width * 100 + "%" : a + "px"
      }, g.prototype.getYValue = function (a) {
          var b = this.layout.options;
          return b.percentPosition && b.isHorizontal ? a / this.layout.size.height * 100 + "%" : a + "px"
      }, g.prototype._transitionTo = function (a, b) {
          this.getPosition();
          var c = this.position.x, d = this.position.y, e = parseInt(a, 10), f = parseInt(b, 10),
              g = e === this.position.x && f === this.position.y;
          if (this.setPosition(a, b), g && !this.isTransitioning) return void this.layoutPosition();
          var h = a - c, i = b - d, j = {};
          j.transform = this.getTranslate(h, i), this.transition({
              to: j,
              onTransitionEnd: {transform: this.layoutPosition},
              isCleaning: !0
          })
      }, g.prototype.getTranslate = function (a, b) {
          var c = this.layout.options;
          return a = c.isOriginLeft ? a : -a, b = c.isOriginTop ? b : -b, n ? "translate3d(" + a + "px, " + b + "px, 0)" : "translate(" + a + "px, " + b + "px)"
      }, g.prototype.goTo = function (a, b) {
          this.setPosition(a, b), this.layoutPosition()
      }, g.prototype.moveTo = m ? g.prototype._transitionTo : g.prototype.goTo, g.prototype.setPosition = function (a, b) {
          this.position.x = parseInt(a, 10), this.position.y = parseInt(b, 10)
      }, g.prototype._nonTransition = function (a) {
          this.css(a.to), a.isCleaning && this._removeStyles(a.to);
          for (var b in a.onTransitionEnd) a.onTransitionEnd[b].call(this)
      }, g.prototype._transition = function (a) {
          if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(a);
          var b = this._transn;
          for (var c in a.onTransitionEnd) b.onEnd[c] = a.onTransitionEnd[c];
          for (c in a.to) b.ingProperties[c] = !0, a.isCleaning && (b.clean[c] = !0);
          if (a.from) {
              this.css(a.from);
              var d = this.element.offsetHeight;
              d = null
          }
          this.enableTransition(a.to), this.css(a.to), this.isTransitioning = !0
      };
      var r = "opacity," + h(q.transform || "transform");
      g.prototype.enableTransition = function () {
          this.isTransitioning || (this.css({
              transitionProperty: r,
              transitionDuration: this.layout.options.transitionDuration
          }), this.element.addEventListener(o, this, !1))
      }, g.prototype.transition = g.prototype[k ? "_transition" : "_nonTransition"], g.prototype.onwebkitTransitionEnd = function (a) {
          this.ontransitionend(a)
      }, g.prototype.onotransitionend = function (a) {
          this.ontransitionend(a)
      };
      var s = {"-webkit-transform": "transform", "-moz-transform": "transform", "-o-transform": "transform"};
      g.prototype.ontransitionend = function (a) {
          if (a.target === this.element) {
              var b = this._transn, c = s[a.propertyName] || a.propertyName;
              if (delete b.ingProperties[c], f(b.ingProperties) && this.disableTransition(), c in b.clean && (this.element.style[a.propertyName] = "", delete b.clean[c]), c in b.onEnd) {
                  var d = b.onEnd[c];
                  d.call(this), delete b.onEnd[c]
              }
              this.emitEvent("transitionEnd", [this])
          }
      }, g.prototype.disableTransition = function () {
          this.removeTransitionStyles(), this.element.removeEventListener(o, this, !1), this.isTransitioning = !1
      }, g.prototype._removeStyles = function (a) {
          var b = {};
          for (var c in a) b[c] = "";
          this.css(b)
      };
      var t = {transitionProperty: "", transitionDuration: ""};
      return g.prototype.removeTransitionStyles = function () {
          this.css(t)
      }, g.prototype.removeElem = function () {
          this.element.parentNode.removeChild(this.element), this.css({display: ""}), this.emitEvent("remove", [this])
      }, g.prototype.remove = function () {
          if (!k || !parseFloat(this.layout.options.transitionDuration)) return void this.removeElem();
          var a = this;
          this.once("transitionEnd", function () {
              a.removeElem()
          }), this.hide()
      }, g.prototype.reveal = function () {
          delete this.isHidden, this.css({display: ""});
          var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("visibleStyle");
          b[c] = this.onRevealTransitionEnd, this.transition({
              from: a.hiddenStyle,
              to: a.visibleStyle,
              isCleaning: !0,
              onTransitionEnd: b
          })
      }, g.prototype.onRevealTransitionEnd = function () {
          this.isHidden || this.emitEvent("reveal")
      }, g.prototype.getHideRevealTransitionEndProperty = function (a) {
          var b = this.layout.options[a];
          if (b.opacity) return "opacity";
          for (var c in b) return c
      }, g.prototype.hide = function () {
          this.isHidden = !0, this.css({display: ""});
          var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("hiddenStyle");
          b[c] = this.onHideTransitionEnd, this.transition({
              from: a.visibleStyle,
              to: a.hiddenStyle,
              isCleaning: !0,
              onTransitionEnd: b
          })
      }, g.prototype.onHideTransitionEnd = function () {
          this.isHidden && (this.css({display: "none"}), this.emitEvent("hide"))
      }, g.prototype.destroy = function () {
          this.css({position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: ""})
      }, g
  }), function (a, b) {
      "function" == typeof define && define.amd ? define("outlayer/outlayer", ["eventie/eventie", "eventEmitter/EventEmitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function (c, d, e, f, g) {
          return b(a, c, d, e, f, g)
      }) : "object" == typeof exports ? module.exports = b(a, require("eventie"), require("wolfy87-eventemitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : a.Outlayer = b(a, a.eventie, a.EventEmitter, a.getSize, a.fizzyUIUtils, a.Outlayer.Item)
  }(window, function (a, b, c, d, e, f) {
      function g(a, b) {
          var c = e.getQueryElement(a);
          if (!c) return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (c || a)));
          this.element = c, i && (this.$element = i(this.element)), this.options = e.extend({}, this.constructor.defaults), this.option(b);
          var d = ++k;
          this.element.outlayerGUID = d, l[d] = this, this._create(), this.options.isInitLayout && this.layout()
      }
  
      var h = a.console, i = a.jQuery, j = function () {
      }, k = 0, l = {};
      return g.namespace = "outlayer", g.Item = f, g.defaults = {
          containerStyle: {position: "relative"},
          isInitLayout: !0,
          isOriginLeft: !0,
          isOriginTop: !0,
          isResizeBound: !0,
          isResizingContainer: !0,
          transitionDuration: "0.4s",
          hiddenStyle: {opacity: 0, transform: "scale(0.001)"},
          visibleStyle: {opacity: 1, transform: "scale(1)"}
      }, e.extend(g.prototype, c.prototype), g.prototype.option = function (a) {
          e.extend(this.options, a)
      }, g.prototype._create = function () {
          this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), e.extend(this.element.style, this.options.containerStyle), this.options.isResizeBound && this.bindResize()
      }, g.prototype.reloadItems = function () {
          this.items = this._itemize(this.element.children)
      }, g.prototype._itemize = function (a) {
          for (var b = this._filterFindItemElements(a), c = this.constructor.Item, d = [], e = 0, f = b.length; f > e; e++) {
              var g = b[e], h = new c(g, this);
              d.push(h)
          }
          return d
      }, g.prototype._filterFindItemElements = function (a) {
          return e.filterFindElements(a, this.options.itemSelector)
      }, g.prototype.getItemElements = function () {
          for (var a = [], b = 0, c = this.items.length; c > b; b++) a.push(this.items[b].element);
          return a
      }, g.prototype.layout = function () {
          this._resetLayout(), this._manageStamps();
          var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
          this.layoutItems(this.items, a), this._isLayoutInited = !0
      }, g.prototype._init = g.prototype.layout, g.prototype._resetLayout = function () {
          this.getSize()
      }, g.prototype.getSize = function () {
          this.size = d(this.element)
      }, g.prototype._getMeasurement = function (a, b) {
          var c, f = this.options[a];
          f ? ("string" == typeof f ? c = this.element.querySelector(f) : e.isElement(f) && (c = f), this[a] = c ? d(c)[b] : f) : this[a] = 0
      }, g.prototype.layoutItems = function (a, b) {
          a = this._getItemsForLayout(a), this._layoutItems(a, b), this._postLayout()
      }, g.prototype._getItemsForLayout = function (a) {
          for (var b = [], c = 0, d = a.length; d > c; c++) {
              var e = a[c];
              e.isIgnored || b.push(e)
          }
          return b
      }, g.prototype._layoutItems = function (a, b) {
          if (this._emitCompleteOnItems("layout", a), a && a.length) {
              for (var c = [], d = 0, e = a.length; e > d; d++) {
                  var f = a[d], g = this._getItemLayoutPosition(f);
                  g.item = f, g.isInstant = b || f.isLayoutInstant, c.push(g)
              }
              this._processLayoutQueue(c)
          }
      }, g.prototype._getItemLayoutPosition = function () {
          return {x: 0, y: 0}
      }, g.prototype._processLayoutQueue = function (a) {
          for (var b = 0, c = a.length; c > b; b++) {
              var d = a[b];
              this._positionItem(d.item, d.x, d.y, d.isInstant)
          }
      }, g.prototype._positionItem = function (a, b, c, d) {
          d ? a.goTo(b, c) : a.moveTo(b, c)
      }, g.prototype._postLayout = function () {
          this.resizeContainer()
      }, g.prototype.resizeContainer = function () {
          if (this.options.isResizingContainer) {
              var a = this._getContainerSize();
              a && (this._setContainerMeasure(a.width, !0), this._setContainerMeasure(a.height, !1))
          }
      }, g.prototype._getContainerSize = j, g.prototype._setContainerMeasure = function (a, b) {
          if (void 0 !== a) {
              var c = this.size;
              c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom + c.paddingTop + c.borderTopWidth + c.borderBottomWidth), a = Math.max(a, 0), this.element.style[b ? "width" : "height"] = a + "px"
          }
      }, g.prototype._emitCompleteOnItems = function (a, b) {
          function c() {
              e.dispatchEvent(a + "Complete", null, [b])
          }
  
          function d() {
              g++, g === f && c()
          }
  
          var e = this, f = b.length;
          if (!b || !f) return void c();
          for (var g = 0, h = 0, i = b.length; i > h; h++) {
              var j = b[h];
              j.once(a, d)
          }
      }, g.prototype.dispatchEvent = function (a, b, c) {
          var d = b ? [b].concat(c) : c;
          if (this.emitEvent(a, d), i) if (this.$element = this.$element || i(this.element), b) {
              var e = i.Event(b);
              e.type = a, this.$element.trigger(e, c)
          } else this.$element.trigger(a, c)
      }, g.prototype.ignore = function (a) {
          var b = this.getItem(a);
          b && (b.isIgnored = !0)
      }, g.prototype.unignore = function (a) {
          var b = this.getItem(a);
          b && delete b.isIgnored
      }, g.prototype.stamp = function (a) {
          if (a = this._find(a)) {
              this.stamps = this.stamps.concat(a);
              for (var b = 0, c = a.length; c > b; b++) {
                  var d = a[b];
                  this.ignore(d)
              }
          }
      }, g.prototype.unstamp = function (a) {
          if (a = this._find(a)) for (var b = 0, c = a.length; c > b; b++) {
              var d = a[b];
              e.removeFrom(this.stamps, d), this.unignore(d)
          }
      }, g.prototype._find = function (a) {
          return a ? ("string" == typeof a && (a = this.element.querySelectorAll(a)), a = e.makeArray(a)) : void 0
      }, g.prototype._manageStamps = function () {
          if (this.stamps && this.stamps.length) {
              this._getBoundingRect();
              for (var a = 0, b = this.stamps.length; b > a; a++) {
                  var c = this.stamps[a];
                  this._manageStamp(c)
              }
          }
      }, g.prototype._getBoundingRect = function () {
          var a = this.element.getBoundingClientRect(), b = this.size;
          this._boundingRect = {
              left: a.left + b.paddingLeft + b.borderLeftWidth,
              top: a.top + b.paddingTop + b.borderTopWidth,
              right: a.right - (b.paddingRight + b.borderRightWidth),
              bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
          }
      }, g.prototype._manageStamp = j, g.prototype._getElementOffset = function (a) {
          var b = a.getBoundingClientRect(), c = this._boundingRect, e = d(a), f = {
              left: b.left - c.left - e.marginLeft,
              top: b.top - c.top - e.marginTop,
              right: c.right - b.right - e.marginRight,
              bottom: c.bottom - b.bottom - e.marginBottom
          };
          return f
      }, g.prototype.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, g.prototype.bindResize = function () {
          this.isResizeBound || (b.bind(a, "resize", this), this.isResizeBound = !0)
      }, g.prototype.unbindResize = function () {
          this.isResizeBound && b.unbind(a, "resize", this), this.isResizeBound = !1
      }, g.prototype.onresize = function () {
          function a() {
              b.resize(), delete b.resizeTimeout
          }
  
          this.resizeTimeout && clearTimeout(this.resizeTimeout);
          var b = this;
          this.resizeTimeout = setTimeout(a, 100)
      }, g.prototype.resize = function () {
          this.isResizeBound && this.needsResizeLayout() && this.layout()
      }, g.prototype.needsResizeLayout = function () {
          var a = d(this.element), b = this.size && a;
          return b && a.innerWidth !== this.size.innerWidth
      }, g.prototype.addItems = function (a) {
          var b = this._itemize(a);
          return b.length && (this.items = this.items.concat(b)), b
      }, g.prototype.appended = function (a) {
          var b = this.addItems(a);
          b.length && (this.layoutItems(b, !0), this.reveal(b))
      }, g.prototype.prepended = function (a) {
          var b = this._itemize(a);
          if (b.length) {
              var c = this.items.slice(0);
              this.items = b.concat(c), this._resetLayout(), this._manageStamps(), this.layoutItems(b, !0), this.reveal(b), this.layoutItems(c)
          }
      }, g.prototype.reveal = function (a) {
          this._emitCompleteOnItems("reveal", a);
          for (var b = a && a.length, c = 0; b && b > c; c++) {
              var d = a[c];
              d.reveal()
          }
      }, g.prototype.hide = function (a) {
          this._emitCompleteOnItems("hide", a);
          for (var b = a && a.length, c = 0; b && b > c; c++) {
              var d = a[c];
              d.hide()
          }
      }, g.prototype.revealItemElements = function (a) {
          var b = this.getItems(a);
          this.reveal(b)
      }, g.prototype.hideItemElements = function (a) {
          var b = this.getItems(a);
          this.hide(b)
      }, g.prototype.getItem = function (a) {
          for (var b = 0, c = this.items.length; c > b; b++) {
              var d = this.items[b];
              if (d.element === a) return d
          }
      }, g.prototype.getItems = function (a) {
          a = e.makeArray(a);
          for (var b = [], c = 0, d = a.length; d > c; c++) {
              var f = a[c], g = this.getItem(f);
              g && b.push(g)
          }
          return b
      }, g.prototype.remove = function (a) {
          var b = this.getItems(a);
          if (this._emitCompleteOnItems("remove", b), b && b.length) for (var c = 0, d = b.length; d > c; c++) {
              var f = b[c];
              f.remove(), e.removeFrom(this.items, f)
          }
      }, g.prototype.destroy = function () {
          var a = this.element.style;
          a.height = "", a.position = "", a.width = "";
          for (var b = 0, c = this.items.length; c > b; b++) {
              var d = this.items[b];
              d.destroy()
          }
          this.unbindResize();
          var e = this.element.outlayerGUID;
          delete l[e], delete this.element.outlayerGUID, i && i.removeData(this.element, this.constructor.namespace)
      }, g.data = function (a) {
          a = e.getQueryElement(a);
          var b = a && a.outlayerGUID;
          return b && l[b]
      }, g.create = function (a, b) {
          function c() {
              g.apply(this, arguments)
          }
  
          return Object.create ? c.prototype = Object.create(g.prototype) : e.extend(c.prototype, g.prototype), c.prototype.constructor = c, c.defaults = e.extend({}, g.defaults), e.extend(c.defaults, b), c.prototype.settings = {}, c.namespace = a, c.data = g.data, c.Item = function () {
              f.apply(this, arguments)
          }, c.Item.prototype = new f, e.htmlInit(c, a), i && i.bridget && i.bridget(a, c), c
      }, g.Item = f, g
  }), function (a, b) {
      "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "fizzy-ui-utils/utils"], b) : "object" == typeof exports ? module.exports = b(require("outlayer"), require("get-size"), require("fizzy-ui-utils")) : a.Masonry = b(a.Outlayer, a.getSize, a.fizzyUIUtils)
  }(window, function (a, b, c) {
      var d = a.create("masonry");
      return d.prototype._resetLayout = function () {
          this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns();
          var a = this.cols;
          for (this.colYs = []; a--;) this.colYs.push(0);
          this.maxY = 0
      }, d.prototype.measureColumns = function () {
          if (this.getContainerWidth(), !this.columnWidth) {
              var a = this.items[0], c = a && a.element;
              this.columnWidth = c && b(c).outerWidth || this.containerWidth
          }
          var d = this.columnWidth += this.gutter, e = this.containerWidth + this.gutter, f = e / d, g = d - e % d,
              h = g && 1 > g ? "round" : "floor";
          f = Math[h](f), this.cols = Math.max(f, 1)
      }, d.prototype.getContainerWidth = function () {
          var a = this.options.isFitWidth ? this.element.parentNode : this.element, c = b(a);
          this.containerWidth = c && c.innerWidth
      }, d.prototype._getItemLayoutPosition = function (a) {
          a.getSize();
          var b = a.size.outerWidth % this.columnWidth, d = b && 1 > b ? "round" : "ceil",
              e = Math[d](a.size.outerWidth / this.columnWidth);
          e = Math.min(e, this.cols);
          for (var f = this._getColGroup(e), g = Math.min.apply(Math, f), h = c.indexOf(f, g), i = {
              x: this.columnWidth * h,
              y: g
          }, j = g + a.size.outerHeight, k = this.cols + 1 - f.length, l = 0; k > l; l++) this.colYs[h + l] = j;
          return i
      }, d.prototype._getColGroup = function (a) {
          if (2 > a) return this.colYs;
          for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
              var e = this.colYs.slice(d, d + a);
              b[d] = Math.max.apply(Math, e)
          }
          return b
      }, d.prototype._manageStamp = function (a) {
          var c = b(a), d = this._getElementOffset(a), e = this.options.isOriginLeft ? d.left : d.right,
              f = e + c.outerWidth, g = Math.floor(e / this.columnWidth);
          g = Math.max(0, g);
          var h = Math.floor(f / this.columnWidth);
          h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);
          for (var i = (this.options.isOriginTop ? d.top : d.bottom) + c.outerHeight, j = g; h >= j; j++) this.colYs[j] = Math.max(i, this.colYs[j])
      }, d.prototype._getContainerSize = function () {
          this.maxY = Math.max.apply(Math, this.colYs);
          var a = {height: this.maxY};
          return this.options.isFitWidth && (a.width = this._getContainerFitWidth()), a
      }, d.prototype._getContainerFitWidth = function () {
          for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];) a++;
          return (this.cols - a) * this.columnWidth - this.gutter
      }, d.prototype.needsResizeLayout = function () {
          var a = this.containerWidth;
          return this.getContainerWidth(), a !== this.containerWidth
      }, d
  });
  /*masonry.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("masonry", {
      mode: "init", defaults: {itemSelector: ".masonry-item"}, init: function (context) {
          if ("undefined" != typeof $.fn.masonry) {
              var defaults = $.components.getDefaults("masonry"), callback = function () {
                  $('[data-plugin="masonry"]', context).each(function () {
                      var $this = $(this), options = $.extend(!0, {}, defaults, $this.data());
                      $this.masonry(options)
                  })
              };
              context !== document ? callback() : $(window).on("load", function () {
                  callback()
              })
          }
      }
  });
  /*jquery.bootstrap-touchspin.min.js*/
  /*
   *  Bootstrap TouchSpin - v3.0.1
   *  A mobile and touch friendly input spinner component for Bootstrap 3.
   *  http://www.virtuosoft.eu/code/bootstrap-touchspin/
   *
   *  Made by István Ujj-Mészáros
   *  Under Apache License v2.0 License
   */
  !function (a) {
      "use strict";
  
      function b(a, b) {
          return a + ".touchspin_" + b
      }
  
      function c(c, d) {
          return a.map(c, function (a) {
              return b(a, d)
          })
      }
  
      var d = 0;
      a.fn.TouchSpin = function (b) {
          if ("destroy" === b) return void this.each(function () {
              var b = a(this), d = b.data();
              a(document).off(c(["mouseup", "touchend", "touchcancel", "mousemove", "touchmove", "scroll", "scrollstart"], d.spinnerid).join(" "))
          });
          var e = {
              min: 0,
              max: 100,
              initval: "",
              step: 1,
              decimals: 0,
              stepinterval: 100,
              forcestepdivisibility: "round",
              stepintervaldelay: 500,
              verticalbuttons: !1,
              verticalupclass: "glyphicon glyphicon-chevron-up",
              verticaldownclass: "glyphicon glyphicon-chevron-down",
              prefix: "",
              postfix: "",
              prefix_extraclass: "",
              postfix_extraclass: "",
              booster: !0,
              boostat: 10,
              maxboostedstep: !1,
              mousewheel: !0,
              buttondown_class: "btn btn-default",
              buttonup_class: "btn btn-default",
              buttondown_txt: "-",
              buttonup_txt: "+"
          }, f = {
              min: "min",
              max: "max",
              initval: "init-val",
              step: "step",
              decimals: "decimals",
              stepinterval: "step-interval",
              verticalbuttons: "vertical-buttons",
              verticalupclass: "vertical-up-class",
              verticaldownclass: "vertical-down-class",
              forcestepdivisibility: "force-step-divisibility",
              stepintervaldelay: "step-interval-delay",
              prefix: "prefix",
              postfix: "postfix",
              prefix_extraclass: "prefix-extra-class",
              postfix_extraclass: "postfix-extra-class",
              booster: "booster",
              boostat: "boostat",
              maxboostedstep: "max-boosted-step",
              mousewheel: "mouse-wheel",
              buttondown_class: "button-down-class",
              buttonup_class: "button-up-class",
              buttondown_txt: "button-down-txt",
              buttonup_txt: "button-up-txt"
          };
          return this.each(function () {
              function g() {
                  if (!J.data("alreadyinitialized")) {
                      if (J.data("alreadyinitialized", !0), d += 1, J.data("spinnerid", d), !J.is("input")) return void console.log("Must be an input.");
                      j(), h(), u(), m(), p(), q(), r(), s(), D.input.css("display", "block")
                  }
              }
  
              function h() {
                  "" !== B.initval && "" === J.val() && J.val(B.initval)
              }
  
              function i(a) {
                  l(a), u();
                  var b = D.input.val();
                  "" !== b && (b = Number(D.input.val()), D.input.val(b.toFixed(B.decimals)))
              }
  
              function j() {
                  B = a.extend({}, e, K, k(), b)
              }
  
              function k() {
                  var b = {};
                  return a.each(f, function (a, c) {
                      var d = "bts-" + c;
                      J.is("[data-" + d + "]") && (b[a] = J.data(d))
                  }), b
              }
  
              function l(b) {
                  B = a.extend({}, B, b)
              }
  
              function m() {
                  var a = J.val(), b = J.parent();
                  "" !== a && (a = Number(a).toFixed(B.decimals)), J.data("initvalue", a).val(a), J.addClass("form-control"), b.hasClass("input-group") ? n(b) : o()
              }
  
              function n(b) {
                  b.addClass("bootstrap-touchspin");
                  var c, d, e = J.prev(), f = J.next(),
                      g = '<span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix + "</span>",
                      h = '<span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix + "</span>";
                  e.hasClass("input-group-btn") ? (c = '<button class="' + B.buttondown_class + ' bootstrap-touchspin-down" type="button">' + B.buttondown_txt + "</button>", e.append(c)) : (c = '<span class="input-group-btn"><button class="' + B.buttondown_class + ' bootstrap-touchspin-down" type="button">' + B.buttondown_txt + "</button></span>", a(c).insertBefore(J)), f.hasClass("input-group-btn") ? (d = '<button class="' + B.buttonup_class + ' bootstrap-touchspin-up" type="button">' + B.buttonup_txt + "</button>", f.prepend(d)) : (d = '<span class="input-group-btn"><button class="' + B.buttonup_class + ' bootstrap-touchspin-up" type="button">' + B.buttonup_txt + "</button></span>", a(d).insertAfter(J)), a(g).insertBefore(J), a(h).insertAfter(J), C = b
              }
  
              function o() {
                  var b;
                  b = B.verticalbuttons ? '<div class="input-group bootstrap-touchspin"><span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix + '</span><span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix + '</span><span class="input-group-btn-vertical"><button class="' + B.buttondown_class + ' bootstrap-touchspin-up" type="button"><i class="' + B.verticalupclass + '"></i></button><button class="' + B.buttonup_class + ' bootstrap-touchspin-down" type="button"><i class="' + B.verticaldownclass + '"></i></button></span></div>' : '<div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="' + B.buttondown_class + ' bootstrap-touchspin-down" type="button">' + B.buttondown_txt + '</button></span><span class="input-group-addon bootstrap-touchspin-prefix">' + B.prefix + '</span><span class="input-group-addon bootstrap-touchspin-postfix">' + B.postfix + '</span><span class="input-group-btn"><button class="' + B.buttonup_class + ' bootstrap-touchspin-up" type="button">' + B.buttonup_txt + "</button></span></div>", C = a(b).insertBefore(J), a(".bootstrap-touchspin-prefix", C).after(J), J.hasClass("input-sm") ? C.addClass("input-group-sm") : J.hasClass("input-lg") && C.addClass("input-group-lg")
              }
  
              function p() {
                  D = {
                      down: a(".bootstrap-touchspin-down", C),
                      up: a(".bootstrap-touchspin-up", C),
                      input: a("input", C),
                      prefix: a(".bootstrap-touchspin-prefix", C).addClass(B.prefix_extraclass),
                      postfix: a(".bootstrap-touchspin-postfix", C).addClass(B.postfix_extraclass)
                  }
              }
  
              function q() {
                  "" === B.prefix && D.prefix.hide(), "" === B.postfix && D.postfix.hide()
              }
  
              function r() {
                  J.on("keydown", function (a) {
                      var b = a.keyCode || a.which;
                      38 === b ? ("up" !== M && (w(), z()), a.preventDefault()) : 40 === b && ("down" !== M && (x(), y()), a.preventDefault())
                  }), J.on("keyup", function (a) {
                      var b = a.keyCode || a.which;
                      38 === b ? A() : 40 === b && A()
                  }), J.on("blur", function () {
                      u()
                  }), D.down.on("keydown", function (a) {
                      var b = a.keyCode || a.which;
                      (32 === b || 13 === b) && ("down" !== M && (x(), y()), a.preventDefault())
                  }), D.down.on("keyup", function (a) {
                      var b = a.keyCode || a.which;
                      (32 === b || 13 === b) && A()
                  }), D.up.on("keydown", function (a) {
                      var b = a.keyCode || a.which;
                      (32 === b || 13 === b) && ("up" !== M && (w(), z()), a.preventDefault())
                  }), D.up.on("keyup", function (a) {
                      var b = a.keyCode || a.which;
                      (32 === b || 13 === b) && A()
                  }), D.down.on("mousedown.touchspin", function (a) {
                      D.down.off("touchstart.touchspin"), J.is(":disabled") || (x(), y(), a.preventDefault(), a.stopPropagation())
                  }), D.down.on("touchstart.touchspin", function (a) {
                      D.down.off("mousedown.touchspin"), J.is(":disabled") || (x(), y(), a.preventDefault(), a.stopPropagation())
                  }), D.up.on("mousedown.touchspin", function (a) {
                      D.up.off("touchstart.touchspin"), J.is(":disabled") || (w(), z(), a.preventDefault(), a.stopPropagation())
                  }), D.up.on("touchstart.touchspin", function (a) {
                      D.up.off("mousedown.touchspin"), J.is(":disabled") || (w(), z(), a.preventDefault(), a.stopPropagation())
                  }), D.up.on("mouseout touchleave touchend touchcancel", function (a) {
                      M && (a.stopPropagation(), A())
                  }), D.down.on("mouseout touchleave touchend touchcancel", function (a) {
                      M && (a.stopPropagation(), A())
                  }), D.down.on("mousemove touchmove", function (a) {
                      M && (a.stopPropagation(), a.preventDefault())
                  }), D.up.on("mousemove touchmove", function (a) {
                      M && (a.stopPropagation(), a.preventDefault())
                  }), a(document).on(c(["mouseup", "touchend", "touchcancel"], d).join(" "), function (a) {
                      M && (a.preventDefault(), A())
                  }), a(document).on(c(["mousemove", "touchmove", "scroll", "scrollstart"], d).join(" "), function (a) {
                      M && (a.preventDefault(), A())
                  }), J.on("mousewheel DOMMouseScroll", function (a) {
                      if (B.mousewheel && J.is(":focus")) {
                          var b = a.originalEvent.wheelDelta || -a.originalEvent.deltaY || -a.originalEvent.detail;
                          a.stopPropagation(), a.preventDefault(), 0 > b ? x() : w()
                      }
                  })
              }
  
              function s() {
                  J.on("touchspin.uponce", function () {
                      A(), w()
                  }), J.on("touchspin.downonce", function () {
                      A(), x()
                  }), J.on("touchspin.startupspin", function () {
                      z()
                  }), J.on("touchspin.startdownspin", function () {
                      y()
                  }), J.on("touchspin.stopspin", function () {
                      A()
                  }), J.on("touchspin.updatesettings", function (a, b) {
                      i(b)
                  })
              }
  
              function t(a) {
                  switch (B.forcestepdivisibility) {
                      case"round":
                          return (Math.round(a / B.step) * B.step).toFixed(B.decimals);
                      case"floor":
                          return (Math.floor(a / B.step) * B.step).toFixed(B.decimals);
                      case"ceil":
                          return (Math.ceil(a / B.step) * B.step).toFixed(B.decimals);
                      default:
                          return a
                  }
              }
  
              function u() {
                  var a, b, c;
                  a = J.val(), "" !== a && (B.decimals > 0 && "." === a || (b = parseFloat(a), isNaN(b) && (b = 0), c = b, b.toString() !== a && (c = b), b < B.min && (c = B.min), b > B.max && (c = B.max), c = t(c), Number(a).toString() !== c.toString() && (J.val(c), J.trigger("change"))))
              }
  
              function v() {
                  if (B.booster) {
                      var a = Math.pow(2, Math.floor(L / B.boostat)) * B.step;
                      return B.maxboostedstep && a > B.maxboostedstep && (a = B.maxboostedstep, E = Math.round(E / a) * a), Math.max(B.step, a)
                  }
                  return B.step
              }
  
              function w() {
                  u(), E = parseFloat(D.input.val()), isNaN(E) && (E = 0);
                  var a = E, b = v();
                  E += b, E > B.max && (E = B.max, J.trigger("touchspin.on.max"), A()), D.input.val(Number(E).toFixed(B.decimals)), a !== E && J.trigger("change")
              }
  
              function x() {
                  u(), E = parseFloat(D.input.val()), isNaN(E) && (E = 0);
                  var a = E, b = v();
                  E -= b, E < B.min && (E = B.min, J.trigger("touchspin.on.min"), A()), D.input.val(E.toFixed(B.decimals)), a !== E && J.trigger("change")
              }
  
              function y() {
                  A(), L = 0, M = "down", J.trigger("touchspin.on.startspin"), J.trigger("touchspin.on.startdownspin"), H = setTimeout(function () {
                      F = setInterval(function () {
                          L++, x()
                      }, B.stepinterval)
                  }, B.stepintervaldelay)
              }
  
              function z() {
                  A(), L = 0, M = "up", J.trigger("touchspin.on.startspin"), J.trigger("touchspin.on.startupspin"), I = setTimeout(function () {
                      G = setInterval(function () {
                          L++, w()
                      }, B.stepinterval)
                  }, B.stepintervaldelay)
              }
  
              function A() {
                  switch (clearTimeout(H), clearTimeout(I), clearInterval(F), clearInterval(G), M) {
                      case"up":
                          J.trigger("touchspin.on.stopupspin"), J.trigger("touchspin.on.stopspin");
                          break;
                      case"down":
                          J.trigger("touchspin.on.stopdownspin"), J.trigger("touchspin.on.stopspin")
                  }
                  L = 0, M = !1
              }
  
              var B, C, D, E, F, G, H, I, J = a(this), K = J.data(), L = 0, M = !1;
              g()
          })
      }
  }(jQuery);
  /*spin.min.js*/
  (function (t, e) {
      "object" == typeof exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.Spinner = e()
  })(this, function () {
      "use strict";
  
      function t(t, e) {
          var i, n = document.createElement(t || "div");
          for (i in e) n[i] = e[i];
          return n
      }
  
      function e(t) {
          for (var e = 1, i = arguments.length; i > e; e++) t.appendChild(arguments[e]);
          return t
      }
  
      function i(t, e, i, n) {
          var r = ["opacity", e, ~~(100 * t), i, n].join("-"), o = .01 + 100 * (i / n),
              a = Math.max(1 - (1 - t) / e * (100 - o), t), s = u.substring(0, u.indexOf("Animation")).toLowerCase(),
              l = s && "-" + s + "-" || "";
          return c[r] || (p.insertRule("@" + l + "keyframes " + r + "{" + "0%{opacity:" + a + "}" + o + "%{opacity:" + t + "}" + (o + .01) + "%{opacity:1}" + (o + e) % 100 + "%{opacity:" + t + "}" + "100%{opacity:" + a + "}" + "}", p.cssRules.length), c[r] = 1), r
      }
  
      function n(t, e) {
          var i, n, r = t.style;
          for (e = e.charAt(0).toUpperCase() + e.slice(1), n = 0; d.length > n; n++) if (i = d[n] + e, void 0 !== r[i]) return i;
          return void 0 !== r[e] ? e : void 0
      }
  
      function r(t, e) {
          for (var i in e) t.style[n(t, i) || i] = e[i];
          return t
      }
  
      function o(t) {
          for (var e = 1; arguments.length > e; e++) {
              var i = arguments[e];
              for (var n in i) void 0 === t[n] && (t[n] = i[n])
          }
          return t
      }
  
      function a(t, e) {
          return "string" == typeof t ? t : t[e % t.length]
      }
  
      function s(t) {
          this.opts = o(t || {}, s.defaults, f)
      }
  
      function l() {
          function i(e, i) {
              return t("<" + e + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', i)
          }
  
          p.addRule(".spin-vml", "behavior:url(#default#VML)"), s.prototype.lines = function (t, n) {
              function o() {
                  return r(i("group", {coordsize: d + " " + d, coordorigin: -u + " " + -u}), {width: d, height: d})
              }
  
              function s(t, s, l) {
                  e(p, e(r(o(), {
                      rotation: 360 / n.lines * t + "deg",
                      left: ~~s
                  }), e(r(i("roundrect", {arcsize: n.corners}), {
                      width: u,
                      height: n.width,
                      left: n.radius,
                      top: -n.width >> 1,
                      filter: l
                  }), i("fill", {color: a(n.color, t), opacity: n.opacity}), i("stroke", {opacity: 0}))))
              }
  
              var l, u = n.length + n.width, d = 2 * u, c = 2 * -(n.width + n.length) + "px",
                  p = r(o(), {position: "absolute", top: c, left: c});
              if (n.shadow) for (l = 1; n.lines >= l; l++) s(l, -2, "progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");
              for (l = 1; n.lines >= l; l++) s(l);
              return e(t, p)
          }, s.prototype.opacity = function (t, e, i, n) {
              var r = t.firstChild;
              n = n.shadow && n.lines || 0, r && r.childNodes.length > e + n && (r = r.childNodes[e + n], r = r && r.firstChild, r = r && r.firstChild, r && (r.opacity = i))
          }
      }
  
      var u, d = ["webkit", "Moz", "ms", "O"], c = {}, p = function () {
          var i = t("style", {type: "text/css"});
          return e(document.getElementsByTagName("head")[0], i), i.sheet || i.styleSheet
      }(), f = {
          lines: 12,
          length: 7,
          width: 5,
          radius: 10,
          rotate: 0,
          corners: 1,
          color: "#000",
          direction: 1,
          speed: 1,
          trail: 100,
          opacity: .25,
          fps: 20,
          zIndex: 2e9,
          className: "spinner",
          top: "50%",
          left: "50%",
          position: "absolute"
      };
      s.defaults = {}, o(s.prototype, {
          spin: function (e) {
              this.stop();
              var i = this, n = i.opts,
                  o = i.el = r(t(0, {className: n.className}), {position: n.position, width: 0, zIndex: n.zIndex});
              if (n.radius + n.length + n.width, r(o, {
                      left: n.left,
                      top: n.top
                  }), e && e.insertBefore(o, e.firstChild || null), o.setAttribute("role", "progressbar"), i.lines(o, i.opts), !u) {
                  var a, s = 0, l = (n.lines - 1) * (1 - n.direction) / 2, d = n.fps, c = d / n.speed,
                      p = (1 - n.opacity) / (c * n.trail / 100), f = c / n.lines;
                  (function h() {
                      s++;
                      for (var t = 0; n.lines > t; t++) a = Math.max(1 - (s + (n.lines - t) * f) % c * p, n.opacity), i.opacity(o, t * n.direction + l, a, n);
                      i.timeout = i.el && setTimeout(h, ~~(1e3 / d))
                  })()
              }
              return i
          }, stop: function () {
              var t = this.el;
              return t && (clearTimeout(this.timeout), t.parentNode && t.parentNode.removeChild(t), this.el = void 0), this
          }, lines: function (n, o) {
              function s(e, i) {
                  return r(t(), {
                      position: "absolute",
                      width: o.length + o.width + "px",
                      height: o.width + "px",
                      background: e,
                      boxShadow: i,
                      transformOrigin: "left",
                      transform: "rotate(" + ~~(360 / o.lines * d + o.rotate) + "deg) translate(" + o.radius + "px" + ",0)",
                      borderRadius: (o.corners * o.width >> 1) + "px"
                  })
              }
  
              for (var l, d = 0, c = (o.lines - 1) * (1 - o.direction) / 2; o.lines > d; d++) l = r(t(), {
                  position: "absolute",
                  top: 1 + ~(o.width / 2) + "px",
                  transform: o.hwaccel ? "translate3d(0,0,0)" : "",
                  opacity: o.opacity,
                  animation: u && i(o.opacity, o.trail, c + d * o.direction, o.lines) + " " + 1 / o.speed + "s linear infinite"
              }), o.shadow && e(l, r(s("#000", "0 0 4px #000"), {top: "2px"})), e(n, e(l, s(a(o.color, d), "0 0 1px rgba(0,0,0,.1)")));
              return n
          }, opacity: function (t, e, i) {
              t.childNodes.length > e && (t.childNodes[e].style.opacity = i)
          }
      });
      var h = r(t("group"), {behavior: "url(#default#VML)"});
      return !n(h, "transform") && h.adj ? l() : u = n(h, "animation"), s
  });
  /*ladda.min.js*/
  /*!
   * Ladda 0.9.4 (2014-06-21, 11:24)
   * http://lab.hakim.se/ladda
   * MIT licensed
   *
   * Copyright (C) 2014 Hakim El Hattab, http://hakim.se
   */
  (function (t, e) {
      "object" == typeof exports ? module.exports = e(require("spin.js")) : "function" == typeof define && define.amd ? define(["spin"], e) : t.Ladda = e(t.Spinner)
  })(this, function (t) {
      "use strict";
  
      function e(t) {
          if (t === void 0) return console.warn("Ladda button target must be defined."), void 0;
          t.querySelector(".ladda-label") || (t.innerHTML = '<span class="ladda-label">' + t.innerHTML + "</span>");
          var e, n = document.createElement("span");
          n.className = "ladda-spinner", t.appendChild(n);
          var r, a = {
              start: function () {
                  return e || (e = o(t)), t.setAttribute("disabled", ""), t.setAttribute("data-loading", ""), clearTimeout(r), e.spin(n), this.setProgress(0), this
              }, startAfter: function (t) {
                  return clearTimeout(r), r = setTimeout(function () {
                      a.start()
                  }, t), this
              }, stop: function () {
                  return t.removeAttribute("disabled"), t.removeAttribute("data-loading"), clearTimeout(r), e && (r = setTimeout(function () {
                      e.stop()
                  }, 1e3)), this
              }, toggle: function () {
                  return this.isLoading() ? this.stop() : this.start(), this
              }, setProgress: function (e) {
                  e = Math.max(Math.min(e, 1), 0);
                  var n = t.querySelector(".ladda-progress");
                  0 === e && n && n.parentNode ? n.parentNode.removeChild(n) : (n || (n = document.createElement("div"), n.className = "ladda-progress", t.appendChild(n)), n.style.width = (e || 0) * t.offsetWidth + "px")
              }, enable: function () {
                  return this.stop(), this
              }, disable: function () {
                  return this.stop(), t.setAttribute("disabled", ""), this
              }, isLoading: function () {
                  return t.hasAttribute("data-loading")
              }, remove: function () {
                  clearTimeout(r), t.removeAttribute("disabled", ""), t.removeAttribute("data-loading", ""), e && (e.stop(), e = null);
                  for (var n = 0, i = u.length; i > n; n++) if (a === u[n]) {
                      u.splice(n, 1);
                      break
                  }
              }
          };
          return u.push(a), a
      }
  
      function n(t, e) {
          for (; t.parentNode && t.tagName !== e;) t = t.parentNode;
          return e === t.tagName ? t : void 0
      }
  
      function r(t) {
          for (var e = ["input", "textarea"], n = [], r = 0; e.length > r; r++) for (var a = t.getElementsByTagName(e[r]), i = 0; a.length > i; i++) a[i].hasAttribute("required") && n.push(a[i]);
          return n
      }
  
      function a(t, a) {
          a = a || {};
          var i = [];
          "string" == typeof t ? i = s(document.querySelectorAll(t)) : "object" == typeof t && "string" == typeof t.nodeName && (i = [t]);
          for (var o = 0, u = i.length; u > o; o++) (function () {
              var t = i[o];
              if ("function" == typeof t.addEventListener) {
                  var s = e(t), u = -1;
                  t.addEventListener("click", function () {
                      var e = !0, i = n(t, "FORM");
                      if (i !== void 0) for (var o = r(i), d = 0; o.length > d; d++) "" === o[d].value.replace(/^\s+|\s+$/g, "") && (e = !1);
                      e && (s.startAfter(1), "number" == typeof a.timeout && (clearTimeout(u), u = setTimeout(s.stop, a.timeout)), "function" == typeof a.callback && a.callback.apply(null, [s]))
                  }, !1)
              }
          })()
      }
  
      function i() {
          for (var t = 0, e = u.length; e > t; t++) u[t].stop()
      }
  
      function o(e) {
          var n, r = e.offsetHeight;
          0 === r && (r = parseFloat(window.getComputedStyle(e).height)), r > 32 && (r *= .8), e.hasAttribute("data-spinner-size") && (r = parseInt(e.getAttribute("data-spinner-size"), 10)), e.hasAttribute("data-spinner-color") && (n = e.getAttribute("data-spinner-color"));
          var a = 12, i = .2 * r, o = .6 * i, s = 7 > i ? 2 : 3;
          return new t({
              color: n || "#fff",
              lines: a,
              radius: i,
              length: o,
              width: s,
              zIndex: "auto",
              top: "auto",
              left: "auto",
              className: ""
          })
      }
  
      function s(t) {
          for (var e = [], n = 0; t.length > n; n++) e.push(t[n]);
          return e
      }
  
      var u = [];
      return {bind: a, create: e, stopAll: i}
  });
  /*ladda-bootstrap.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("ladda", {
      mode: "init", defaults: {timeout: 2e3}, init: function () {
          if ("undefined" != typeof Ladda) {
              var defaults = $.components.getDefaults("ladda");
              Ladda.bind('[data-plugin="ladda"]', defaults)
          }
      }
  }), $.components.register("laddaProgress", {
      mode: "init", defaults: {
          init: function (instance) {
              var progress = 0, interval = setInterval(function () {
                  progress = Math.min(progress + .1 * Math.random(), 1), instance.setProgress(progress), 1 === progress && (instance.stop(), clearInterval(interval))
              }, 200)
          }
      }, init: function () {
          if ("undefined" != typeof Ladda) {
              var defaults = $.components.getDefaults("laddaProgress");
              Ladda.bind('[data-plugin="laddaProgress"]', defaults)
          }
      }
  });
  /*tablesaw.js*/
  /*! Tablesaw - v2.0.2 - 2015-10-28
  * https://github.com/filamentgroup/tablesaw
  * Copyright (c) 2015 Filament Group; Licensed  */
  /*
  * tablesaw: A set of plugins for responsive tables
  * Stack and Column Toggle tables
  * Copyright (c) 2013 Filament Group, Inc.
  * MIT License
  */
  
  if (typeof Tablesaw === "undefined") {
      Tablesaw = {
          i18n: {
              modes: ['Stack', 'Swipe', 'Toggle'],
              columns: 'Col<span class=\"a11y-sm\">umn</span>s',
              columnBtnText: 'Columns',
              columnsDialogError: 'No eligible columns.',
              sort: 'Sort'
          },
          // cut the mustard
          mustard: 'querySelector' in document &&
          ( !window.blackberry || window.WebKitPoint ) &&
          !window.operamini
      };
  }
  if (!Tablesaw.config) {
      Tablesaw.config = {};
  }
  if (Tablesaw.mustard) {
      jQuery(document.documentElement).addClass('tablesaw-enhanced');
  }
  
  ;(function ($) {
      var pluginName = "table",
          classes = {
              toolbar: "tablesaw-bar"
          },
          events = {
              create: "tablesawcreate",
              destroy: "tablesawdestroy",
              refresh: "tablesawrefresh"
          },
          defaultMode = "stack",
          initSelector = "table[data-tablesaw-mode],table[data-tablesaw-sortable]";
  
      var Table = function (element) {
          if (!element) {
              throw new Error("Tablesaw requires an element.");
          }
  
          this.table = element;
          this.$table = $(element);
  
          this.mode = this.$table.attr("data-tablesaw-mode") || defaultMode;
  
          this.init();
      };
  
      Table.prototype.init = function () {
          // assign an id if there is none
          if (!this.$table.attr("id")) {
              this.$table.attr("id", pluginName + "-" + Math.round(Math.random() * 10000));
          }
  
          this.createToolbar();
  
          var colstart = this._initCells();
  
          this.$table.trigger(events.create, [this, colstart]);
      };
  
      Table.prototype._initCells = function () {
          var colstart,
              thrs = this.table.querySelectorAll("thead tr"),
              self = this;
  
          $(thrs).each(function () {
              var coltally = 0;
  
              $(this).children().each(function () {
                  var span = parseInt(this.getAttribute("colspan"), 10),
                      sel = ":nth-child(" + ( coltally + 1 ) + ")";
  
                  colstart = coltally + 1;
  
                  if (span) {
                      for (var k = 0; k < span - 1; k++) {
                          coltally++;
                          sel += ", :nth-child(" + ( coltally + 1 ) + ")";
                      }
                  }
  
                  // Store "cells" data on header as a reference to all cells in the same column as this TH
                  this.cells = self.$table.find("tr").not(thrs[0]).not(this).children().filter(sel);
                  coltally++;
              });
          });
  
          return colstart;
      };
  
      Table.prototype.refresh = function () {
          this._initCells();
  
          this.$table.trigger(events.refresh);
      };
  
      Table.prototype.createToolbar = function () {
          // Insert the toolbar
          // TODO move this into a separate component
          var $toolbar = this.$table.prev().filter('.' + classes.toolbar);
          if (!$toolbar.length) {
              $toolbar = $('<div>')
                  .addClass(classes.toolbar)
                  .insertBefore(this.$table);
          }
          this.$toolbar = $toolbar;
  
          if (this.mode) {
              this.$toolbar.addClass('mode-' + this.mode);
          }
      };
  
      Table.prototype.destroy = function () {
          // Don’t remove the toolbar. Some of the table features are not yet destroy-friendly.
          this.$table.prev().filter('.' + classes.toolbar).each(function () {
              this.className = this.className.replace(/\bmode\-\w*\b/gi, '');
          });
  
          var tableId = this.$table.attr('id');
          $(document).unbind("." + tableId);
          $(window).unbind("." + tableId);
  
          // other plugins
          this.$table.trigger(events.destroy, [this]);
  
          this.$table.removeAttr('data-tablesaw-mode');
  
          this.$table.removeData(pluginName);
      };
  
      // Collection method.
      $.fn[pluginName] = function () {
          return this.each(function () {
              var $t = $(this);
  
              if ($t.data(pluginName)) {
                  return;
              }
  
              var table = new Table(this);
              $t.data(pluginName, table);
          });
      };
  
      $(document).on("enhance.tablesaw", function (e) {
          // Cut the mustard
          if (Tablesaw.mustard) {
              $(e.target).find(initSelector)[pluginName]();
          }
      });
  
  }(jQuery));
  
  ;(function (win, $, undefined) {
  
      var classes = {
          stackTable: 'tablesaw-stack',
          cellLabels: 'tablesaw-cell-label',
          cellContentLabels: 'tablesaw-cell-content'
      };
  
      var data = {
          obj: 'tablesaw-stack'
      };
  
      var attrs = {
          labelless: 'data-tablesaw-no-labels',
          hideempty: 'data-tablesaw-hide-empty'
      };
  
      var Stack = function (element) {
  
          this.$table = $(element);
  
          this.labelless = this.$table.is('[' + attrs.labelless + ']');
          this.hideempty = this.$table.is('[' + attrs.hideempty + ']');
  
          if (!this.labelless) {
              // allHeaders references headers, plus all THs in the thead, which may include several rows, or not
              this.allHeaders = this.$table.find("th");
          }
  
          this.$table.data(data.obj, this);
      };
  
      Stack.prototype.init = function (colstart) {
          this.$table.addClass(classes.stackTable);
  
          if (this.labelless) {
              return;
          }
  
          // get headers in reverse order so that top-level headers are appended last
          var reverseHeaders = $(this.allHeaders);
          var hideempty = this.hideempty;
  
          // create the hide/show toggles
          reverseHeaders.each(function () {
              var $t = $(this),
                  $cells = $(this.cells).filter(function () {
                      return !$(this).parent().is("[" + attrs.labelless + "]") && ( !hideempty || !$(this).is(":empty") );
                  }),
                  hierarchyClass = $cells.not(this).filter("thead th").length && " tablesaw-cell-label-top",
                  // TODO reduce coupling with sortable
                  $sortableButton = $t.find(".tablesaw-sortable-btn"),
                  html = $sortableButton.length ? $sortableButton.html() : $t.html();
  
              if (html !== "") {
                  if (hierarchyClass) {
                      var iteration = parseInt($(this).attr("colspan"), 10),
                          filter = "";
  
                      if (iteration) {
                          filter = "td:nth-child(" + iteration + "n + " + ( colstart ) + ")";
                      }
                      $cells.filter(filter).prepend("<b class='" + classes.cellLabels + hierarchyClass + "'>" + html + "</b>");
                  } else {
                      $cells.wrapInner("<span class='" + classes.cellContentLabels + "'></span>");
                      $cells.prepend("<b class='" + classes.cellLabels + "'>" + html + "</b>");
                  }
              }
          });
      };
  
      Stack.prototype.destroy = function () {
          this.$table.removeClass(classes.stackTable);
          this.$table.find('.' + classes.cellLabels).remove();
          this.$table.find('.' + classes.cellContentLabels).each(function () {
              $(this).replaceWith(this.childNodes);
          });
      };
  
      // on tablecreate, init
      $(document).on("tablesawcreate", function (e, Tablesaw, colstart) {
          if (Tablesaw.mode === 'stack') {
              var table = new Stack(Tablesaw.table);
              table.init(colstart);
          }
  
      });
  
      $(document).on("tablesawdestroy", function (e, Tablesaw) {
  
          if (Tablesaw.mode === 'stack') {
              $(Tablesaw.table).data(data.obj).destroy();
          }
  
      });
  
  }(this, jQuery));
  ;(function ($) {
      var pluginName = "tablesawbtn",
          methods = {
              _create: function () {
                  return $(this).each(function () {
                      $(this)
                          .trigger("beforecreate." + pluginName)
                          [pluginName]("_init")
                          .trigger("create." + pluginName);
                  });
              },
              _init: function () {
                  var oEl = $(this),
                      sel = this.getElementsByTagName("select")[0];
  
                  if (sel) {
                      $(this)
                          .addClass("btn-select")
                          [pluginName]("_select", sel);
                  }
                  return oEl;
              },
              _select: function (sel) {
                  var update = function (oEl, sel) {
                      var opts = $(sel).find("option"),
                          label, el, children;
  
                      opts.each(function () {
                          var opt = this;
                          if (opt.selected) {
                              label = document.createTextNode(opt.text);
                          }
                      });
  
                      children = oEl.childNodes;
                      if (opts.length > 0) {
                          for (var i = 0, l = children.length; i < l; i++) {
                              el = children[i];
  
                              if (el && el.nodeType === 3) {
                                  oEl.replaceChild(label, el);
                              }
                          }
                      }
                  };
  
                  update(this, sel);
                  $(this).bind("change refresh", function () {
                      update(this, sel);
                  });
              }
          };
  
      // Collection method.
      $.fn[pluginName] = function (arrg, a, b, c) {
          return this.each(function () {
  
              // if it's a method
              if (arrg && typeof( arrg ) === "string") {
                  return $.fn[pluginName].prototype[arrg].call(this, a, b, c);
              }
  
              // don't re-init
              if ($(this).data(pluginName + "active")) {
                  return $(this);
              }
  
              // otherwise, init
  
              $(this).data(pluginName + "active", true);
              $.fn[pluginName].prototype._create.call(this);
          });
      };
  
      // add methods
      $.extend($.fn[pluginName].prototype, methods);
  
  }(jQuery));
  ;(function (win, $, undefined) {
  
      var ColumnToggle = function (element) {
  
          this.$table = $(element);
  
          this.classes = {
              columnToggleTable: 'tablesaw-columntoggle',
              columnBtnContain: 'tablesaw-columntoggle-btnwrap tablesaw-advance',
              columnBtn: 'tablesaw-columntoggle-btn tablesaw-nav-btn down',
              popup: 'tablesaw-columntoggle-popup',
              priorityPrefix: 'tablesaw-priority-',
              // TODO duplicate class, also in tables.js
              toolbar: 'tablesaw-bar'
          };
  
          // Expose headers and allHeaders properties on the widget
          // headers references the THs within the first TR in the table
          this.headers = this.$table.find('tr:first > th');
  
          this.$table.data('tablesaw-coltoggle', this);
      };
  
      ColumnToggle.prototype.init = function () {
  
          var tableId,
              id,
              $menuButton,
              $popup,
              $menu,
              $btnContain,
              self = this;
  
          this.$table.addClass(this.classes.columnToggleTable);
  
          tableId = this.$table.attr("id");
          id = tableId + "-popup";
          $btnContain = $("<div class='" + this.classes.columnBtnContain + "'></div>");
          $menuButton = $("<a href='#" + id + "' class='btn btn-micro " + this.classes.columnBtn + "' data-popup-link>" +
              "<span>" + Tablesaw.i18n.columnBtnText + "</span></a>");
          $popup = $("<div class='dialog-table-coltoggle " + this.classes.popup + "' id='" + id + "'></div>");
          $menu = $("<div class='btn-group'></div>");
  
          var hasNonPersistentHeaders = false;
          $(this.headers).not("td").each(function () {
              var $this = $(this),
                  priority = $this.attr("data-tablesaw-priority"),
                  $cells = self.$getCells(this);
  
              if (priority && priority !== "persist") {
                  $cells.addClass(self.classes.priorityPrefix + priority);
  
                  $("<label><input type='checkbox' checked>" + $this.text() + "</label>")
                      .appendTo($menu)
                      .children(0)
                      .data("tablesaw-header", this);
  
                  hasNonPersistentHeaders = true;
              }
          });
  
          if (!hasNonPersistentHeaders) {
              $menu.append('<label>' + Tablesaw.i18n.columnsDialogError + '</label>');
          }
  
          $menu.appendTo($popup);
  
          // bind change event listeners to inputs - TODO: move to a private method?
          $menu.find('input[type="checkbox"]').on("change", function (e) {
              var checked = e.target.checked;
  
              self.$getCellsFromCheckbox(e.target)
                  .toggleClass("tablesaw-cell-hidden", !checked)
                  .toggleClass("tablesaw-cell-visible", checked);
  
              self.$table.trigger('tablesawcolumns');
          });
  
          $menuButton.appendTo($btnContain);
          $btnContain.appendTo(this.$table.prev().filter('.' + this.classes.toolbar));
  
          var closeTimeout;
  
          function openPopup() {
              $btnContain.addClass('visible');
              $menuButton.removeClass('down').addClass('up');
  
              $(document).unbind('click.' + tableId, closePopup);
  
              window.clearTimeout(closeTimeout);
              closeTimeout = window.setTimeout(function () {
                  $(document).one('click.' + tableId, closePopup);
              }, 15);
          }
  
          function closePopup(event) {
              // Click came from inside the popup, ignore.
              if (event && $(event.target).closest("." + self.classes.popup).length) {
                  return;
              }
  
              $(document).unbind('click.' + tableId);
              $menuButton.removeClass('up').addClass('down');
              $btnContain.removeClass('visible');
          }
  
          $menuButton.on("click.tablesaw", function (event) {
              event.preventDefault();
  
              if (!$btnContain.is(".visible")) {
                  openPopup();
              } else {
                  closePopup();
              }
          });
  
          $popup.appendTo($btnContain);
  
          this.$menu = $menu;
  
          $(window).on("resize." + tableId, function () {
              self.refreshToggle();
          });
  
          this.refreshToggle();
      };
  
      ColumnToggle.prototype.$getCells = function (th) {
          return $(th).add(th.cells);
      };
  
      ColumnToggle.prototype.$getCellsFromCheckbox = function (checkbox) {
          var th = $(checkbox).data("tablesaw-header");
          return this.$getCells(th);
      };
  
      ColumnToggle.prototype.refreshToggle = function () {
          var self = this;
          this.$menu.find("input").each(function () {
              this.checked = self.$getCellsFromCheckbox(this).eq(0).css("display") === "table-cell";
          });
      };
  
      ColumnToggle.prototype.refreshPriority = function () {
          var self = this;
          $(this.headers).not("td").each(function () {
              var $this = $(this),
                  priority = $this.attr("data-tablesaw-priority"),
                  $cells = $this.add(this.cells);
  
              if (priority && priority !== "persist") {
                  $cells.addClass(self.classes.priorityPrefix + priority);
              }
          });
      };
  
      ColumnToggle.prototype.destroy = function () {
          // table toolbars, document and window .tableId events
          // removed in parent tables.js destroy method
  
          this.$table.removeClass(this.classes.columnToggleTable);
          this.$table.find('th, td').each(function () {
              var $cell = $(this);
              $cell.removeClass('tablesaw-cell-hidden')
                  .removeClass('tablesaw-cell-visible');
  
              this.className = this.className.replace(/\bui\-table\-priority\-\d\b/g, '');
          });
      };
  
      // on tablecreate, init
      $(document).on("tablesawcreate", function (e, Tablesaw) {
  
          if (Tablesaw.mode === 'columntoggle') {
              var table = new ColumnToggle(Tablesaw.table);
              table.init();
          }
  
      });
  
      $(document).on("tablesawdestroy", function (e, Tablesaw) {
          if (Tablesaw.mode === 'columntoggle') {
              $(Tablesaw.table).data('tablesaw-coltoggle').destroy();
          }
      });
  
  }(this, jQuery));
  ;(function (win, $, undefined) {
  
      $.extend(Tablesaw.config, {
          swipe: {
              horizontalThreshold: 15,
              verticalThreshold: 30
          }
      });
  
      function isIE8() {
          var div = document.createElement('div'),
              all = div.getElementsByTagName('i');
  
          div.innerHTML = '<!--[if lte IE 8]><i></i><![endif]-->';
  
          return !!all.length;
      }
  
      function createSwipeTable($table) {
  
          var $btns = $("<div class='tablesaw-advance'></div>"),
              $prevBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro left' title='Previous Column'></a>").appendTo($btns),
              $nextBtn = $("<a href='#' class='tablesaw-nav-btn btn btn-micro right' title='Next Column'></a>").appendTo($btns),
              hideBtn = 'disabled',
              persistWidths = 'tablesaw-fix-persist',
              $headerCells = $table.find("thead th"),
              $headerCellsNoPersist = $headerCells.not('[data-tablesaw-priority="persist"]'),
              headerWidths = [],
              $head = $(document.head || 'head'),
              tableId = $table.attr('id'),
              // TODO switch this to an nth-child feature test
              supportsNthChild = !isIE8();
  
          if (!$headerCells.length) {
              throw new Error("tablesaw swipe: no header cells found. Are you using <th> inside of <thead>?");
          }
  
          // Calculate initial widths
          $table.css('width', 'auto');
          $headerCells.each(function () {
              headerWidths.push($(this).outerWidth());
          });
          $table.css('width', '');
  
          $btns.appendTo($table.prev().filter('.tablesaw-bar'));
  
          $table.addClass("tablesaw-swipe");
  
          if (!tableId) {
              tableId = 'tableswipe-' + Math.round(Math.random() * 10000);
              $table.attr('id', tableId);
          }
  
          function $getCells(headerCell) {
              return $(headerCell.cells).add(headerCell);
          }
  
          function showColumn(headerCell) {
              $getCells(headerCell).removeClass('tablesaw-cell-hidden');
          }
  
          function hideColumn(headerCell) {
              $getCells(headerCell).addClass('tablesaw-cell-hidden');
          }
  
          function persistColumn(headerCell) {
              $getCells(headerCell).addClass('tablesaw-cell-persist');
          }
  
          function isPersistent(headerCell) {
              return $(headerCell).is('[data-tablesaw-priority="persist"]');
          }
  
          function unmaintainWidths() {
              $table.removeClass(persistWidths);
              $('#' + tableId + '-persist').remove();
          }
  
          function maintainWidths() {
              var prefix = '#' + tableId + '.tablesaw-swipe ',
                  styles = [],
                  tableWidth = $table.width(),
                  hash = [],
                  newHash;
  
              $headerCells.each(function (index) {
                  var width;
                  if (isPersistent(this)) {
                      width = $(this).outerWidth();
  
                      // Only save width on non-greedy columns (take up less than 75% of table width)
                      if (width < tableWidth * 0.75) {
                          hash.push(index + '-' + width);
                          styles.push(prefix + ' .tablesaw-cell-persist:nth-child(' + ( index + 1 ) + ') { width: ' + width + 'px; }');
                      }
                  }
              });
              newHash = hash.join('_');
  
              $table.addClass(persistWidths);
  
              var $style = $('#' + tableId + '-persist');
              // If style element not yet added OR if the widths have changed
              if (!$style.length || $style.data('hash') !== newHash) {
                  // Remove existing
                  $style.remove();
  
                  if (styles.length) {
                      $('<style>' + styles.join("\n") + '</style>')
                          .attr('id', tableId + '-persist')
                          .data('hash', newHash)
                          .appendTo($head);
                  }
              }
          }
  
          function getNext() {
              var next = [],
                  checkFound;
  
              $headerCellsNoPersist.each(function (i) {
                  var $t = $(this),
                      isHidden = $t.css("display") === "none" || $t.is(".tablesaw-cell-hidden");
  
                  if (!isHidden && !checkFound) {
                      checkFound = true;
                      next[0] = i;
                  } else if (isHidden && checkFound) {
                      next[1] = i;
  
                      return false;
                  }
              });
  
              return next;
          }
  
          function getPrev() {
              var next = getNext();
              return [next[1] - 1, next[0] - 1];
          }
  
          function nextpair(fwd) {
              return fwd ? getNext() : getPrev();
          }
  
          function canAdvance(pair) {
              return pair[1] > -1 && pair[1] < $headerCellsNoPersist.length;
          }
  
          function matchesMedia() {
              var matchMedia = $table.attr("data-tablesaw-swipe-media");
              return !matchMedia || ( "matchMedia" in win ) && win.matchMedia(matchMedia).matches;
          }
  
          function fakeBreakpoints() {
              if (!matchesMedia()) {
                  return;
              }
  
              var extraPaddingPixels = 20,
                  containerWidth = $table.parent().width(),
                  persist = [],
                  sum = 0,
                  sums = [],
                  visibleNonPersistantCount = $headerCells.length;
  
              $headerCells.each(function (index) {
                  var $t = $(this),
                      isPersist = $t.is('[data-tablesaw-priority="persist"]');
  
                  persist.push(isPersist);
  
                  sum += headerWidths[index] + ( isPersist ? 0 : extraPaddingPixels );
                  sums.push(sum);
  
                  // is persistent or is hidden
                  if (isPersist || sum > containerWidth) {
                      visibleNonPersistantCount--;
                  }
              });
  
              var needsNonPersistentColumn = visibleNonPersistantCount === 0;
  
              $headerCells.each(function (index) {
                  if (persist[index]) {
  
                      // for visual box-shadow
                      persistColumn(this);
                      return;
                  }
  
                  if (sums[index] <= containerWidth || needsNonPersistentColumn) {
                      needsNonPersistentColumn = false;
                      showColumn(this);
                  } else {
                      hideColumn(this);
                  }
              });
  
              if (supportsNthChild) {
                  unmaintainWidths();
              }
              $table.trigger('tablesawcolumns');
          }
  
          function advance(fwd) {
              var pair = nextpair(fwd);
              if (canAdvance(pair)) {
                  if (isNaN(pair[0])) {
                      if (fwd) {
                          pair[0] = 0;
                      }
                      else {
                          pair[0] = $headerCellsNoPersist.length - 1;
                      }
                  }
  
                  if (supportsNthChild) {
                      maintainWidths();
                  }
  
                  hideColumn($headerCellsNoPersist.get(pair[0]));
                  showColumn($headerCellsNoPersist.get(pair[1]));
  
                  $table.trigger('tablesawcolumns');
              }
          }
  
          $prevBtn.add($nextBtn).click(function (e) {
              advance(!!$(e.target).closest($nextBtn).length);
              e.preventDefault();
          });
  
          function getCoord(event, key) {
              return ( event.touches || event.originalEvent.touches )[0][key];
          }
  
          $table
              .bind("touchstart.swipetoggle", function (e) {
                  var originX = getCoord(e, 'pageX'),
                      originY = getCoord(e, 'pageY'),
                      x,
                      y;
  
                  $(win).off("resize", fakeBreakpoints);
  
                  $(this)
                      .bind("touchmove", function (e) {
                          x = getCoord(e, 'pageX');
                          y = getCoord(e, 'pageY');
                          var cfg = Tablesaw.config.swipe;
                          if (Math.abs(x - originX) > cfg.horizontalThreshold && Math.abs(y - originY) < cfg.verticalThreshold) {
                              e.preventDefault();
                          }
                      })
                      .bind("touchend.swipetoggle", function () {
                          var cfg = Tablesaw.config.swipe;
                          if (Math.abs(y - originY) < cfg.verticalThreshold) {
                              if (x - originX < -1 * cfg.horizontalThreshold) {
                                  advance(true);
                              }
                              if (x - originX > cfg.horizontalThreshold) {
                                  advance(false);
                              }
                          }
  
                          window.setTimeout(function () {
                              $(win).on("resize", fakeBreakpoints);
                          }, 300);
                          $(this).unbind("touchmove touchend");
                      });
  
              })
              .bind("tablesawcolumns.swipetoggle", function () {
                  $prevBtn[canAdvance(getPrev()) ? "removeClass" : "addClass"](hideBtn);
                  $nextBtn[canAdvance(getNext()) ? "removeClass" : "addClass"](hideBtn);
              })
              .bind("tablesawnext.swipetoggle", function () {
                  advance(true);
              })
              .bind("tablesawprev.swipetoggle", function () {
                  advance(false);
              })
              .bind("tablesawdestroy.swipetoggle", function () {
                  var $t = $(this);
  
                  $t.removeClass('tablesaw-swipe');
                  $t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
                  $(win).off("resize", fakeBreakpoints);
  
                  $t.unbind(".swipetoggle");
              });
  
          fakeBreakpoints();
          $(win).on("resize", fakeBreakpoints);
      }
  
  
      // on tablecreate, init
      $(document).on("tablesawcreate", function (e, Tablesaw) {
  
          if (Tablesaw.mode === 'swipe') {
              createSwipeTable(Tablesaw.$table);
          }
  
      });
  
  }(this, jQuery));
  
  ;(function ($) {
      function getSortValue(cell) {
          return $.map(cell.childNodes, function (el) {
              var $el = $(el);
              if ($el.is('input, select')) {
                  return $el.val();
              } else if ($el.hasClass('tablesaw-cell-label')) {
                  return;
              }
              return $.trim($el.text());
          }).join('');
      }
  
      var pluginName = "tablesaw-sortable",
          initSelector = "table[data-" + pluginName + "]",
          sortableSwitchSelector = "[data-" + pluginName + "-switch]",
          attrs = {
              defaultCol: "data-tablesaw-sortable-default-col",
              numericCol: "data-tablesaw-sortable-numeric"
          },
          classes = {
              head: pluginName + "-head",
              ascend: pluginName + "-ascending",
              descend: pluginName + "-descending",
              switcher: pluginName + "-switch",
              tableToolbar: 'tablesaw-toolbar',
              sortButton: pluginName + "-btn"
          },
          methods = {
              _create: function (o) {
                  return $(this).each(function () {
                      var init = $(this).data("init" + pluginName);
                      if (init) {
                          return false;
                      }
                      $(this)
                          .data("init" + pluginName, true)
                          .trigger("beforecreate." + pluginName)
                          [pluginName]("_init", o)
                          .trigger("create." + pluginName);
                  });
              },
              _init: function () {
                  var el = $(this),
                      heads,
                      $switcher;
  
                  var addClassToTable = function () {
                          el.addClass(pluginName);
                      },
                      addClassToHeads = function (h) {
                          $.each(h, function (i, v) {
                              $(v).addClass(classes.head);
                          });
                      },
                      makeHeadsActionable = function (h, fn) {
                          $.each(h, function (i, v) {
                              var b = $("<button class='" + classes.sortButton + "'/>");
                              b.bind("click", {col: v}, fn);
                              $(v).wrapInner(b);
                          });
                      },
                      clearOthers = function (sibs) {
                          $.each(sibs, function (i, v) {
                              var col = $(v);
                              col.removeAttr(attrs.defaultCol);
                              col.removeClass(classes.ascend);
                              col.removeClass(classes.descend);
                          });
                      },
                      headsOnAction = function (e) {
                          if ($(e.target).is('a[href]')) {
                              return;
                          }
  
                          e.stopPropagation();
                          var head = $(this).parent(),
                              v = e.data.col,
                              newSortValue = heads.index(head);
  
                          clearOthers(head.siblings());
                          if (head.hasClass(classes.descend)) {
                              el[pluginName]("sortBy", v, true);
                              newSortValue += '_asc';
                          } else {
                              el[pluginName]("sortBy", v);
                              newSortValue += '_desc';
                          }
                          if ($switcher) {
                              $switcher.find('select').val(newSortValue).trigger('refresh');
                          }
  
                          e.preventDefault();
                      },
                      handleDefault = function (heads) {
                          $.each(heads, function (idx, el) {
                              var $el = $(el);
                              if ($el.is("[" + attrs.defaultCol + "]")) {
                                  if (!$el.hasClass(classes.descend)) {
                                      $el.addClass(classes.ascend);
                                  }
                              }
                          });
                      },
                      addSwitcher = function (heads) {
                          $switcher = $('<div>').addClass(classes.switcher).addClass(classes.tableToolbar).html(function () {
                              var html = ['<label>' + Tablesaw.i18n.sort + ':'];
  
                              html.push('<span class="btn btn-small">&#160;<select>');
                              heads.each(function (j) {
                                  var $t = $(this);
                                  var isDefaultCol = $t.is("[" + attrs.defaultCol + "]");
                                  var isDescending = $t.hasClass(classes.descend);
  
                                  var hasNumericAttribute = $t.is('[data-sortable-numeric]');
                                  var numericCount = 0;
                                  // Check only the first four rows to see if the column is numbers.
                                  var numericCountMax = 5;
  
                                  $(this.cells).slice(0, numericCountMax).each(function () {
                                      if (!isNaN(parseInt(getSortValue(this), 10))) {
                                          numericCount++;
                                      }
                                  });
                                  var isNumeric = numericCount === numericCountMax;
                                  if (!hasNumericAttribute) {
                                      $t.attr("data-sortable-numeric", isNumeric ? "" : "false");
                                  }
  
                                  html.push('<option' + ( isDefaultCol && !isDescending ? ' selected' : '' ) + ' value="' + j + '_asc">' + $t.text() + ' ' + ( isNumeric ? '&#x2191;' : '(A-Z)' ) + '</option>');
                                  html.push('<option' + ( isDefaultCol && isDescending ? ' selected' : '' ) + ' value="' + j + '_desc">' + $t.text() + ' ' + ( isNumeric ? '&#x2193;' : '(Z-A)' ) + '</option>');
                              });
                              html.push('</select></span></label>');
  
                              return html.join('');
                          });
  
                          var $toolbar = el.prev().filter('.tablesaw-bar'),
                              $firstChild = $toolbar.children().eq(0);
  
                          if ($firstChild.length) {
                              $switcher.insertBefore($firstChild);
                          } else {
                              $switcher.appendTo($toolbar);
                          }
                          $switcher.find('.btn').tablesawbtn();
                          $switcher.find('select').on('change', function () {
                              var val = $(this).val().split('_'),
                                  head = heads.eq(val[0]);
  
                              clearOthers(head.siblings());
                              el[pluginName]('sortBy', head.get(0), val[1] === 'asc');
                          });
                      };
  
                  addClassToTable();
                  heads = el.find("thead th[data-" + pluginName + "-col]");
                  addClassToHeads(heads);
                  makeHeadsActionable(heads, headsOnAction);
                  handleDefault(heads);
  
                  if (el.is(sortableSwitchSelector)) {
                      addSwitcher(heads, el.find('tbody tr:nth-child(-n+3)'));
                  }
              },
              getColumnNumber: function (col) {
                  return $(col).prevAll().length;
              },
              getTableRows: function () {
                  return $(this).find("tbody tr");
              },
              sortRows: function (rows, colNum, ascending, col) {
                  var cells, fn, sorted;
                  var getCells = function (rows) {
                          var cells = [];
                          $.each(rows, function (i, r) {
                              var element = $(r).children().get(colNum);
                              cells.push({
                                  element: element,
                                  cell: getSortValue(element),
                                  rowNum: i
                              });
                          });
                          return cells;
                      },
                      getSortFxn = function (ascending, forceNumeric) {
                          var fn,
                              regex = /[^\-\+\d\.]/g;
                          if (ascending) {
                              fn = function (a, b) {
                                  if (forceNumeric) {
                                      return parseFloat(a.cell.replace(regex, '')) - parseFloat(b.cell.replace(regex, ''));
                                  } else {
                                      return a.cell.toLowerCase() > b.cell.toLowerCase() ? 1 : -1;
                                  }
                              };
                          } else {
                              fn = function (a, b) {
                                  if (forceNumeric) {
                                      return parseFloat(b.cell.replace(regex, '')) - parseFloat(a.cell.replace(regex, ''));
                                  } else {
                                      return a.cell.toLowerCase() < b.cell.toLowerCase() ? 1 : -1;
                                  }
                              };
                          }
                          return fn;
                      },
                      applyToRows = function (sorted, rows) {
                          var newRows = [], i, l, cur;
                          for (i = 0, l = sorted.length; i < l; i++) {
                              cur = sorted[i].rowNum;
                              newRows.push(rows[cur]);
                          }
                          return newRows;
                      };
  
                  cells = getCells(rows);
                  var customFn = $(col).data('tablesaw-sort');
                  fn = ( customFn && typeof customFn === "function" ? customFn(ascending) : false ) ||
                      getSortFxn(ascending, $(col).is('[data-sortable-numeric]') && !$(col).is('[data-sortable-numeric="false"]'));
                  sorted = cells.sort(fn);
                  rows = applyToRows(sorted, rows);
                  return rows;
              },
              replaceTableRows: function (rows) {
                  var el = $(this),
                      body = el.find("tbody");
                  body.html(rows);
              },
              makeColDefault: function (col, a) {
                  var c = $(col);
                  c.attr(attrs.defaultCol, "true");
                  if (a) {
                      c.removeClass(classes.descend);
                      c.addClass(classes.ascend);
                  } else {
                      c.removeClass(classes.ascend);
                      c.addClass(classes.descend);
                  }
              },
              sortBy: function (col, ascending) {
                  var el = $(this), colNum, rows;
  
                  colNum = el[pluginName]("getColumnNumber", col);
                  rows = el[pluginName]("getTableRows");
                  rows = el[pluginName]("sortRows", rows, colNum, ascending, col);
                  el[pluginName]("replaceTableRows", rows);
                  el[pluginName]("makeColDefault", col, ascending);
              }
          };
  
      // Collection method.
      $.fn[pluginName] = function (arrg) {
          var args = Array.prototype.slice.call(arguments, 1),
              returnVal;
  
          // if it's a method
          if (arrg && typeof( arrg ) === "string") {
              returnVal = $.fn[pluginName].prototype[arrg].apply(this[0], args);
              return (typeof returnVal !== "undefined") ? returnVal : $(this);
          }
          // check init
          if (!$(this).data(pluginName + "data")) {
              $(this).data(pluginName + "active", true);
              $.fn[pluginName].prototype._create.call(this, arrg);
          }
          return $(this);
      };
      // add methods
      $.extend($.fn[pluginName].prototype, methods);
  
      $(document).on("tablesawcreate", function (e, Tablesaw) {
          if (Tablesaw.$table.is(initSelector)) {
              Tablesaw.$table[pluginName]();
          }
      });
  
  }(jQuery));
  
  ;(function (win, $, undefined) {
  
      var MM = {
          attr: {
              init: 'data-tablesaw-minimap'
          }
      };
  
      function createMiniMap($table) {
  
          var $btns = $('<div class="tablesaw-advance minimap">'),
              $dotNav = $('<ul class="tablesaw-advance-dots">').appendTo($btns),
              hideDot = 'tablesaw-advance-dots-hide',
              $headerCells = $table.find('thead th');
  
          // populate dots
          $headerCells.each(function () {
              $dotNav.append('<li><i></i></li>');
          });
  
          $btns.appendTo($table.prev().filter('.tablesaw-bar'));
  
          function showMinimap($table) {
              var mq = $table.attr(MM.attr.init);
              return !mq || win.matchMedia && win.matchMedia(mq).matches;
          }
  
          function showHideNav() {
              if (!showMinimap($table)) {
                  $btns.hide();
                  return;
              }
              $btns.show();
  
              // show/hide dots
              var dots = $dotNav.find("li").removeClass(hideDot);
              $table.find("thead th").each(function (i) {
                  if ($(this).css("display") === "none") {
                      dots.eq(i).addClass(hideDot);
                  }
              });
          }
  
          // run on init and resize
          showHideNav();
          $(win).on("resize", showHideNav);
  
  
          $table
              .bind("tablesawcolumns.minimap", function () {
                  showHideNav();
              })
              .bind("tablesawdestroy.minimap", function () {
                  var $t = $(this);
  
                  $t.prev().filter('.tablesaw-bar').find('.tablesaw-advance').remove();
                  $(win).off("resize", showHideNav);
  
                  $t.unbind(".minimap");
              });
      }
  
  
      // on tablecreate, init
      $(document).on("tablesawcreate", function (e, Tablesaw) {
  
          if (( Tablesaw.mode === 'swipe' || Tablesaw.mode === 'columntoggle' ) && Tablesaw.$table.is('[ ' + MM.attr.init + ']')) {
              createMiniMap(Tablesaw.$table);
          }
  
      });
  
  }(this, jQuery));
  
  ;(function (win, $) {
  
      var S = {
          selectors: {
              init: 'table[data-tablesaw-mode-switch]'
          },
          attributes: {
              excludeMode: 'data-tablesaw-mode-exclude'
          },
          classes: {
              main: 'tablesaw-modeswitch',
              toolbar: 'tablesaw-toolbar'
          },
          modes: ['stack', 'swipe', 'columntoggle'],
          init: function (table) {
              var $table = $(table),
                  ignoreMode = $table.attr(S.attributes.excludeMode),
                  $toolbar = $table.prev().filter('.tablesaw-bar'),
                  modeVal = '',
                  $switcher = $('<div>').addClass(S.classes.main + ' ' + S.classes.toolbar).html(function () {
                      var html = ['<label>' + Tablesaw.i18n.columns + ':'],
                          dataMode = $table.attr('data-tablesaw-mode'),
                          isSelected;
  
                      html.push('<span class="btn btn-small">&#160;<select>');
                      for (var j = 0, k = S.modes.length; j < k; j++) {
                          if (ignoreMode && ignoreMode.toLowerCase() === S.modes[j]) {
                              continue;
                          }
  
                          isSelected = dataMode === S.modes[j];
  
                          if (isSelected) {
                              modeVal = S.modes[j];
                          }
  
                          html.push('<option' +
                              ( isSelected ? ' selected' : '' ) +
                              ' value="' + S.modes[j] + '">' + Tablesaw.i18n.modes[j] + '</option>');
                      }
                      html.push('</select></span></label>');
  
                      return html.join('');
                  });
  
              var $otherToolbarItems = $toolbar.find('.tablesaw-advance').eq(0);
              if ($otherToolbarItems.length) {
                  $switcher.insertBefore($otherToolbarItems);
              } else {
                  $switcher.appendTo($toolbar);
              }
  
              $switcher.find('.btn').tablesawbtn();
              $switcher.find('select').bind('change', S.onModeChange);
          },
          onModeChange: function () {
              var $t = $(this),
                  $switcher = $t.closest('.' + S.classes.main),
                  $table = $t.closest('.tablesaw-bar').nextUntil($table).eq(0),
                  val = $t.val();
  
              $switcher.remove();
              $table.data('table').destroy();
  
              $table.attr('data-tablesaw-mode', val);
              $table.table();
          }
      };
  
      $(win.document).on("tablesawcreate", function (e, Tablesaw) {
          if (Tablesaw.$table.is(S.selectors.init)) {
              S.init(Tablesaw.table);
          }
      });
  
  })(this, jQuery);
  /*tablesaw-init.js*/
  /*! Tablesaw - v2.0.2 - 2015-10-28
  * https://github.com/filamentgroup/tablesaw
  * Copyright (c) 2015 Filament Group; Licensed  */
  ;(function ($) {
  
      // DOM-ready auto-init of plugins.
      // Many plugins bind to an "enhance" event to init themselves on dom ready, or when new markup is inserted into the DOM
      $(function () {
          $(document).trigger("enhance.tablesaw");
      });
  
  })(jQuery);
  /*imagesloaded.js*/
  /*!
   * imagesLoaded v3.0.2
   * JavaScript is all like "You images are done yet or what?"
   */
  
  (function (window) {
  
      'use strict';
  
      var $ = window.jQuery;
      var console = window.console;
      var hasConsole = typeof console !== 'undefined';
  
  // -------------------------- helpers -------------------------- //
  
  // extend objects
      function extend(a, b) {
          for (var prop in b) {
              a[prop] = b[prop];
          }
          return a;
      }
  
      var objToString = Object.prototype.toString;
  
      function isArray(obj) {
          return objToString.call(obj) === '[object Array]';
      }
  
  // turn element or nodeList into an array
      function makeArray(obj) {
          var ary = [];
          if (isArray(obj)) {
              // use object if already an array
              ary = obj;
          } else if (typeof obj.length === 'number') {
              // convert nodeList to array
              for (var i = 0, len = obj.length; i < len; i++) {
                  ary.push(obj[i]);
              }
          } else {
              // array of single index
              ary.push(obj);
          }
          return ary;
      }
  
  // --------------------------  -------------------------- //
  
      function defineImagesLoaded(EventEmitter, eventie) {
  
          /**
           * @param {Array, Element, NodeList, String} elem
           * @param {Object or Function} options - if function, use as callback
           * @param {Function} onAlways - callback function
           */
          function ImagesLoaded(elem, options, onAlways) {
              // coerce ImagesLoaded() without new, to be new ImagesLoaded()
              if (!( this instanceof ImagesLoaded )) {
                  return new ImagesLoaded(elem, options);
              }
              // use elem as selector string
              if (typeof elem === 'string') {
                  elem = document.querySelectorAll(elem);
              }
  
              this.elements = makeArray(elem);
              this.options = extend({}, this.options);
  
              if (typeof options === 'function') {
                  onAlways = options;
              } else {
                  extend(this.options, options);
              }
  
              if (onAlways) {
                  this.on('always', onAlways);
              }
  
              this.getImages();
  
              if ($) {
                  // add jQuery Deferred object
                  this.jqDeferred = new $.Deferred();
              }
  
              // HACK check async to allow time to bind listeners
              var _this = this;
              setTimeout(function () {
                  _this.check();
              });
          }
  
          ImagesLoaded.prototype = new EventEmitter();
  
          ImagesLoaded.prototype.options = {};
  
          ImagesLoaded.prototype.getImages = function () {
              this.images = [];
  
              // filter & find items if we have an item selector
              for (var i = 0, len = this.elements.length; i < len; i++) {
                  var elem = this.elements[i];
                  // filter siblings
                  if (elem.nodeName === 'IMG') {
                      this.addImage(elem);
                  }
                  // find children
                  var childElems = elem.querySelectorAll('img');
                  // concat childElems to filterFound array
                  for (var j = 0, jLen = childElems.length; j < jLen; j++) {
                      var img = childElems[j];
                      this.addImage(img);
                  }
              }
          };
  
          /**
           * @param {Image} img
           */
          ImagesLoaded.prototype.addImage = function (img) {
              var loadingImage = new LoadingImage(img);
              this.images.push(loadingImage);
          };
  
          ImagesLoaded.prototype.check = function () {
              var _this = this;
              var checkedCount = 0;
              var length = this.images.length;
              this.hasAnyBroken = false;
              // complete if no images
              if (!length) {
                  this.complete();
                  return;
              }
  
              function onConfirm(image, message) {
                  if (_this.options.debug && hasConsole) {
                      console.log('confirm', image, message);
                  }
  
                  _this.progress(image);
                  checkedCount++;
                  if (checkedCount === length) {
                      _this.complete();
                  }
                  return true; // bind once
              }
  
              for (var i = 0; i < length; i++) {
                  var loadingImage = this.images[i];
                  loadingImage.on('confirm', onConfirm);
                  loadingImage.check();
              }
          };
  
          ImagesLoaded.prototype.progress = function (image) {
              this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
              this.emit('progress', this, image);
              if (this.jqDeferred) {
                  this.jqDeferred.notify(this, image);
              }
          };
  
          ImagesLoaded.prototype.complete = function () {
              var eventName = this.hasAnyBroken ? 'fail' : 'done';
              this.isComplete = true;
              this.emit(eventName, this);
              this.emit('always', this);
              if (this.jqDeferred) {
                  var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
                  this.jqDeferred[jqMethod](this);
              }
          };
  
          // -------------------------- jquery -------------------------- //
  
          if ($) {
              $.fn.imagesLoaded = function (options, callback) {
                  var instance = new ImagesLoaded(this, options, callback);
                  return instance.jqDeferred.promise($(this));
              };
          }
  
  
          // --------------------------  -------------------------- //
  
          var cache = {};
  
          function LoadingImage(img) {
              this.img = img;
          }
  
          LoadingImage.prototype = new EventEmitter();
  
          LoadingImage.prototype.check = function () {
              // first check cached any previous images that have same src
              var cached = cache[this.img.src];
              if (cached) {
                  this.useCached(cached);
                  return;
              }
              // add this to cache
              cache[this.img.src] = this;
  
              // If complete is true and browser supports natural sizes,
              // try to check for image status manually.
              if (this.img.complete && this.img.naturalWidth !== undefined) {
                  // report based on naturalWidth
                  this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
                  return;
              }
  
              // If none of the checks above matched, simulate loading on detached element.
              var proxyImage = this.proxyImage = new Image();
              eventie.bind(proxyImage, 'load', this);
              eventie.bind(proxyImage, 'error', this);
              proxyImage.src = this.img.src;
          };
  
          LoadingImage.prototype.useCached = function (cached) {
              if (cached.isConfirmed) {
                  this.confirm(cached.isLoaded, 'cached was confirmed');
              } else {
                  var _this = this;
                  cached.on('confirm', function (image) {
                      _this.confirm(image.isLoaded, 'cache emitted confirmed');
                      return true; // bind once
                  });
              }
          };
  
          LoadingImage.prototype.confirm = function (isLoaded, message) {
              this.isConfirmed = true;
              this.isLoaded = isLoaded;
              this.emit('confirm', this, message);
          };
  
          // trigger specified handler for event type
          LoadingImage.prototype.handleEvent = function (event) {
              var method = 'on' + event.type;
              if (this[method]) {
                  this[method](event);
              }
          };
  
          LoadingImage.prototype.onload = function () {
              this.confirm(true, 'onload');
              this.unbindProxyEvents();
          };
  
          LoadingImage.prototype.onerror = function () {
              this.confirm(false, 'onerror');
              this.unbindProxyEvents();
          };
  
          LoadingImage.prototype.unbindProxyEvents = function () {
              eventie.unbind(this.proxyImage, 'load', this);
              eventie.unbind(this.proxyImage, 'error', this);
          };
  
          // -----  ----- //
  
          return ImagesLoaded;
      }
  
  // -------------------------- transport -------------------------- //
  
      if (typeof define === 'function' && define.amd) {
          // AMD
          define([
                  'eventEmitter',
                  'eventie'
              ],
              defineImagesLoaded);
      } else {
          // browser global
          window.imagesLoaded = defineImagesLoaded(
              window.EventEmitter,
              window.eventie
          );
      }
  
  })(window);
  /*classie.js*/
  /*!
   * classie - class helper functions
   * from bonzo https://github.com/ded/bonzo
   *
   * classie.has( elem, 'my-class' ) -> true/false
   * classie.add( elem, 'my-new-class' )
   * classie.remove( elem, 'my-unwanted-class' )
   * classie.toggle( elem, 'my-class' )
   */
  
  /*jshint browser: true, strict: true, undef: true */
  /*global define: false */
  
  (function (window) {
  
      'use strict';
  
  // class helper functions from bonzo https://github.com/ded/bonzo
  
      function classReg(className) {
          return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
      }
  
  // classList support for class management
  // altho to be fair, the api sucks because it won't accept multiple classes at once
      var hasClass, addClass, removeClass;
  
      if ('classList' in document.documentElement) {
          hasClass = function (elem, c) {
              return elem.classList.contains(c);
          };
          addClass = function (elem, c) {
              elem.classList.add(c);
          };
          removeClass = function (elem, c) {
              elem.classList.remove(c);
          };
      }
      else {
          hasClass = function (elem, c) {
              return classReg(c).test(elem.className);
          };
          addClass = function (elem, c) {
              if (!hasClass(elem, c)) {
                  elem.className = elem.className + ' ' + c;
              }
          };
          removeClass = function (elem, c) {
              elem.className = elem.className.replace(classReg(c), ' ');
          };
      }
  
      function toggleClass(elem, c) {
          var fn = hasClass(elem, c) ? removeClass : addClass;
          fn(elem, c);
      }
  
      var classie = {
          // full names
          hasClass: hasClass,
          addClass: addClass,
          removeClass: removeClass,
          toggleClass: toggleClass,
          // short names
          has: hasClass,
          add: addClass,
          remove: removeClass,
          toggle: toggleClass
      };
  
  // transport
      if (typeof define === 'function' && define.amd) {
          // AMD
          define(classie);
      } else {
          // browser global
          window.classie = classie;
      }
  
  })(window);
  
  /*AnimOnScroll.js*/
  /**
   * animOnScroll.js v1.0.0
   * http://www.codrops.com
   *
   * Licensed under the MIT license.
   * http://www.opensource.org/licenses/mit-license.php
   *
   * Copyright 2013, Codrops
   * http://www.codrops.com
   */
  ;(function (window) {
  
      'use strict';
  
      var docElem = window.document.documentElement;
  
      function getViewportH() {
          var client = docElem['clientHeight'],
              inner = window['innerHeight'];
  
          if (client < inner)
              return inner;
          else
              return client;
      }
  
      function scrollY() {
          return window.pageYOffset || docElem.scrollTop;
      }
  
      // http://stackoverflow.com/a/5598797/989439
      function getOffset(el) {
          var offsetTop = 0, offsetLeft = 0;
          do {
              if (!isNaN(el.offsetTop)) {
                  offsetTop += el.offsetTop;
              }
              if (!isNaN(el.offsetLeft)) {
                  offsetLeft += el.offsetLeft;
              }
          } while (el = el.offsetParent)
  
          return {
              top: offsetTop,
              left: offsetLeft
          }
      }
  
      function inViewport(el, h) {
          var elH = el.offsetHeight,
              scrolled = scrollY(),
              viewed = scrolled + getViewportH(),
              elTop = getOffset(el).top,
              elBottom = elTop + elH,
              // if 0, the element is considered in the viewport as soon as it enters.
              // if 1, the element is considered in the viewport only when it's fully inside
              // value in percentage (1 >= h >= 0)
              h = h || 0;
  
          return (elTop + elH * h) <= viewed && (elBottom - elH * h) >= scrolled;
      }
  
      function extend(a, b) {
          for (var key in b) {
              if (b.hasOwnProperty(key)) {
                  a[key] = b[key];
              }
          }
          return a;
      }
  
      function AnimOnScroll(el, options) {
          this.el = el;
          this.options = extend(this.defaults, options);
          this._init();
      }
  
      AnimOnScroll.prototype = {
          defaults: {
              // Minimum and a maximum duration of the animation (random value is chosen)
              minDuration: 0,
              maxDuration: 0,
              // The viewportFactor defines how much of the appearing item has to be visible in order to trigger the animation
              // if we'd use a value of 0, this would mean that it would add the animation class as soon as the item is in the viewport.
              // If we were to use the value of 1, the animation would only be triggered when we see all of the item in the viewport (100% of it)
              viewportFactor: 0,
              MasonryOk: true
          },
          _init: function () {
              this.items = Array.prototype.slice.call(document.querySelectorAll('#' + this.el.id + ' > li'));
              this.itemsCount = this.items.length;
              this.itemsRenderedCount = 0;
              this.didScroll = false;
  
              var self = this;
  
              imagesLoaded(this.el, function () {
  
                  // initialize masonry
                  var msnry = new Masonry(self.el, {
                      itemSelector: 'li',
                      transitionDuration: 0
                  });
                  window.metgrid = msnry;
  
                  if (Modernizr.cssanimations) {
                      // the items already shown...
                      self.items.forEach(function (el, i) {
                          if (inViewport(el)) {
                              self._checkTotalRendered();
                              classie.add(el, 'shown');
                          }
                      });
  
                      // animate on scroll the items inside the viewport
                      window.addEventListener('scroll', function () {
                          self._onScrollFn();
                      }, false);
                      window.addEventListener('resize', function () {
                          self._resizeHandler();
                      }, false);
                  }
  
              });
          },
          _onScrollFn: function () {
              var self = this;
              if (!this.didScroll) {
                  this.didScroll = true;
                  setTimeout(function () {
                      self._scrollPage();
                  }, 60);
              }
          },
          _scrollPage: function () {
              var self = this;
              this.items.forEach(function (el, i) {
                  if (!classie.has(el, 'shown') && !classie.has(el, 'animate') && inViewport(el, self.options.viewportFactor)) {
                      setTimeout(function () {
                          var perspY = scrollY() + getViewportH() / 2;
                          self.el.style.WebkitPerspectiveOrigin = '50% ' + perspY + 'px';
                          self.el.style.MozPerspectiveOrigin = '50% ' + perspY + 'px';
                          self.el.style.perspectiveOrigin = '50% ' + perspY + 'px';
  
                          self._checkTotalRendered();
  
                          if (self.options.minDuration && self.options.maxDuration) {
                              var randDuration = ( Math.random() * ( self.options.maxDuration - self.options.minDuration ) + self.options.minDuration ) + 's';
                              el.style.WebkitAnimationDuration = randDuration;
                              el.style.MozAnimationDuration = randDuration;
                              el.style.animationDuration = randDuration;
                          }
  
                          classie.add(el, 'animate');
                      }, 25);
                  }
              });
              this.didScroll = false;
          },
          _resizeHandler: function () {
              var self = this;
  
              function delayed() {
                  self._scrollPage();
                  self.resizeTimeout = null;
              }
  
              if (this.resizeTimeout) {
                  clearTimeout(this.resizeTimeout);
              }
              this.resizeTimeout = setTimeout(delayed, 1000);
          },
          _checkTotalRendered: function () {
              ++this.itemsRenderedCount;
              if (this.itemsRenderedCount === this.itemsCount) {
                  window.removeEventListener('scroll', this._onScrollFn);
              }
          }
      }
  
      // add to global namespace
      window.AnimOnScroll = AnimOnScroll;
  
  })(window);
  /*swiper-3.3.1.jquery.min.js*/
  /**
   * Swiper 3.3.1
   * Most modern mobile touch slider and framework with hardware accelerated transitions
   *
   * http://www.idangero.us/swiper/
   *
   * Copyright 2016, Vladimir Kharlampidi
   * The iDangero.us
   * http://www.idangero.us/
   *
   * Licensed under MIT
   *
   * Released on: February 7, 2016
   */
  !function () {
      "use strict";
  
      function e(e) {
          e.fn.swiper = function (a) {
              var s;
              return e(this).each(function () {
                  var e = new t(this, a);
                  s || (s = e)
              }), s
          }
      }
  
      var a, t = function (e, s) {
          function r(e) {
              return Math.floor(e)
          }
  
          function i() {
              y.autoplayTimeoutId = setTimeout(function () {
                  y.params.loop ? (y.fixLoop(), y._slideNext(), y.emit("onAutoplay", y)) : y.isEnd ? s.autoplayStopOnLast ? y.stopAutoplay() : (y._slideTo(0), y.emit("onAutoplay", y)) : (y._slideNext(), y.emit("onAutoplay", y))
              }, y.params.autoplay)
          }
  
          function n(e, t) {
              var s = a(e.target);
              if (!s.is(t)) if ("string" == typeof t) s = s.parents(t); else if (t.nodeType) {
                  var r;
                  return s.parents().each(function (e, a) {
                      a === t && (r = t)
                  }), r ? t : void 0
              }
              if (0 !== s.length) return s[0]
          }
  
          function o(e, a) {
              a = a || {};
              var t = window.MutationObserver || window.WebkitMutationObserver, s = new t(function (e) {
                  e.forEach(function (e) {
                      y.onResize(!0), y.emit("onObserverUpdate", y, e)
                  })
              });
              s.observe(e, {
                  attributes: "undefined" == typeof a.attributes ? !0 : a.attributes,
                  childList: "undefined" == typeof a.childList ? !0 : a.childList,
                  characterData: "undefined" == typeof a.characterData ? !0 : a.characterData
              }), y.observers.push(s)
          }
  
          function l(e) {
              e.originalEvent && (e = e.originalEvent);
              var a = e.keyCode || e.charCode;
              if (!y.params.allowSwipeToNext && (y.isHorizontal() && 39 === a || !y.isHorizontal() && 40 === a)) return !1;
              if (!y.params.allowSwipeToPrev && (y.isHorizontal() && 37 === a || !y.isHorizontal() && 38 === a)) return !1;
              if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || document.activeElement && document.activeElement.nodeName && ("input" === document.activeElement.nodeName.toLowerCase() || "textarea" === document.activeElement.nodeName.toLowerCase()))) {
                  if (37 === a || 39 === a || 38 === a || 40 === a) {
                      var t = !1;
                      if (y.container.parents(".swiper-slide").length > 0 && 0 === y.container.parents(".swiper-slide-active").length) return;
                      var s = {left: window.pageXOffset, top: window.pageYOffset}, r = window.innerWidth,
                          i = window.innerHeight, n = y.container.offset();
                      y.rtl && (n.left = n.left - y.container[0].scrollLeft);
                      for (var o = [[n.left, n.top], [n.left + y.width, n.top], [n.left, n.top + y.height], [n.left + y.width, n.top + y.height]], l = 0; l < o.length; l++) {
                          var p = o[l];
                          p[0] >= s.left && p[0] <= s.left + r && p[1] >= s.top && p[1] <= s.top + i && (t = !0)
                      }
                      if (!t) return
                  }
                  y.isHorizontal() ? ((37 === a || 39 === a) && (e.preventDefault ? e.preventDefault() : e.returnValue = !1), (39 === a && !y.rtl || 37 === a && y.rtl) && y.slideNext(), (37 === a && !y.rtl || 39 === a && y.rtl) && y.slidePrev()) : ((38 === a || 40 === a) && (e.preventDefault ? e.preventDefault() : e.returnValue = !1), 40 === a && y.slideNext(), 38 === a && y.slidePrev())
              }
          }
  
          function p(e) {
              e.originalEvent && (e = e.originalEvent);
              var a = y.mousewheel.event, t = 0, s = y.rtl ? -1 : 1;
              if ("mousewheel" === a) if (y.params.mousewheelForceToAxis) if (y.isHorizontal()) {
                  if (!(Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY))) return;
                  t = e.wheelDeltaX * s
              } else {
                  if (!(Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX))) return;
                  t = e.wheelDeltaY
              } else t = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? -e.wheelDeltaX * s : -e.wheelDeltaY; else if ("DOMMouseScroll" === a) t = -e.detail; else if ("wheel" === a) if (y.params.mousewheelForceToAxis) if (y.isHorizontal()) {
                  if (!(Math.abs(e.deltaX) > Math.abs(e.deltaY))) return;
                  t = -e.deltaX * s
              } else {
                  if (!(Math.abs(e.deltaY) > Math.abs(e.deltaX))) return;
                  t = -e.deltaY
              } else t = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? -e.deltaX * s : -e.deltaY;
              if (0 !== t) {
                  if (y.params.mousewheelInvert && (t = -t), y.params.freeMode) {
                      var r = y.getWrapperTranslate() + t * y.params.mousewheelSensitivity, i = y.isBeginning,
                          n = y.isEnd;
                      if (r >= y.minTranslate() && (r = y.minTranslate()), r <= y.maxTranslate() && (r = y.maxTranslate()), y.setWrapperTransition(0), y.setWrapperTranslate(r), y.updateProgress(), y.updateActiveIndex(), (!i && y.isBeginning || !n && y.isEnd) && y.updateClasses(), y.params.freeModeSticky ? (clearTimeout(y.mousewheel.timeout), y.mousewheel.timeout = setTimeout(function () {
                              y.slideReset()
                          }, 300)) : y.params.lazyLoading && y.lazy && y.lazy.load(), 0 === r || r === y.maxTranslate()) return
                  } else {
                      if ((new window.Date).getTime() - y.mousewheel.lastScrollTime > 60) if (0 > t) if (y.isEnd && !y.params.loop || y.animating) {
                          if (y.params.mousewheelReleaseOnEdges) return !0
                      } else y.slideNext(); else if (y.isBeginning && !y.params.loop || y.animating) {
                          if (y.params.mousewheelReleaseOnEdges) return !0
                      } else y.slidePrev();
                      y.mousewheel.lastScrollTime = (new window.Date).getTime()
                  }
                  return y.params.autoplay && y.stopAutoplay(), e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1
              }
          }
  
          function d(e, t) {
              e = a(e);
              var s, r, i, n = y.rtl ? -1 : 1;
              s = e.attr("data-swiper-parallax") || "0", r = e.attr("data-swiper-parallax-x"), i = e.attr("data-swiper-parallax-y"), r || i ? (r = r || "0", i = i || "0") : y.isHorizontal() ? (r = s, i = "0") : (i = s, r = "0"), r = r.indexOf("%") >= 0 ? parseInt(r, 10) * t * n + "%" : r * t * n + "px", i = i.indexOf("%") >= 0 ? parseInt(i, 10) * t + "%" : i * t + "px", e.transform("translate3d(" + r + ", " + i + ",0px)")
          }
  
          function u(e) {
              return 0 !== e.indexOf("on") && (e = e[0] !== e[0].toUpperCase() ? "on" + e[0].toUpperCase() + e.substring(1) : "on" + e), e
          }
  
          if (!(this instanceof t)) return new t(e, s);
          var c = {
              direction: "horizontal",
              touchEventsTarget: "container",
              initialSlide: 0,
              speed: 300,
              autoplay: !1,
              autoplayDisableOnInteraction: !0,
              autoplayStopOnLast: !1,
              iOSEdgeSwipeDetection: !1,
              iOSEdgeSwipeThreshold: 20,
              freeMode: !1,
              freeModeMomentum: !0,
              freeModeMomentumRatio: 1,
              freeModeMomentumBounce: !0,
              freeModeMomentumBounceRatio: 1,
              freeModeSticky: !1,
              freeModeMinimumVelocity: .02,
              autoHeight: !1,
              setWrapperSize: !1,
              virtualTranslate: !1,
              effect: "slide",
              coverflow: {rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0},
              flip: {slideShadows: !0, limitRotation: !0},
              cube: {slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94},
              fade: {crossFade: !1},
              parallax: !1,
              scrollbar: null,
              scrollbarHide: !0,
              scrollbarDraggable: !1,
              scrollbarSnapOnRelease: !1,
              keyboardControl: !1,
              mousewheelControl: !1,
              mousewheelReleaseOnEdges: !1,
              mousewheelInvert: !1,
              mousewheelForceToAxis: !1,
              mousewheelSensitivity: 1,
              hashnav: !1,
              breakpoints: void 0,
              spaceBetween: 0,
              slidesPerView: 1,
              slidesPerColumn: 1,
              slidesPerColumnFill: "column",
              slidesPerGroup: 1,
              centeredSlides: !1,
              slidesOffsetBefore: 0,
              slidesOffsetAfter: 0,
              roundLengths: !1,
              touchRatio: 1,
              touchAngle: 45,
              simulateTouch: !0,
              shortSwipes: !0,
              longSwipes: !0,
              longSwipesRatio: .5,
              longSwipesMs: 300,
              followFinger: !0,
              onlyExternal: !1,
              threshold: 0,
              touchMoveStopPropagation: !0,
              uniqueNavElements: !0,
              pagination: null,
              paginationElement: "span",
              paginationClickable: !1,
              paginationHide: !1,
              paginationBulletRender: null,
              paginationProgressRender: null,
              paginationFractionRender: null,
              paginationCustomRender: null,
              paginationType: "bullets",
              resistance: !0,
              resistanceRatio: .85,
              nextButton: null,
              prevButton: null,
              watchSlidesProgress: !1,
              watchSlidesVisibility: !1,
              grabCursor: !1,
              preventClicks: !0,
              preventClicksPropagation: !0,
              slideToClickedSlide: !1,
              lazyLoading: !1,
              lazyLoadingInPrevNext: !1,
              lazyLoadingInPrevNextAmount: 1,
              lazyLoadingOnTransitionStart: !1,
              preloadImages: !0,
              updateOnImagesReady: !0,
              loop: !1,
              loopAdditionalSlides: 0,
              loopedSlides: null,
              control: void 0,
              controlInverse: !1,
              controlBy: "slide",
              allowSwipeToPrev: !0,
              allowSwipeToNext: !0,
              swipeHandler: null,
              noSwiping: !0,
              noSwipingClass: "swiper-no-swiping",
              slideClass: "swiper-slide",
              slideActiveClass: "swiper-slide-active",
              slideVisibleClass: "swiper-slide-visible",
              slideDuplicateClass: "swiper-slide-duplicate",
              slideNextClass: "swiper-slide-next",
              slidePrevClass: "swiper-slide-prev",
              wrapperClass: "swiper-wrapper",
              bulletClass: "swiper-pagination-bullet",
              bulletActiveClass: "swiper-pagination-bullet-active",
              buttonDisabledClass: "swiper-button-disabled",
              paginationCurrentClass: "swiper-pagination-current",
              paginationTotalClass: "swiper-pagination-total",
              paginationHiddenClass: "swiper-pagination-hidden",
              paginationProgressbarClass: "swiper-pagination-progressbar",
              observer: !1,
              observeParents: !1,
              a11y: !1,
              prevSlideMessage: "Previous slide",
              nextSlideMessage: "Next slide",
              firstSlideMessage: "This is the first slide",
              lastSlideMessage: "This is the last slide",
              paginationBulletMessage: "Go to slide {{index}}",
              runCallbacksOnInit: !0
          }, m = s && s.virtualTranslate;
          s = s || {};
          var f = {};
          for (var g in s) if ("object" != typeof s[g] || null === s[g] || (s[g].nodeType || s[g] === window || s[g] === document || "undefined" != typeof Dom7 && s[g] instanceof Dom7 || "undefined" != typeof jQuery && s[g] instanceof jQuery)) f[g] = s[g]; else {
              f[g] = {};
              for (var h in s[g]) f[g][h] = s[g][h]
          }
          for (var v in c) if ("undefined" == typeof s[v]) s[v] = c[v]; else if ("object" == typeof s[v]) for (var w in c[v]) "undefined" == typeof s[v][w] && (s[v][w] = c[v][w]);
          var y = this;
          if (y.params = s, y.originalParams = f, y.classNames = [], "undefined" != typeof a && "undefined" != typeof Dom7 && (a = Dom7), ("undefined" != typeof a || (a = "undefined" == typeof Dom7 ? window.Dom7 || window.Zepto || window.jQuery : Dom7)) && (y.$ = a, y.currentBreakpoint = void 0, y.getActiveBreakpoint = function () {
                  if (!y.params.breakpoints) return !1;
                  var e, a = !1, t = [];
                  for (e in y.params.breakpoints) y.params.breakpoints.hasOwnProperty(e) && t.push(e);
                  t.sort(function (e, a) {
                      return parseInt(e, 10) > parseInt(a, 10)
                  });
                  for (var s = 0; s < t.length; s++) e = t[s], e >= window.innerWidth && !a && (a = e);
                  return a || "max"
              }, y.setBreakpoint = function () {
                  var e = y.getActiveBreakpoint();
                  if (e && y.currentBreakpoint !== e) {
                      var a = e in y.params.breakpoints ? y.params.breakpoints[e] : y.originalParams,
                          t = y.params.loop && a.slidesPerView !== y.params.slidesPerView;
                      for (var s in a) y.params[s] = a[s];
                      y.currentBreakpoint = e, t && y.destroyLoop && y.reLoop(!0)
                  }
              }, y.params.breakpoints && y.setBreakpoint(), y.container = a(e), 0 !== y.container.length)) {
              if (y.container.length > 1) {
                  var b = [];
                  return y.container.each(function () {
                      b.push(new t(this, s))
                  }), b
              }
              y.container[0].swiper = y, y.container.data("swiper", y), y.classNames.push("swiper-container-" + y.params.direction), y.params.freeMode && y.classNames.push("swiper-container-free-mode"), y.support.flexbox || (y.classNames.push("swiper-container-no-flexbox"), y.params.slidesPerColumn = 1), y.params.autoHeight && y.classNames.push("swiper-container-autoheight"), (y.params.parallax || y.params.watchSlidesVisibility) && (y.params.watchSlidesProgress = !0), ["cube", "coverflow", "flip"].indexOf(y.params.effect) >= 0 && (y.support.transforms3d ? (y.params.watchSlidesProgress = !0, y.classNames.push("swiper-container-3d")) : y.params.effect = "slide"), "slide" !== y.params.effect && y.classNames.push("swiper-container-" + y.params.effect), "cube" === y.params.effect && (y.params.resistanceRatio = 0, y.params.slidesPerView = 1, y.params.slidesPerColumn = 1, y.params.slidesPerGroup = 1, y.params.centeredSlides = !1, y.params.spaceBetween = 0, y.params.virtualTranslate = !0, y.params.setWrapperSize = !1), ("fade" === y.params.effect || "flip" === y.params.effect) && (y.params.slidesPerView = 1, y.params.slidesPerColumn = 1, y.params.slidesPerGroup = 1, y.params.watchSlidesProgress = !0, y.params.spaceBetween = 0, y.params.setWrapperSize = !1, "undefined" == typeof m && (y.params.virtualTranslate = !0)), y.params.grabCursor && y.support.touch && (y.params.grabCursor = !1), y.wrapper = y.container.children("." + y.params.wrapperClass), y.params.pagination && (y.paginationContainer = a(y.params.pagination), y.params.uniqueNavElements && "string" == typeof y.params.pagination && y.paginationContainer.length > 1 && 1 === y.container.find(y.params.pagination).length && (y.paginationContainer = y.container.find(y.params.pagination)), "bullets" === y.params.paginationType && y.params.paginationClickable ? y.paginationContainer.addClass("swiper-pagination-clickable") : y.params.paginationClickable = !1, y.paginationContainer.addClass("swiper-pagination-" + y.params.paginationType)), (y.params.nextButton || y.params.prevButton) && (y.params.nextButton && (y.nextButton = a(y.params.nextButton), y.params.uniqueNavElements && "string" == typeof y.params.nextButton && y.nextButton.length > 1 && 1 === y.container.find(y.params.nextButton).length && (y.nextButton = y.container.find(y.params.nextButton))), y.params.prevButton && (y.prevButton = a(y.params.prevButton), y.params.uniqueNavElements && "string" == typeof y.params.prevButton && y.prevButton.length > 1 && 1 === y.container.find(y.params.prevButton).length && (y.prevButton = y.container.find(y.params.prevButton)))), y.isHorizontal = function () {
                  return "horizontal" === y.params.direction
              }, y.rtl = y.isHorizontal() && ("rtl" === y.container[0].dir.toLowerCase() || "rtl" === y.container.css("direction")), y.rtl && y.classNames.push("swiper-container-rtl"), y.rtl && (y.wrongRTL = "-webkit-box" === y.wrapper.css("display")), y.params.slidesPerColumn > 1 && y.classNames.push("swiper-container-multirow"), y.device.android && y.classNames.push("swiper-container-android"), y.container.addClass(y.classNames.join(" ")), y.translate = 0, y.progress = 0, y.velocity = 0, y.lockSwipeToNext = function () {
                  y.params.allowSwipeToNext = !1
              }, y.lockSwipeToPrev = function () {
                  y.params.allowSwipeToPrev = !1
              }, y.lockSwipes = function () {
                  y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !1
              }, y.unlockSwipeToNext = function () {
                  y.params.allowSwipeToNext = !0
              }, y.unlockSwipeToPrev = function () {
                  y.params.allowSwipeToPrev = !0
              }, y.unlockSwipes = function () {
                  y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !0
              }, y.params.grabCursor && (y.container[0].style.cursor = "move", y.container[0].style.cursor = "-webkit-grab", y.container[0].style.cursor = "-moz-grab", y.container[0].style.cursor = "grab"), y.imagesToLoad = [], y.imagesLoaded = 0, y.loadImage = function (e, a, t, s, r) {
                  function i() {
                      r && r()
                  }
  
                  var n;
                  e.complete && s ? i() : a ? (n = new window.Image, n.onload = i, n.onerror = i, t && (n.srcset = t), a && (n.src = a)) : i()
              }, y.preloadImages = function () {
                  function e() {
                      "undefined" != typeof y && null !== y && (void 0 !== y.imagesLoaded && y.imagesLoaded++, y.imagesLoaded === y.imagesToLoad.length && (y.params.updateOnImagesReady && y.update(), y.emit("onImagesReady", y)))
                  }
  
                  y.imagesToLoad = y.container.find("img");
                  for (var a = 0; a < y.imagesToLoad.length; a++) y.loadImage(y.imagesToLoad[a], y.imagesToLoad[a].currentSrc || y.imagesToLoad[a].getAttribute("src"), y.imagesToLoad[a].srcset || y.imagesToLoad[a].getAttribute("srcset"), !0, e)
              }, y.autoplayTimeoutId = void 0, y.autoplaying = !1, y.autoplayPaused = !1, y.startAutoplay = function () {
                  return "undefined" != typeof y.autoplayTimeoutId ? !1 : y.params.autoplay ? y.autoplaying ? !1 : (y.autoplaying = !0, y.emit("onAutoplayStart", y), void i()) : !1
              }, y.stopAutoplay = function (e) {
                  y.autoplayTimeoutId && (y.autoplayTimeoutId && clearTimeout(y.autoplayTimeoutId), y.autoplaying = !1, y.autoplayTimeoutId = void 0, y.emit("onAutoplayStop", y))
              }, y.pauseAutoplay = function (e) {
                  y.autoplayPaused || (y.autoplayTimeoutId && clearTimeout(y.autoplayTimeoutId), y.autoplayPaused = !0, 0 === e ? (y.autoplayPaused = !1, i()) : y.wrapper.transitionEnd(function () {
                      y && (y.autoplayPaused = !1, y.autoplaying ? i() : y.stopAutoplay())
                  }))
              }, y.minTranslate = function () {
                  return -y.snapGrid[0]
              }, y.maxTranslate = function () {
                  return -y.snapGrid[y.snapGrid.length - 1]
              }, y.updateAutoHeight = function () {
                  var e = y.slides.eq(y.activeIndex)[0];
                  if ("undefined" != typeof e) {
                      var a = e.offsetHeight;
                      a && y.wrapper.css("height", a + "px")
                  }
              }, y.updateContainerSize = function () {
                  var e, a;
                  e = "undefined" != typeof y.params.width ? y.params.width : y.container[0].clientWidth, a = "undefined" != typeof y.params.height ? y.params.height : y.container[0].clientHeight, 0 === e && y.isHorizontal() || 0 === a && !y.isHorizontal() || (e = e - parseInt(y.container.css("padding-left"), 10) - parseInt(y.container.css("padding-right"), 10), a = a - parseInt(y.container.css("padding-top"), 10) - parseInt(y.container.css("padding-bottom"), 10), y.width = e, y.height = a, y.size = y.isHorizontal() ? y.width : y.height)
              }, y.updateSlidesSize = function () {
                  y.slides = y.wrapper.children("." + y.params.slideClass), y.snapGrid = [], y.slidesGrid = [], y.slidesSizesGrid = [];
                  var e, a = y.params.spaceBetween, t = -y.params.slidesOffsetBefore, s = 0, i = 0;
                  if ("undefined" != typeof y.size) {
                      "string" == typeof a && a.indexOf("%") >= 0 && (a = parseFloat(a.replace("%", "")) / 100 * y.size), y.virtualSize = -a, y.rtl ? y.slides.css({
                          marginLeft: "",
                          marginTop: ""
                      }) : y.slides.css({marginRight: "", marginBottom: ""});
                      var n;
                      y.params.slidesPerColumn > 1 && (n = Math.floor(y.slides.length / y.params.slidesPerColumn) === y.slides.length / y.params.slidesPerColumn ? y.slides.length : Math.ceil(y.slides.length / y.params.slidesPerColumn) * y.params.slidesPerColumn, "auto" !== y.params.slidesPerView && "row" === y.params.slidesPerColumnFill && (n = Math.max(n, y.params.slidesPerView * y.params.slidesPerColumn)));
                      var o, l = y.params.slidesPerColumn, p = n / l,
                          d = p - (y.params.slidesPerColumn * p - y.slides.length);
                      for (e = 0; e < y.slides.length; e++) {
                          o = 0;
                          var u = y.slides.eq(e);
                          if (y.params.slidesPerColumn > 1) {
                              var c, m, f;
                              "column" === y.params.slidesPerColumnFill ? (m = Math.floor(e / l), f = e - m * l, (m > d || m === d && f === l - 1) && ++f >= l && (f = 0, m++), c = m + f * n / l, u.css({
                                  "-webkit-box-ordinal-group": c,
                                  "-moz-box-ordinal-group": c,
                                  "-ms-flex-order": c,
                                  "-webkit-order": c,
                                  order: c
                              })) : (f = Math.floor(e / p), m = e - f * p), u.css({"margin-top": 0 !== f && y.params.spaceBetween && y.params.spaceBetween + "px"}).attr("data-swiper-column", m).attr("data-swiper-row", f)
                          }
                          "none" !== u.css("display") && ("auto" === y.params.slidesPerView ? (o = y.isHorizontal() ? u.outerWidth(!0) : u.outerHeight(!0), y.params.roundLengths && (o = r(o))) : (o = (y.size - (y.params.slidesPerView - 1) * a) / y.params.slidesPerView, y.params.roundLengths && (o = r(o)), y.isHorizontal() ? y.slides[e].style.width = o + "px" : y.slides[e].style.height = o + "px"), y.slides[e].swiperSlideSize = o, y.slidesSizesGrid.push(o), y.params.centeredSlides ? (t = t + o / 2 + s / 2 + a, 0 === e && (t = t - y.size / 2 - a), Math.abs(t) < .001 && (t = 0), i % y.params.slidesPerGroup === 0 && y.snapGrid.push(t), y.slidesGrid.push(t)) : (i % y.params.slidesPerGroup === 0 && y.snapGrid.push(t), y.slidesGrid.push(t), t = t + o + a), y.virtualSize += o + a, s = o, i++)
                      }
                      y.virtualSize = Math.max(y.virtualSize, y.size) + y.params.slidesOffsetAfter;
                      var g;
                      if (y.rtl && y.wrongRTL && ("slide" === y.params.effect || "coverflow" === y.params.effect) && y.wrapper.css({width: y.virtualSize + y.params.spaceBetween + "px"}), (!y.support.flexbox || y.params.setWrapperSize) && (y.isHorizontal() ? y.wrapper.css({width: y.virtualSize + y.params.spaceBetween + "px"}) : y.wrapper.css({height: y.virtualSize + y.params.spaceBetween + "px"})), y.params.slidesPerColumn > 1 && (y.virtualSize = (o + y.params.spaceBetween) * n, y.virtualSize = Math.ceil(y.virtualSize / y.params.slidesPerColumn) - y.params.spaceBetween, y.wrapper.css({width: y.virtualSize + y.params.spaceBetween + "px"}), y.params.centeredSlides)) {
                          for (g = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] < y.virtualSize + y.snapGrid[0] && g.push(y.snapGrid[e]);
                          y.snapGrid = g
                      }
                      if (!y.params.centeredSlides) {
                          for (g = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] <= y.virtualSize - y.size && g.push(y.snapGrid[e]);
                          y.snapGrid = g, Math.floor(y.virtualSize - y.size) - Math.floor(y.snapGrid[y.snapGrid.length - 1]) > 1 && y.snapGrid.push(y.virtualSize - y.size)
                      }
                      0 === y.snapGrid.length && (y.snapGrid = [0]), 0 !== y.params.spaceBetween && (y.isHorizontal() ? y.rtl ? y.slides.css({marginLeft: a + "px"}) : y.slides.css({marginRight: a + "px"}) : y.slides.css({marginBottom: a + "px"})), y.params.watchSlidesProgress && y.updateSlidesOffset()
                  }
              }, y.updateSlidesOffset = function () {
                  for (var e = 0; e < y.slides.length; e++) y.slides[e].swiperSlideOffset = y.isHorizontal() ? y.slides[e].offsetLeft : y.slides[e].offsetTop
              }, y.updateSlidesProgress = function (e) {
                  if ("undefined" == typeof e && (e = y.translate || 0), 0 !== y.slides.length) {
                      "undefined" == typeof y.slides[0].swiperSlideOffset && y.updateSlidesOffset();
                      var a = -e;
                      y.rtl && (a = e), y.slides.removeClass(y.params.slideVisibleClass);
                      for (var t = 0; t < y.slides.length; t++) {
                          var s = y.slides[t],
                              r = (a - s.swiperSlideOffset) / (s.swiperSlideSize + y.params.spaceBetween);
                          if (y.params.watchSlidesVisibility) {
                              var i = -(a - s.swiperSlideOffset), n = i + y.slidesSizesGrid[t],
                                  o = i >= 0 && i < y.size || n > 0 && n <= y.size || 0 >= i && n >= y.size;
                              o && y.slides.eq(t).addClass(y.params.slideVisibleClass)
                          }
                          s.progress = y.rtl ? -r : r
                      }
                  }
              }, y.updateProgress = function (e) {
                  "undefined" == typeof e && (e = y.translate || 0);
                  var a = y.maxTranslate() - y.minTranslate(), t = y.isBeginning, s = y.isEnd;
                  0 === a ? (y.progress = 0, y.isBeginning = y.isEnd = !0) : (y.progress = (e - y.minTranslate()) / a, y.isBeginning = y.progress <= 0, y.isEnd = y.progress >= 1), y.isBeginning && !t && y.emit("onReachBeginning", y), y.isEnd && !s && y.emit("onReachEnd", y), y.params.watchSlidesProgress && y.updateSlidesProgress(e), y.emit("onProgress", y, y.progress)
              }, y.updateActiveIndex = function () {
                  var e, a, t, s = y.rtl ? y.translate : -y.translate;
                  for (a = 0; a < y.slidesGrid.length; a++) "undefined" != typeof y.slidesGrid[a + 1] ? s >= y.slidesGrid[a] && s < y.slidesGrid[a + 1] - (y.slidesGrid[a + 1] - y.slidesGrid[a]) / 2 ? e = a : s >= y.slidesGrid[a] && s < y.slidesGrid[a + 1] && (e = a + 1) : s >= y.slidesGrid[a] && (e = a);
                  (0 > e || "undefined" == typeof e) && (e = 0), t = Math.floor(e / y.params.slidesPerGroup), t >= y.snapGrid.length && (t = y.snapGrid.length - 1), e !== y.activeIndex && (y.snapIndex = t, y.previousIndex = y.activeIndex, y.activeIndex = e, y.updateClasses())
              }, y.updateClasses = function () {
                  y.slides.removeClass(y.params.slideActiveClass + " " + y.params.slideNextClass + " " + y.params.slidePrevClass);
                  var e = y.slides.eq(y.activeIndex);
                  e.addClass(y.params.slideActiveClass);
                  var t = e.next("." + y.params.slideClass).addClass(y.params.slideNextClass);
                  y.params.loop && 0 === t.length && y.slides.eq(0).addClass(y.params.slideNextClass);
                  var s = e.prev("." + y.params.slideClass).addClass(y.params.slidePrevClass);
                  if (y.params.loop && 0 === s.length && y.slides.eq(-1).addClass(y.params.slidePrevClass), y.paginationContainer && y.paginationContainer.length > 0) {
                      var r,
                          i = y.params.loop ? Math.ceil((y.slides.length - 2 * y.loopedSlides) / y.params.slidesPerGroup) : y.snapGrid.length;
                      if (y.params.loop ? (r = Math.ceil((y.activeIndex - y.loopedSlides) / y.params.slidesPerGroup), r > y.slides.length - 1 - 2 * y.loopedSlides && (r -= y.slides.length - 2 * y.loopedSlides), r > i - 1 && (r -= i), 0 > r && "bullets" !== y.params.paginationType && (r = i + r)) : r = "undefined" != typeof y.snapIndex ? y.snapIndex : y.activeIndex || 0, "bullets" === y.params.paginationType && y.bullets && y.bullets.length > 0 && (y.bullets.removeClass(y.params.bulletActiveClass), y.paginationContainer.length > 1 ? y.bullets.each(function () {
                              a(this).index() === r && a(this).addClass(y.params.bulletActiveClass)
                          }) : y.bullets.eq(r).addClass(y.params.bulletActiveClass)), "fraction" === y.params.paginationType && (y.paginationContainer.find("." + y.params.paginationCurrentClass).text(r + 1), y.paginationContainer.find("." + y.params.paginationTotalClass).text(i)), "progress" === y.params.paginationType) {
                          var n = (r + 1) / i, o = n, l = 1;
                          y.isHorizontal() || (l = n, o = 1), y.paginationContainer.find("." + y.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX(" + o + ") scaleY(" + l + ")").transition(y.params.speed)
                      }
                      "custom" === y.params.paginationType && y.params.paginationCustomRender && (y.paginationContainer.html(y.params.paginationCustomRender(y, r + 1, i)), y.emit("onPaginationRendered", y, y.paginationContainer[0]))
                  }
                  y.params.loop || (y.params.prevButton && y.prevButton && y.prevButton.length > 0 && (y.isBeginning ? (y.prevButton.addClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.disable(y.prevButton)) : (y.prevButton.removeClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.enable(y.prevButton))), y.params.nextButton && y.nextButton && y.nextButton.length > 0 && (y.isEnd ? (y.nextButton.addClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.disable(y.nextButton)) : (y.nextButton.removeClass(y.params.buttonDisabledClass), y.params.a11y && y.a11y && y.a11y.enable(y.nextButton))))
              }, y.updatePagination = function () {
                  if (y.params.pagination && y.paginationContainer && y.paginationContainer.length > 0) {
                      var e = "";
                      if ("bullets" === y.params.paginationType) {
                          for (var a = y.params.loop ? Math.ceil((y.slides.length - 2 * y.loopedSlides) / y.params.slidesPerGroup) : y.snapGrid.length, t = 0; a > t; t++) e += y.params.paginationBulletRender ? y.params.paginationBulletRender(t, y.params.bulletClass) : "<" + y.params.paginationElement + ' class="' + y.params.bulletClass + '"></' + y.params.paginationElement + ">";
                          y.paginationContainer.html(e), y.bullets = y.paginationContainer.find("." + y.params.bulletClass), y.params.paginationClickable && y.params.a11y && y.a11y && y.a11y.initPagination()
                      }
                      "fraction" === y.params.paginationType && (e = y.params.paginationFractionRender ? y.params.paginationFractionRender(y, y.params.paginationCurrentClass, y.params.paginationTotalClass) : '<span class="' + y.params.paginationCurrentClass + '"></span> / <span class="' + y.params.paginationTotalClass + '"></span>', y.paginationContainer.html(e)), "progress" === y.params.paginationType && (e = y.params.paginationProgressRender ? y.params.paginationProgressRender(y, y.params.paginationProgressbarClass) : '<span class="' + y.params.paginationProgressbarClass + '"></span>', y.paginationContainer.html(e)), "custom" !== y.params.paginationType && y.emit("onPaginationRendered", y, y.paginationContainer[0])
                  }
              }, y.update = function (e) {
                  function a() {
                      s = Math.min(Math.max(y.translate, y.maxTranslate()), y.minTranslate()), y.setWrapperTranslate(s), y.updateActiveIndex(), y.updateClasses()
                  }
  
                  if (y.updateContainerSize(), y.updateSlidesSize(), y.updateProgress(), y.updatePagination(), y.updateClasses(), y.params.scrollbar && y.scrollbar && y.scrollbar.set(), e) {
                      var t, s;
                      y.controller && y.controller.spline && (y.controller.spline = void 0), y.params.freeMode ? (a(), y.params.autoHeight && y.updateAutoHeight()) : (t = ("auto" === y.params.slidesPerView || y.params.slidesPerView > 1) && y.isEnd && !y.params.centeredSlides ? y.slideTo(y.slides.length - 1, 0, !1, !0) : y.slideTo(y.activeIndex, 0, !1, !0), t || a())
                  } else y.params.autoHeight && y.updateAutoHeight()
              }, y.onResize = function (e) {
                  y.params.breakpoints && y.setBreakpoint();
                  var a = y.params.allowSwipeToPrev, t = y.params.allowSwipeToNext;
                  y.params.allowSwipeToPrev = y.params.allowSwipeToNext = !0, y.updateContainerSize(), y.updateSlidesSize(), ("auto" === y.params.slidesPerView || y.params.freeMode || e) && y.updatePagination(), y.params.scrollbar && y.scrollbar && y.scrollbar.set(), y.controller && y.controller.spline && (y.controller.spline = void 0);
                  var s = !1;
                  if (y.params.freeMode) {
                      var r = Math.min(Math.max(y.translate, y.maxTranslate()), y.minTranslate());
                      y.setWrapperTranslate(r), y.updateActiveIndex(), y.updateClasses(), y.params.autoHeight && y.updateAutoHeight()
                  } else y.updateClasses(), s = ("auto" === y.params.slidesPerView || y.params.slidesPerView > 1) && y.isEnd && !y.params.centeredSlides ? y.slideTo(y.slides.length - 1, 0, !1, !0) : y.slideTo(y.activeIndex, 0, !1, !0);
                  y.params.lazyLoading && !s && y.lazy && y.lazy.load(), y.params.allowSwipeToPrev = a, y.params.allowSwipeToNext = t
              };
              var x = ["mousedown", "mousemove", "mouseup"];
              window.navigator.pointerEnabled ? x = ["pointerdown", "pointermove", "pointerup"] : window.navigator.msPointerEnabled && (x = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]), y.touchEvents = {
                  start: y.support.touch || !y.params.simulateTouch ? "touchstart" : x[0],
                  move: y.support.touch || !y.params.simulateTouch ? "touchmove" : x[1],
                  end: y.support.touch || !y.params.simulateTouch ? "touchend" : x[2]
              }, (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && ("container" === y.params.touchEventsTarget ? y.container : y.wrapper).addClass("swiper-wp8-" + y.params.direction), y.initEvents = function (e) {
                  var a = e ? "off" : "on", t = e ? "removeEventListener" : "addEventListener",
                      r = "container" === y.params.touchEventsTarget ? y.container[0] : y.wrapper[0],
                      i = y.support.touch ? r : document, n = y.params.nested ? !0 : !1;
                  y.browser.ie ? (r[t](y.touchEvents.start, y.onTouchStart, !1), i[t](y.touchEvents.move, y.onTouchMove, n), i[t](y.touchEvents.end, y.onTouchEnd, !1)) : (y.support.touch && (r[t](y.touchEvents.start, y.onTouchStart, !1), r[t](y.touchEvents.move, y.onTouchMove, n), r[t](y.touchEvents.end, y.onTouchEnd, !1)), !s.simulateTouch || y.device.ios || y.device.android || (r[t]("mousedown", y.onTouchStart, !1), document[t]("mousemove", y.onTouchMove, n), document[t]("mouseup", y.onTouchEnd, !1))), window[t]("resize", y.onResize), y.params.nextButton && y.nextButton && y.nextButton.length > 0 && (y.nextButton[a]("click", y.onClickNext), y.params.a11y && y.a11y && y.nextButton[a]("keydown", y.a11y.onEnterKey)), y.params.prevButton && y.prevButton && y.prevButton.length > 0 && (y.prevButton[a]("click", y.onClickPrev), y.params.a11y && y.a11y && y.prevButton[a]("keydown", y.a11y.onEnterKey)), y.params.pagination && y.params.paginationClickable && (y.paginationContainer[a]("click", "." + y.params.bulletClass, y.onClickIndex), y.params.a11y && y.a11y && y.paginationContainer[a]("keydown", "." + y.params.bulletClass, y.a11y.onEnterKey)), (y.params.preventClicks || y.params.preventClicksPropagation) && r[t]("click", y.preventClicks, !0)
              }, y.attachEvents = function () {
                  y.initEvents()
              }, y.detachEvents = function () {
                  y.initEvents(!0)
              }, y.allowClick = !0, y.preventClicks = function (e) {
                  y.allowClick || (y.params.preventClicks && e.preventDefault(), y.params.preventClicksPropagation && y.animating && (e.stopPropagation(), e.stopImmediatePropagation()))
              }, y.onClickNext = function (e) {
                  e.preventDefault(), (!y.isEnd || y.params.loop) && y.slideNext()
              }, y.onClickPrev = function (e) {
                  e.preventDefault(), (!y.isBeginning || y.params.loop) && y.slidePrev()
              }, y.onClickIndex = function (e) {
                  e.preventDefault();
                  var t = a(this).index() * y.params.slidesPerGroup;
                  y.params.loop && (t += y.loopedSlides), y.slideTo(t)
              }, y.updateClickedSlide = function (e) {
                  var t = n(e, "." + y.params.slideClass), s = !1;
                  if (t) for (var r = 0; r < y.slides.length; r++) y.slides[r] === t && (s = !0);
                  if (!t || !s) return y.clickedSlide = void 0, void(y.clickedIndex = void 0);
                  if (y.clickedSlide = t, y.clickedIndex = a(t).index(), y.params.slideToClickedSlide && void 0 !== y.clickedIndex && y.clickedIndex !== y.activeIndex) {
                      var i, o = y.clickedIndex;
                      if (y.params.loop) {
                          if (y.animating) return;
                          i = a(y.clickedSlide).attr("data-swiper-slide-index"), y.params.centeredSlides ? o < y.loopedSlides - y.params.slidesPerView / 2 || o > y.slides.length - y.loopedSlides + y.params.slidesPerView / 2 ? (y.fixLoop(), o = y.wrapper.children("." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.swiper-slide-duplicate)').eq(0).index(), setTimeout(function () {
                              y.slideTo(o)
                          }, 0)) : y.slideTo(o) : o > y.slides.length - y.params.slidesPerView ? (y.fixLoop(), o = y.wrapper.children("." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.swiper-slide-duplicate)').eq(0).index(), setTimeout(function () {
                              y.slideTo(o)
                          }, 0)) : y.slideTo(o)
                      } else y.slideTo(o)
                  }
              };
              var T, S, C, z, M, P, I, k, E, B, D = "input, select, textarea, button", L = Date.now(), H = [];
              y.animating = !1, y.touches = {startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0};
              var G, A;
              if (y.onTouchStart = function (e) {
                      if (e.originalEvent && (e = e.originalEvent), G = "touchstart" === e.type, G || !("which" in e) || 3 !== e.which) {
                          if (y.params.noSwiping && n(e, "." + y.params.noSwipingClass)) return void(y.allowClick = !0);
                          if (!y.params.swipeHandler || n(e, y.params.swipeHandler)) {
                              var t = y.touches.currentX = "touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX,
                                  s = y.touches.currentY = "touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY;
                              if (!(y.device.ios && y.params.iOSEdgeSwipeDetection && t <= y.params.iOSEdgeSwipeThreshold)) {
                                  if (T = !0, S = !1, C = !0, M = void 0, A = void 0, y.touches.startX = t, y.touches.startY = s, z = Date.now(), y.allowClick = !0, y.updateContainerSize(), y.swipeDirection = void 0, y.params.threshold > 0 && (k = !1), "touchstart" !== e.type) {
                                      var r = !0;
                                      a(e.target).is(D) && (r = !1), document.activeElement && a(document.activeElement).is(D) && document.activeElement.blur(), r && e.preventDefault()
                                  }
                                  y.emit("onTouchStart", y, e)
                              }
                          }
                      }
                  }, y.onTouchMove = function (e) {
                      if (e.originalEvent && (e = e.originalEvent), !G || "mousemove" !== e.type) {
                          if (e.preventedByNestedSwiper) return y.touches.startX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, void(y.touches.startY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY);
                          if (y.params.onlyExternal) return y.allowClick = !1, void(T && (y.touches.startX = y.touches.currentX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, y.touches.startY = y.touches.currentY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, z = Date.now()));
                          if (G && document.activeElement && e.target === document.activeElement && a(e.target).is(D)) return S = !0, void(y.allowClick = !1);
                          if (C && y.emit("onTouchMove", y, e), !(e.targetTouches && e.targetTouches.length > 1)) {
                              if (y.touches.currentX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, y.touches.currentY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, "undefined" == typeof M) {
                                  var t = 180 * Math.atan2(Math.abs(y.touches.currentY - y.touches.startY), Math.abs(y.touches.currentX - y.touches.startX)) / Math.PI;
                                  M = y.isHorizontal() ? t > y.params.touchAngle : 90 - t > y.params.touchAngle
                              }
                              if (M && y.emit("onTouchMoveOpposite", y, e), "undefined" == typeof A && y.browser.ieTouch && (y.touches.currentX !== y.touches.startX || y.touches.currentY !== y.touches.startY) && (A = !0), T) {
                                  if (M) return void(T = !1);
                                  if (A || !y.browser.ieTouch) {
                                      y.allowClick = !1, y.emit("onSliderMove", y, e), e.preventDefault(), y.params.touchMoveStopPropagation && !y.params.nested && e.stopPropagation(), S || (s.loop && y.fixLoop(), I = y.getWrapperTranslate(), y.setWrapperTransition(0), y.animating && y.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"), y.params.autoplay && y.autoplaying && (y.params.autoplayDisableOnInteraction ? y.stopAutoplay() : y.pauseAutoplay()), B = !1, y.params.grabCursor && (y.container[0].style.cursor = "move", y.container[0].style.cursor = "-webkit-grabbing", y.container[0].style.cursor = "-moz-grabbin", y.container[0].style.cursor = "grabbing")), S = !0;
                                      var r = y.touches.diff = y.isHorizontal() ? y.touches.currentX - y.touches.startX : y.touches.currentY - y.touches.startY;
                                      r *= y.params.touchRatio, y.rtl && (r = -r), y.swipeDirection = r > 0 ? "prev" : "next", P = r + I;
                                      var i = !0;
                                      if (r > 0 && P > y.minTranslate() ? (i = !1, y.params.resistance && (P = y.minTranslate() - 1 + Math.pow(-y.minTranslate() + I + r, y.params.resistanceRatio))) : 0 > r && P < y.maxTranslate() && (i = !1, y.params.resistance && (P = y.maxTranslate() + 1 - Math.pow(y.maxTranslate() - I - r, y.params.resistanceRatio))),
                                          i && (e.preventedByNestedSwiper = !0), !y.params.allowSwipeToNext && "next" === y.swipeDirection && I > P && (P = I), !y.params.allowSwipeToPrev && "prev" === y.swipeDirection && P > I && (P = I), y.params.followFinger) {
                                          if (y.params.threshold > 0) {
                                              if (!(Math.abs(r) > y.params.threshold || k)) return void(P = I);
                                              if (!k) return k = !0, y.touches.startX = y.touches.currentX, y.touches.startY = y.touches.currentY, P = I, void(y.touches.diff = y.isHorizontal() ? y.touches.currentX - y.touches.startX : y.touches.currentY - y.touches.startY)
                                          }
                                          (y.params.freeMode || y.params.watchSlidesProgress) && y.updateActiveIndex(), y.params.freeMode && (0 === H.length && H.push({
                                              position: y.touches[y.isHorizontal() ? "startX" : "startY"],
                                              time: z
                                          }), H.push({
                                              position: y.touches[y.isHorizontal() ? "currentX" : "currentY"],
                                              time: (new window.Date).getTime()
                                          })), y.updateProgress(P), y.setWrapperTranslate(P)
                                      }
                                  }
                              }
                          }
                      }
                  }, y.onTouchEnd = function (e) {
                      if (e.originalEvent && (e = e.originalEvent), C && y.emit("onTouchEnd", y, e), C = !1, T) {
                          y.params.grabCursor && S && T && (y.container[0].style.cursor = "move", y.container[0].style.cursor = "-webkit-grab", y.container[0].style.cursor = "-moz-grab", y.container[0].style.cursor = "grab");
                          var t = Date.now(), s = t - z;
                          if (y.allowClick && (y.updateClickedSlide(e), y.emit("onTap", y, e), 300 > s && t - L > 300 && (E && clearTimeout(E), E = setTimeout(function () {
                                  y && (y.params.paginationHide && y.paginationContainer.length > 0 && !a(e.target).hasClass(y.params.bulletClass) && y.paginationContainer.toggleClass(y.params.paginationHiddenClass), y.emit("onClick", y, e))
                              }, 300)), 300 > s && 300 > t - L && (E && clearTimeout(E), y.emit("onDoubleTap", y, e))), L = Date.now(), setTimeout(function () {
                                  y && (y.allowClick = !0)
                              }, 0), !T || !S || !y.swipeDirection || 0 === y.touches.diff || P === I) return void(T = S = !1);
                          T = S = !1;
                          var r;
                          if (r = y.params.followFinger ? y.rtl ? y.translate : -y.translate : -P, y.params.freeMode) {
                              if (r < -y.minTranslate()) return void y.slideTo(y.activeIndex);
                              if (r > -y.maxTranslate()) return void(y.slides.length < y.snapGrid.length ? y.slideTo(y.snapGrid.length - 1) : y.slideTo(y.slides.length - 1));
                              if (y.params.freeModeMomentum) {
                                  if (H.length > 1) {
                                      var i = H.pop(), n = H.pop(), o = i.position - n.position, l = i.time - n.time;
                                      y.velocity = o / l, y.velocity = y.velocity / 2, Math.abs(y.velocity) < y.params.freeModeMinimumVelocity && (y.velocity = 0), (l > 150 || (new window.Date).getTime() - i.time > 300) && (y.velocity = 0)
                                  } else y.velocity = 0;
                                  H.length = 0;
                                  var p = 1e3 * y.params.freeModeMomentumRatio, d = y.velocity * p, u = y.translate + d;
                                  y.rtl && (u = -u);
                                  var c, m = !1, f = 20 * Math.abs(y.velocity) * y.params.freeModeMomentumBounceRatio;
                                  if (u < y.maxTranslate()) y.params.freeModeMomentumBounce ? (u + y.maxTranslate() < -f && (u = y.maxTranslate() - f), c = y.maxTranslate(), m = !0, B = !0) : u = y.maxTranslate(); else if (u > y.minTranslate()) y.params.freeModeMomentumBounce ? (u - y.minTranslate() > f && (u = y.minTranslate() + f), c = y.minTranslate(), m = !0, B = !0) : u = y.minTranslate(); else if (y.params.freeModeSticky) {
                                      var g, h = 0;
                                      for (h = 0; h < y.snapGrid.length; h += 1) if (y.snapGrid[h] > -u) {
                                          g = h;
                                          break
                                      }
                                      u = Math.abs(y.snapGrid[g] - u) < Math.abs(y.snapGrid[g - 1] - u) || "next" === y.swipeDirection ? y.snapGrid[g] : y.snapGrid[g - 1], y.rtl || (u = -u)
                                  }
                                  if (0 !== y.velocity) p = y.rtl ? Math.abs((-u - y.translate) / y.velocity) : Math.abs((u - y.translate) / y.velocity); else if (y.params.freeModeSticky) return void y.slideReset();
                                  y.params.freeModeMomentumBounce && m ? (y.updateProgress(c), y.setWrapperTransition(p), y.setWrapperTranslate(u), y.onTransitionStart(), y.animating = !0, y.wrapper.transitionEnd(function () {
                                      y && B && (y.emit("onMomentumBounce", y), y.setWrapperTransition(y.params.speed), y.setWrapperTranslate(c), y.wrapper.transitionEnd(function () {
                                          y && y.onTransitionEnd()
                                      }))
                                  })) : y.velocity ? (y.updateProgress(u), y.setWrapperTransition(p), y.setWrapperTranslate(u), y.onTransitionStart(), y.animating || (y.animating = !0, y.wrapper.transitionEnd(function () {
                                      y && y.onTransitionEnd()
                                  }))) : y.updateProgress(u), y.updateActiveIndex()
                              }
                              return void((!y.params.freeModeMomentum || s >= y.params.longSwipesMs) && (y.updateProgress(), y.updateActiveIndex()))
                          }
                          var v, w = 0, b = y.slidesSizesGrid[0];
                          for (v = 0; v < y.slidesGrid.length; v += y.params.slidesPerGroup) "undefined" != typeof y.slidesGrid[v + y.params.slidesPerGroup] ? r >= y.slidesGrid[v] && r < y.slidesGrid[v + y.params.slidesPerGroup] && (w = v, b = y.slidesGrid[v + y.params.slidesPerGroup] - y.slidesGrid[v]) : r >= y.slidesGrid[v] && (w = v, b = y.slidesGrid[y.slidesGrid.length - 1] - y.slidesGrid[y.slidesGrid.length - 2]);
                          var x = (r - y.slidesGrid[w]) / b;
                          if (s > y.params.longSwipesMs) {
                              if (!y.params.longSwipes) return void y.slideTo(y.activeIndex);
                              "next" === y.swipeDirection && (x >= y.params.longSwipesRatio ? y.slideTo(w + y.params.slidesPerGroup) : y.slideTo(w)), "prev" === y.swipeDirection && (x > 1 - y.params.longSwipesRatio ? y.slideTo(w + y.params.slidesPerGroup) : y.slideTo(w))
                          } else {
                              if (!y.params.shortSwipes) return void y.slideTo(y.activeIndex);
                              "next" === y.swipeDirection && y.slideTo(w + y.params.slidesPerGroup), "prev" === y.swipeDirection && y.slideTo(w)
                          }
                      }
                  }, y._slideTo = function (e, a) {
                      return y.slideTo(e, a, !0, !0)
                  }, y.slideTo = function (e, a, t, s) {
                      "undefined" == typeof t && (t = !0), "undefined" == typeof e && (e = 0), 0 > e && (e = 0), y.snapIndex = Math.floor(e / y.params.slidesPerGroup), y.snapIndex >= y.snapGrid.length && (y.snapIndex = y.snapGrid.length - 1);
                      var r = -y.snapGrid[y.snapIndex];
                      y.params.autoplay && y.autoplaying && (s || !y.params.autoplayDisableOnInteraction ? y.pauseAutoplay(a) : y.stopAutoplay()), y.updateProgress(r);
                      for (var i = 0; i < y.slidesGrid.length; i++) -Math.floor(100 * r) >= Math.floor(100 * y.slidesGrid[i]) && (e = i);
                      return !y.params.allowSwipeToNext && r < y.translate && r < y.minTranslate() ? !1 : !y.params.allowSwipeToPrev && r > y.translate && r > y.maxTranslate() && (y.activeIndex || 0) !== e ? !1 : ("undefined" == typeof a && (a = y.params.speed), y.previousIndex = y.activeIndex || 0, y.activeIndex = e, y.rtl && -r === y.translate || !y.rtl && r === y.translate ? (y.params.autoHeight && y.updateAutoHeight(), y.updateClasses(), "slide" !== y.params.effect && y.setWrapperTranslate(r), !1) : (y.updateClasses(), y.onTransitionStart(t), 0 === a ? (y.setWrapperTranslate(r), y.setWrapperTransition(0), y.onTransitionEnd(t)) : (y.setWrapperTranslate(r), y.setWrapperTransition(a), y.animating || (y.animating = !0, y.wrapper.transitionEnd(function () {
                          y && y.onTransitionEnd(t)
                      }))), !0))
                  }, y.onTransitionStart = function (e) {
                      "undefined" == typeof e && (e = !0), y.params.autoHeight && y.updateAutoHeight(), y.lazy && y.lazy.onTransitionStart(), e && (y.emit("onTransitionStart", y), y.activeIndex !== y.previousIndex && (y.emit("onSlideChangeStart", y), y.activeIndex > y.previousIndex ? y.emit("onSlideNextStart", y) : y.emit("onSlidePrevStart", y)))
                  }, y.onTransitionEnd = function (e) {
                      y.animating = !1, y.setWrapperTransition(0), "undefined" == typeof e && (e = !0), y.lazy && y.lazy.onTransitionEnd(), e && (y.emit("onTransitionEnd", y), y.activeIndex !== y.previousIndex && (y.emit("onSlideChangeEnd", y), y.activeIndex > y.previousIndex ? y.emit("onSlideNextEnd", y) : y.emit("onSlidePrevEnd", y))), y.params.hashnav && y.hashnav && y.hashnav.setHash()
                  }, y.slideNext = function (e, a, t) {
                      if (y.params.loop) {
                          if (y.animating) return !1;
                          y.fixLoop();
                          y.container[0].clientLeft;
                          return y.slideTo(y.activeIndex + y.params.slidesPerGroup, a, e, t)
                      }
                      return y.slideTo(y.activeIndex + y.params.slidesPerGroup, a, e, t)
                  }, y._slideNext = function (e) {
                      return y.slideNext(!0, e, !0)
                  }, y.slidePrev = function (e, a, t) {
                      if (y.params.loop) {
                          if (y.animating) return !1;
                          y.fixLoop();
                          y.container[0].clientLeft;
                          return y.slideTo(y.activeIndex - 1, a, e, t)
                      }
                      return y.slideTo(y.activeIndex - 1, a, e, t)
                  }, y._slidePrev = function (e) {
                      return y.slidePrev(!0, e, !0)
                  }, y.slideReset = function (e, a, t) {
                      return y.slideTo(y.activeIndex, a, e)
                  }, y.setWrapperTransition = function (e, a) {
                      y.wrapper.transition(e), "slide" !== y.params.effect && y.effects[y.params.effect] && y.effects[y.params.effect].setTransition(e), y.params.parallax && y.parallax && y.parallax.setTransition(e), y.params.scrollbar && y.scrollbar && y.scrollbar.setTransition(e), y.params.control && y.controller && y.controller.setTransition(e, a), y.emit("onSetTransition", y, e)
                  }, y.setWrapperTranslate = function (e, a, t) {
                      var s = 0, i = 0, n = 0;
                      y.isHorizontal() ? s = y.rtl ? -e : e : i = e, y.params.roundLengths && (s = r(s), i = r(i)), y.params.virtualTranslate || (y.support.transforms3d ? y.wrapper.transform("translate3d(" + s + "px, " + i + "px, " + n + "px)") : y.wrapper.transform("translate(" + s + "px, " + i + "px)")), y.translate = y.isHorizontal() ? s : i;
                      var o, l = y.maxTranslate() - y.minTranslate();
                      o = 0 === l ? 0 : (e - y.minTranslate()) / l, o !== y.progress && y.updateProgress(e), a && y.updateActiveIndex(), "slide" !== y.params.effect && y.effects[y.params.effect] && y.effects[y.params.effect].setTranslate(y.translate), y.params.parallax && y.parallax && y.parallax.setTranslate(y.translate), y.params.scrollbar && y.scrollbar && y.scrollbar.setTranslate(y.translate), y.params.control && y.controller && y.controller.setTranslate(y.translate, t), y.emit("onSetTranslate", y, y.translate)
                  }, y.getTranslate = function (e, a) {
                      var t, s, r, i;
                      return "undefined" == typeof a && (a = "x"), y.params.virtualTranslate ? y.rtl ? -y.translate : y.translate : (r = window.getComputedStyle(e, null), window.WebKitCSSMatrix ? (s = r.transform || r.webkitTransform, s.split(",").length > 6 && (s = s.split(", ").map(function (e) {
                          return e.replace(",", ".")
                      }).join(", ")), i = new window.WebKitCSSMatrix("none" === s ? "" : s)) : (i = r.MozTransform || r.OTransform || r.MsTransform || r.msTransform || r.transform || r.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), t = i.toString().split(",")), "x" === a && (s = window.WebKitCSSMatrix ? i.m41 : 16 === t.length ? parseFloat(t[12]) : parseFloat(t[4])), "y" === a && (s = window.WebKitCSSMatrix ? i.m42 : 16 === t.length ? parseFloat(t[13]) : parseFloat(t[5])), y.rtl && s && (s = -s), s || 0)
                  }, y.getWrapperTranslate = function (e) {
                      return "undefined" == typeof e && (e = y.isHorizontal() ? "x" : "y"), y.getTranslate(y.wrapper[0], e)
                  }, y.observers = [], y.initObservers = function () {
                      if (y.params.observeParents) for (var e = y.container.parents(), a = 0; a < e.length; a++) o(e[a]);
                      o(y.container[0], {childList: !1}), o(y.wrapper[0], {attributes: !1})
                  }, y.disconnectObservers = function () {
                      for (var e = 0; e < y.observers.length; e++) y.observers[e].disconnect();
                      y.observers = []
                  }, y.createLoop = function () {
                      y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass).remove();
                      var e = y.wrapper.children("." + y.params.slideClass);
                      "auto" !== y.params.slidesPerView || y.params.loopedSlides || (y.params.loopedSlides = e.length), y.loopedSlides = parseInt(y.params.loopedSlides || y.params.slidesPerView, 10), y.loopedSlides = y.loopedSlides + y.params.loopAdditionalSlides, y.loopedSlides > e.length && (y.loopedSlides = e.length);
                      var t, s = [], r = [];
                      for (e.each(function (t, i) {
                          var n = a(this);
                          t < y.loopedSlides && r.push(i), t < e.length && t >= e.length - y.loopedSlides && s.push(i), n.attr("data-swiper-slide-index", t)
                      }), t = 0; t < r.length; t++) y.wrapper.append(a(r[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass));
                      for (t = s.length - 1; t >= 0; t--) y.wrapper.prepend(a(s[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass))
                  }, y.destroyLoop = function () {
                      y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass).remove(), y.slides.removeAttr("data-swiper-slide-index")
                  }, y.reLoop = function (e) {
                      var a = y.activeIndex - y.loopedSlides;
                      y.destroyLoop(), y.createLoop(), y.updateSlidesSize(), e && y.slideTo(a + y.loopedSlides, 0, !1)
                  }, y.fixLoop = function () {
                      var e;
                      y.activeIndex < y.loopedSlides ? (e = y.slides.length - 3 * y.loopedSlides + y.activeIndex, e += y.loopedSlides, y.slideTo(e, 0, !1, !0)) : ("auto" === y.params.slidesPerView && y.activeIndex >= 2 * y.loopedSlides || y.activeIndex > y.slides.length - 2 * y.params.slidesPerView) && (e = -y.slides.length + y.activeIndex + y.loopedSlides, e += y.loopedSlides, y.slideTo(e, 0, !1, !0))
                  }, y.appendSlide = function (e) {
                      if (y.params.loop && y.destroyLoop(), "object" == typeof e && e.length) for (var a = 0; a < e.length; a++) e[a] && y.wrapper.append(e[a]); else y.wrapper.append(e);
                      y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0)
                  }, y.prependSlide = function (e) {
                      y.params.loop && y.destroyLoop();
                      var a = y.activeIndex + 1;
                      if ("object" == typeof e && e.length) {
                          for (var t = 0; t < e.length; t++) e[t] && y.wrapper.prepend(e[t]);
                          a = y.activeIndex + e.length
                      } else y.wrapper.prepend(e);
                      y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0), y.slideTo(a, 0, !1)
                  }, y.removeSlide = function (e) {
                      y.params.loop && (y.destroyLoop(), y.slides = y.wrapper.children("." + y.params.slideClass));
                      var a, t = y.activeIndex;
                      if ("object" == typeof e && e.length) {
                          for (var s = 0; s < e.length; s++) a = e[s], y.slides[a] && y.slides.eq(a).remove(), t > a && t--;
                          t = Math.max(t, 0)
                      } else a = e, y.slides[a] && y.slides.eq(a).remove(), t > a && t--, t = Math.max(t, 0);
                      y.params.loop && y.createLoop(), y.params.observer && y.support.observer || y.update(!0), y.params.loop ? y.slideTo(t + y.loopedSlides, 0, !1) : y.slideTo(t, 0, !1)
                  }, y.removeAllSlides = function () {
                      for (var e = [], a = 0; a < y.slides.length; a++) e.push(a);
                      y.removeSlide(e)
                  }, y.effects = {
                      fade: {
                          setTranslate: function () {
                              for (var e = 0; e < y.slides.length; e++) {
                                  var a = y.slides.eq(e), t = a[0].swiperSlideOffset, s = -t;
                                  y.params.virtualTranslate || (s -= y.translate);
                                  var r = 0;
                                  y.isHorizontal() || (r = s, s = 0);
                                  var i = y.params.fade.crossFade ? Math.max(1 - Math.abs(a[0].progress), 0) : 1 + Math.min(Math.max(a[0].progress, -1), 0);
                                  a.css({opacity: i}).transform("translate3d(" + s + "px, " + r + "px, 0px)")
                              }
                          }, setTransition: function (e) {
                              if (y.slides.transition(e), y.params.virtualTranslate && 0 !== e) {
                                  var a = !1;
                                  y.slides.transitionEnd(function () {
                                      if (!a && y) {
                                          a = !0, y.animating = !1;
                                          for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], t = 0; t < e.length; t++) y.wrapper.trigger(e[t])
                                      }
                                  })
                              }
                          }
                      }, flip: {
                          setTranslate: function () {
                              for (var e = 0; e < y.slides.length; e++) {
                                  var t = y.slides.eq(e), s = t[0].progress;
                                  y.params.flip.limitRotation && (s = Math.max(Math.min(t[0].progress, 1), -1));
                                  var r = t[0].swiperSlideOffset, i = -180 * s, n = i, o = 0, l = -r, p = 0;
                                  if (y.isHorizontal() ? y.rtl && (n = -n) : (p = l, l = 0, o = -n, n = 0), t[0].style.zIndex = -Math.abs(Math.round(s)) + y.slides.length, y.params.flip.slideShadows) {
                                      var d = y.isHorizontal() ? t.find(".swiper-slide-shadow-left") : t.find(".swiper-slide-shadow-top"),
                                          u = y.isHorizontal() ? t.find(".swiper-slide-shadow-right") : t.find(".swiper-slide-shadow-bottom");
                                      0 === d.length && (d = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") + '"></div>'), t.append(d)), 0 === u.length && (u = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "right" : "bottom") + '"></div>'), t.append(u)), d.length && (d[0].style.opacity = Math.max(-s, 0)), u.length && (u[0].style.opacity = Math.max(s, 0))
                                  }
                                  t.transform("translate3d(" + l + "px, " + p + "px, 0px) rotateX(" + o + "deg) rotateY(" + n + "deg)")
                              }
                          }, setTransition: function (e) {
                              if (y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), y.params.virtualTranslate && 0 !== e) {
                                  var t = !1;
                                  y.slides.eq(y.activeIndex).transitionEnd(function () {
                                      if (!t && y && a(this).hasClass(y.params.slideActiveClass)) {
                                          t = !0, y.animating = !1;
                                          for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], s = 0; s < e.length; s++) y.wrapper.trigger(e[s])
                                      }
                                  })
                              }
                          }
                      }, cube: {
                          setTranslate: function () {
                              var e, t = 0;
                              y.params.cube.shadow && (y.isHorizontal() ? (e = y.wrapper.find(".swiper-cube-shadow"), 0 === e.length && (e = a('<div class="swiper-cube-shadow"></div>'), y.wrapper.append(e)), e.css({height: y.width + "px"})) : (e = y.container.find(".swiper-cube-shadow"), 0 === e.length && (e = a('<div class="swiper-cube-shadow"></div>'), y.container.append(e))));
                              for (var s = 0; s < y.slides.length; s++) {
                                  var r = y.slides.eq(s), i = 90 * s, n = Math.floor(i / 360);
                                  y.rtl && (i = -i, n = Math.floor(-i / 360));
                                  var o = Math.max(Math.min(r[0].progress, 1), -1), l = 0, p = 0, d = 0;
                                  s % 4 === 0 ? (l = 4 * -n * y.size, d = 0) : (s - 1) % 4 === 0 ? (l = 0, d = 4 * -n * y.size) : (s - 2) % 4 === 0 ? (l = y.size + 4 * n * y.size, d = y.size) : (s - 3) % 4 === 0 && (l = -y.size, d = 3 * y.size + 4 * y.size * n), y.rtl && (l = -l), y.isHorizontal() || (p = l, l = 0);
                                  var u = "rotateX(" + (y.isHorizontal() ? 0 : -i) + "deg) rotateY(" + (y.isHorizontal() ? i : 0) + "deg) translate3d(" + l + "px, " + p + "px, " + d + "px)";
                                  if (1 >= o && o > -1 && (t = 90 * s + 90 * o, y.rtl && (t = 90 * -s - 90 * o)), r.transform(u), y.params.cube.slideShadows) {
                                      var c = y.isHorizontal() ? r.find(".swiper-slide-shadow-left") : r.find(".swiper-slide-shadow-top"),
                                          m = y.isHorizontal() ? r.find(".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom");
                                      0 === c.length && (c = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") + '"></div>'), r.append(c)), 0 === m.length && (m = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "right" : "bottom") + '"></div>'), r.append(m)), c.length && (c[0].style.opacity = Math.max(-o, 0)), m.length && (m[0].style.opacity = Math.max(o, 0))
                                  }
                              }
                              if (y.wrapper.css({
                                      "-webkit-transform-origin": "50% 50% -" + y.size / 2 + "px",
                                      "-moz-transform-origin": "50% 50% -" + y.size / 2 + "px",
                                      "-ms-transform-origin": "50% 50% -" + y.size / 2 + "px",
                                      "transform-origin": "50% 50% -" + y.size / 2 + "px"
                                  }), y.params.cube.shadow) if (y.isHorizontal()) e.transform("translate3d(0px, " + (y.width / 2 + y.params.cube.shadowOffset) + "px, " + -y.width / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + y.params.cube.shadowScale + ")"); else {
                                  var f = Math.abs(t) - 90 * Math.floor(Math.abs(t) / 90),
                                      g = 1.5 - (Math.sin(2 * f * Math.PI / 360) / 2 + Math.cos(2 * f * Math.PI / 360) / 2),
                                      h = y.params.cube.shadowScale, v = y.params.cube.shadowScale / g,
                                      w = y.params.cube.shadowOffset;
                                  e.transform("scale3d(" + h + ", 1, " + v + ") translate3d(0px, " + (y.height / 2 + w) + "px, " + -y.height / 2 / v + "px) rotateX(-90deg)")
                              }
                              var b = y.isSafari || y.isUiWebView ? -y.size / 2 : 0;
                              y.wrapper.transform("translate3d(0px,0," + b + "px) rotateX(" + (y.isHorizontal() ? 0 : t) + "deg) rotateY(" + (y.isHorizontal() ? -t : 0) + "deg)")
                          }, setTransition: function (e) {
                              y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), y.params.cube.shadow && !y.isHorizontal() && y.container.find(".swiper-cube-shadow").transition(e)
                          }
                      }, coverflow: {
                          setTranslate: function () {
                              for (var e = y.translate, t = y.isHorizontal() ? -e + y.width / 2 : -e + y.height / 2, s = y.isHorizontal() ? y.params.coverflow.rotate : -y.params.coverflow.rotate, r = y.params.coverflow.depth, i = 0, n = y.slides.length; n > i; i++) {
                                  var o = y.slides.eq(i), l = y.slidesSizesGrid[i], p = o[0].swiperSlideOffset,
                                      d = (t - p - l / 2) / l * y.params.coverflow.modifier,
                                      u = y.isHorizontal() ? s * d : 0, c = y.isHorizontal() ? 0 : s * d,
                                      m = -r * Math.abs(d), f = y.isHorizontal() ? 0 : y.params.coverflow.stretch * d,
                                      g = y.isHorizontal() ? y.params.coverflow.stretch * d : 0;
                                  Math.abs(g) < .001 && (g = 0), Math.abs(f) < .001 && (f = 0), Math.abs(m) < .001 && (m = 0), Math.abs(u) < .001 && (u = 0), Math.abs(c) < .001 && (c = 0);
                                  var h = "translate3d(" + g + "px," + f + "px," + m + "px)  rotateX(" + c + "deg) rotateY(" + u + "deg)";
                                  if (o.transform(h), o[0].style.zIndex = -Math.abs(Math.round(d)) + 1, y.params.coverflow.slideShadows) {
                                      var v = y.isHorizontal() ? o.find(".swiper-slide-shadow-left") : o.find(".swiper-slide-shadow-top"),
                                          w = y.isHorizontal() ? o.find(".swiper-slide-shadow-right") : o.find(".swiper-slide-shadow-bottom");
                                      0 === v.length && (v = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "left" : "top") + '"></div>'), o.append(v)), 0 === w.length && (w = a('<div class="swiper-slide-shadow-' + (y.isHorizontal() ? "right" : "bottom") + '"></div>'), o.append(w)), v.length && (v[0].style.opacity = d > 0 ? d : 0), w.length && (w[0].style.opacity = -d > 0 ? -d : 0)
                                  }
                              }
                              if (y.browser.ie) {
                                  var b = y.wrapper[0].style;
                                  b.perspectiveOrigin = t + "px 50%"
                              }
                          }, setTransition: function (e) {
                              y.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)
                          }
                      }
                  }, y.lazy = {
                      initialImageLoaded: !1, loadImageInSlide: function (e, t) {
                          if ("undefined" != typeof e && ("undefined" == typeof t && (t = !0), 0 !== y.slides.length)) {
                              var s = y.slides.eq(e),
                                  r = s.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");
                              !s.hasClass("swiper-lazy") || s.hasClass("swiper-lazy-loaded") || s.hasClass("swiper-lazy-loading") || (r = r.add(s[0])), 0 !== r.length && r.each(function () {
                                  var e = a(this);
                                  e.addClass("swiper-lazy-loading");
                                  var r = e.attr("data-background"), i = e.attr("data-src"), n = e.attr("data-srcset");
                                  y.loadImage(e[0], i || r, n, !1, function () {
                                      if (r ? (e.css("background-image", 'url("' + r + '")'), e.removeAttr("data-background")) : (n && (e.attr("srcset", n), e.removeAttr("data-srcset")), i && (e.attr("src", i), e.removeAttr("data-src"))), e.addClass("swiper-lazy-loaded").removeClass("swiper-lazy-loading"), s.find(".swiper-lazy-preloader, .preloader").remove(), y.params.loop && t) {
                                          var a = s.attr("data-swiper-slide-index");
                                          if (s.hasClass(y.params.slideDuplicateClass)) {
                                              var o = y.wrapper.children('[data-swiper-slide-index="' + a + '"]:not(.' + y.params.slideDuplicateClass + ")");
                                              y.lazy.loadImageInSlide(o.index(), !1)
                                          } else {
                                              var l = y.wrapper.children("." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + a + '"]');
                                              y.lazy.loadImageInSlide(l.index(), !1)
                                          }
                                      }
                                      y.emit("onLazyImageReady", y, s[0], e[0])
                                  }), y.emit("onLazyImageLoad", y, s[0], e[0])
                              })
                          }
                      }, load: function () {
                          var e;
                          if (y.params.watchSlidesVisibility) y.wrapper.children("." + y.params.slideVisibleClass).each(function () {
                              y.lazy.loadImageInSlide(a(this).index())
                          }); else if (y.params.slidesPerView > 1) for (e = y.activeIndex; e < y.activeIndex + y.params.slidesPerView; e++) y.slides[e] && y.lazy.loadImageInSlide(e); else y.lazy.loadImageInSlide(y.activeIndex);
                          if (y.params.lazyLoadingInPrevNext) if (y.params.slidesPerView > 1 || y.params.lazyLoadingInPrevNextAmount && y.params.lazyLoadingInPrevNextAmount > 1) {
                              var t = y.params.lazyLoadingInPrevNextAmount, s = y.params.slidesPerView,
                                  r = Math.min(y.activeIndex + s + Math.max(t, s), y.slides.length),
                                  i = Math.max(y.activeIndex - Math.max(s, t), 0);
                              for (e = y.activeIndex + y.params.slidesPerView; r > e; e++) y.slides[e] && y.lazy.loadImageInSlide(e);
                              for (e = i; e < y.activeIndex; e++) y.slides[e] && y.lazy.loadImageInSlide(e)
                          } else {
                              var n = y.wrapper.children("." + y.params.slideNextClass);
                              n.length > 0 && y.lazy.loadImageInSlide(n.index());
                              var o = y.wrapper.children("." + y.params.slidePrevClass);
                              o.length > 0 && y.lazy.loadImageInSlide(o.index())
                          }
                      }, onTransitionStart: function () {
                          y.params.lazyLoading && (y.params.lazyLoadingOnTransitionStart || !y.params.lazyLoadingOnTransitionStart && !y.lazy.initialImageLoaded) && y.lazy.load()
                      }, onTransitionEnd: function () {
                          y.params.lazyLoading && !y.params.lazyLoadingOnTransitionStart && y.lazy.load()
                      }
                  }, y.scrollbar = {
                      isTouched: !1, setDragPosition: function (e) {
                          var a = y.scrollbar,
                              t = y.isHorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX || e.clientX : "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY,
                              s = t - a.track.offset()[y.isHorizontal() ? "left" : "top"] - a.dragSize / 2,
                              r = -y.minTranslate() * a.moveDivider, i = -y.maxTranslate() * a.moveDivider;
                          r > s ? s = r : s > i && (s = i), s = -s / a.moveDivider, y.updateProgress(s), y.setWrapperTranslate(s, !0)
                      }, dragStart: function (e) {
                          var a = y.scrollbar;
                          a.isTouched = !0, e.preventDefault(), e.stopPropagation(), a.setDragPosition(e), clearTimeout(a.dragTimeout), a.track.transition(0), y.params.scrollbarHide && a.track.css("opacity", 1), y.wrapper.transition(100), a.drag.transition(100), y.emit("onScrollbarDragStart", y)
                      }, dragMove: function (e) {
                          var a = y.scrollbar;
                          a.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, a.setDragPosition(e), y.wrapper.transition(0), a.track.transition(0), a.drag.transition(0), y.emit("onScrollbarDragMove", y))
                      }, dragEnd: function (e) {
                          var a = y.scrollbar;
                          a.isTouched && (a.isTouched = !1, y.params.scrollbarHide && (clearTimeout(a.dragTimeout), a.dragTimeout = setTimeout(function () {
                              a.track.css("opacity", 0), a.track.transition(400)
                          }, 1e3)), y.emit("onScrollbarDragEnd", y), y.params.scrollbarSnapOnRelease && y.slideReset())
                      }, enableDraggable: function () {
                          var e = y.scrollbar, t = y.support.touch ? e.track : document;
                          a(e.track).on(y.touchEvents.start, e.dragStart), a(t).on(y.touchEvents.move, e.dragMove), a(t).on(y.touchEvents.end, e.dragEnd)
                      }, disableDraggable: function () {
                          var e = y.scrollbar, t = y.support.touch ? e.track : document;
                          a(e.track).off(y.touchEvents.start, e.dragStart), a(t).off(y.touchEvents.move, e.dragMove), a(t).off(y.touchEvents.end, e.dragEnd)
                      }, set: function () {
                          if (y.params.scrollbar) {
                              var e = y.scrollbar;
                              e.track = a(y.params.scrollbar), y.params.uniqueNavElements && "string" == typeof y.params.scrollbar && e.track.length > 1 && 1 === y.container.find(y.params.scrollbar).length && (e.track = y.container.find(y.params.scrollbar)), e.drag = e.track.find(".swiper-scrollbar-drag"), 0 === e.drag.length && (e.drag = a('<div class="swiper-scrollbar-drag"></div>'), e.track.append(e.drag)), e.drag[0].style.width = "", e.drag[0].style.height = "", e.trackSize = y.isHorizontal() ? e.track[0].offsetWidth : e.track[0].offsetHeight, e.divider = y.size / y.virtualSize, e.moveDivider = e.divider * (e.trackSize / y.size), e.dragSize = e.trackSize * e.divider, y.isHorizontal() ? e.drag[0].style.width = e.dragSize + "px" : e.drag[0].style.height = e.dragSize + "px", e.divider >= 1 ? e.track[0].style.display = "none" : e.track[0].style.display = "", y.params.scrollbarHide && (e.track[0].style.opacity = 0)
                          }
                      }, setTranslate: function () {
                          if (y.params.scrollbar) {
                              var e, a = y.scrollbar, t = (y.translate || 0, a.dragSize);
                              e = (a.trackSize - a.dragSize) * y.progress, y.rtl && y.isHorizontal() ? (e = -e, e > 0 ? (t = a.dragSize - e, e = 0) : -e + a.dragSize > a.trackSize && (t = a.trackSize + e)) : 0 > e ? (t = a.dragSize + e, e = 0) : e + a.dragSize > a.trackSize && (t = a.trackSize - e), y.isHorizontal() ? (y.support.transforms3d ? a.drag.transform("translate3d(" + e + "px, 0, 0)") : a.drag.transform("translateX(" + e + "px)"), a.drag[0].style.width = t + "px") : (y.support.transforms3d ? a.drag.transform("translate3d(0px, " + e + "px, 0)") : a.drag.transform("translateY(" + e + "px)"), a.drag[0].style.height = t + "px"), y.params.scrollbarHide && (clearTimeout(a.timeout), a.track[0].style.opacity = 1, a.timeout = setTimeout(function () {
                                  a.track[0].style.opacity = 0, a.track.transition(400)
                              }, 1e3))
                          }
                      }, setTransition: function (e) {
                          y.params.scrollbar && y.scrollbar.drag.transition(e)
                      }
                  }, y.controller = {
                      LinearSpline: function (e, a) {
                          this.x = e, this.y = a, this.lastIndex = e.length - 1;
                          var t, s;
                          this.x.length;
                          this.interpolate = function (e) {
                              return e ? (s = r(this.x, e), t = s - 1, (e - this.x[t]) * (this.y[s] - this.y[t]) / (this.x[s] - this.x[t]) + this.y[t]) : 0
                          };
                          var r = function () {
                              var e, a, t;
                              return function (s, r) {
                                  for (a = -1, e = s.length; e - a > 1;) s[t = e + a >> 1] <= r ? a = t : e = t;
                                  return e
                              }
                          }()
                      }, getInterpolateFunction: function (e) {
                          y.controller.spline || (y.controller.spline = y.params.loop ? new y.controller.LinearSpline(y.slidesGrid, e.slidesGrid) : new y.controller.LinearSpline(y.snapGrid, e.snapGrid))
                      }, setTranslate: function (e, a) {
                          function s(a) {
                              e = a.rtl && "horizontal" === a.params.direction ? -y.translate : y.translate, "slide" === y.params.controlBy && (y.controller.getInterpolateFunction(a), i = -y.controller.spline.interpolate(-e)), i && "container" !== y.params.controlBy || (r = (a.maxTranslate() - a.minTranslate()) / (y.maxTranslate() - y.minTranslate()), i = (e - y.minTranslate()) * r + a.minTranslate()), y.params.controlInverse && (i = a.maxTranslate() - i), a.updateProgress(i), a.setWrapperTranslate(i, !1, y), a.updateActiveIndex()
                          }
  
                          var r, i, n = y.params.control;
                          if (y.isArray(n)) for (var o = 0; o < n.length; o++) n[o] !== a && n[o] instanceof t && s(n[o]); else n instanceof t && a !== n && s(n)
                      }, setTransition: function (e, a) {
                          function s(a) {
                              a.setWrapperTransition(e, y), 0 !== e && (a.onTransitionStart(), a.wrapper.transitionEnd(function () {
                                  i && (a.params.loop && "slide" === y.params.controlBy && a.fixLoop(), a.onTransitionEnd())
                              }))
                          }
  
                          var r, i = y.params.control;
                          if (y.isArray(i)) for (r = 0; r < i.length; r++) i[r] !== a && i[r] instanceof t && s(i[r]); else i instanceof t && a !== i && s(i)
                      }
                  }, y.hashnav = {
                      init: function () {
                          if (y.params.hashnav) {
                              y.hashnav.initialized = !0;
                              var e = document.location.hash.replace("#", "");
                              if (e) for (var a = 0, t = 0, s = y.slides.length; s > t; t++) {
                                  var r = y.slides.eq(t), i = r.attr("data-hash");
                                  if (i === e && !r.hasClass(y.params.slideDuplicateClass)) {
                                      var n = r.index();
                                      y.slideTo(n, a, y.params.runCallbacksOnInit, !0)
                                  }
                              }
                          }
                      }, setHash: function () {
                          y.hashnav.initialized && y.params.hashnav && (document.location.hash = y.slides.eq(y.activeIndex).attr("data-hash") || "")
                      }
                  }, y.disableKeyboardControl = function () {
                      y.params.keyboardControl = !1, a(document).off("keydown", l)
                  }, y.enableKeyboardControl = function () {
                      y.params.keyboardControl = !0, a(document).on("keydown", l)
                  }, y.mousewheel = {
                      event: !1,
                      lastScrollTime: (new window.Date).getTime()
                  }, y.params.mousewheelControl) {
                  try {
                      new window.WheelEvent("wheel"), y.mousewheel.event = "wheel"
                  } catch (O) {
                      (window.WheelEvent || y.container[0] && "wheel" in y.container[0]) && (y.mousewheel.event = "wheel")
                  }
                  !y.mousewheel.event && window.WheelEvent, y.mousewheel.event || void 0 === document.onmousewheel || (y.mousewheel.event = "mousewheel"), y.mousewheel.event || (y.mousewheel.event = "DOMMouseScroll")
              }
              y.disableMousewheelControl = function () {
                  return y.mousewheel.event ? (y.container.off(y.mousewheel.event, p), !0) : !1
              }, y.enableMousewheelControl = function () {
                  return y.mousewheel.event ? (y.container.on(y.mousewheel.event, p), !0) : !1
              }, y.parallax = {
                  setTranslate: function () {
                      y.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
                          d(this, y.progress)
                      }), y.slides.each(function () {
                          var e = a(this);
                          e.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
                              var a = Math.min(Math.max(e[0].progress, -1), 1);
                              d(this, a)
                          })
                      })
                  }, setTransition: function (e) {
                      "undefined" == typeof e && (e = y.params.speed), y.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function () {
                          var t = a(this), s = parseInt(t.attr("data-swiper-parallax-duration"), 10) || e;
                          0 === e && (s = 0), t.transition(s)
                      })
                  }
              }, y._plugins = [];
              for (var N in y.plugins) {
                  var R = y.plugins[N](y, y.params[N]);
                  R && y._plugins.push(R)
              }
              return y.callPlugins = function (e) {
                  for (var a = 0; a < y._plugins.length; a++) e in y._plugins[a] && y._plugins[a][e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
              }, y.emitterEventListeners = {}, y.emit = function (e) {
                  y.params[e] && y.params[e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
                  var a;
                  if (y.emitterEventListeners[e]) for (a = 0; a < y.emitterEventListeners[e].length; a++) y.emitterEventListeners[e][a](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
                  y.callPlugins && y.callPlugins(e, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
              }, y.on = function (e, a) {
                  return e = u(e), y.emitterEventListeners[e] || (y.emitterEventListeners[e] = []), y.emitterEventListeners[e].push(a), y
              }, y.off = function (e, a) {
                  var t;
                  if (e = u(e), "undefined" == typeof a) return y.emitterEventListeners[e] = [], y;
                  if (y.emitterEventListeners[e] && 0 !== y.emitterEventListeners[e].length) {
                      for (t = 0; t < y.emitterEventListeners[e].length; t++) y.emitterEventListeners[e][t] === a && y.emitterEventListeners[e].splice(t, 1);
                      return y
                  }
              }, y.once = function (e, a) {
                  e = u(e);
                  var t = function () {
                      a(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]), y.off(e, t)
                  };
                  return y.on(e, t), y
              }, y.a11y = {
                  makeFocusable: function (e) {
                      return e.attr("tabIndex", "0"), e
                  },
                  addRole: function (e, a) {
                      return e.attr("role", a), e
                  },
                  addLabel: function (e, a) {
                      return e.attr("aria-label", a), e
                  },
                  disable: function (e) {
                      return e.attr("aria-disabled", !0), e
                  },
                  enable: function (e) {
                      return e.attr("aria-disabled", !1), e
                  },
                  onEnterKey: function (e) {
                      13 === e.keyCode && (a(e.target).is(y.params.nextButton) ? (y.onClickNext(e), y.isEnd ? y.a11y.notify(y.params.lastSlideMessage) : y.a11y.notify(y.params.nextSlideMessage)) : a(e.target).is(y.params.prevButton) && (y.onClickPrev(e), y.isBeginning ? y.a11y.notify(y.params.firstSlideMessage) : y.a11y.notify(y.params.prevSlideMessage)), a(e.target).is("." + y.params.bulletClass) && a(e.target)[0].click())
                  },
                  liveRegion: a('<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>'),
                  notify: function (e) {
                      var a = y.a11y.liveRegion;
                      0 !== a.length && (a.html(""), a.html(e))
                  },
                  init: function () {
                      y.params.nextButton && y.nextButton && y.nextButton.length > 0 && (y.a11y.makeFocusable(y.nextButton), y.a11y.addRole(y.nextButton, "button"), y.a11y.addLabel(y.nextButton, y.params.nextSlideMessage)), y.params.prevButton && y.prevButton && y.prevButton.length > 0 && (y.a11y.makeFocusable(y.prevButton), y.a11y.addRole(y.prevButton, "button"), y.a11y.addLabel(y.prevButton, y.params.prevSlideMessage)), a(y.container).append(y.a11y.liveRegion)
                  },
                  initPagination: function () {
                      y.params.pagination && y.params.paginationClickable && y.bullets && y.bullets.length && y.bullets.each(function () {
                          var e = a(this);
                          y.a11y.makeFocusable(e), y.a11y.addRole(e, "button"), y.a11y.addLabel(e, y.params.paginationBulletMessage.replace(/{{index}}/, e.index() + 1))
                      })
                  },
                  destroy: function () {
                      y.a11y.liveRegion && y.a11y.liveRegion.length > 0 && y.a11y.liveRegion.remove()
                  }
              }, y.init = function () {
                  y.params.loop && y.createLoop(), y.updateContainerSize(), y.updateSlidesSize(), y.updatePagination(), y.params.scrollbar && y.scrollbar && (y.scrollbar.set(), y.params.scrollbarDraggable && y.scrollbar.enableDraggable()), "slide" !== y.params.effect && y.effects[y.params.effect] && (y.params.loop || y.updateProgress(), y.effects[y.params.effect].setTranslate()), y.params.loop ? y.slideTo(y.params.initialSlide + y.loopedSlides, 0, y.params.runCallbacksOnInit) : (y.slideTo(y.params.initialSlide, 0, y.params.runCallbacksOnInit), 0 === y.params.initialSlide && (y.parallax && y.params.parallax && y.parallax.setTranslate(), y.lazy && y.params.lazyLoading && (y.lazy.load(), y.lazy.initialImageLoaded = !0))), y.attachEvents(), y.params.observer && y.support.observer && y.initObservers(), y.params.preloadImages && !y.params.lazyLoading && y.preloadImages(), y.params.autoplay && y.startAutoplay(), y.params.keyboardControl && y.enableKeyboardControl && y.enableKeyboardControl(), y.params.mousewheelControl && y.enableMousewheelControl && y.enableMousewheelControl(),
                  y.params.hashnav && y.hashnav && y.hashnav.init(), y.params.a11y && y.a11y && y.a11y.init(), y.emit("onInit", y)
              }, y.cleanupStyles = function () {
                  y.container.removeClass(y.classNames.join(" ")).removeAttr("style"), y.wrapper.removeAttr("style"), y.slides && y.slides.length && y.slides.removeClass([y.params.slideVisibleClass, y.params.slideActiveClass, y.params.slideNextClass, y.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"), y.paginationContainer && y.paginationContainer.length && y.paginationContainer.removeClass(y.params.paginationHiddenClass), y.bullets && y.bullets.length && y.bullets.removeClass(y.params.bulletActiveClass), y.params.prevButton && a(y.params.prevButton).removeClass(y.params.buttonDisabledClass), y.params.nextButton && a(y.params.nextButton).removeClass(y.params.buttonDisabledClass), y.params.scrollbar && y.scrollbar && (y.scrollbar.track && y.scrollbar.track.length && y.scrollbar.track.removeAttr("style"), y.scrollbar.drag && y.scrollbar.drag.length && y.scrollbar.drag.removeAttr("style"))
              }, y.destroy = function (e, a) {
                  y.detachEvents(), y.stopAutoplay(), y.params.scrollbar && y.scrollbar && y.params.scrollbarDraggable && y.scrollbar.disableDraggable(), y.params.loop && y.destroyLoop(), a && y.cleanupStyles(), y.disconnectObservers(), y.params.keyboardControl && y.disableKeyboardControl && y.disableKeyboardControl(), y.params.mousewheelControl && y.disableMousewheelControl && y.disableMousewheelControl(), y.params.a11y && y.a11y && y.a11y.destroy(), y.emit("onDestroy"), e !== !1 && (y = null)
              }, y.init(), y
          }
      };
      t.prototype = {
          isSafari: function () {
              var e = navigator.userAgent.toLowerCase();
              return e.indexOf("safari") >= 0 && e.indexOf("chrome") < 0 && e.indexOf("android") < 0
          }(),
          isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),
          isArray: function (e) {
              return "[object Array]" === Object.prototype.toString.apply(e)
          },
          browser: {
              ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
              ieTouch: window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1 || window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1
          },
          device: function () {
              var e = navigator.userAgent, a = e.match(/(Android);?[\s\/]+([\d.]+)?/),
                  t = e.match(/(iPad).*OS\s([\d_]+)/), s = e.match(/(iPod)(.*OS\s([\d_]+))?/),
                  r = !t && e.match(/(iPhone\sOS)\s([\d_]+)/);
              return {ios: t || r || s, android: a}
          }(),
          support: {
              touch: window.Modernizr && Modernizr.touch === !0 || function () {
                  return !!("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch)
              }(), transforms3d: window.Modernizr && Modernizr.csstransforms3d === !0 || function () {
                  var e = document.createElement("div").style;
                  return "webkitPerspective" in e || "MozPerspective" in e || "OPerspective" in e || "MsPerspective" in e || "perspective" in e
              }(), flexbox: function () {
                  for (var e = document.createElement("div").style, a = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "), t = 0; t < a.length; t++) if (a[t] in e) return !0
              }(), observer: function () {
                  return "MutationObserver" in window || "WebkitMutationObserver" in window
              }()
          },
          plugins: {}
      };
      for (var s = ["jQuery", "Zepto", "Dom7"], r = 0; r < s.length; r++) window[s[r]] && e(window[s[r]]);
      var i;
      i = "undefined" == typeof Dom7 ? window.Dom7 || window.Zepto || window.jQuery : Dom7, i && ("transitionEnd" in i.fn || (i.fn.transitionEnd = function (e) {
          function a(i) {
              if (i.target === this) for (e.call(this, i), t = 0; t < s.length; t++) r.off(s[t], a)
          }
  
          var t, s = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"],
              r = this;
          if (e) for (t = 0; t < s.length; t++) r.on(s[t], a);
          return this
      }), "transform" in i.fn || (i.fn.transform = function (e) {
          for (var a = 0; a < this.length; a++) {
              var t = this[a].style;
              t.webkitTransform = t.MsTransform = t.msTransform = t.MozTransform = t.OTransform = t.transform = e
          }
          return this
      }), "transition" in i.fn || (i.fn.transition = function (e) {
          "string" != typeof e && (e += "ms");
          for (var a = 0; a < this.length; a++) {
              var t = this[a].style;
              t.webkitTransitionDuration = t.MsTransitionDuration = t.msTransitionDuration = t.MozTransitionDuration = t.OTransitionDuration = t.transitionDuration = e
          }
          return this
      })), window.Swiper = t
  }(), "undefined" != typeof module ? module.exports = window.Swiper : "function" == typeof define && define.amd && define([], function () {
      "use strict";
      return window.Swiper
  });
  //# sourceMappingURL=maps/swiper.jquery.min.js.map
  
  /*jquery.lazyload.min.js*/
  /*!
   * Lazy Load - jQuery plugin for lazy loading images
   *
   * Copyright (c) 2007-2015 Mika Tuupola
   *
   * Licensed under the MIT license:
   *   http://www.opensource.org/licenses/mit-license.php
   *
   * Project home:
   *   http://www.appelsiini.net/projects/lazyload
   *
   * Version:  1.9.7
   *
   */
  var lazyloadbg_set = $('input[name=lazyloadbg]').val(),
      lazyloadbg = lazyloadbg_set ? lazyloadbg_set : M['tem'] + '/min/img/loading.gif',
      lazyloadbg_base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC";
  if (!!window.ActiveXObject || "ActiveXObject" in window || ucBro || lazyloadbg == 'base64') lazyloadbg = lazyloadbg_base64;
  (function ($, window, document, undefined) {
      var $window = $(window);
  
      $.fn.lazyload = function (options) {
          var elements = this;
          var $container;
          var settings = {
              threshold: 30,
              failure_limit: 0,
              event: "scroll",
              effect: "fadeIn",
              effect_speed: null,
              container: window,
              data_attribute: "original",
              data_srcset: 'srcset',
              skip_invisible: true,
              appear: null,
              load: null,
              placeholder: lazyloadbg
          };
  
          function update() {
              var counter = 0;
  
              elements.each(function () {
                  var $this = $(this);
                  if (settings.skip_invisible && !$this.is(":visible")) {
                      return;
                  }
                  if ($.abovethetop(this, settings) ||
                      $.leftofbegin(this, settings)) {
                      /* Nothing. */
                  } else if (!$.belowthefold(this, settings) &&
                      !$.rightoffold(this, settings)) {
                      $this.trigger("appear");
                      /* if we found an image we'll load, reset the counter */
                      counter = 0;
                  } else {
                      if (++counter > settings.failure_limit) {
                          return false;
                      }
                  }
              });
  
          }
  
          if (options) {
              /* Maintain BC for a couple of versions. */
              if (undefined !== options.failurelimit) {
                  options.failure_limit = options.failurelimit;
                  delete options.failurelimit;
              }
              if (undefined !== options.effectspeed) {
                  options.effect_speed = options.effectspeed;
                  delete options.effectspeed;
              }
  
              $.extend(settings, options);
          }
  
          /* Cache container as jQuery as object. */
          $container = (settings.container === undefined ||
              settings.container === window) ? $window : $(settings.container);
  
          /* Fire one scroll event per scroll. Not one scroll event per image. */
          if (0 === settings.event.indexOf("scroll")) {
              $container.on(settings.event, function () {
                  return update();
              });
          }
          if (settings.placeholder == 'base64') settings.placeholder = lazyloadbg_base64;
          var placeholder_ok = settings.placeholder != lazyloadbg_base64 ? 1 : 0;
          this.each(function () {
              var self = this;
              var $self = $(self);
              self.loaded = false;
  
              /* If no src attribute given use data:uri. */
              if ($self.attr("src") === undefined || $self.attr("src") === false) {
                  if ($self.is("img")) {
                      $self.attr("src", settings.placeholder);
                      if (placeholder_ok) $self.addClass('imgload');
                  }
              }
  
              /* When appear is triggered load original image. */
              $self.one("appear", function () {
                  if (!this.loaded) {
                      if (settings.appear) {
                          var elements_left = elements.length;
                          settings.appear.call(self, elements_left, settings);
                      }
                      var original = $self.attr("data-" + settings.data_attribute),
                          srcset = $self.attr("data-" + settings.data_srcset);
                      $("<img />")
                          .one("load", function () {
                              $self.hide();
                              if ($self.is("img")/* || $self.is("source") || $self.is("video") || $self.is("audio") || $self.is("iframe") || $self.is("script") || $self.is("link")*/) {
                                  $self.attr("src", original);
                                  if (srcset) $self.attr("srcset", srcset);
                              } else {
                                  $self.css("background-image", "url('" + original + "')");
                                  if (srcset) $self.css("background-image", "-webkit-image-set(" + srcset + ")");
                              }
                              $self[settings.effect](settings.effect_speed);
                              $self.one('load', function () {
                                  $self.removeClass('imgload');
                              });
  
                              self.loaded = true;
  
                              /* Remove image from array so it is not looped next time. */
                              var temp = $.grep(elements, function (element) {
                                  return !element.loaded;
                              });
                              elements = $(temp);
  
                              if (settings.load) {
                                  var elements_left = elements.length;
                                  settings.load.call(self, elements_left, settings);
                              }
                          }).attr({src: original, srcset: srcset}).removeClass('imgload');
                  }
              });
  
              /* When wanted event is triggered load original image */
              /* by triggering appear.                              */
              if (0 !== settings.event.indexOf("scroll")) {
                  $self.on(settings.event, function () {
                      if (!self.loaded) {
                          $self.trigger("appear");
                      }
                  });
              }
          });
  
          /* Check if something appears when window is resized. */
          $window.on("resize", function () {
              update();
          });
  
          /* With IOS5 force loading images when navigating with back button. */
          /* Non optimal workaround. */
          if ((/(?:iphone|ipod|ipad).*os 5/gi).test(navigator.appVersion)) {
              $window.on("pageshow", function (event) {
                  if (event.originalEvent && event.originalEvent.persisted) {
                      elements.each(function () {
                          $(this).trigger("appear");
                      });
                  }
              });
          }
  
          /* Force initial check if images should appear. */
          $(document).ready(function () {
              update();
          });
  
          return this;
      };
  
      /* Convenience methods in jQuery namespace.           */
      /* Use as  $.belowthefold(element, {threshold : 100, container : window}) */
  
      $.belowthefold = function (element, settings) {
          var fold;
  
          if (settings.container === undefined || settings.container === window) {
              fold = (window.innerHeight ? window.innerHeight : $window.height()) + $window.scrollTop();
          } else {
              fold = $(settings.container).offset().top + $(settings.container).height();
          }
  
          return fold <= $(element).offset().top - settings.threshold;
      };
  
      $.rightoffold = function (element, settings) {
          var fold;
  
          if (settings.container === undefined || settings.container === window) {
              fold = $window.width() + $window.scrollLeft();
          } else {
              fold = $(settings.container).offset().left + $(settings.container).width();
          }
  
          return fold <= $(element).offset().left - settings.threshold;
      };
  
      $.abovethetop = function (element, settings) {
          var fold;
  
          if (settings.container === undefined || settings.container === window) {
              fold = $window.scrollTop();
          } else {
              fold = $(settings.container).offset().top;
          }
  
          return fold >= $(element).offset().top + settings.threshold + $(element).height();
      };
  
      $.leftofbegin = function (element, settings) {
          var fold;
  
          if (settings.container === undefined || settings.container === window) {
              fold = $window.scrollLeft();
          } else {
              fold = $(settings.container).offset().left;
          }
  
          return fold >= $(element).offset().left + settings.threshold + $(element).width();
      };
  
      $.inviewport = function (element, settings) {
          return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) &&
              !$.belowthefold(element, settings) && !$.abovethetop(element, settings);
      };
  
      /* Custom selectors for your convenience.   */
      /* Use as $("img:below-the-fold").something() or */
      /* $("img").filter(":below-the-fold").something() which is faster */
  
      $.extend($.expr[":"], {
          "below-the-fold": function (a) {
              return $.belowthefold(a, {threshold: 0});
          },
          "above-the-top": function (a) {
              return !$.belowthefold(a, {threshold: 0});
          },
          "right-of-screen": function (a) {
              return $.rightoffold(a, {threshold: 0});
          },
          "left-of-screen": function (a) {
              return !$.rightoffold(a, {threshold: 0});
          },
          "in-viewport": function (a) {
              return $.inviewport(a, {threshold: 0});
          },
          /* Maintain BC for couple of versions. */
          "above-the-fold": function (a) {
              return !$.belowthefold(a, {threshold: 0});
          },
          "right-of-fold": function (a) {
              return $.rightoffold(a, {threshold: 0});
          },
          "left-of-fold": function (a) {
              return !$.rightoffold(a, {threshold: 0});
          }
      });
  
  })(jQuery, window, document);
  
  /*lightgallery-all.min.js*/
  /*! lightgallery - v1.2.22 - 2016-07-20
  * http://sachinchoolur.github.io/lightGallery/
  * Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */
  !function (a, b, c, d) {
      "use strict";
  
      function e(b, d) {
          if (this.el = b, this.$el = a(b), this.s = a.extend({}, f, d), this.s.dynamic && "undefined" !== this.s.dynamicEl && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) throw"When using dynamic mode, you must also define dynamicEl as an Array.";
          return this.modules = {}, this.lGalleryOn = !1, this.lgBusy = !1, this.hideBartimeout = !1, this.isTouch = "ontouchstart" in c.documentElement, this.s.slideEndAnimatoin && (this.s.hideControlOnEnd = !1), this.s.dynamic ? this.$items = this.s.dynamicEl : "this" === this.s.selector ? this.$items = this.$el : "" !== this.s.selector ? this.s.selectWithin ? this.$items = a(this.s.selectWithin).find(this.s.selector) : this.$items = this.$el.find(a(this.s.selector)) : this.$items = this.$el.children(), this.$slide = "", this.$outer = "", this.init(), this
      }
  
      var f = {
          mode: "lg-slide",
          cssEasing: "ease",
          easing: "linear",
          speed: 600,
          height: "100%",
          width: "100%",
          addClass: "",
          startClass: "lg-start-zoom",
          backdropDuration: 150,
          hideBarsDelay: 6e3,
          useLeft: !1,
          closable: !0,
          loop: !0,
          escKey: !0,
          keyPress: !0,
          controls: !0,
          slideEndAnimatoin: !0,
          hideControlOnEnd: !1,
          mousewheel: !0,
          getCaptionFromTitleOrAlt: !0,
          appendSubHtmlTo: ".lg-sub-html",
          subHtmlSelectorRelative: !1,
          preload: 1,
          showAfterLoad: !0,
          selector: "",
          selectWithin: "",
          nextHtml: "",
          prevHtml: "",
          index: !1,
          iframeMaxWidth: "100%",
          download: !0,
          counter: !0,
          appendCounterTo: ".lg-toolbar",
          swipeThreshold: 50,
          enableSwipe: !0,
          enableDrag: !0,
          dynamic: !1,
          dynamicEl: [],
          galleryId: 1
      };
      e.prototype.init = function () {
          var c = this;
          c.s.preload > c.$items.length && (c.s.preload = c.$items.length);
          var d = b.location.hash;
          d.indexOf("lg=" + this.s.galleryId) > 0 && (c.index = parseInt(d.split("&slide=")[1], 10), a("body").addClass("lg-from-hash"), a("body").hasClass("lg-on") || (setTimeout(function () {
              c.build(c.index)
          }), a("body").addClass("lg-on"))), c.s.dynamic ? (c.$el.trigger("onBeforeOpen.lg"), c.index = c.s.index || 0, a("body").hasClass("lg-on") || setTimeout(function () {
              c.build(c.index), a("body").addClass("lg-on")
          })) : c.$items.on("click.lgcustom", function (b) {
              try {
                  b.preventDefault(), b.preventDefault()
              } catch (a) {
                  b.returnValue = !1
              }
              c.$el.trigger("onBeforeOpen.lg"), c.index = c.s.index || c.$items.index(this), a("body").hasClass("lg-on") || (c.build(c.index), a("body").addClass("lg-on"))
          })
      }, e.prototype.build = function (b) {
          var c = this;
          c.structure(), a.each(a.fn.lightGallery.modules, function (b) {
              c.modules[b] = new a.fn.lightGallery.modules[b](c.el)
          }), c.slide(b, !1, !1), c.s.keyPress && c.keyPress(), c.$items.length > 1 && (c.arrow(), setTimeout(function () {
              c.enableDrag(), c.enableSwipe()
          }, 50), c.s.mousewheel && c.mousewheel()), c.counter(), c.closeGallery(), c.$el.trigger("onAfterOpen.lg")
      }, e.prototype.structure = function () {
          var c, d = "", e = "", f = 0, g = "", h = this;
          for (a("body").append('<div class="lg-backdrop"></div>'), a(".lg-backdrop").css("transition-duration", this.s.backdropDuration + "ms"), f = 0; f < this.$items.length; f++) d += '<div class="lg-item"></div>';
          if (this.s.controls && this.$items.length > 1 && (e = '<div class="lg-actions"><div class="lg-prev lg-icon">' + this.s.prevHtml + '</div><div class="lg-next lg-icon">' + this.s.nextHtml + "</div></div>"), ".lg-sub-html" === this.s.appendSubHtmlTo && (g = '<div class="lg-sub-html"></div>'), c = '<div class="lg-outer ' + this.s.addClass + " " + this.s.startClass + '"><div class="lg" style="width:' + this.s.width + "; height:" + this.s.height + '"><div class="lg-inner">' + d + '</div><div class="lg-toolbar group"><span class="lg-close lg-icon"></span></div>' + e + g + "</div></div>", a("body").append(c), this.$outer = a(".lg-outer"), this.$slide = this.$outer.find(".lg-item"), this.s.useLeft ? (this.$outer.addClass("lg-use-left"), this.s.mode = "lg-slide") : this.$outer.addClass("lg-use-css3"), h.setTop(), a(b).on("resize.lg orientationchange.lg", function () {
                  setTimeout(function () {
                      h.setTop()
                  }, 100)
              }), this.$slide.eq(this.index).addClass("lg-current"), this.doCss() ? this.$outer.addClass("lg-css3") : (this.$outer.addClass("lg-css"), this.s.speed = 0), this.$outer.addClass(this.s.mode), this.s.enableDrag && this.$items.length > 1 && this.$outer.addClass("lg-grab"), this.s.showAfterLoad && this.$outer.addClass("lg-show-after-load"), this.doCss()) {
              var i = this.$outer.find(".lg-inner");
              i.css("transition-timing-function", this.s.cssEasing), i.css("transition-duration", this.s.speed + "ms")
          }
          a(".lg-backdrop").addClass("in"), setTimeout(function () {
              h.$outer.addClass("lg-visible")
          }, this.s.backdropDuration), this.s.download && this.$outer.find(".lg-toolbar").append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'), this.prevScrollTop = a(b).scrollTop()
      }, e.prototype.setTop = function () {
          if ("100%" !== this.s.height) {
              var c = a(b).height(), d = (c - parseInt(this.s.height, 10)) / 2, e = this.$outer.find(".lg");
              c >= parseInt(this.s.height, 10) ? e.css("top", d + "px") : e.css("top", "0px")
          }
      }, e.prototype.doCss = function () {
          var a = function () {
              var a = ["transition", "MozTransition", "WebkitTransition", "OTransition", "msTransition", "KhtmlTransition"],
                  b = c.documentElement, d = 0;
              for (d = 0; d < a.length; d++) if (a[d] in b.style) return !0
          };
          return !!a()
      }, e.prototype.isVideo = function (a, b) {
          var c;
          if (c = this.s.dynamic ? this.s.dynamicEl[b].html : this.$items.eq(b).attr("data-html"), !a && c) return {html5: !0};
          var d = a.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),
              e = a.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),
              f = a.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),
              g = a.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
          return d ? {youtube: d} : e ? {vimeo: e} : f ? {dailymotion: f} : g ? {vk: g} : void 0
      }, e.prototype.counter = function () {
          this.s.counter && a(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">' + (parseInt(this.index, 10) + 1) + '</span> / <span id="lg-counter-all">' + this.$items.length + "</span></div>")
      }, e.prototype.addHtml = function (b) {
          var c, d, e = null;
          if (this.s.dynamic ? this.s.dynamicEl[b].subHtmlUrl ? c = this.s.dynamicEl[b].subHtmlUrl : e = this.s.dynamicEl[b].subHtml : (d = this.$items.eq(b), d.attr("data-sub-html-url") ? c = d.attr("data-sub-html-url") : (e = d.attr("data-sub-html"), this.s.getCaptionFromTitleOrAlt && !e && (e = d.attr("title") || d.find("img").first().attr("alt")))), !c) if ("undefined" != typeof e && null !== e) {
              var f = e.substring(0, 1);
              "." !== f && "#" !== f || (e = this.s.subHtmlSelectorRelative && !this.s.dynamic ? d.find(e).html() : a(e).html())
          } else e = "";
          ".lg-sub-html" === this.s.appendSubHtmlTo ? c ? this.$outer.find(this.s.appendSubHtmlTo).load(c) : this.$outer.find(this.s.appendSubHtmlTo).html(e) : c ? this.$slide.eq(b).load(c) : this.$slide.eq(b).append(e), "undefined" != typeof e && null !== e && ("" === e ? this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html") : this.$outer.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")), this.$el.trigger("onAfterAppendSubHtml.lg", [b])
      }, e.prototype.preload = function (a) {
          var b = 1, c = 1;
          for (b = 1; b <= this.s.preload && !(b >= this.$items.length - a); b++) this.loadContent(a + b, !1, 0);
          for (c = 1; c <= this.s.preload && !(a - c < 0); c++) this.loadContent(a - c, !1, 0)
      }, e.prototype.loadContent = function (c, d, e) {
          var f, g, h, i, j, k, l = this, m = !1, n = function (c) {
              for (var d = [], e = [], f = 0; f < c.length; f++) {
                  var h = c[f].split(" ");
                  "" === h[0] && h.splice(0, 1), e.push(h[0]), d.push(h[1])
              }
              for (var i = a(b).width(), j = 0; j < d.length; j++) if (parseInt(d[j], 10) > i) {
                  g = e[j];
                  break
              }
          };
          if (l.s.dynamic) {
              if (l.s.dynamicEl[c].poster && (m = !0, h = l.s.dynamicEl[c].poster), k = l.s.dynamicEl[c].html, g = l.s.dynamicEl[c].src, l.s.dynamicEl[c].responsive) {
                  var o = l.s.dynamicEl[c].responsive.split(",");
                  n(o)
              }
              i = l.s.dynamicEl[c].srcset, j = l.s.dynamicEl[c].sizes
          } else {
              if (l.$items.eq(c).attr("data-poster") && (m = !0, h = l.$items.eq(c).attr("data-poster")), k = l.$items.eq(c).attr("data-html"), g = l.$items.eq(c).attr("href") || l.$items.eq(c).attr("data-src"), l.$items.eq(c).attr("data-responsive")) {
                  var p = l.$items.eq(c).attr("data-responsive").split(",");
                  n(p)
              }
              i = l.$items.eq(c).attr("data-srcset"), j = l.$items.eq(c).attr("data-sizes")
          }
          var q = !1;
          l.s.dynamic ? l.s.dynamicEl[c].iframe && (q = !0) : "true" === l.$items.eq(c).attr("data-iframe") && (q = !0);
          var r = l.isVideo(g, c);
          if (!l.$slide.eq(c).hasClass("lg-loaded")) {
              if (q) l.$slide.eq(c).prepend('<div class="lg-video-cont" style="max-width:' + l.s.iframeMaxWidth + '"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="' + g + '"  allowfullscreen="true"></iframe></div></div>'); else if (m) {
                  var s = "";
                  s = r && r.youtube ? "lg-has-youtube" : r && r.vimeo ? "lg-has-vimeo" : "lg-has-html5", l.$slide.eq(c).prepend('<div class="lg-video-cont ' + s + ' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="' + h + '" /></div></div>')
              } else r ? (l.$slide.eq(c).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'), l.$el.trigger("hasVideo.lg", [c, g, k])) : l.$slide.eq(c).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="' + g + '" /></div>');
              if (l.$el.trigger("onAferAppendSlide.lg", [c]), f = l.$slide.eq(c).find(".lg-object"), j && f.attr("sizes", j), i) {
                  f.attr("srcset", i);
                  try {
                      picturefill({elements: [f[0]]})
                  } catch (a) {
                      console.error("Make sure you have included Picturefill version 2")
                  }
              }
              ".lg-sub-html" !== this.s.appendSubHtmlTo && l.addHtml(c), l.$slide.eq(c).addClass("lg-loaded")
          }
          l.$slide.eq(c).find(".lg-object").on("load.lg error.lg", function () {
              var b = 0;
              e && !a("body").hasClass("lg-from-hash") && (b = e), setTimeout(function () {
                  l.$slide.eq(c).addClass("lg-complete"), l.$el.trigger("onSlideItemLoad.lg", [c, e || 0])
              }, b)
          }), r && r.html5 && !m && l.$slide.eq(c).addClass("lg-complete"), d === !0 && (l.$slide.eq(c).hasClass("lg-complete") ? l.preload(c) : l.$slide.eq(c).find(".lg-object").on("load.lg error.lg", function () {
              l.preload(c)
          }))
      }, e.prototype.slide = function (b, c, d) {
          var e = this.$outer.find(".lg-current").index(), f = this;
          if (!f.lGalleryOn || e !== b) {
              var g = this.$slide.length, h = f.lGalleryOn ? this.s.speed : 0, i = !1, j = !1;
              if (!f.lgBusy) {
                  if (this.s.download) {
                      var k;
                      k = f.s.dynamic ? f.s.dynamicEl[b].downloadUrl !== !1 && (f.s.dynamicEl[b].downloadUrl || f.s.dynamicEl[b].src) : "false" !== f.$items.eq(b).attr("data-download-url") && (f.$items.eq(b).attr("data-download-url") || f.$items.eq(b).attr("href") || f.$items.eq(b).attr("data-src")), k ? (a("#lg-download").attr("href", k), f.$outer.removeClass("lg-hide-download")) : f.$outer.addClass("lg-hide-download")
                  }
                  if (this.$el.trigger("onBeforeSlide.lg", [e, b, c, d]), f.lgBusy = !0, clearTimeout(f.hideBartimeout), ".lg-sub-html" === this.s.appendSubHtmlTo && setTimeout(function () {
                          f.addHtml(b)
                      }, h), this.arrowDisable(b), c) {
                      var l = b - 1, m = b + 1;
                      0 === b && e === g - 1 ? (m = 0, l = g - 1) : b === g - 1 && 0 === e && (m = 0, l = g - 1), this.$slide.removeClass("lg-prev-slide lg-current lg-next-slide"), f.$slide.eq(l).addClass("lg-prev-slide"), f.$slide.eq(m).addClass("lg-next-slide"), f.$slide.eq(b).addClass("lg-current")
                  } else f.$outer.addClass("lg-no-trans"), this.$slide.removeClass("lg-prev-slide lg-next-slide"), b < e ? (j = !0, 0 !== b || e !== g - 1 || d || (j = !1, i = !0)) : b > e && (i = !0, b !== g - 1 || 0 !== e || d || (j = !0, i = !1)), j ? (this.$slide.eq(b).addClass("lg-prev-slide"), this.$slide.eq(e).addClass("lg-next-slide")) : i && (this.$slide.eq(b).addClass("lg-next-slide"), this.$slide.eq(e).addClass("lg-prev-slide")), setTimeout(function () {
                      f.$slide.removeClass("lg-current"), f.$slide.eq(b).addClass("lg-current"), f.$outer.removeClass("lg-no-trans")
                  }, 50);
                  f.lGalleryOn ? (setTimeout(function () {
                      f.loadContent(b, !0, 0)
                  }, this.s.speed + 50), setTimeout(function () {
                      f.lgBusy = !1, f.$el.trigger("onAfterSlide.lg", [e, b, c, d])
                  }, this.s.speed)) : (f.loadContent(b, !0, f.s.backdropDuration), f.lgBusy = !1, f.$el.trigger("onAfterSlide.lg", [e, b, c, d])), f.lGalleryOn = !0, this.s.counter && a("#lg-counter-current").text(b + 1)
              }
          }
      }, e.prototype.goToNextSlide = function (a) {
          var b = this;
          b.lgBusy || (b.index + 1 < b.$slide.length ? (b.index++, b.$el.trigger("onBeforeNextSlide.lg", [b.index]), b.slide(b.index, a, !1)) : b.s.loop ? (b.index = 0, b.$el.trigger("onBeforeNextSlide.lg", [b.index]), b.slide(b.index, a, !1)) : b.s.slideEndAnimatoin && (b.$outer.addClass("lg-right-end"), setTimeout(function () {
              b.$outer.removeClass("lg-right-end")
          }, 400)))
      }, e.prototype.goToPrevSlide = function (a) {
          var b = this;
          b.lgBusy || (b.index > 0 ? (b.index--, b.$el.trigger("onBeforePrevSlide.lg", [b.index, a]), b.slide(b.index, a, !1)) : b.s.loop ? (b.index = b.$items.length - 1, b.$el.trigger("onBeforePrevSlide.lg", [b.index, a]), b.slide(b.index, a, !1)) : b.s.slideEndAnimatoin && (b.$outer.addClass("lg-left-end"), setTimeout(function () {
              b.$outer.removeClass("lg-left-end")
          }, 400)))
      }, e.prototype.keyPress = function () {
          var c = this;
          this.$items.length > 1 && a(b).on("keyup.lg", function (a) {
              c.$items.length > 1 && (37 === a.keyCode && (a.preventDefault(), c.goToPrevSlide()), 39 === a.keyCode && (a.preventDefault(), c.goToNextSlide()))
          }), a(b).on("keydown.lg", function (a) {
              c.s.escKey === !0 && 27 === a.keyCode && (a.preventDefault(), c.$outer.hasClass("lg-thumb-open") ? c.$outer.removeClass("lg-thumb-open") : c.destroy())
          })
      }, e.prototype.arrow = function () {
          var a = this;
          this.$outer.find(".lg-prev").on("click.lg", function () {
              a.goToPrevSlide()
          }), this.$outer.find(".lg-next").on("click.lg", function () {
              a.goToNextSlide()
          })
      }, e.prototype.arrowDisable = function (a) {
          !this.s.loop && this.s.hideControlOnEnd && (a + 1 < this.$slide.length ? this.$outer.find(".lg-next").removeAttr("disabled").removeClass("disabled") : this.$outer.find(".lg-next").attr("disabled", "disabled").addClass("disabled"), a > 0 ? this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled") : this.$outer.find(".lg-prev").attr("disabled", "disabled").addClass("disabled"))
      }, e.prototype.setTranslate = function (a, b, c) {
          this.s.useLeft ? a.css("left", b) : a.css({transform: "translate3d(" + b + "px, " + c + "px, 0px)"})
      }, e.prototype.touchMove = function (b, c) {
          var d = c - b;
          Math.abs(d) > 15 && (this.$outer.addClass("lg-dragging"), this.setTranslate(this.$slide.eq(this.index), d, 0), this.setTranslate(a(".lg-prev-slide"), -this.$slide.eq(this.index).width() + d, 0), this.setTranslate(a(".lg-next-slide"), this.$slide.eq(this.index).width() + d, 0))
      }, e.prototype.touchEnd = function (a) {
          var b = this;
          "lg-slide" !== b.s.mode && b.$outer.addClass("lg-slide"), this.$slide.not(".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity", "0"), setTimeout(function () {
              b.$outer.removeClass("lg-dragging"), a < 0 && Math.abs(a) > b.s.swipeThreshold ? b.goToNextSlide(!0) : a > 0 && Math.abs(a) > b.s.swipeThreshold ? b.goToPrevSlide(!0) : Math.abs(a) < 5 && b.$el.trigger("onSlideClick.lg"), b.$slide.removeAttr("style")
          }), setTimeout(function () {
              b.$outer.hasClass("lg-dragging") || "lg-slide" === b.s.mode || b.$outer.removeClass("lg-slide")
          }, b.s.speed + 100)
      }, e.prototype.enableSwipe = function () {
          var a = this, b = 0, c = 0, d = !1;
          a.s.enableSwipe && a.isTouch && a.doCss() && (a.$slide.on("touchstart.lg", function (c) {
              a.$outer.hasClass("lg-zoomed") || a.lgBusy || (c.preventDefault(), a.manageSwipeClass(), b = c.originalEvent.targetTouches[0].pageX)
          }), a.$slide.on("touchmove.lg", function (e) {
              a.$outer.hasClass("lg-zoomed") || (e.preventDefault(), c = e.originalEvent.targetTouches[0].pageX, a.touchMove(b, c), d = !0)
          }), a.$slide.on("touchend.lg", function () {
              a.$outer.hasClass("lg-zoomed") || (d ? (d = !1, a.touchEnd(c - b)) : a.$el.trigger("onSlideClick.lg"))
          }))
      }, e.prototype.enableDrag = function () {
          var c = this, d = 0, e = 0, f = !1, g = !1;
          c.s.enableDrag && !c.isTouch && c.doCss() && (c.$slide.on("mousedown.lg", function (b) {
              c.$outer.hasClass("lg-zoomed") || (a(b.target).hasClass("lg-object") || a(b.target).hasClass("lg-video-play")) && (b.preventDefault(), c.lgBusy || (c.manageSwipeClass(), d = b.pageX, f = !0, c.$outer.scrollLeft += 1, c.$outer.scrollLeft -= 1, c.$outer.removeClass("lg-grab").addClass("lg-grabbing"), c.$el.trigger("onDragstart.lg")))
          }), a(b).on("mousemove.lg", function (a) {
              f && (g = !0, e = a.pageX, c.touchMove(d, e), c.$el.trigger("onDragmove.lg"))
          }), a(b).on("mouseup.lg", function (b) {
              g ? (g = !1, c.touchEnd(e - d), c.$el.trigger("onDragend.lg")) : (a(b.target).hasClass("lg-object") || a(b.target).hasClass("lg-video-play")) && c.$el.trigger("onSlideClick.lg"), f && (f = !1, c.$outer.removeClass("lg-grabbing").addClass("lg-grab"))
          }))
      }, e.prototype.manageSwipeClass = function () {
          var a = this.index + 1, b = this.index - 1, c = this.$slide.length;
          this.s.loop && (0 === this.index ? b = c - 1 : this.index === c - 1 && (a = 0)), this.$slide.removeClass("lg-next-slide lg-prev-slide"), b > -1 && this.$slide.eq(b).addClass("lg-prev-slide"), this.$slide.eq(a).addClass("lg-next-slide")
      }, e.prototype.mousewheel = function () {
          var a = this;
          a.$outer.on("mousewheel.lg", function (b) {
              b.deltaY && (b.deltaY > 0 ? a.goToPrevSlide() : a.goToNextSlide(), b.preventDefault())
          })
      }, e.prototype.closeGallery = function () {
          var b = this, c = !1;
          this.$outer.find(".lg-close").on("click.lg", function () {
              b.destroy()
          }), b.s.closable && (b.$outer.on("mousedown.lg", function (b) {
              c = !!(a(b.target).is(".lg-outer") || a(b.target).is(".lg-item ") || a(b.target).is(".lg-img-wrap"))
          }), b.$outer.on("mouseup.lg", function (d) {
              (a(d.target).is(".lg-outer") || a(d.target).is(".lg-item ") || a(d.target).is(".lg-img-wrap") && c) && (b.$outer.hasClass("lg-dragging") || b.destroy())
          }))
      }, e.prototype.destroy = function (c) {
          var d = this;
          c || d.$el.trigger("onBeforeClose.lg"), a(b).scrollTop(d.prevScrollTop), c && (d.s.dynamic || this.$items.off("click.lg click.lgcustom"), a.removeData(d.el, "lightGallery")), this.$el.off(".lg.tm"), a.each(a.fn.lightGallery.modules, function (a) {
              d.modules[a] && d.modules[a].destroy()
          }), this.lGalleryOn = !1, clearTimeout(d.hideBartimeout), this.hideBartimeout = !1, a(b).off(".lg"), a("body").removeClass("lg-on lg-from-hash"), d.$outer && d.$outer.removeClass("lg-visible"), a(".lg-backdrop").removeClass("in"), setTimeout(function () {
              d.$outer && d.$outer.remove(), a(".lg-backdrop").remove(), c || d.$el.trigger("onCloseAfter.lg")
          }, d.s.backdropDuration + 50)
      }, a.fn.lightGallery = function (b) {
          return this.each(function () {
              if (a.data(this, "lightGallery")) try {
                  a(this).data("lightGallery").init()
              } catch (a) {
                  console.error("lightGallery has not initiated properly")
              } else a.data(this, "lightGallery", new e(this, b))
          })
      }, a.fn.lightGallery.modules = {}
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {
          autoplay: !1,
          pause: 5e3,
          progressBar: !0,
          fourceAutoplay: !1,
          autoplayControls: !0,
          appendAutoplayControlsTo: ".lg-toolbar"
      }, f = function (b) {
          return this.core = a(b).data("lightGallery"), this.$el = a(b), !(this.core.$items.length < 2) && (this.core.s = a.extend({}, e, this.core.s), this.interval = !1, this.fromAuto = !0, this.canceledOnTouch = !1, this.fourceAutoplayTemp = this.core.s.fourceAutoplay, this.core.doCss() || (this.core.s.progressBar = !1), this.init(), this)
      };
      f.prototype.init = function () {
          var a = this;
          a.core.s.autoplayControls && a.controls(), a.core.s.progressBar && a.core.$outer.find(".lg").append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>'), a.progress(), a.core.s.autoplay && a.startlAuto(), a.$el.on("onDragstart.lg.tm touchstart.lg.tm", function () {
              a.interval && (a.cancelAuto(), a.canceledOnTouch = !0)
          }), a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm", function () {
              !a.interval && a.canceledOnTouch && (a.startlAuto(), a.canceledOnTouch = !1)
          })
      }, f.prototype.progress = function () {
          var a, b, c = this;
          c.$el.on("onBeforeSlide.lg.tm", function () {
              c.core.s.progressBar && c.fromAuto && (a = c.core.$outer.find(".lg-progress-bar"), b = c.core.$outer.find(".lg-progress"), c.interval && (b.removeAttr("style"), a.removeClass("lg-start"), setTimeout(function () {
                  b.css("transition", "width " + (c.core.s.speed + c.core.s.pause) + "ms ease 0s"), a.addClass("lg-start")
              }, 20))), c.fromAuto || c.core.s.fourceAutoplay || c.cancelAuto(), c.fromAuto = !1
          })
      }, f.prototype.controls = function () {
          var b = this, c = '<span class="lg-autoplay-button lg-icon"></span>';
          a(this.core.s.appendAutoplayControlsTo).append(c), b.core.$outer.find(".lg-autoplay-button").on("click.lg", function () {
              a(b.core.$outer).hasClass("lg-show-autoplay") ? (b.cancelAuto(), b.core.s.fourceAutoplay = !1) : b.interval || (b.startlAuto(), b.core.s.fourceAutoplay = b.fourceAutoplayTemp)
          })
      }, f.prototype.startlAuto = function () {
          var a = this;
          a.core.$outer.find(".lg-progress").css("transition", "width " + (a.core.s.speed + a.core.s.pause) + "ms ease 0s"), a.core.$outer.addClass("lg-show-autoplay"), a.core.$outer.find(".lg-progress-bar").addClass("lg-start"), a.interval = setInterval(function () {
              a.core.index + 1 < a.core.$items.length ? a.core.index++ : a.core.index = 0, a.fromAuto = !0, a.core.slide(a.core.index, !1, !1)
          }, a.core.s.speed + a.core.s.pause)
      }, f.prototype.cancelAuto = function () {
          clearInterval(this.interval), this.interval = !1, this.core.$outer.find(".lg-progress").removeAttr("style"), this.core.$outer.removeClass("lg-show-autoplay"), this.core.$outer.find(".lg-progress-bar").removeClass("lg-start")
      }, f.prototype.destroy = function () {
          this.cancelAuto(), this.core.$outer.find(".lg-progress-bar").remove()
      }, a.fn.lightGallery.modules.autoplay = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {fullScreen: !0}, f = function (b) {
          return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.init(), this
      };
      f.prototype.init = function () {
          var a = "";
          if (this.core.s.fullScreen) {
              if (!(c.fullscreenEnabled || c.webkitFullscreenEnabled || c.mozFullScreenEnabled || c.msFullscreenEnabled)) return;
              a = '<span class="lg-fullscreen lg-icon"></span>', this.core.$outer.find(".lg-toolbar").append(a), this.fullScreen()
          }
      }, f.prototype.requestFullscreen = function () {
          var a = c.documentElement;
          a.requestFullscreen ? a.requestFullscreen() : a.msRequestFullscreen ? a.msRequestFullscreen() : a.mozRequestFullScreen ? a.mozRequestFullScreen() : a.webkitRequestFullscreen && a.webkitRequestFullscreen()
      }, f.prototype.exitFullscreen = function () {
          c.exitFullscreen ? c.exitFullscreen() : c.msExitFullscreen ? c.msExitFullscreen() : c.mozCancelFullScreen ? c.mozCancelFullScreen() : c.webkitExitFullscreen && c.webkitExitFullscreen()
      }, f.prototype.fullScreen = function () {
          var b = this;
          a(c).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg", function () {
              b.core.$outer.toggleClass("lg-fullscreen-on")
          }), this.core.$outer.find(".lg-fullscreen").on("click.lg", function () {
              c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement || c.msFullscreenElement ? b.exitFullscreen() : b.requestFullscreen()
          })
      }, f.prototype.destroy = function () {
          this.exitFullscreen(), a(c).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")
      }, a.fn.lightGallery.modules.fullscreen = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {pager: !1}, f = function (b) {
          return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.core.s.pager && this.core.$items.length > 1 && this.init(), this
      };
      f.prototype.init = function () {
          var b, c, d, e = this, f = "";
          if (e.core.$outer.find(".lg").append('<div class="lg-pager-outer"></div>'), e.core.s.dynamic) for (var g = 0; g < e.core.s.dynamicEl.length; g++) f += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + e.core.s.dynamicEl[g].thumb + '" /></div></span>'; else e.core.$items.each(function () {
              f += e.core.s.exThumbImage ? '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + a(this).attr(e.core.s.exThumbImage) + '" /></div></span>' : '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + a(this).find("img").attr("src") + '" /></div></span>'
          });
          c = e.core.$outer.find(".lg-pager-outer"), c.html(f), b = e.core.$outer.find(".lg-pager-cont"), b.on("click.lg touchend.lg", function () {
              var b = a(this);
              e.core.index = b.index(), e.core.slide(e.core.index, !1, !1)
          }), c.on("mouseover.lg", function () {
              clearTimeout(d), c.addClass("lg-pager-hover")
          }), c.on("mouseout.lg", function () {
              d = setTimeout(function () {
                  c.removeClass("lg-pager-hover")
              })
          }), e.core.$el.on("onBeforeSlide.lg.tm", function (a, c, d) {
              b.removeClass("lg-pager-active"), b.eq(d).addClass("lg-pager-active")
          })
      }, f.prototype.destroy = function () {
      }, a.fn.lightGallery.modules.pager = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {
          thumbnail: !0,
          animateThumb: !0,
          currentPagerPosition: "middle",
          thumbWidth: 100,
          thumbContHeight: 100,
          thumbMargin: 5,
          exThumbImage: !1,
          showThumbByDefault: !0,
          toogleThumb: !0,
          pullCaptionUp: !0,
          enableThumbDrag: !0,
          enableThumbSwipe: !0,
          swipeThreshold: 50,
          loadYoutubeThumbnail: !0,
          youtubeThumbSize: 1,
          loadVimeoThumbnail: !0,
          vimeoThumbSize: "thumbnail_small",
          loadDailymotionThumbnail: !0
      }, f = function (b) {
          return this.core = a(b).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.$el = a(b), this.$thumbOuter = null, this.thumbOuterWidth = 0, this.thumbTotalWidth = this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin), this.thumbIndex = this.core.index, this.left = 0, this.init(), this
      };
      f.prototype.init = function () {
          var a = this;
          this.core.s.thumbnail && this.core.$items.length > 1 && (this.core.s.showThumbByDefault && setTimeout(function () {
              a.core.$outer.addClass("lg-thumb-open")
          }, 700), this.core.s.pullCaptionUp && this.core.$outer.addClass("lg-pull-caption-up"), this.build(), this.core.s.animateThumb ? (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss() && this.enableThumbDrag(), this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss() && this.enableThumbSwipe(), this.thumbClickable = !1) : this.thumbClickable = !0, this.toogle(), this.thumbkeyPress())
      }, f.prototype.build = function () {
          function c(a, b, c) {
              var d, h = e.core.isVideo(a, c) || {}, i = "";
              h.youtube || h.vimeo || h.dailymotion ? h.youtube ? d = e.core.s.loadYoutubeThumbnail ? "//img.youtube.com/vi/" + h.youtube[1] + "/" + e.core.s.youtubeThumbSize + ".jpg" : b : h.vimeo ? e.core.s.loadVimeoThumbnail ? (d = "//i.vimeocdn.com/video/error_" + g + ".jpg", i = h.vimeo[1]) : d = b : h.dailymotion && (d = e.core.s.loadDailymotionThumbnail ? "//www.dailymotion.com/thumbnail/video/" + h.dailymotion[1] : b) : d = b, f += '<div data-vimeo-id="' + i + '" class="lg-thumb-item" style="width:' + e.core.s.thumbWidth + "px; margin-right: " + e.core.s.thumbMargin + 'px"><img src="' + d + '" /></div>', i = ""
          }
  
          var d, e = this, f = "", g = "", h = '<div class="lg-thumb-outer"><div class="lg-thumb group"></div></div>';
          switch (this.core.s.vimeoThumbSize) {
              case"thumbnail_large":
                  g = "640";
                  break;
              case"thumbnail_medium":
                  g = "200x150";
                  break;
              case"thumbnail_small":
                  g = "100x75"
          }
          if (e.core.$outer.addClass("lg-has-thumb"), e.core.$outer.find(".lg").append(h), e.$thumbOuter = e.core.$outer.find(".lg-thumb-outer"), e.thumbOuterWidth = e.$thumbOuter.width(), e.core.s.animateThumb && e.core.$outer.find(".lg-thumb").css({
                  width: e.thumbTotalWidth + "px",
                  position: "relative"
              }), this.core.s.animateThumb && e.$thumbOuter.css("height", e.core.s.thumbContHeight + "px"), e.core.s.dynamic) for (var i = 0; i < e.core.s.dynamicEl.length; i++) c(e.core.s.dynamicEl[i].src, e.core.s.dynamicEl[i].thumb, i); else e.core.$items.each(function (b) {
              e.core.s.exThumbImage ? c(a(this).attr("href") || a(this).attr("data-src"), a(this).attr(e.core.s.exThumbImage), b) : c(a(this).attr("href") || a(this).attr("data-src"), a(this).find("img").attr("src"), b)
          });
          e.core.$outer.find(".lg-thumb").html(f), d = e.core.$outer.find(".lg-thumb-item"), d.each(function () {
              var b = a(this), c = b.attr("data-vimeo-id");
              c && a.getJSON("//www.vimeo.com/api/v2/video/" + c + ".json?callback=?", {format: "json"}, function (a) {
                  b.find("img").attr("src", a[0][e.core.s.vimeoThumbSize])
              })
          }), d.eq(e.core.index).addClass("active"), e.core.$el.on("onBeforeSlide.lg.tm", function () {
              d.removeClass("active"), d.eq(e.core.index).addClass("active")
          }), d.on("click.lg touchend.lg", function () {
              var b = a(this);
              setTimeout(function () {
                  (e.thumbClickable && !e.core.lgBusy || !e.core.doCss()) && (e.core.index = b.index(), e.core.slide(e.core.index, !1, !0))
              }, 50)
          }), e.core.$el.on("onBeforeSlide.lg.tm", function () {
              e.animateThumb(e.core.index)
          }), a(b).on("resize.lg.thumb orientationchange.lg.thumb", function () {
              setTimeout(function () {
                  e.animateThumb(e.core.index), e.thumbOuterWidth = e.$thumbOuter.width()
              }, 200)
          })
      }, f.prototype.setTranslate = function (a) {
          this.core.$outer.find(".lg-thumb").css({transform: "translate3d(-" + a + "px, 0px, 0px)"})
      }, f.prototype.animateThumb = function (a) {
          var b = this.core.$outer.find(".lg-thumb");
          if (this.core.s.animateThumb) {
              var c;
              switch (this.core.s.currentPagerPosition) {
                  case"left":
                      c = 0;
                      break;
                  case"middle":
                      c = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;
                      break;
                  case"right":
                      c = this.thumbOuterWidth - this.core.s.thumbWidth
              }
              this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * a - 1 - c, this.left > this.thumbTotalWidth - this.thumbOuterWidth && (this.left = this.thumbTotalWidth - this.thumbOuterWidth), this.left < 0 && (this.left = 0), this.core.lGalleryOn ? (b.hasClass("on") || this.core.$outer.find(".lg-thumb").css("transition-duration", this.core.s.speed + "ms"), this.core.doCss() || b.animate({left: -this.left + "px"}, this.core.s.speed)) : this.core.doCss() || b.css("left", -this.left + "px"), this.setTranslate(this.left)
          }
      }, f.prototype.enableThumbDrag = function () {
          var c = this, d = 0, e = 0, f = !1, g = !1, h = 0;
          c.$thumbOuter.addClass("lg-grab"), c.core.$outer.find(".lg-thumb").on("mousedown.lg.thumb", function (a) {
              c.thumbTotalWidth > c.thumbOuterWidth && (a.preventDefault(), d = a.pageX, f = !0, c.core.$outer.scrollLeft += 1, c.core.$outer.scrollLeft -= 1, c.thumbClickable = !1, c.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))
          }), a(b).on("mousemove.lg.thumb", function (a) {
              f && (h = c.left, g = !0, e = a.pageX, c.$thumbOuter.addClass("lg-dragging"), h -= e - d, h > c.thumbTotalWidth - c.thumbOuterWidth && (h = c.thumbTotalWidth - c.thumbOuterWidth), h < 0 && (h = 0), c.setTranslate(h))
          }), a(b).on("mouseup.lg.thumb", function () {
              g ? (g = !1, c.$thumbOuter.removeClass("lg-dragging"), c.left = h, Math.abs(e - d) < c.core.s.swipeThreshold && (c.thumbClickable = !0)) : c.thumbClickable = !0, f && (f = !1, c.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab"))
          })
      }, f.prototype.enableThumbSwipe = function () {
          var a = this, b = 0, c = 0, d = !1, e = 0;
          a.core.$outer.find(".lg-thumb").on("touchstart.lg", function (c) {
              a.thumbTotalWidth > a.thumbOuterWidth && (c.preventDefault(), b = c.originalEvent.targetTouches[0].pageX, a.thumbClickable = !1)
          }), a.core.$outer.find(".lg-thumb").on("touchmove.lg", function (f) {
              a.thumbTotalWidth > a.thumbOuterWidth && (f.preventDefault(), c = f.originalEvent.targetTouches[0].pageX, d = !0, a.$thumbOuter.addClass("lg-dragging"), e = a.left, e -= c - b, e > a.thumbTotalWidth - a.thumbOuterWidth && (e = a.thumbTotalWidth - a.thumbOuterWidth), e < 0 && (e = 0), a.setTranslate(e))
          }), a.core.$outer.find(".lg-thumb").on("touchend.lg", function () {
              a.thumbTotalWidth > a.thumbOuterWidth && d ? (d = !1, a.$thumbOuter.removeClass("lg-dragging"), Math.abs(c - b) < a.core.s.swipeThreshold && (a.thumbClickable = !0), a.left = e) : a.thumbClickable = !0
          })
      }, f.prototype.toogle = function () {
          var a = this;
          a.core.s.toogleThumb && (a.core.$outer.addClass("lg-can-toggle"), a.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>'), a.core.$outer.find(".lg-toogle-thumb").on("click.lg", function () {
              a.core.$outer.toggleClass("lg-thumb-open")
          }))
      }, f.prototype.thumbkeyPress = function () {
          var c = this;
          a(b).on("keydown.lg.thumb", function (a) {
              38 === a.keyCode ? (a.preventDefault(), c.core.$outer.addClass("lg-thumb-open")) : 40 === a.keyCode && (a.preventDefault(), c.core.$outer.removeClass("lg-thumb-open"))
          })
      }, f.prototype.destroy = function () {
          this.core.s.thumbnail && this.core.$items.length > 1 && (a(b).off("resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb"), this.$thumbOuter.remove(), this.core.$outer.removeClass("lg-has-thumb"))
      }, a.fn.lightGallery.modules.Thumbnail = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {
          videoMaxWidth: "855px",
          youtubePlayerParams: !1,
          vimeoPlayerParams: !1,
          dailymotionPlayerParams: !1,
          vkPlayerParams: !1,
          videojs: !1,
          videojsOptions: {}
      }, f = function (b) {
          return this.core = a(b).data("lightGallery"), this.$el = a(b), this.core.s = a.extend({}, e, this.core.s), this.videoLoaded = !1, this.init(), this
      };
      f.prototype.init = function () {
          var b = this;
          b.core.$el.on("hasVideo.lg.tm", function (a, c, d, e) {
              if (b.core.$slide.eq(c).find(".lg-video").append(b.loadVideo(d, "lg-object", !0, c, e)), e) if (b.core.s.videojs) try {
                  videojs(b.core.$slide.eq(c).find(".lg-html5").get(0), b.core.s.videojsOptions, function () {
                      b.videoLoaded || this.play()
                  })
              } catch (a) {
                  console.error("Make sure you have included videojs")
              } else b.core.$slide.eq(c).find(".lg-html5").get(0).play()
          }), b.core.$el.on("onAferAppendSlide.lg.tm", function (a, c) {
              b.core.$slide.eq(c).find(".lg-video-cont").css("max-width", b.core.s.videoMaxWidth), b.videoLoaded = !0
          });
          var c = function (a) {
              if (a.find(".lg-object").hasClass("lg-has-poster") && a.find(".lg-object").is(":visible")) if (a.hasClass("lg-has-video")) {
                  var c = a.find(".lg-youtube").get(0), d = a.find(".lg-vimeo").get(0),
                      e = a.find(".lg-dailymotion").get(0), f = a.find(".lg-html5").get(0);
                  if (c) c.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*"); else if (d) try {
                      $f(d).api("play")
                  } catch (a) {
                      console.error("Make sure you have included froogaloop2 js")
                  } else if (e) e.contentWindow.postMessage("play", "*"); else if (f) if (b.core.s.videojs) try {
                      videojs(f).play()
                  } catch (a) {
                      console.error("Make sure you have included videojs")
                  } else f.play();
                  a.addClass("lg-video-playing");
              } else {
                  a.addClass("lg-video-playing lg-has-video");
                  var g, h, i = function (c, d) {
                      if (a.find(".lg-video").append(b.loadVideo(c, "", !1, b.core.index, d)), d) if (b.core.s.videojs) try {
                          videojs(b.core.$slide.eq(b.core.index).find(".lg-html5").get(0), b.core.s.videojsOptions, function () {
                              this.play()
                          })
                      } catch (a) {
                          console.error("Make sure you have included videojs")
                      } else b.core.$slide.eq(b.core.index).find(".lg-html5").get(0).play()
                  };
                  b.core.s.dynamic ? (g = b.core.s.dynamicEl[b.core.index].src, h = b.core.s.dynamicEl[b.core.index].html, i(g, h)) : (g = b.core.$items.eq(b.core.index).attr("href") || b.core.$items.eq(b.core.index).attr("data-src"), h = b.core.$items.eq(b.core.index).attr("data-html"), i(g, h));
                  var j = a.find(".lg-object");
                  a.find(".lg-video").append(j), a.find(".lg-video-object").hasClass("lg-html5") || (a.removeClass("lg-complete"), a.find(".lg-video-object").on("load.lg error.lg", function () {
                      a.addClass("lg-complete")
                  }))
              }
          };
          b.core.doCss() && b.core.$items.length > 1 && (b.core.s.enableSwipe && b.core.isTouch || b.core.s.enableDrag && !b.core.isTouch) ? b.core.$el.on("onSlideClick.lg.tm", function () {
              var a = b.core.$slide.eq(b.core.index);
              c(a)
          }) : b.core.$slide.on("click.lg", function () {
              c(a(this))
          }), b.core.$el.on("onBeforeSlide.lg.tm", function (c, d, e) {
              var f = b.core.$slide.eq(d), g = f.find(".lg-youtube").get(0), h = f.find(".lg-vimeo").get(0),
                  i = f.find(".lg-dailymotion").get(0), j = f.find(".lg-vk").get(0), k = f.find(".lg-html5").get(0);
              if (g) g.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', "*"); else if (h) try {
                  $f(h).api("pause")
              } catch (a) {
                  console.error("Make sure you have included froogaloop2 js")
              } else if (i) i.contentWindow.postMessage("pause", "*"); else if (k) if (b.core.s.videojs) try {
                  videojs(k).pause()
              } catch (a) {
                  console.error("Make sure you have included videojs")
              } else k.pause();
              j && a(j).attr("src", a(j).attr("src").replace("&autoplay", "&noplay"));
              var l;
              l = b.core.s.dynamic ? b.core.s.dynamicEl[e].src : b.core.$items.eq(e).attr("href") || b.core.$items.eq(e).attr("data-src");
              var m = b.core.isVideo(l, e) || {};
              (m.youtube || m.vimeo || m.dailymotion || m.vk) && b.core.$outer.addClass("lg-hide-download")
          }), b.core.$el.on("onAfterSlide.lg.tm", function (a, c) {
              b.core.$slide.eq(c).removeClass("lg-video-playing")
          })
      }, f.prototype.loadVideo = function (b, c, d, e, f) {
          var g = "", h = 1, i = "", j = this.core.isVideo(b, e) || {};
          if (d && (h = this.videoLoaded ? 0 : 1), j.youtube) i = "?wmode=opaque&autoplay=" + h + "&enablejsapi=1", this.core.s.youtubePlayerParams && (i = i + "&" + a.param(this.core.s.youtubePlayerParams)), g = '<iframe class="lg-video-object lg-youtube ' + c + '" width="560" height="315" src="//www.youtube.com/embed/' + j.youtube[1] + i + '" frameborder="0" allowfullscreen></iframe>'; else if (j.vimeo) i = "?autoplay=" + h + "&api=1", this.core.s.vimeoPlayerParams && (i = i + "&" + a.param(this.core.s.vimeoPlayerParams)), g = '<iframe class="lg-video-object lg-vimeo ' + c + '" width="560" height="315"  src="//player.vimeo.com/video/' + j.vimeo[1] + i + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'; else if (j.dailymotion) i = "?wmode=opaque&autoplay=" + h + "&api=postMessage", this.core.s.dailymotionPlayerParams && (i = i + "&" + a.param(this.core.s.dailymotionPlayerParams)), g = '<iframe class="lg-video-object lg-dailymotion ' + c + '" width="560" height="315" src="//www.dailymotion.com/embed/video/' + j.dailymotion[1] + i + '" frameborder="0" allowfullscreen></iframe>'; else if (j.html5) {
              var k = f.substring(0, 1);
              "." !== k && "#" !== k || (f = a(f).html()), g = f
          } else j.vk && (i = "&autoplay=" + h, this.core.s.vkPlayerParams && (i = i + "&" + a.param(this.core.s.vkPlayerParams)), g = '<iframe class="lg-video-object lg-vk ' + c + '" width="560" height="315" src="http://vk.com/video_ext.php?' + j.vk[1] + i + '" frameborder="0" allowfullscreen></iframe>');
          return g
      }, f.prototype.destroy = function () {
          this.videoLoaded = !1
      }, a.fn.lightGallery.modules.video = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {scale: 1, zoom: !0, actualSize: !0, enableZoomAfter: 300}, f = function (c) {
          return this.core = a(c).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.core.s.zoom && this.core.doCss() && (this.init(), this.zoomabletimeout = !1, this.pageX = a(b).width() / 2, this.pageY = a(b).height() / 2 + a(b).scrollTop()), this
      };
      f.prototype.init = function () {
          var c = this, d = '<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';
          c.core.s.actualSize && (d += '<span id="lg-actual-size" class="lg-icon"></span>'), this.core.$outer.find(".lg-toolbar").append(d), c.core.$el.on("onSlideItemLoad.lg.tm.zoom", function (b, d, e) {
              var f = c.core.s.enableZoomAfter + e;
              a("body").hasClass("lg-from-hash") && e ? f = 0 : a("body").removeClass("lg-from-hash"), c.zoomabletimeout = setTimeout(function () {
                  c.core.$slide.eq(d).addClass("lg-zoomable")
              }, f + 30)
          });
          var e = 1, f = function (d) {
              var e, f, g = c.core.$outer.find(".lg-current .lg-image"), h = (a(b).width() - g.width()) / 2,
                  i = (a(b).height() - g.height()) / 2 + a(b).scrollTop();
              e = c.pageX - h, f = c.pageY - i;
              var j = (d - 1) * e, k = (d - 1) * f;
              g.css("transform", "scale3d(" + d + ", " + d + ", 1)").attr("data-scale", d), g.parent().css({
                  left: -j + "px",
                  top: -k + "px"
              }).attr("data-x", j).attr("data-y", k)
          }, g = function () {
              e > 1 ? c.core.$outer.addClass("lg-zoomed") : c.resetZoom(), e < 1 && (e = 1), f(e)
          }, h = function (d, f, h, i) {
              var j, k = f.width();
              j = c.core.s.dynamic ? c.core.s.dynamicEl[h].width || f[0].naturalWidth || k : c.core.$items.eq(h).attr("data-width") || f[0].naturalWidth || k;
              var l;
              c.core.$outer.hasClass("lg-zoomed") ? e = 1 : j > k && (l = j / k, e = l || 2), i ? (c.pageX = a(b).width() / 2, c.pageY = a(b).height() / 2 + a(b).scrollTop()) : (c.pageX = d.pageX || d.originalEvent.targetTouches[0].pageX, c.pageY = d.pageY || d.originalEvent.targetTouches[0].pageY), g(), setTimeout(function () {
                  c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")
              }, 10)
          }, i = !1;
          c.core.$el.on("onAferAppendSlide.lg.tm.zoom", function (a, b) {
              var d = c.core.$slide.eq(b).find(".lg-image");
              d.on("dblclick", function (a) {
                  h(a, d, b)
              }), d.on("touchstart", function (a) {
                  i ? (clearTimeout(i), i = null, h(a, d, b)) : i = setTimeout(function () {
                      i = null
                  }, 300), a.preventDefault()
              })
          }), a(b).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom", function () {
              c.pageX = a(b).width() / 2, c.pageY = a(b).height() / 2 + a(b).scrollTop(), f(e)
          }), a("#lg-zoom-out").on("click.lg", function () {
              c.core.$outer.find(".lg-current .lg-image").length && (e -= c.core.s.scale, g())
          }), a("#lg-zoom-in").on("click.lg", function () {
              c.core.$outer.find(".lg-current .lg-image").length && (e += c.core.s.scale, g())
          }), a("#lg-actual-size").on("click.lg", function (a) {
              h(a, c.core.$slide.eq(c.core.index).find(".lg-image"), c.core.index, !0)
          }), c.core.$el.on("onBeforeSlide.lg.tm", function () {
              e = 1, c.resetZoom()
          }), c.core.isTouch || c.zoomDrag(), c.core.isTouch && c.zoomSwipe()
      }, f.prototype.resetZoom = function () {
          this.core.$outer.removeClass("lg-zoomed"), this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"), this.core.$slide.find(".lg-image").removeAttr("style data-scale"), this.pageX = a(b).width() / 2, this.pageY = a(b).height() / 2 + a(b).scrollTop()
      }, f.prototype.zoomSwipe = function () {
          var a = this, b = {}, c = {}, d = !1, e = !1, f = !1;
          a.core.$slide.on("touchstart.lg", function (c) {
              if (a.core.$outer.hasClass("lg-zoomed")) {
                  var d = a.core.$slide.eq(a.core.index).find(".lg-object");
                  f = d.outerHeight() * d.attr("data-scale") > a.core.$outer.find(".lg").height(), e = d.outerWidth() * d.attr("data-scale") > a.core.$outer.find(".lg").width(), (e || f) && (c.preventDefault(), b = {
                      x: c.originalEvent.targetTouches[0].pageX,
                      y: c.originalEvent.targetTouches[0].pageY
                  })
              }
          }), a.core.$slide.on("touchmove.lg", function (g) {
              if (a.core.$outer.hasClass("lg-zoomed")) {
                  var h, i, j = a.core.$slide.eq(a.core.index).find(".lg-img-wrap");
                  g.preventDefault(), d = !0, c = {
                      x: g.originalEvent.targetTouches[0].pageX,
                      y: g.originalEvent.targetTouches[0].pageY
                  }, a.core.$outer.addClass("lg-zoom-dragging"), i = f ? -Math.abs(j.attr("data-y")) + (c.y - b.y) : -Math.abs(j.attr("data-y")), h = e ? -Math.abs(j.attr("data-x")) + (c.x - b.x) : -Math.abs(j.attr("data-x")), (Math.abs(c.x - b.x) > 15 || Math.abs(c.y - b.y) > 15) && j.css({
                      left: h + "px",
                      top: i + "px"
                  })
              }
          }), a.core.$slide.on("touchend.lg", function () {
              a.core.$outer.hasClass("lg-zoomed") && d && (d = !1, a.core.$outer.removeClass("lg-zoom-dragging"), a.touchendZoom(b, c, e, f))
          })
      }, f.prototype.zoomDrag = function () {
          var c = this, d = {}, e = {}, f = !1, g = !1, h = !1, i = !1;
          c.core.$slide.on("mousedown.lg.zoom", function (b) {
              var e = c.core.$slide.eq(c.core.index).find(".lg-object");
              i = e.outerHeight() * e.attr("data-scale") > c.core.$outer.find(".lg").height(), h = e.outerWidth() * e.attr("data-scale") > c.core.$outer.find(".lg").width(), c.core.$outer.hasClass("lg-zoomed") && a(b.target).hasClass("lg-object") && (h || i) && (b.preventDefault(), d = {
                  x: b.pageX,
                  y: b.pageY
              }, f = !0, c.core.$outer.scrollLeft += 1, c.core.$outer.scrollLeft -= 1, c.core.$outer.removeClass("lg-grab").addClass("lg-grabbing"))
          }), a(b).on("mousemove.lg.zoom", function (a) {
              if (f) {
                  var b, j, k = c.core.$slide.eq(c.core.index).find(".lg-img-wrap");
                  g = !0, e = {
                      x: a.pageX,
                      y: a.pageY
                  }, c.core.$outer.addClass("lg-zoom-dragging"), j = i ? -Math.abs(k.attr("data-y")) + (e.y - d.y) : -Math.abs(k.attr("data-y")), b = h ? -Math.abs(k.attr("data-x")) + (e.x - d.x) : -Math.abs(k.attr("data-x")), k.css({
                      left: b + "px",
                      top: j + "px"
                  })
              }
          }), a(b).on("mouseup.lg.zoom", function (a) {
              f && (f = !1, c.core.$outer.removeClass("lg-zoom-dragging"), !g || d.x === e.x && d.y === e.y || (e = {
                  x: a.pageX,
                  y: a.pageY
              }, c.touchendZoom(d, e, h, i)), g = !1), c.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")
          })
      }, f.prototype.touchendZoom = function (a, b, c, d) {
          var e = this, f = e.core.$slide.eq(e.core.index).find(".lg-img-wrap"),
              g = e.core.$slide.eq(e.core.index).find(".lg-object"), h = -Math.abs(f.attr("data-x")) + (b.x - a.x),
              i = -Math.abs(f.attr("data-y")) + (b.y - a.y),
              j = (e.core.$outer.find(".lg").height() - g.outerHeight()) / 2,
              k = Math.abs(g.outerHeight() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").height() + j),
              l = (e.core.$outer.find(".lg").width() - g.outerWidth()) / 2,
              m = Math.abs(g.outerWidth() * Math.abs(g.attr("data-scale")) - e.core.$outer.find(".lg").width() + l);
          (Math.abs(b.x - a.x) > 15 || Math.abs(b.y - a.y) > 15) && (d && (i <= -k ? i = -k : i >= -j && (i = -j)), c && (h <= -m ? h = -m : h >= -l && (h = -l)), d ? f.attr("data-y", Math.abs(i)) : i = -Math.abs(f.attr("data-y")), c ? f.attr("data-x", Math.abs(h)) : h = -Math.abs(f.attr("data-x")), f.css({
              left: h + "px",
              top: i + "px"
          }))
      }, f.prototype.destroy = function () {
          var c = this;
          c.core.$el.off(".lg.zoom"), a(b).off(".lg.zoom"), c.core.$slide.off(".lg.zoom"), c.core.$el.off(".lg.tm.zoom"), c.resetZoom(), clearTimeout(c.zoomabletimeout), c.zoomabletimeout = !1
      }, a.fn.lightGallery.modules.zoom = f
  }(jQuery, window, document), function (a, b, c, d) {
      "use strict";
      var e = {hash: !0}, f = function (c) {
          return this.core = a(c).data("lightGallery"), this.core.s = a.extend({}, e, this.core.s), this.core.s.hash && (this.oldHash = b.location.hash, this.init()), this
      };
      f.prototype.init = function () {
          var c, d = this;
          d.core.$el.on("onAfterSlide.lg.tm", function (a, c, e) {
              b.location.hash = "lg=" + d.core.s.galleryId + "&slide=" + e
          }), a(b).on("hashchange.lg.hash", function () {
              c = b.location.hash;
              var a = parseInt(c.split("&slide=")[1], 10);
              c.indexOf("lg=" + d.core.s.galleryId) > -1 ? d.core.slide(a, !1, !1) : d.core.lGalleryOn && d.core.destroy()
          })
      }, f.prototype.destroy = function () {
          this.core.s.hash && (this.oldHash && this.oldHash.indexOf("lg=" + this.core.s.galleryId) < 0 ? b.location.hash = this.oldHash : history.pushState ? history.pushState("", c.title, b.location.pathname + b.location.search) : b.location.hash = "", this.core.$el.off(".lg.hash"))
      }, a.fn.lightGallery.modules.hash = f
  }(jQuery, window, document);
  /*jquery.matchHeight-min.js*/
  /*
  * jquery-match-height master by @liabru
  * http://brm.io/jquery-match-height/
  * License MIT
  */
  !function (t) {
      "use strict";
      "function" == typeof define && define.amd ? define(["jquery"], t) : "undefined" != typeof module && module.exports ? module.exports = t(require("jquery")) : t(jQuery)
  }(function (t) {
      var e = -1, o = -1, i = function (t) {
          return parseFloat(t) || 0
      }, n = function (e) {
          var o = 1, n = t(e), a = null, r = [];
          return n.each(function () {
              var e = t(this), n = e.offset().top - i(e.css("margin-top")), s = r.length > 0 ? r[r.length - 1] : null;
              null === s ? r.push(e) : Math.floor(Math.abs(a - n)) <= o ? r[r.length - 1] = s.add(e) : r.push(e), a = n
          }), r
      }, a = function (e) {
          var o = {
              byRow: !0, property: "height", target: null, remove: !1
          };
          return "object" == typeof e ? t.extend(o, e) : ("boolean" == typeof e ? o.byRow = e : "remove" === e && (o.remove = !0), o)
      }, r = t.fn.matchHeight = function (e) {
          var o = a(e);
          if (o.remove) {
              var i = this;
              return this.css(o.property, ""), t.each(r._groups, function (t, e) {
                  e.elements = e.elements.not(i)
              }), this
          }
          return this.length <= 1 && !o.target ? this : (r._groups.push({
              elements: this,
              options: o
          }), r._apply(this, o), this)
      };
      r.version = "master", r._groups = [], r._throttle = 80, r._maintainScroll = !1, r._beforeUpdate = null,
          r._afterUpdate = null, r._rows = n, r._parse = i, r._parseOptions = a, r._apply = function (e, o) {
          var s = a(o), h = t(e), c = [h], l = t(window).scrollTop(), p = t("html").outerHeight(!0),
              d = h.parents().filter(":hidden");
          return d.each(function () {
              var e = t(this);
              e.data("style-cache", e.attr("style"))
          }), d.css("display", "block"), s.byRow && !s.target && (h.each(function () {
              var e = t(this), o = e.css("display");
              "inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block"), e.data("style-cache", e.attr("style")), e.css({
                  display: o,
                  "padding-top": "0",
                  "padding-bottom": "0",
                  "margin-top": "0",
                  "margin-bottom": "0",
                  "border-top-width": "0",
                  "border-bottom-width": "0",
                  height: "100px",
                  overflow: "hidden"
              })
          }), c = n(h), h.each(function () {
              var e = t(this);
              e.attr("style", e.data("style-cache") || "")
          })), t.each(c, function (e, o) {
              var n = t(o), a = 0;
              if (s.target) a = s.target.outerHeight(!1); else {
                  if (s.byRow && n.length <= 1) return void n.css(s.property, "");
                  n.each(function () {
                      var e = t(this), o = e.css("display");
                      "inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block");
                      var i = {display: o};
                      i[s.property] = "",
                          e.css(i), e.outerHeight(!1) > a && (a = e.outerHeight(!1)), e.css("display", "")
                  })
              }
              n.each(function () {
                  var e = t(this), o = 0;
                  s.target && e.is(s.target) || ("border-box" !== e.css("box-sizing") && (o += i(e.css("border-top-width")) + i(e.css("border-bottom-width")), o += i(e.css("padding-top")) + i(e.css("padding-bottom"))), e.css(s.property, a - o + "px"))
              })
          }), d.each(function () {
              var e = t(this);
              e.attr("style", e.data("style-cache") || null)
          }), r._maintainScroll && t(window).scrollTop(l / p * t("html").outerHeight(!0)), this
      }, r._applyDataApi = function () {
          var e = {};
          t("[data-match-height], [data-mh]").each(function () {
              var o = t(this), i = o.attr("data-mh") || o.attr("data-match-height");
              i in e ? e[i] = e[i].add(o) : e[i] = o
          }), t.each(e, function () {
              this.matchHeight(!0)
          })
      };
      var s = function (e) {
          r._beforeUpdate && r._beforeUpdate(e, r._groups), t.each(r._groups, function () {
              r._apply(this.elements, this.options)
          }), r._afterUpdate && r._afterUpdate(e, r._groups)
      };
      r._update = function (i, n) {
          if (n && "resize" === n.type) {
              var a = t(window).width();
              if (a === e) return;
              e = a
          }
          i ? -1 === o && (o = setTimeout(function () {
              s(n), o = -1
          }, r._throttle)) : s(n)
      }, t(r._applyDataApi), t(window).bind("load", function (t) {
          r._update(!1, t)
      }), t(window).bind("resize orientationchange", function (t) {
          r._update(!0, t)
      })
  });
  $.components.register("matchHeight", {
      mode: "init",
      defaults: {},
      init: function (context) {
          if (typeof $.fn.matchHeight === "undefined") return;
          var defaults = $.components.getDefaults('matchHeight');
  
          $('[data-plugin="matchHeight"]', context).each(function () {
              var $this = $(this),
                  options = $.extend(true, {}, defaults, $this.data()),
                  matchSelector = $this.data('matchSelector');
  
              if (matchSelector) {
                  $this.find(matchSelector).matchHeight(options);
              } else {
                  $this.children().matchHeight(options);
              }
  
          });
      }
  });
  /*slick.min.js*/
  !function (a) {
      "use strict";
      "function" == typeof define && define.amd ? define(["jquery"], a) : "undefined" != typeof exports ? module.exports = a(require("jquery")) : a(jQuery)
  }(function (a) {
      "use strict";
      var lazyloadbg_set = $('input[name=lazyloadbg]').val(),
          lazyloadbg = lazyloadbg_set ? lazyloadbg_set : M['tem'] + '/min/img/loading.gif',
          lazyloadbg_base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC";
      if (!!window.ActiveXObject || "ActiveXObject" in window || ucBro) lazyloadbg = lazyloadbg_base64;
      var b = window.Slick || {};
      b = function () {
          function c(c, d) {
              var f, e = this;
              e.defaults = {
                  accessibility: !0,
                  adaptiveHeight: !1,
                  appendArrows: a(c),
                  appendDots: a(c),
                  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 (b, c) {
                      return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c + 1)
                  },
                  dots: !1,
                  dotsClass: "slick-dots",
                  draggable: !0,
                  easing: "linear",
                  edgeFriction: .35,
                  fade: !1,
                  focusOnSelect: !1,
                  infinite: !0,
                  initialSlide: 0,
                  lazyLoad: "ondemand",
                  placeHolder: lazyloadbg,
                  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
              }, e.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
              }, a.extend(e, e.initials), e.activeBreakpoint = null, e.animType = null, e.animProp = null, e.breakpoints = [], e.breakpointSettings = [], e.cssTransitions = !1, e.focussed = !1, e.interrupted = !1, e.hidden = "hidden", e.paused = !0, e.positionProp = null, e.respondTo = null, e.rowCount = 1, e.shouldClick = !0, e.$slider = a(c), e.$slidesCache = null, e.transformType = null, e.transitionType = null, e.visibilityChange = "visibilitychange", e.windowWidth = 0, e.windowTimer = null, f = a(c).data("slick") || {}, e.options = a.extend({}, e.defaults, d, f), e.currentSlide = e.options.initialSlide, e.originalSettings = e.options, "undefined" != typeof document.mozHidden ? (e.hidden = "mozHidden", e.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (e.hidden = "webkitHidden", e.visibilityChange = "webkitvisibilitychange"), e.autoPlay = a.proxy(e.autoPlay, e), e.autoPlayClear = a.proxy(e.autoPlayClear, e), e.autoPlayIterator = a.proxy(e.autoPlayIterator, e), e.changeSlide = a.proxy(e.changeSlide, e), e.clickHandler = a.proxy(e.clickHandler, e), e.selectHandler = a.proxy(e.selectHandler, e), e.setPosition = a.proxy(e.setPosition, e), e.swipeHandler = a.proxy(e.swipeHandler, e), e.dragHandler = a.proxy(e.dragHandler, e), e.keyHandler = a.proxy(e.keyHandler, e), e.instanceUid = b++, e.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, e.registerBreakpoints(), e.init(!0)
          }
  
          var b = 0;
          return c
      }(), b.prototype.activateADA = function () {
          var a = this;
          a.$slideTrack.find(".slick-active").attr({
              "aria-hidden": "false"
          }).find("a, input, button, select").attr({
              tabindex: "0"
          })
      }, b.prototype.addSlide = b.prototype.slickAdd = function (b, c, d) {
          var e = this;
          if ("boolean" == typeof c) d = c, c = null;
          else if (0 > c || c >= e.slideCount) return !1;
          e.unload(), "number" == typeof c ? 0 === c && 0 === e.$slides.length ? a(b).appendTo(e.$slideTrack) : d ? a(b).insertBefore(e.$slides.eq(c)) : a(b).insertAfter(e.$slides.eq(c)) : d === !0 ? a(b).prependTo(e.$slideTrack) : a(b).appendTo(e.$slideTrack), e.$slides = e.$slideTrack.children(this.options.slide), e.$slideTrack.children(this.options.slide).detach(), e.$slideTrack.append(e.$slides), e.$slides.each(function (b, c) {
              a(c).attr("data-slick-index", b)
          }), e.$slidesCache = e.$slides, e.reinit()
      }, b.prototype.animateHeight = function () {
          var a = this;
          if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
              var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
              a.$list.animate({
                  height: b
              }, a.options.speed)
          }
      }, b.prototype.animateSlide = function (b, c) {
          var d = {},
              e = this;
          e.animateHeight(), e.options.rtl === !0 && e.options.vertical === !1 && (b = -b), e.transformsEnabled === !1 ? e.options.vertical === !1 ? e.$slideTrack.animate({
              left: b
          }, e.options.speed, e.options.easing, c) : e.$slideTrack.animate({
              top: b
          }, e.options.speed, e.options.easing, c) : e.cssTransitions === !1 ? (e.options.rtl === !0 && (e.currentLeft = -e.currentLeft), a({
              animStart: e.currentLeft
          }).animate({
              animStart: b
          }, {
              duration: e.options.speed,
              easing: e.options.easing,
              step: function (a) {
                  a = Math.ceil(a), e.options.vertical === !1 ? (d[e.animType] = "translate(" + a + "px, 0px)", e.$slideTrack.css(d)) : (d[e.animType] = "translate(0px," + a + "px)", e.$slideTrack.css(d))
              },
              complete: function () {
                  c && c.call()
              }
          })) : (e.applyTransition(), b = Math.ceil(b), e.options.vertical === !1 ? d[e.animType] = "translate3d(" + b + "px, 0px, 0px)" : d[e.animType] = "translate3d(0px," + b + "px, 0px)", e.$slideTrack.css(d), c && setTimeout(function () {
              e.disableTransition(), c.call()
          }, e.options.speed))
      }, b.prototype.getNavTarget = function () {
          var b = this,
              c = b.options.asNavFor;
          return c && null !== c && (c = a(c).not(b.$slider)), c
      }, b.prototype.asNavFor = function (b) {
          var c = this,
              d = c.getNavTarget();
          null !== d && "object" == typeof d && d.each(function () {
              var c = a(this).slick("getSlick");
              c.unslicked || c.slideHandler(b, !0)
          })
      }, b.prototype.applyTransition = function (a) {
          var b = this,
              c = {};
          b.options.fade === !1 ? c[b.transitionType] = b.transformType + " " + b.options.speed + "ms " + b.options.cssEase : c[b.transitionType] = "opacity " + b.options.speed + "ms " + b.options.cssEase, b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
      }, b.prototype.autoPlay = function () {
          var a = this;
          a.autoPlayClear(), a.slideCount > a.options.slidesToShow && (a.autoPlayTimer = setInterval(a.autoPlayIterator, a.options.autoplaySpeed))
      }, b.prototype.autoPlayClear = function () {
          var a = this;
          a.autoPlayTimer && clearInterval(a.autoPlayTimer)
      }, b.prototype.autoPlayIterator = function () {
          var a = this,
              b = a.currentSlide + a.options.slidesToScroll;
          a.paused || a.interrupted || a.focussed || (a.options.infinite === !1 && (1 === a.direction && a.currentSlide + 1 === a.slideCount - 1 ? a.direction = 0 : 0 === a.direction && (b = a.currentSlide - a.options.slidesToScroll, a.currentSlide - 1 === 0 && (a.direction = 1))), a.slideHandler(b))
      }, b.prototype.buildArrows = function () {
          var b = this;
          b.options.arrows === !0 && (b.$prevArrow = a(b.options.prevArrow).addClass("slick-arrow"), b.$nextArrow = a(b.options.nextArrow).addClass("slick-arrow"), b.slideCount > b.options.slidesToShow ? (b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.prependTo(b.options.appendArrows), b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.appendTo(b.options.appendArrows), b.options.infinite !== !0 && b.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({
              "aria-disabled": "true",
              tabindex: "-1"
          }))
      }, b.prototype.buildDots = function () {
          var c, d, b = this;
          if (b.options.dots === !0 && b.slideCount > b.options.slidesToShow) {
              for (b.$slider.addClass("slick-dotted"), d = a("<ul />").addClass(b.options.dotsClass), c = 0; c <= b.getDotCount(); c += 1) d.append(a("<li />").append(b.options.customPaging.call(this, b, c)));
              b.$dots = d.appendTo(b.options.appendDots), b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false")
          }
      }, b.prototype.buildOut = function () {
          var b = this;
          b.$slides = b.$slider.children(b.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), b.slideCount = b.$slides.length, b.$slides.each(function (b, c) {
              a(c).attr("data-slick-index", b).data("originalStyling", a(c).attr("style") || "")
          }), b.$slider.addClass("slick-slider"), b.$slideTrack = 0 === b.slideCount ? a('<div class="slick-track"/>').appendTo(b.$slider) : b.$slides.wrapAll('<div class="slick-track"/>').parent(), b.$list = b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(), b.$slideTrack.css("opacity", 0), (b.options.centerMode === !0 || b.options.swipeToSlide === !0) && (b.options.slidesToScroll = 1), a("img[data-lazy]", b.$slider).not("[src]").addClass("slick-loading"), b.setupInfinite(), b.buildArrows(), b.buildDots(), b.updateDots(), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.options.draggable === !0 && b.$list.addClass("draggable")
      }, b.prototype.buildRows = function () {
          var b, c, d, e, f, g, h, a = this;
          if (e = document.createDocumentFragment(), g = a.$slider.children(), a.options.rows > 1) {
              for (h = a.options.slidesPerRow * a.options.rows, f = Math.ceil(g.length / h), b = 0; f > b; b++) {
                  var i = document.createElement("div");
                  for (c = 0; c < a.options.rows; c++) {
                      var j = document.createElement("div");
                      for (d = 0; d < a.options.slidesPerRow; d++) {
                          var k = b * h + (c * a.options.slidesPerRow + d);
                          g.get(k) && j.appendChild(g.get(k))
                      }
                      i.appendChild(j)
                  }
                  e.appendChild(i)
              }
              a.$slider.empty().append(e), a.$slider.children().children().children().css({
                  width: 100 / a.options.slidesPerRow + "%",
                  display: "inline-block"
              })
          }
      }, b.prototype.checkResponsive = function (b, c) {
          var e, f, g, d = this,
              h = !1,
              i = d.$slider.width(),
              j = window.innerWidth || a(window).width();
          if ("window" === d.respondTo ? g = j : "slider" === d.respondTo ? g = i : "min" === d.respondTo && (g = Math.min(j, i)), d.options.responsive && d.options.responsive.length && null !== d.options.responsive) {
              f = null;
              for (e in d.breakpoints) d.breakpoints.hasOwnProperty(e) && (d.originalSettings.mobileFirst === !1 ? g < d.breakpoints[e] && (f = d.breakpoints[e]) : g > d.breakpoints[e] && (f = d.breakpoints[e]));
              null !== f ? null !== d.activeBreakpoint ? (f !== d.activeBreakpoint || c) && (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : null !== d.activeBreakpoint && (d.activeBreakpoint = null, d.options = d.originalSettings, b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b), h = f), b || h === !1 || d.$slider.trigger("breakpoint", [d, h])
          }
      }, b.prototype.changeSlide = function (b, c) {
          var f, g, h, d = this,
              e = a(b.currentTarget);
          switch (e.is("a") && b.preventDefault(), e.is("li") || (e = e.closest("li")), h = d.slideCount % d.options.slidesToScroll !== 0, f = h ? 0 : (d.slideCount - d.currentSlide) % d.options.slidesToScroll, b.data.message) {
              case "previous":
                  g = 0 === f ? d.options.slidesToScroll : d.options.slidesToShow - f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide - g, !1, c);
                  break;
              case "next":
                  g = 0 === f ? d.options.slidesToScroll : f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide + g, !1, c);
                  break;
              case "index":
                  var i = 0 === b.data.index ? 0 : b.data.index || e.index() * d.options.slidesToScroll;
                  d.slideHandler(d.checkNavigable(i), !1, c), e.children().trigger("focus");
                  break;
              default:
                  return
          }
      }, b.prototype.checkNavigable = function (a) {
          var c, d, b = this;
          if (c = b.getNavigableIndexes(), d = 0, a > c[c.length - 1]) a = c[c.length - 1];
          else
              for (var e in c) {
                  if (a < c[e]) {
                      a = d;
                      break
                  }
                  d = c[e]
              }
          return a
      }, b.prototype.cleanUpEvents = function () {
          var b = this;
          b.options.dots && null !== b.$dots && a("li", b.$dots).off("click.slick", b.changeSlide).off("mouseenter.slick", a.proxy(b.interrupt, b, !0)).off("mouseleave.slick", a.proxy(b.interrupt, b, !1)), b.$slider.off("focus.slick blur.slick"), b.options.arrows === !0 && b.slideCount > b.options.slidesToShow && (b.$prevArrow && b.$prevArrow.off("click.slick", b.changeSlide), b.$nextArrow && b.$nextArrow.off("click.slick", b.changeSlide)), b.$list.off("touchstart.slick mousedown.slick", b.swipeHandler), b.$list.off("touchmove.slick mousemove.slick", b.swipeHandler), b.$list.off("touchend.slick mouseup.slick", b.swipeHandler), b.$list.off("touchcancel.slick mouseleave.slick", b.swipeHandler), b.$list.off("click.slick", b.clickHandler), a(document).off(b.visibilityChange, b.visibility), b.cleanUpSlideEvents(), b.options.accessibility === !0 && b.$list.off("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().off("click.slick", b.selectHandler), a(window).off("orientationchange.slick.slick-" + b.instanceUid, b.orientationChange), a(window).off("resize.slick.slick-" + b.instanceUid, b.resize), a("[draggable!=true]", b.$slideTrack).off("dragstart", b.preventDefault), a(window).off("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).off("ready.slick.slick-" + b.instanceUid, b.setPosition)
      }, b.prototype.cleanUpSlideEvents = function () {
          var b = this;
          b.$list.off("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.off("mouseleave.slick", a.proxy(b.interrupt, b, !1))
      }, b.prototype.cleanUpRows = function () {
          var b, a = this;
          a.options.rows > 1 && (b = a.$slides.children().children(), b.removeAttr("style"), a.$slider.empty().append(b))
      }, b.prototype.clickHandler = function (a) {
          var b = this;
          b.shouldClick === !1 && (a.stopImmediatePropagation(), a.stopPropagation(), a.preventDefault())
      }, b.prototype.destroy = function (b) {
          var c = this;
          c.autoPlayClear(), c.touchObject = {}, c.cleanUpEvents(), a(".slick-cloned", c.$slider).detach(), c.$dots && c.$dots.remove(), c.$prevArrow && c.$prevArrow.length && (c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.prevArrow) && c.$prevArrow.remove()), c.$nextArrow && c.$nextArrow.length && (c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.nextArrow) && c.$nextArrow.remove()), c.$slides && (c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () {
              a(this).attr("style", a(this).data("originalStyling"))
          }), c.$slideTrack.children(this.options.slide).detach(), c.$slideTrack.detach(), c.$list.detach(), c.$slider.append(c.$slides)), c.cleanUpRows(), c.$slider.removeClass("slick-slider"), c.$slider.removeClass("slick-initialized"), c.$slider.removeClass("slick-dotted"), c.unslicked = !0, b || c.$slider.trigger("destroy", [c])
      }, b.prototype.disableTransition = function (a) {
          var b = this,
              c = {};
          c[b.transitionType] = "", b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
      }, b.prototype.fadeSlide = function (a, b) {
          var c = this;
          c.cssTransitions === !1 ? (c.$slides.eq(a).css({
              zIndex: c.options.zIndex
          }), c.$slides.eq(a).animate({
              opacity: 1
          }, c.options.speed, c.options.easing, b)) : (c.applyTransition(a), c.$slides.eq(a).css({
              opacity: 1,
              zIndex: c.options.zIndex
          }), b && setTimeout(function () {
              c.disableTransition(a), b.call()
          }, c.options.speed))
      }, b.prototype.fadeSlideOut = function (a) {
          var b = this;
          b.cssTransitions === !1 ? b.$slides.eq(a).animate({
              opacity: 0,
              zIndex: b.options.zIndex - 2
          }, b.options.speed, b.options.easing) : (b.applyTransition(a), b.$slides.eq(a).css({
              opacity: 0,
              zIndex: b.options.zIndex - 2
          }))
      }, b.prototype.filterSlides = b.prototype.slickFilter = function (a) {
          var b = this;
          null !== a && (b.$slidesCache = b.$slides, b.unload(), b.$slideTrack.children(this.options.slide).detach(), b.$slidesCache.filter(a).appendTo(b.$slideTrack), b.reinit())
      }, b.prototype.focusHandler = function () {
          var b = this;
          b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function (c) {
              c.stopImmediatePropagation();
              var d = a(this);
              setTimeout(function () {
                  b.options.pauseOnFocus && (b.focussed = d.is(":focus"), b.autoPlay())
              }, 0)
          })
      }, b.prototype.getCurrent = b.prototype.slickCurrentSlide = function () {
          var a = this;
          return a.currentSlide
      }, b.prototype.getDotCount = function () {
          var a = this,
              b = 0,
              c = 0,
              d = 0;
          if (a.options.infinite === !0)
              for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
          else if (a.options.centerMode === !0) d = a.slideCount;
          else if (a.options.asNavFor)
              for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
          else d = 1 + Math.ceil((a.slideCount - a.options.slidesToShow) / a.options.slidesToScroll);
          return d - 1
      }, b.prototype.getLeft = function (a) {
          var c, d, f, b = this,
              e = 0;
          return b.slideOffset = 0, d = b.$slides.first().outerHeight(!0), b.options.infinite === !0 ? (b.slideCount > b.options.slidesToShow && (b.slideOffset = b.slideWidth * b.options.slidesToShow * -1, e = d * b.options.slidesToShow * -1), b.slideCount % b.options.slidesToScroll !== 0 && a + b.options.slidesToScroll > b.slideCount && b.slideCount > b.options.slidesToShow && (a > b.slideCount ? (b.slideOffset = (b.options.slidesToShow - (a - b.slideCount)) * b.slideWidth * -1, e = (b.options.slidesToShow - (a - b.slideCount)) * d * -1) : (b.slideOffset = b.slideCount % b.options.slidesToScroll * b.slideWidth * -1, e = b.slideCount % b.options.slidesToScroll * d * -1))) : a + b.options.slidesToShow > b.slideCount && (b.slideOffset = (a + b.options.slidesToShow - b.slideCount) * b.slideWidth, e = (a + b.options.slidesToShow - b.slideCount) * d), b.slideCount <= b.options.slidesToShow && (b.slideOffset = 0, e = 0), b.options.centerMode === !0 && b.options.infinite === !0 ? b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2) - b.slideWidth : b.options.centerMode === !0 && (b.slideOffset = 0, b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2)), c = b.options.vertical === !1 ? a * b.slideWidth * -1 + b.slideOffset : a * d * -1 + e, b.options.variableWidth === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, b.options.centerMode === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow + 1), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, c += (b.$list.width() - f.outerWidth()) / 2)), c
      }, b.prototype.getOption = b.prototype.slickGetOption = function (a) {
          var b = this;
          return b.options[a]
      }, b.prototype.getNavigableIndexes = function () {
          var e, a = this,
              b = 0,
              c = 0,
              d = [];
          for (a.options.infinite === !1 ? e = a.slideCount : (b = -1 * a.options.slidesToScroll, c = -1 * a.options.slidesToScroll, e = 2 * a.slideCount); e > b;) d.push(b), b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
          return d
      }, b.prototype.getSlick = function () {
          return this
      }, b.prototype.getSlideCount = function () {
          var c, d, e, b = this;
          return e = b.options.centerMode === !0 ? b.slideWidth * Math.floor(b.options.slidesToShow / 2) : 0, b.options.swipeToSlide === !0 ? (b.$slideTrack.find(".slick-slide").each(function (c, f) {
              return f.offsetLeft - e + a(f).outerWidth() / 2 > -1 * b.swipeLeft ? (d = f, !1) : void 0
          }), c = Math.abs(a(d).attr("data-slick-index") - b.currentSlide) || 1) : b.options.slidesToScroll
      }, b.prototype.goTo = b.prototype.slickGoTo = function (a, b) {
          var c = this;
          c.changeSlide({
              data: {
                  message: "index",
                  index: parseInt(a)
              }
          }, b)
      }, b.prototype.init = function (b) {
          var c = this;
          a(c.$slider).hasClass("slick-initialized") || (a(c.$slider).addClass("slick-initialized"), c.buildRows(), c.buildOut(), c.setProps(), c.startLoad(), c.loadSlider(), c.initializeEvents(), c.updateArrows(), c.updateDots(), c.checkResponsive(!0), c.focusHandler()), b && c.$slider.trigger("init", [c]), c.options.accessibility === !0 && c.initADA(), c.options.autoplay && (c.paused = !1, c.autoPlay())
      }, b.prototype.initADA = function () {
          var b = this;
          b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({
              "aria-hidden": "true",
              tabindex: "-1"
          }).find("a, input, button, select").attr({
              tabindex: "-1"
          }), b.$slideTrack.attr("role", "listbox"), b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function (c) {
              a(this).attr({
                  role: "option",
                  "aria-describedby": "slick-slide" + b.instanceUid + c
              })
          }), null !== b.$dots && b.$dots.attr("role", "tablist").find("li").each(function (c) {
              a(this).attr({
                  role: "presentation",
                  "aria-selected": "false",
                  "aria-controls": "navigation" + b.instanceUid + c,
                  id: "slick-slide" + b.instanceUid + c
              })
          }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"), b.activateADA()
      }, b.prototype.initArrowEvents = function () {
          var a = this;
          a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.off("click.slick").on("click.slick", {
              message: "previous"
          }, a.changeSlide), a.$nextArrow.off("click.slick").on("click.slick", {
              message: "next"
          }, a.changeSlide))
      }, b.prototype.initDotEvents = function () {
          var b = this;
          b.options.dots === !0 && b.slideCount > b.options.slidesToShow && a("li", b.$dots).on("click.slick", {
              message: "index"
          }, b.changeSlide), b.options.dots === !0 && b.options.pauseOnDotsHover === !0 && a("li", b.$dots).on("mouseenter.slick", a.proxy(b.interrupt, b, !0)).on("mouseleave.slick", a.proxy(b.interrupt, b, !1))
      }, b.prototype.initSlideEvents = function () {
          var b = this;
          b.options.pauseOnHover && (b.$list.on("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.on("mouseleave.slick", a.proxy(b.interrupt, b, !1)))
      }, b.prototype.initializeEvents = function () {
          var b = this;
          b.initArrowEvents(), b.initDotEvents(), b.initSlideEvents(), b.$list.on("touchstart.slick mousedown.slick", {
              action: "start"
          }, b.swipeHandler), b.$list.on("touchmove.slick mousemove.slick", {
              action: "move"
          }, b.swipeHandler), b.$list.on("touchend.slick mouseup.slick", {
              action: "end"
          }, b.swipeHandler), b.$list.on("touchcancel.slick mouseleave.slick", {
              action: "end"
          }, b.swipeHandler), b.$list.on("click.slick", b.clickHandler), a(document).on(b.visibilityChange, a.proxy(b.visibility, b)), b.options.accessibility === !0 && b.$list.on("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), a(window).on("orientationchange.slick.slick-" + b.instanceUid, a.proxy(b.orientationChange, b)), a(window).on("resize.slick.slick-" + b.instanceUid, a.proxy(b.resize, b)), a("[draggable!=true]", b.$slideTrack).on("dragstart", b.preventDefault), a(window).on("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).on("ready.slick.slick-" + b.instanceUid, b.setPosition)
      }, b.prototype.initUI = function () {
          var a = this;
          a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.show(), a.$nextArrow.show()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.show()
      }, b.prototype.keyHandler = function (a) {
          var b = this;
          a.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === a.keyCode && b.options.accessibility === !0 ? b.changeSlide({
              data: {
                  message: b.options.rtl === !0 ? "next" : "previous"
              }
          }) : 39 === a.keyCode && b.options.accessibility === !0 && b.changeSlide({
              data: {
                  message: b.options.rtl === !0 ? "previous" : "next"
              }
          }))
      }, b.prototype.lazyLoad = function () {
          function g(c) {
              a("img[data-lazy]", c).each(function () {
                  var c = a(this),
                      d = a(this).attr("data-lazy"),
                      ds = a(this).attr("data-srcset"),
                      e = document.createElement("img");
                  c.animate({
                      opacity: 0
                  }, 100, function () {
                      c.attr({
                          src: d,
                          srcset: ds
                      }).removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").animate({
                          opacity: 1
                      }, 200), b.$slider.trigger("lazyLoaded", [b, c, d])
                  });
                  e.onerror = function () {
                      c.removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").addClass("slick-lazyload-error"), b.$slider.trigger("lazyLoadError", [b, c, d])
                  }
              })
          }
  
          var c, d, e, f, b = this;
          b.options.centerMode === !0 ? b.options.infinite === !0 ? (e = b.currentSlide + (b.options.slidesToShow / 2 + 1), f = e + b.options.slidesToShow + 2) : (e = Math.max(0, b.currentSlide - (b.options.slidesToShow / 2 + 1)), f = 2 + (b.options.slidesToShow / 2 + 1) + b.currentSlide) : (e = b.options.infinite ? b.options.slidesToShow + b.currentSlide : b.currentSlide, f = Math.ceil(e + b.options.slidesToShow), b.options.fade === !0 && (e > 0 && e--, f <= b.slideCount && f++)), c = b.$slider.find(".slick-slide").slice(e, f), g(c), b.slideCount <= b.options.slidesToShow ? (d = b.$slider.find(".slick-slide"), g(d)) : b.currentSlide >= b.slideCount - b.options.slidesToShow ? (d = b.$slider.find(".slick-cloned").slice(0, b.options.slidesToShow), g(d)) : 0 === b.currentSlide && (d = b.$slider.find(".slick-cloned").slice(-1 * b.options.slidesToShow), g(d))
      }, b.prototype.loadSlider = function () {
          var a = this;
          if (a.options.placeHolder)
              a.$slideTrack.find('img[data-lazy]').attr({
                  src: a.options.placeHolder
              });
          a.setPosition(), a.$slideTrack.css({
              opacity: 1
          }), a.$slider.removeClass("slick-loading"), a.initUI(), "progressive" === a.options.lazyLoad && a.progressiveLazyLoad()
      }, b.prototype.next = b.prototype.slickNext = function () {
          var a = this;
          a.changeSlide({
              data: {
                  message: "next"
              }
          })
      }, b.prototype.orientationChange = function () {
          var a = this;
          a.checkResponsive(), a.setPosition()
      }, b.prototype.pause = b.prototype.slickPause = function () {
          var a = this;
          a.autoPlayClear(), a.paused = !0
      }, b.prototype.play = b.prototype.slickPlay = function () {
          var a = this;
          a.autoPlay(), a.options.autoplay = !0, a.paused = !1, a.focussed = !1, a.interrupted = !1
      }, b.prototype.postSlide = function (a) {
          var b = this;
          b.unslicked || (b.$slider.trigger("afterChange", [b, a]), b.animating = !1, b.setPosition(), b.swipeLeft = null, b.options.autoplay && b.autoPlay(), b.options.accessibility === !0 && b.initADA())
      }, b.prototype.prev = b.prototype.slickPrev = function () {
          var a = this;
          a.changeSlide({
              data: {
                  message: "previous"
              }
          })
      }, b.prototype.preventDefault = function (a) {
          a.preventDefault()
      }, b.prototype.progressiveLazyLoad = function (b) {
          b = b || 1;
          var e, f, fs, g, c = this,
              d = a("img[data-lazy]", c.$slider);
          d.length ? (e = d.first(), f = e.attr("data-lazy"), fs = e.attr("data-srcset"), g = document.createElement("img"), g.onload = function () {
              e.attr({
                  src: f,
                  srcset: fs
              }).removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading"), c.options.adaptiveHeight === !0 && c.setPosition(), c.$slider.trigger("lazyLoaded", [c, e, f]), c.progressiveLazyLoad()
          }, g.onerror = function () {
              3 > b ? setTimeout(function () {
                  c.progressiveLazyLoad(b + 1)
              }, 500) : (e.removeAttr("data-lazy").removeAttr("data-srcset").removeClass("slick-loading").addClass("slick-lazyload-error"), c.$slider.trigger("lazyLoadError", [c, e, f]), c.progressiveLazyLoad())
          }, g.src = f) : c.$slider.trigger("allImagesLoaded", [c])
      }, b.prototype.refresh = function (b) {
          var d, e, c = this;
          e = c.slideCount - c.options.slidesToShow, !c.options.infinite && c.currentSlide > e && (c.currentSlide = e), c.slideCount <= c.options.slidesToShow && (c.currentSlide = 0), d = c.currentSlide, c.destroy(!0), a.extend(c, c.initials, {
              currentSlide: d
          }), c.init(), b || c.changeSlide({
              data: {
                  message: "index",
                  index: d
              }
          }, !1)
      }, b.prototype.registerBreakpoints = function () {
          var c, d, e, b = this,
              f = b.options.responsive || null;
          if ("array" === a.type(f) && f.length) {
              b.respondTo = b.options.respondTo || "window";
              for (c in f)
                  if (e = b.breakpoints.length - 1, d = f[c].breakpoint, f.hasOwnProperty(c)) {
                      for (; e >= 0;) b.breakpoints[e] && b.breakpoints[e] === d && b.breakpoints.splice(e, 1), e--;
                      b.breakpoints.push(d), b.breakpointSettings[d] = f[c].settings
                  }
              b.breakpoints.sort(function (a, c) {
                  return b.options.mobileFirst ? a - c : c - a
              })
          }
      }, b.prototype.reinit = function () {
          var b = this;
          b.$slides = b.$slideTrack.children(b.options.slide).addClass("slick-slide"), b.slideCount = b.$slides.length, b.currentSlide >= b.slideCount && 0 !== b.currentSlide && (b.currentSlide = b.currentSlide - b.options.slidesToScroll), b.slideCount <= b.options.slidesToShow && (b.currentSlide = 0), b.registerBreakpoints(), b.setProps(), b.setupInfinite(), b.buildArrows(), b.updateArrows(), b.initArrowEvents(), b.buildDots(), b.updateDots(), b.initDotEvents(), b.cleanUpSlideEvents(), b.initSlideEvents(), b.checkResponsive(!1, !0), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.setPosition(), b.focusHandler(), b.paused = !b.options.autoplay, b.autoPlay(), b.$slider.trigger("reInit", [b])
      }, b.prototype.resize = function () {
          var b = this;
          a(window).width() !== b.windowWidth && (clearTimeout(b.windowDelay), b.windowDelay = window.setTimeout(function () {
              b.windowWidth = a(window).width(), b.checkResponsive(), b.unslicked || b.setPosition()
          }, 50))
      }, b.prototype.removeSlide = b.prototype.slickRemove = function (a, b, c) {
          var d = this;
          return "boolean" == typeof a ? (b = a, a = b === !0 ? 0 : d.slideCount - 1) : a = b === !0 ? --a : a, d.slideCount < 1 || 0 > a || a > d.slideCount - 1 ? !1 : (d.unload(), c === !0 ? d.$slideTrack.children().remove() : d.$slideTrack.children(this.options.slide).eq(a).remove(), d.$slides = d.$slideTrack.children(this.options.slide), d.$slideTrack.children(this.options.slide).detach(), d.$slideTrack.append(d.$slides), d.$slidesCache = d.$slides, void d.reinit())
      }, b.prototype.setCSS = function (a) {
          var d, e, b = this,
              c = {};
          b.options.rtl === !0 && (a = -a), d = "left" == b.positionProp ? Math.ceil(a) + "px" : "0px", e = "top" == b.positionProp ? Math.ceil(a) + "px" : "0px", c[b.positionProp] = a, b.transformsEnabled === !1 ? b.$slideTrack.css(c) : (c = {}, b.cssTransitions === !1 ? (c[b.animType] = "translate(" + d + ", " + e + ")", b.$slideTrack.css(c)) : (c[b.animType] = "translate3d(" + d + ", " + e + ", 0px)", b.$slideTrack.css(c)))
      }, b.prototype.setDimensions = function () {
          var a = this;
          a.options.vertical === !1 ? a.options.centerMode === !0 && a.$list.css({
              padding: "0px " + a.options.centerPadding
          }) : (a.$list.height(a.$slides.first().outerHeight(!0) * a.options.slidesToShow), a.options.centerMode === !0 && a.$list.css({
              padding: a.options.centerPadding + " 0px"
          })), a.listWidth = a.$list.width(), a.listHeight = a.$list.height(), a.options.vertical === !1 && a.options.variableWidth === !1 ? (a.slideWidth = Math.ceil(a.listWidth / a.options.slidesToShow), a.$slideTrack.width(Math.ceil(a.slideWidth * a.$slideTrack.children(".slick-slide").length))) : a.options.variableWidth === !0 ? a.$slideTrack.width(5e3 * a.slideCount) : (a.slideWidth = Math.ceil(a.listWidth), a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0) * a.$slideTrack.children(".slick-slide").length)));
          var b = a.$slides.first().outerWidth(!0) - a.$slides.first().width();
          a.options.variableWidth === !1 && a.$slideTrack.children(".slick-slide").width(a.slideWidth - b)
      }, b.prototype.setFade = function () {
          var c, b = this;
          b.$slides.each(function (d, e) {
              c = b.slideWidth * d * -1, b.options.rtl === !0 ? a(e).css({
                  position: "relative",
                  right: c,
                  top: 0,
                  zIndex: b.options.zIndex - 2,
                  opacity: 0
              }) : a(e).css({
                  position: "relative",
                  left: c,
                  top: 0,
                  zIndex: b.options.zIndex - 2,
                  opacity: 0
              })
          }), b.$slides.eq(b.currentSlide).css({
              zIndex: b.options.zIndex - 1,
              opacity: 1
          })
      }, b.prototype.setHeight = function () {
          var a = this;
          if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
              var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
              a.$list.css("height", b)
          }
      }, b.prototype.setOption = b.prototype.slickSetOption = function () {
          var c, d, e, f, h, b = this,
              g = !1;
          if ("object" === a.type(arguments[0]) ? (e = arguments[0], g = arguments[1], h = "multiple") : "string" === a.type(arguments[0]) && (e = arguments[0], f = arguments[1], g = arguments[2], "responsive" === arguments[0] && "array" === a.type(arguments[1]) ? h = "responsive" : "undefined" != typeof arguments[1] && (h = "single")), "single" === h) b.options[e] = f;
          else if ("multiple" === h) a.each(e, function (a, c) {
              b.options[a] = c
          });
          else if ("responsive" === h)
              for (d in f)
                  if ("array" !== a.type(b.options.responsive)) b.options.responsive = [f[d]];
                  else {
                      for (c = b.options.responsive.length - 1; c >= 0;) b.options.responsive[c].breakpoint === f[d].breakpoint && b.options.responsive.splice(c, 1), c--;
                      b.options.responsive.push(f[d])
                  }
          g && (b.unload(), b.reinit())
      }, b.prototype.setPosition = function () {
          var a = this;
          a.setDimensions(), a.setHeight(), a.options.fade === !1 ? a.setCSS(a.getLeft(a.currentSlide)) : a.setFade(), a.$slider.trigger("setPosition", [a])
      }, b.prototype.setProps = function () {
          var a = this,
              b = document.body.style;
          a.positionProp = a.options.vertical === !0 ? "top" : "left", "top" === a.positionProp ? a.$slider.addClass("slick-vertical") : a.$slider.removeClass("slick-vertical"), (void 0 !== b.WebkitTransition || void 0 !== b.MozTransition || void 0 !== b.msTransition) && a.options.useCSS === !0 && (a.cssTransitions = !0), a.options.fade && ("number" == typeof a.options.zIndex ? a.options.zIndex < 3 && (a.options.zIndex = 3) : a.options.zIndex = a.defaults.zIndex), void 0 !== b.OTransform && (a.animType = "OTransform", a.transformType = "-o-transform", a.transitionType = "OTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.MozTransform && (a.animType = "MozTransform", a.transformType = "-moz-transform", a.transitionType = "MozTransition", void 0 === b.perspectiveProperty && void 0 === b.MozPerspective && (a.animType = !1)), void 0 !== b.webkitTransform && (a.animType = "webkitTransform", a.transformType = "-webkit-transform", a.transitionType = "webkitTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.msTransform && (a.animType = "msTransform", a.transformType = "-ms-transform", a.transitionType = "msTransition", void 0 === b.msTransform && (a.animType = !1)), void 0 !== b.transform && a.animType !== !1 && (a.animType = "transform", a.transformType = "transform", a.transitionType = "transition"), a.transformsEnabled = a.options.useTransform && null !== a.animType && a.animType !== !1
      }, b.prototype.setSlideClasses = function (a) {
          var c, d, e, f, b = this;
          d = b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), b.$slides.eq(a).addClass("slick-current"), b.options.centerMode === !0 ? (c = Math.floor(b.options.slidesToShow / 2), b.options.infinite === !0 && (a >= c && a <= b.slideCount - 1 - c ? b.$slides.slice(a - c, a + c + 1).addClass("slick-active").attr("aria-hidden", "false") : (e = b.options.slidesToShow + a, d.slice(e - c + 1, e + c + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === a ? d.eq(d.length - 1 - b.options.slidesToShow).addClass("slick-center") : a === b.slideCount - 1 && d.eq(b.options.slidesToShow).addClass("slick-center")), b.$slides.eq(a).addClass("slick-center")) : a >= 0 && a <= b.slideCount - b.options.slidesToShow ? b.$slides.slice(a, a + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : d.length <= b.options.slidesToShow ? d.addClass("slick-active").attr("aria-hidden", "false") : (f = b.slideCount % b.options.slidesToShow, e = b.options.infinite === !0 ? b.options.slidesToShow + a : a, b.options.slidesToShow == b.options.slidesToScroll && b.slideCount - a < b.options.slidesToShow ? d.slice(e - (b.options.slidesToShow - f), e + f).addClass("slick-active").attr("aria-hidden", "false") : d.slice(e, e + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")), "ondemand" === b.options.lazyLoad && b.lazyLoad()
      }, b.prototype.setupInfinite = function () {
          var c, d, e, b = this;
          if (b.options.fade === !0 && (b.options.centerMode = !1), b.options.infinite === !0 && b.options.fade === !1 && (d = null, b.slideCount > b.options.slidesToShow)) {
              for (e = b.options.centerMode === !0 ? b.options.slidesToShow + 1 : b.options.slidesToShow, c = b.slideCount; c > b.slideCount - e; c -= 1) d = c - 1, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d - b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");
              for (c = 0; e > c; c += 1) d = c, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d + b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");
              b.$slideTrack.find(".slick-cloned").find("[id]").each(function () {
                  a(this).attr("id", "")
              })
          }
      }, b.prototype.interrupt = function (a) {
          var b = this;
          a || b.autoPlay(), b.interrupted = a
      }, b.prototype.selectHandler = function (b) {
          var c = this,
              d = a(b.target).is(".slick-slide") ? a(b.target) : a(b.target).parents(".slick-slide"),
              e = parseInt(d.attr("data-slick-index"));
          return e || (e = 0), c.slideCount <= c.options.slidesToShow ? (c.setSlideClasses(e), void c.asNavFor(e)) : void c.slideHandler(e)
      }, b.prototype.slideHandler = function (a, b, c) {
          var d, e, f, g, j, h = null,
              i = this;
          return b = b || !1, i.animating === !0 && i.options.waitForAnimate === !0 || i.options.fade === !0 && i.currentSlide === a || i.slideCount <= i.options.slidesToShow ? void 0 : (b === !1 && i.asNavFor(a), d = a, h = i.getLeft(d), g = i.getLeft(i.currentSlide), i.currentLeft = null === i.swipeLeft ? g : i.swipeLeft, i.options.infinite === !1 && i.options.centerMode === !1 && (0 > a || a > i.getDotCount() * i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function () {
              i.postSlide(d)
          }) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount - i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function () {
              i.postSlide(d)
          }) : i.postSlide(d))) : (i.options.autoplay && clearInterval(i.autoPlayTimer), e = 0 > d ? i.slideCount % i.options.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ? i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d, i.animating = !0, i.$slider.trigger("beforeChange", [i, i.currentSlide, e]), f = i.currentSlide, i.currentSlide = e, i.setSlideClasses(i.currentSlide), i.options.asNavFor && (j = i.getNavTarget(), j = j.slick("getSlick"), j.slideCount <= j.options.slidesToShow && j.setSlideClasses(i.currentSlide)), i.updateDots(), i.updateArrows(), i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(f), i.fadeSlide(e, function () {
              i.postSlide(e)
          })) : i.postSlide(e), void i.animateHeight()) : void(c !== !0 ? i.animateSlide(h, function () {
              i.postSlide(e)
          }) : i.postSlide(e))))
      }, b.prototype.startLoad = function () {
          var a = this;
          a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(), a.$nextArrow.hide()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(), a.$slider.addClass("slick-loading")
      }, b.prototype.swipeDirection = function () {
          var a, b, c, d, e = this;
          return a = e.touchObject.startX - e.touchObject.curX, b = e.touchObject.startY - e.touchObject.curY, c = Math.atan2(b, a), d = Math.round(180 * c / Math.PI), 0 > d && (d = 360 - Math.abs(d)), 45 >= d && d >= 0 ? e.options.rtl === !1 ? "left" : "right" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? "left" : "right" : d >= 135 && 225 >= d ? e.options.rtl === !1 ? "right" : "left" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? "down" : "up" : "vertical"
      }, b.prototype.swipeEnd = function (a) {
          var c, d, b = this;
          if (b.dragging = !1, b.interrupted = !1, b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0, void 0 === b.touchObject.curX) return !1;
          if (b.touchObject.edgeHit === !0 && b.$slider.trigger("edge", [b, b.swipeDirection()]), b.touchObject.swipeLength >= b.touchObject.minSwipe) {
              switch (d = b.swipeDirection()) {
                  case "left":
                  case "down":
                      c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(), b.currentDirection = 0;
                      break;
                  case "right":
                  case "up":
                      c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(), b.currentDirection = 1
              }
              "vertical" != d && (b.slideHandler(c), b.touchObject = {}, b.$slider.trigger("swipe", [b, d]))
          } else b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide), b.touchObject = {})
      }, b.prototype.swipeHandler = function (a) {
          var b = this;
          if (!(b.options.swipe === !1 || "ontouchend" in document && b.options.swipe === !1 || b.options.draggable === !1 && -1 !== a.type.indexOf("mouse"))) switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent.touches ? a.originalEvent.touches.length : 1, b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold, b.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold), a.data.action) {
              case "start":
                  b.swipeStart(a);
                  break;
              case "move":
                  b.swipeMove(a);
                  break;
              case "end":
                  b.swipeEnd(a)
          }
      }, b.prototype.swipeMove = function (a) {
          var d, e, f, g, h, b = this;
          return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null, !b.dragging || h && 1 !== h.length ? !1 : (d = b.getLeft(b.currentSlide), b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX, b.touchObject.curY = void 0 !== h ? h[0].pageY : a.clientY, b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX - b.touchObject.startX, 2))), b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))), e = b.swipeDirection(), "vertical" !== e ? (void 0 !== a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(), g = (b.options.rtl === !1 ? 1 : -1) * (b.touchObject.curX > b.touchObject.startX ? 1 : -1), b.options.verticalSwiping === !0 && (g = b.touchObject.curY > b.touchObject.startY ? 1 : -1), f = b.touchObject.swipeLength, b.touchObject.edgeHit = !1, b.options.infinite === !1 && (0 === b.currentSlide && "right" === e || b.currentSlide >= b.getDotCount() && "left" === e) && (f = b.touchObject.swipeLength * b.options.edgeFriction, b.touchObject.edgeHit = !0), b.options.vertical === !1 ? b.swipeLeft = d + f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g, b.options.verticalSwiping === !0 && (b.swipeLeft = d + f * g), b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null, !1) : void b.setCSS(b.swipeLeft)) : void 0)
      }, b.prototype.swipeStart = function (a) {
          var c, b = this;
          return b.interrupted = !0, 1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {}, !1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]), b.touchObject.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX, b.touchObject.startY = b.touchObject.curY = void 0 !== c ? c.pageY : a.clientY, void(b.dragging = !0))
      }, b.prototype.unfilterSlides = b.prototype.slickUnfilter = function () {
          var a = this;
          null !== a.$slidesCache && (a.unload(), a.$slideTrack.children(this.options.slide).detach(), a.$slidesCache.appendTo(a.$slideTrack), a.reinit())
      }, b.prototype.unload = function () {
          var b = this;
          a(".slick-cloned", b.$slider).remove(), b.$dots && b.$dots.remove(), b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.remove(), b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(), b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
      }, b.prototype.unslick = function (a) {
          var b = this;
          b.$slider.trigger("unslick", [b, a]), b.destroy()
      }, b.prototype.updateArrows = function () {
          var b, a = this;
          b = Math.floor(a.options.slidesToShow / 2), a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options.infinite && (a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === a.currentSlide ? (a.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
      }, b.prototype.updateDots = function () {
          var a = this;
          null !== a.$dots && (a.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"), a.$dots.find("li").eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"))
      }, b.prototype.visibility = function () {
          var a = this;
          a.options.autoplay && (document[a.hidden] ? a.interrupted = !0 : a.interrupted = !1)
      }, a.fn.slick = function () {
          var f, g, a = this,
              c = arguments[0],
              d = Array.prototype.slice.call(arguments, 1),
              e = a.length;
          for (f = 0; e > f; f++)
              if ("object" == typeof c || "undefined" == typeof c ? a[f].slick = new b(a[f], c) : g = a[f].slick[c].apply(a[f].slick, d), "undefined" != typeof g) return g;
          return a
      }
  });
  /*form.js*/
  $(document).ready(function () {
      if ($(".met-form-validation").length) {
          $(".met-form-validation").formValidation({
              framework: "bootstrap"
          })
      }
      $(document).on('keyup', ".met-form input[name='code']", function () {
          $(this).val($(this).val().toUpperCase());
      });
      /*上传组件*/
      $(document).on("change", ".input-group-file [type=file]", function () {
          var $this = $(this),
              $text = $(this).parents('.input-group-file').find('.form-control'),
              value = "";
          $.each($this[0].files, function (i, file) {
              value += file.name + ", ";
          });
          value = value.substring(0, value.length - 1);
          $text.val(value);
      });
  })
  
  function codeimgRefresh() {
      var url = $(".met-form-codeimg").data("url");
      $(".met-form-codeimg").attr("src", url + '&random=' + Math.floor(Math.random() * 9999 + 1));
  }
  
  /*job.js*/
  $(document).ready(function () {
      if ($("#met-job-cv").length) {
          /*招聘模块弹出表单*/
          $(document).on('click', ".met-job-cvbtn", function () {
              var cvurl = $(this).data('cvurl'),
                  jobid = $(this).data('jobid');
              if ($("#met-job-cv .modal-body .form-group").length) {
                  $("#met-job-cv .met-form").data('formValidation').resetForm();
                  $("#met-job-cv .modal-body input[name='jobid']").val(jobid);
              } else {
                  $("#met-job-cv .modal-body").html('<div class="height-100 vertical-align text-center cart-loader"><div class="loader vertical-align-middle loader-default"></div></div>');
                  $.ajax({
                      url: cvurl + '&jobid=' + jobid,
                      type: 'POST',
                      success: function (data) {
                          $("#met-job-cv .modal-body").html(data).hide().slideDown(500);
                          $.components.init('placeholder');
                          $("#met-job-cv .met-form").formValidation({
                              framework: "bootstrap"
                          })
                          if (!$("#met-job-cv .modal-body input[name='jobid']").val()) $("#met-job-cv .modal-body input[name='jobid']").val(jobid);
                      }
                  });
              }
              $("#met-job-cv").modal('show');
          });
      }
  })
  /*img.js*/
  $(document).ready(function () {
      if ($('.met-img').length) {
          //图片高度预设
          imageSize('.met-img .met-page-ajax');
          //图片懒加载
          $(".met-img [data-original]").lazyload();
      }
      if ($(".met-img-showbtn").length) {
          $(document).on('click', ".met-img-showbtn", function () {
              var imglist = $(this).data("imglist"),
                  dyarr = new Array(),
                  arlt = imglist.split('|');
              $.each(arlt, function (name, value) {
                  if (value != '') {
                      var st = value.split('*'), key = name;
                      dyarr[key] = new Array();
                      dyarr[key]['src'] = st[1];
                      dyarr[key]['thumb'] = st[1];
                      dyarr[key]['subHtml'] = st[0];
                  }
              })
              //点击进入画廊
              $(this).galleryLoad(dyarr);
          });
      }
  })
  
  /*product.js*/
  $(document).ready(function () {
      /*产品列表页*/
      if ($('.met-product').length) {
          /*图片高度预设*/
          imageSize('.met-product .met-page-ajax');
          //图片懒加载
          if ($(".met-product [data-original]").length) {
              var animonscroll_pro_open = 1;
              $(".met-product [data-original]").lazyload({
                  load: function () {
                      //产品列表页瀑布流
                      if (animonscroll_pro_open && $('#met-grid').length) {
                          MetAnimOnScroll();
                          animonscroll_pro_open = 0;
                      }
                  }
              });
          }
      }
  
      /*产品详情页产品轮播图*/
      var showpro_list = '.met-showproduct-list',
          showpro_list_slide = showpro_list + ' .slick-slide';
      if ($(showpro_list_slide).length > 1) {
          var slickdots = showpro_list + ' ul.slick-dots',
              slickdots_div = showpro_list + ' ul.slick-dots div',
              slickdots_li = showpro_list + ' ul.slick-dots li',
              showpro_index = 0;
          //生成缩略图
          $(showpro_list).on('init', function (event, slick) {
              var showpro_list_slide_true = showpro_list_slide + ':not(.slick-cloned)';
              for (var i = 0; i < $(showpro_list_slide_true).length; i++) {
                  var thumbsrc = $(showpro_list_slide_true + ':eq(' + i + ')').data('exthumbimage'),
                      thumbalt = $(showpro_list_slide_true + ':eq(' + i + ') img').attr('alt'),
                      showpro_thumb = '<img src="' + thumbsrc + '" alt="' + thumbalt + '" />';
                  $(slickdots_li).eq(i).html(showpro_thumb);
              }
              $(slickdots).wrapInner('<div></div>');
              $(slickdots_div).width($(slickdots_li).length * 74 - 10);
          })
          //开始轮播
          $(showpro_list).slick({
              dots: true,
              speed: 500,
              prevArrow: '<button type="button" class="slick-prev"><i class="icon pe-angle-left vertical-align-middle"></button>',
              nextArrow: '<button type="button" class="slick-next"><i class="icon pe-angle-right vertical-align-middle"></i></button>',
          })
          $(showpro_list).on('beforeChange', function (event, slick, currentSlide, nextSlide) {
              paginationScroll(nextSlide);
              showpro_index = nextSlide;
          });
          $(showpro_list).on('setPosition', function (event, slick) {
              $(showpro_list_slide + '.slick-active+.slick-slide img').each(function () {
                  if ($(this).attr('data-lazy')) $(this).attr({src: $(this).data('lazy')}).removeAttr('data-lazy').removeClass('slick-loading');
              })
          });
          if ($('#showpro-gallery').length && deviceType == 'p') {
              $(showpro_list).slick('slickSetOption', 'swipe', false);
          }
          $(window).resize(function () {
              paginationScroll(showpro_index);
          });
  
          //缩略图滚动
          function paginationScroll(index) {
              var slickdots_w = $(slickdots).width(),
                  slickdots_div_w = $(slickdots_div).width(),
                  deviation = parseInt(index * 74 - slickdots_w / 2 + 32);
              if (slickdots_div_w > slickdots_w) {
                  var translateX = deviation > 0 ? -deviation : 0;
                  if (deviation + slickdots_w >= slickdots_div_w) translateX = -parseInt(slickdots_div_w - slickdots_w);
                  if ($('html').hasClass('no-csstransitions')) {
                      $(slickdots_div).stop().animate({left: translateX}, 500);// IE9兼容
                  } else {
                      $(slickdots_div).css({transform: 'translateX(' + translateX + 'px)'});
                  }
              }
          }
      }
  
      /*产品详情页标准模式*/
      if ($('.met-showproduct.pagetype1').length) {
          //产品画廊加载
          $('#showpro-gallery').galleryLoad();
          //选项卡点击切换触发图片延迟加载
          $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
              var href = $(this).attr('href');
              $(href).find('img:eq(0)').trigger('scroll');
          })
          /*选项卡滚动条（移动端）*/
          navtabSwiper(".met-showproduct-navtabs");
          /*推荐产品*/
          var prohot = '.product-hot .mob-masonry';
          if ($(prohot).length) {
              /*图片高度预设*/
              imageSize(prohot);
              //推荐产品图片懒加载
              var animonscroll_prohot_open = 1;
              $(prohot + ' img').lazyload({
                  load: function () {
                      Breakpoints.on('xs sm', {
                          enter: function () {
                              if (animonscroll_prohot_open) {
                                  $(prohot).masonry({itemSelector: "li"});
                                  animonscroll_prohot_open = 0;
                              }
                          }
                      });
                  }
              });
          }
      }
  
      /*产品详情页时尚模式*/
      var showprotype2 = '.met-showproduct.pagetype2';
      if ($(showprotype2).length) {
          window.navbar = $(showprotype2 + ' .navbar');
          var navbar_t = navbar.offset().top;
          $(window).scroll(function () {
              var st = $(this).scrollTop();
              //标题工具栏固定
              if (st > navbar_t) {
                  navbar.addClass('navbar-fixed-top animation-slide-top');
              } else {
                  navbar.removeClass('navbar-fixed-top animation-slide-top');
              }
              //选项卡自动选中
              navbar.find('.navbar-right li a').each(function () {
                  var topsize = pro_topsize($(this));
                  //30为区域上下内边距，根据需要调整
                  if (st >= (topsize - 30)) pro_active($(this));
              });
          });
          //选项卡点击事件
          $(document).on('click', showprotype2 + ' .navbar .navbar-right li a', function (e) {
              e.preventDefault();
              var thisobj = $(this);
              $('html,body').animate({'scrollTop': pro_topsize($(this))}, 300, function () {
                  pro_active(thisobj);
              });//页面滑动到指定位置
          })
          /*选项卡滚动条（移动端）*/
          $(showprotype2 + ' .navbar .navbar-toggle').one("click", function () {
              setTimeout(function () {
                  navtabSwiper(".met-showproduct-navtabs");
              }, 0)
          });
      }
  })
  
  /*选中选项卡*/
  function pro_active(dom) {
      navbar.find('.navbar-right li').removeClass('active');
      dom.parent('li').addClass('active');
  }
  
  /*获取选项卡内容距离顶部的位置*/
  function pro_topsize(dom) {
      var oftop = $(dom.attr("href")).offset().top, topsize = oftop - 100;
      if (navbar.hasClass('navbar-fixed-top')) {
          topsize = topsize + 50;
      } else {
          if (Breakpoints.is('xs')) {
              topsize = topsize - navbar.find(".navbar-collapse-toolbar").height();
          }
      }
      if (topsize < 0) topsize = 10;
      return topsize;
  }
  
  /*瀑布流配置*/
  function MetAnimOnScroll(okno) {
      new AnimOnScroll(document.getElementById('met-grid'), {
          minDuration: 0.4,
          maxDuration: 0.7,
          viewportFactor: 0.2
      });
  }
  
  /*news.js*/
  $(document).ready(function () {
      /*文章列表页*/
      /*图片高度预设*/
      imageSize('.met-news .met-news-list [data-scale]');
      var news_original = '.met-news .met-page-ajax [data-original]';
      if ($(news_original).length) {
          //图片预加载
          $(news_original).lazyload();
      }
      /*模式3*/
      if ($('.news-headlines .slick-slide').length > 1) {
          $('.news-headlines').slick({
              autoplay: true,
              dots: true,
              autoplaySpeed: 4000,
              speed: 500,
              swipe: false,
              prevArrow: '<button type="button" class="slick-prev"><i class="icon pe-angle-left vertical-align-middle"></button>',
              nextArrow: '<button type="button" class="slick-next"><i class="icon pe-angle-right vertical-align-middle"></i></button>',
              responsive: [{
                  breakpoint: 1200,
                  settings: {
                      swipe: true
                  }
              }]
          });
          $('.news-headlines').on('setPosition', function (event, slick) {
              $('.news-headlines .slick-active+.slick-slide img').each(function () {
                  if ($(this).attr('data-lazy')) $(this).attr({
                      src: $(this).data('lazy'),
                      srcset: $(this).data('srcset')
                  }).removeAttr('data-lazy').removeAttr('data-srcset').removeClass('slick-loading');
              })
          });
      }
  })
  /*page.js*/
  $(document).ready(function () {
      /*翻页ajax加载*/
      if ($(".met-page-ajax").length) {
          if ($(".met_pager a").length == 1) $(".met_pager").addClass('hide');
          if ($(".met-page-ajax-body").hasClass("visible-xs-block")) {
              Breakpoints.get('xs').on({
                  enter: function () {
                      metpageajax();
                  }
              });
          } else {
              metpageajax();
          }
      }
  })
  
  /*分页脚本*/
  function metpageajax() {
      var pagebtn = $("#met-page-btn"), pageul = $(".met-page-ajax");
      window.pagemax = $(".met_pager a").length - 1;
      window.page = pagebtn.data("page");
      if (window.pagemax <= window.page) pagebtn.addClass('hide');
      pagebtn.click(function () {
          var dom = $(this);
          if (!dom.hasClass("disabled")) {
              page++;
              var l = Ladda.create(dom[0]);
              l.start();
              $.ajax({
                  url: dom.data("url") + '&page=' + page,
                  type: 'POST',
                  success: function (data) {
                      pageul.append(data);
                      pagespecial();
                      /*特殊处理*/
                      l.stop();
                      if (pagemax <= page) dom.addClass('hide');
                  }
              });
          }
      });
  }
  
  /*无刷新分页获取到数据追加到页面后，可以在此方法继续处理*/
  function pagespecial() {
      /*图片高度预设*/
      imageSize(".met-page-ajax", "li.page" + page + " [data-original]");
      // 图片延迟加载
      $(".met-page-ajax li.page" + page + " [data-original]").lazyload();
      $('html,body').stop().animate({scrollTop: $(window).scrollTop() + 1}, 10);
      //产品模块瀑布流
      if ($('#met-grid').length) MetAnimOnScroll();
  }
  
  /*isotope.pkgd.min.js*/
  /*!
   * Isotope PACKAGED v2.2.2
   *
   * Licensed GPLv3 for open source use
   * or Isotope Commercial License for commercial use
   *
   * http://isotope.metafizzy.co
   * Copyright 2015 Metafizzy
   */
  
  /*!function (a) {
      function b() {
      }
  
      function c(a) {
          function c(b) {
              b.prototype.option || (b.prototype.option = function (b) {
                  a.isPlainObject(b) && (this.options = a.extend(!0, this.options, b))
              })
          }
  
          function e(b, c) {
              a.fn[b] = function (e) {
                  if ("string" == typeof e) {
                      for (var g = d.call(arguments, 1), h = 0, i = this.length; i > h; h++) {
                          var j = this[h], k = a.data(j, b);
                          if (k) if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
                              var l = k[e].apply(k, g);
                              if (void 0 !== l) return l
                          } else f("no such method '" + e + "' for " + b + " instance"); else f("cannot call methods on " + b + " prior to initialization; attempted to call '" + e + "'")
                      }
                      return this
                  }
                  return this.each(function () {
                      var d = a.data(this, b);
                      d ? (d.option(e), d._init()) : (d = new c(this, e), a.data(this, b, d))
                  })
              }
          }
  
          if (a) {
              var f = "undefined" == typeof console ? b : function (a) {
                  console.error(a)
              };
              return a.bridget = function (a, b) {
                  c(b), e(a, b)
              }, a.bridget
          }
      }
  
      var d = Array.prototype.slice;
      "function" == typeof define && define.amd ? define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" == typeof exports ? require("jquery") : a.jQuery)
  }(window), function (a) {
      function b(b) {
          var c = a.event;
          return c.target = c.target || c.srcElement || b, c
      }
  
      var c = document.documentElement, d = function () {
      };
      c.addEventListener ? d = function (a, b, c) {
          a.addEventListener(b, c, !1)
      } : c.attachEvent && (d = function (a, c, d) {
          a[c + d] = d.handleEvent ? function () {
              var c = b(a);
              d.handleEvent.call(d, c)
          } : function () {
              var c = b(a);
              d.call(a, c)
          }, a.attachEvent("on" + c, a[c + d])
      });
      var e = function () {
      };
      c.removeEventListener ? e = function (a, b, c) {
          a.removeEventListener(b, c, !1)
      } : c.detachEvent && (e = function (a, b, c) {
          a.detachEvent("on" + b, a[b + c]);
          try {
              delete a[b + c]
          } catch (d) {
              a[b + c] = void 0
          }
      });
      var f = {bind: d, unbind: e};
      "function" == typeof define && define.amd ? define("eventie/eventie", f) : "object" == typeof exports ? module.exports = f : a.eventie = f
  }(window), function () {
      "use strict";
  
      function a() {
      }
  
      function b(a, b) {
          for (var c = a.length; c--;) if (a[c].listener === b) return c;
          return -1
      }
  
      function c(a) {
          return function () {
              return this[a].apply(this, arguments)
          }
      }
  
      var d = a.prototype, e = this, f = e.EventEmitter;
      d.getListeners = function (a) {
          var b, c, d = this._getEvents();
          if (a instanceof RegExp) {
              b = {};
              for (c in d) d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
          } else b = d[a] || (d[a] = []);
          return b
      }, d.flattenListeners = function (a) {
          var b, c = [];
          for (b = 0; b < a.length; b += 1) c.push(a[b].listener);
          return c
      }, d.getListenersAsObject = function (a) {
          var b, c = this.getListeners(a);
          return c instanceof Array && (b = {}, b[a] = c), b || c
      }, d.addListener = function (a, c) {
          var d, e = this.getListenersAsObject(a), f = "object" == typeof c;
          for (d in e) e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c : {listener: c, once: !1});
          return this
      }, d.on = c("addListener"), d.addOnceListener = function (a, b) {
          return this.addListener(a, {listener: b, once: !0})
      }, d.once = c("addOnceListener"), d.defineEvent = function (a) {
          return this.getListeners(a), this
      }, d.defineEvents = function (a) {
          for (var b = 0; b < a.length; b += 1) this.defineEvent(a[b]);
          return this
      }, d.removeListener = function (a, c) {
          var d, e, f = this.getListenersAsObject(a);
          for (e in f) f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d && f[e].splice(d, 1));
          return this
      }, d.off = c("removeListener"), d.addListeners = function (a, b) {
          return this.manipulateListeners(!1, a, b)
      }, d.removeListeners = function (a, b) {
          return this.manipulateListeners(!0, a, b)
      }, d.manipulateListeners = function (a, b, c) {
          var d, e, f = a ? this.removeListener : this.addListener, g = a ? this.removeListeners : this.addListeners;
          if ("object" != typeof b || b instanceof RegExp) for (d = c.length; d--;) f.call(this, b, c[d]); else for (d in b) b.hasOwnProperty(d) && (e = b[d]) && ("function" == typeof e ? f.call(this, d, e) : g.call(this, d, e));
          return this
      }, d.removeEvent = function (a) {
          var b, c = typeof a, d = this._getEvents();
          if ("string" === c) delete d[a]; else if (a instanceof RegExp) for (b in d) d.hasOwnProperty(b) && a.test(b) && delete d[b]; else delete this._events;
          return this
      }, d.removeAllListeners = c("removeEvent"), d.emitEvent = function (a, b) {
          var c, d, e, f, g = this.getListenersAsObject(a);
          for (e in g) if (g.hasOwnProperty(e)) for (d = g[e].length; d--;) c = g[e][d], c.once === !0 && this.removeListener(a, c.listener), f = c.listener.apply(this, b || []), f === this._getOnceReturnValue() && this.removeListener(a, c.listener);
          return this
      }, d.trigger = c("emitEvent"), d.emit = function (a) {
          var b = Array.prototype.slice.call(arguments, 1);
          return this.emitEvent(a, b)
      }, d.setOnceReturnValue = function (a) {
          return this._onceReturnValue = a, this
      }, d._getOnceReturnValue = function () {
          return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0
      }, d._getEvents = function () {
          return this._events || (this._events = {})
      }, a.noConflict = function () {
          return e.EventEmitter = f, a
      }, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function () {
          return a
      }) : "object" == typeof module && module.exports ? module.exports = a : e.EventEmitter = a
  }.call(this), function (a) {
      function b(a) {
          if (a) {
              if ("string" == typeof d[a]) return a;
              a = a.charAt(0).toUpperCase() + a.slice(1);
              for (var b, e = 0, f = c.length; f > e; e++) if (b = c[e] + a, "string" == typeof d[b]) return b
          }
      }
  
      var c = "Webkit Moz ms Ms O".split(" "), d = document.documentElement.style;
      "function" == typeof define && define.amd ? define("get-style-property/get-style-property", [], function () {
          return b
      }) : "object" == typeof exports ? module.exports = b : a.getStyleProperty = b
  }(window), function (a, b) {
      function c(a) {
          var b = parseFloat(a), c = -1 === a.indexOf("%") && !isNaN(b);
          return c && b
      }
  
      function d() {
      }
  
      function e() {
          for (var a = {
              width: 0,
              height: 0,
              innerWidth: 0,
              innerHeight: 0,
              outerWidth: 0,
              outerHeight: 0
          }, b = 0, c = h.length; c > b; b++) {
              var d = h[b];
              a[d] = 0
          }
          return a
      }
  
      function f(b) {
          function d() {
              if (!m) {
                  m = !0;
                  var d = a.getComputedStyle;
                  if (j = function () {
                          var a = d ? function (a) {
                              return d(a, null)
                          } : function (a) {
                              return a.currentStyle
                          };
                          return function (b) {
                              var c = a(b);
                              return c || g("Style returned " + c + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), c
                          }
                      }(), k = b("boxSizing")) {
                      var e = document.createElement("div");
                      e.style.width = "200px", e.style.padding = "1px 2px 3px 4px", e.style.borderStyle = "solid", e.style.borderWidth = "1px 2px 3px 4px", e.style[k] = "border-box";
                      var f = document.body || document.documentElement;
                      f.appendChild(e);
                      var h = j(e);
                      l = 200 === c(h.width), f.removeChild(e)
                  }
              }
          }
  
          function f(a) {
              if (d(), "string" == typeof a && (a = document.querySelector(a)), a && "object" == typeof a && a.nodeType) {
                  var b = j(a);
                  if ("none" === b.display) return e();
                  var f = {};
                  f.width = a.offsetWidth, f.height = a.offsetHeight;
                  for (var g = f.isBorderBox = !(!k || !b[k] || "border-box" !== b[k]), m = 0, n = h.length; n > m; m++) {
                      var o = h[m], p = b[o];
                      p = i(a, p);
                      var q = parseFloat(p);
                      f[o] = isNaN(q) ? 0 : q
                  }
                  var r = f.paddingLeft + f.paddingRight, s = f.paddingTop + f.paddingBottom,
                      t = f.marginLeft + f.marginRight, u = f.marginTop + f.marginBottom,
                      v = f.borderLeftWidth + f.borderRightWidth, w = f.borderTopWidth + f.borderBottomWidth, x = g && l,
                      y = c(b.width);
                  y !== !1 && (f.width = y + (x ? 0 : r + v));
                  var z = c(b.height);
                  return z !== !1 && (f.height = z + (x ? 0 : s + w)), f.innerWidth = f.width - (r + v), f.innerHeight = f.height - (s + w), f.outerWidth = f.width + t, f.outerHeight = f.height + u, f
              }
          }
  
          function i(b, c) {
              if (a.getComputedStyle || -1 === c.indexOf("%")) return c;
              var d = b.style, e = d.left, f = b.runtimeStyle, g = f && f.left;
              return g && (f.left = b.currentStyle.left), d.left = c, c = d.pixelLeft, d.left = e, g && (f.left = g), c
          }
  
          var j, k, l, m = !1;
          return f
      }
  
      var g = "undefined" == typeof console ? d : function (a) {
              console.error(a)
          },
          h = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"];
      "function" == typeof define && define.amd ? define("get-size/get-size", ["get-style-property/get-style-property"], f) : "object" == typeof exports ? module.exports = f(require("desandro-get-style-property")) : a.getSize = f(a.getStyleProperty)
  }(window), function (a) {
      function b(a) {
          "function" == typeof a && (b.isReady ? a() : g.push(a))
      }
  
      function c(a) {
          var c = "readystatechange" === a.type && "complete" !== f.readyState;
          b.isReady || c || d()
      }
  
      function d() {
          b.isReady = !0;
          for (var a = 0, c = g.length; c > a; a++) {
              var d = g[a];
              d()
          }
      }
  
      function e(e) {
          return "complete" === f.readyState ? d() : (e.bind(f, "DOMContentLoaded", c), e.bind(f, "readystatechange", c), e.bind(a, "load", c)), b
      }
  
      var f = a.document, g = [];
      b.isReady = !1, "function" == typeof define && define.amd ? define("doc-ready/doc-ready", ["eventie/eventie"], e) : "object" == typeof exports ? module.exports = e(require("eventie")) : a.docReady = e(a.eventie)
  }(window), function (a) {
      "use strict";
  
      function b(a, b) {
          return a[g](b)
      }
  
      function c(a) {
          if (!a.parentNode) {
              var b = document.createDocumentFragment();
              b.appendChild(a)
          }
      }
  
      function d(a, b) {
          c(a);
          for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length; f > e; e++) if (d[e] === a) return !0;
          return !1
      }
  
      function e(a, d) {
          return c(a), b(a, d)
      }
  
      var f, g = function () {
          if (a.matches) return "matches";
          if (a.matchesSelector) return "matchesSelector";
          for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d > c; c++) {
              var e = b[c], f = e + "MatchesSelector";
              if (a[f]) return f
          }
      }();
      if (g) {
          var h = document.createElement("div"), i = b(h, "div");
          f = i ? b : e
      } else f = d;
      "function" == typeof define && define.amd ? define("matches-selector/matches-selector", [], function () {
          return f
      }) : "object" == typeof exports ? module.exports = f : window.matchesSelector = f
  }(Element.prototype), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["doc-ready/doc-ready", "matches-selector/matches-selector"], function (c, d) {
          return b(a, c, d)
      }) : "object" == typeof exports ? module.exports = b(a, require("doc-ready"), require("desandro-matches-selector")) : a.fizzyUIUtils = b(a, a.docReady, a.matchesSelector)
  }(window, function (a, b, c) {
      var d = {};
      d.extend = function (a, b) {
          for (var c in b) a[c] = b[c];
          return a
      }, d.modulo = function (a, b) {
          return (a % b + b) % b
      };
      var e = Object.prototype.toString;
      d.isArray = function (a) {
          return "[object Array]" == e.call(a)
      }, d.makeArray = function (a) {
          var b = [];
          if (d.isArray(a)) b = a; else if (a && "number" == typeof a.length) for (var c = 0, e = a.length; e > c; c++) b.push(a[c]); else b.push(a);
          return b
      }, d.indexOf = Array.prototype.indexOf ? function (a, b) {
          return a.indexOf(b)
      } : function (a, b) {
          for (var c = 0, d = a.length; d > c; c++) if (a[c] === b) return c;
          return -1
      }, d.removeFrom = function (a, b) {
          var c = d.indexOf(a, b);
          -1 != c && a.splice(c, 1)
      }, d.isElement = "function" == typeof HTMLElement || "object" == typeof HTMLElement ? function (a) {
          return a instanceof HTMLElement
      } : function (a) {
          return a && "object" == typeof a && 1 == a.nodeType && "string" == typeof a.nodeName
      }, d.setText = function () {
          function a(a, c) {
              b = b || (void 0 !== document.documentElement.textContent ? "textContent" : "innerText"), a[b] = c
          }
  
          var b;
          return a
      }(), d.getParent = function (a, b) {
          for (; a != document.body;) if (a = a.parentNode, c(a, b)) return a
      }, d.getQueryElement = function (a) {
          return "string" == typeof a ? document.querySelector(a) : a
      }, d.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, d.filterFindElements = function (a, b) {
          a = d.makeArray(a);
          for (var e = [], f = 0, g = a.length; g > f; f++) {
              var h = a[f];
              if (d.isElement(h)) if (b) {
                  c(h, b) && e.push(h);
                  for (var i = h.querySelectorAll(b), j = 0, k = i.length; k > j; j++) e.push(i[j])
              } else e.push(h)
          }
          return e
      }, d.debounceMethod = function (a, b, c) {
          var d = a.prototype[b], e = b + "Timeout";
          a.prototype[b] = function () {
              var a = this[e];
              a && clearTimeout(a);
              var b = arguments, f = this;
              this[e] = setTimeout(function () {
                  d.apply(f, b), delete f[e]
              }, c || 100)
          }
      }, d.toDashed = function (a) {
          return a.replace(/(.)([A-Z])/g, function (a, b, c) {
              return b + "-" + c
          }).toLowerCase()
      };
      var f = a.console;
      return d.htmlInit = function (c, e) {
          b(function () {
              for (var b = d.toDashed(e), g = document.querySelectorAll(".js-" + b), h = "data-" + b + "-options", i = 0, j = g.length; j > i; i++) {
                  var k, l = g[i], m = l.getAttribute(h);
                  try {
                      k = m && JSON.parse(m)
                  } catch (n) {
                      f && f.error("Error parsing " + h + " on " + l.nodeName.toLowerCase() + (l.id ? "#" + l.id : "") + ": " + n);
                      continue
                  }
                  var o = new c(l, k), p = a.jQuery;
                  p && p.data(l, e, o)
              }
          })
      }, d
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("outlayer/item", ["eventEmitter/EventEmitter", "get-size/get-size", "get-style-property/get-style-property", "fizzy-ui-utils/utils"], function (c, d, e, f) {
          return b(a, c, d, e, f)
      }) : "object" == typeof exports ? module.exports = b(a, require("wolfy87-eventemitter"), require("get-size"), require("desandro-get-style-property"), require("fizzy-ui-utils")) : (a.Outlayer = {}, a.Outlayer.Item = b(a, a.EventEmitter, a.getSize, a.getStyleProperty, a.fizzyUIUtils))
  }(window, function (a, b, c, d, e) {
      "use strict";
  
      function f(a) {
          for (var b in a) return !1;
          return b = null, !0
      }
  
      function g(a, b) {
          a && (this.element = a, this.layout = b, this.position = {x: 0, y: 0}, this._create())
      }
  
      function h(a) {
          return a.replace(/([A-Z])/g, function (a) {
              return "-" + a.toLowerCase()
          })
      }
  
      var i = a.getComputedStyle, j = i ? function (a) {
          return i(a, null)
      } : function (a) {
          return a.currentStyle
      }, k = d("transition"), l = d("transform"), m = k && l, n = !!d("perspective"), o = {
          WebkitTransition: "webkitTransitionEnd",
          MozTransition: "transitionend",
          OTransition: "otransitionend",
          transition: "transitionend"
      }[k], p = ["transform", "transition", "transitionDuration", "transitionProperty"], q = function () {
          for (var a = {}, b = 0, c = p.length; c > b; b++) {
              var e = p[b], f = d(e);
              f && f !== e && (a[e] = f)
          }
          return a
      }();
      e.extend(g.prototype, b.prototype), g.prototype._create = function () {
          this._transn = {ingProperties: {}, clean: {}, onEnd: {}}, this.css({position: "absolute"})
      }, g.prototype.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, g.prototype.getSize = function () {
          this.size = c(this.element)
      }, g.prototype.css = function (a) {
          var b = this.element.style;
          for (var c in a) {
              var d = q[c] || c;
              b[d] = a[c]
          }
      }, g.prototype.getPosition = function () {
          var a = j(this.element), b = this.layout.options, c = b.isOriginLeft, d = b.isOriginTop,
              e = a[c ? "left" : "right"], f = a[d ? "top" : "bottom"], g = this.layout.size,
              h = -1 != e.indexOf("%") ? parseFloat(e) / 100 * g.width : parseInt(e, 10),
              i = -1 != f.indexOf("%") ? parseFloat(f) / 100 * g.height : parseInt(f, 10);
          h = isNaN(h) ? 0 : h, i = isNaN(i) ? 0 : i, h -= c ? g.paddingLeft : g.paddingRight, i -= d ? g.paddingTop : g.paddingBottom, this.position.x = h, this.position.y = i
      }, g.prototype.layoutPosition = function () {
          var a = this.layout.size, b = this.layout.options, c = {}, d = b.isOriginLeft ? "paddingLeft" : "paddingRight",
              e = b.isOriginLeft ? "left" : "right", f = b.isOriginLeft ? "right" : "left", g = this.position.x + a[d];
          c[e] = this.getXValue(g), c[f] = "";
          var h = b.isOriginTop ? "paddingTop" : "paddingBottom", i = b.isOriginTop ? "top" : "bottom",
              j = b.isOriginTop ? "bottom" : "top", k = this.position.y + a[h];
          c[i] = this.getYValue(k), c[j] = "", this.css(c), this.emitEvent("layout", [this])
      }, g.prototype.getXValue = function (a) {
          var b = this.layout.options;
          return b.percentPosition && !b.isHorizontal ? a / this.layout.size.width * 100 + "%" : a + "px"
      }, g.prototype.getYValue = function (a) {
          var b = this.layout.options;
          return b.percentPosition && b.isHorizontal ? a / this.layout.size.height * 100 + "%" : a + "px"
      }, g.prototype._transitionTo = function (a, b) {
          this.getPosition();
          var c = this.position.x, d = this.position.y, e = parseInt(a, 10), f = parseInt(b, 10),
              g = e === this.position.x && f === this.position.y;
          if (this.setPosition(a, b), g && !this.isTransitioning) return void this.layoutPosition();
          var h = a - c, i = b - d, j = {};
          j.transform = this.getTranslate(h, i), this.transition({
              to: j,
              onTransitionEnd: {transform: this.layoutPosition},
              isCleaning: !0
          })
      }, g.prototype.getTranslate = function (a, b) {
          var c = this.layout.options;
          return a = c.isOriginLeft ? a : -a, b = c.isOriginTop ? b : -b, n ? "translate3d(" + a + "px, " + b + "px, 0)" : "translate(" + a + "px, " + b + "px)"
      }, g.prototype.goTo = function (a, b) {
          this.setPosition(a, b), this.layoutPosition()
      }, g.prototype.moveTo = m ? g.prototype._transitionTo : g.prototype.goTo, g.prototype.setPosition = function (a, b) {
          this.position.x = parseInt(a, 10), this.position.y = parseInt(b, 10)
      }, g.prototype._nonTransition = function (a) {
          this.css(a.to), a.isCleaning && this._removeStyles(a.to);
          for (var b in a.onTransitionEnd) a.onTransitionEnd[b].call(this)
      }, g.prototype._transition = function (a) {
          if (!parseFloat(this.layout.options.transitionDuration)) return void this._nonTransition(a);
          var b = this._transn;
          for (var c in a.onTransitionEnd) b.onEnd[c] = a.onTransitionEnd[c];
          for (c in a.to) b.ingProperties[c] = !0, a.isCleaning && (b.clean[c] = !0);
          if (a.from) {
              this.css(a.from);
              var d = this.element.offsetHeight;
              d = null
          }
          this.enableTransition(a.to), this.css(a.to), this.isTransitioning = !0
      };
      var r = "opacity," + h(q.transform || "transform");
      g.prototype.enableTransition = function () {
          this.isTransitioning || (this.css({
              transitionProperty: r,
              transitionDuration: this.layout.options.transitionDuration
          }), this.element.addEventListener(o, this, !1))
      }, g.prototype.transition = g.prototype[k ? "_transition" : "_nonTransition"], g.prototype.onwebkitTransitionEnd = function (a) {
          this.ontransitionend(a)
      }, g.prototype.onotransitionend = function (a) {
          this.ontransitionend(a)
      };
      var s = {"-webkit-transform": "transform", "-moz-transform": "transform", "-o-transform": "transform"};
      g.prototype.ontransitionend = function (a) {
          if (a.target === this.element) {
              var b = this._transn, c = s[a.propertyName] || a.propertyName;
              if (delete b.ingProperties[c], f(b.ingProperties) && this.disableTransition(), c in b.clean && (this.element.style[a.propertyName] = "", delete b.clean[c]), c in b.onEnd) {
                  var d = b.onEnd[c];
                  d.call(this), delete b.onEnd[c]
              }
              this.emitEvent("transitionEnd", [this])
          }
      }, g.prototype.disableTransition = function () {
          this.removeTransitionStyles(), this.element.removeEventListener(o, this, !1), this.isTransitioning = !1
      }, g.prototype._removeStyles = function (a) {
          var b = {};
          for (var c in a) b[c] = "";
          this.css(b)
      };
      var t = {transitionProperty: "", transitionDuration: ""};
      return g.prototype.removeTransitionStyles = function () {
          this.css(t)
      }, g.prototype.removeElem = function () {
          this.element.parentNode.removeChild(this.element), this.css({display: ""}), this.emitEvent("remove", [this])
      }, g.prototype.remove = function () {
          if (!k || !parseFloat(this.layout.options.transitionDuration)) return void this.removeElem();
          var a = this;
          this.once("transitionEnd", function () {
              a.removeElem()
          }), this.hide()
      }, g.prototype.reveal = function () {
          delete this.isHidden, this.css({display: ""});
          var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("visibleStyle");
          b[c] = this.onRevealTransitionEnd, this.transition({
              from: a.hiddenStyle,
              to: a.visibleStyle,
              isCleaning: !0,
              onTransitionEnd: b
          })
      }, g.prototype.onRevealTransitionEnd = function () {
          this.isHidden || this.emitEvent("reveal")
      }, g.prototype.getHideRevealTransitionEndProperty = function (a) {
          var b = this.layout.options[a];
          if (b.opacity) return "opacity";
          for (var c in b) return c
      }, g.prototype.hide = function () {
          this.isHidden = !0, this.css({display: ""});
          var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("hiddenStyle");
          b[c] = this.onHideTransitionEnd, this.transition({
              from: a.visibleStyle,
              to: a.hiddenStyle,
              isCleaning: !0,
              onTransitionEnd: b
          })
      }, g.prototype.onHideTransitionEnd = function () {
          this.isHidden && (this.css({display: "none"}), this.emitEvent("hide"))
      }, g.prototype.destroy = function () {
          this.css({position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: ""})
      }, g
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("outlayer/outlayer", ["eventie/eventie", "eventEmitter/EventEmitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function (c, d, e, f, g) {
          return b(a, c, d, e, f, g)
      }) : "object" == typeof exports ? module.exports = b(a, require("eventie"), require("wolfy87-eventemitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : a.Outlayer = b(a, a.eventie, a.EventEmitter, a.getSize, a.fizzyUIUtils, a.Outlayer.Item)
  }(window, function (a, b, c, d, e, f) {
      "use strict";
  
      function g(a, b) {
          var c = e.getQueryElement(a);
          if (!c) return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (c || a)));
          this.element = c, i && (this.$element = i(this.element)), this.options = e.extend({}, this.constructor.defaults), this.option(b);
          var d = ++k;
          this.element.outlayerGUID = d, l[d] = this, this._create(), this.options.isInitLayout && this.layout()
      }
  
      var h = a.console, i = a.jQuery, j = function () {
      }, k = 0, l = {};
      return g.namespace = "outlayer", g.Item = f, g.defaults = {
          containerStyle: {position: "relative"},
          isInitLayout: !0,
          isOriginLeft: !0,
          isOriginTop: !0,
          isResizeBound: !0,
          isResizingContainer: !0,
          transitionDuration: "0.4s",
          hiddenStyle: {opacity: 0, transform: "scale(0.001)"},
          visibleStyle: {opacity: 1, transform: "scale(1)"}
      }, e.extend(g.prototype, c.prototype), g.prototype.option = function (a) {
          e.extend(this.options, a)
      }, g.prototype._create = function () {
          this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), e.extend(this.element.style, this.options.containerStyle), this.options.isResizeBound && this.bindResize()
      }, g.prototype.reloadItems = function () {
          this.items = this._itemize(this.element.children)
      }, g.prototype._itemize = function (a) {
          for (var b = this._filterFindItemElements(a), c = this.constructor.Item, d = [], e = 0, f = b.length; f > e; e++) {
              var g = b[e], h = new c(g, this);
              d.push(h)
          }
          return d
      }, g.prototype._filterFindItemElements = function (a) {
          return e.filterFindElements(a, this.options.itemSelector)
      }, g.prototype.getItemElements = function () {
          for (var a = [], b = 0, c = this.items.length; c > b; b++) a.push(this.items[b].element);
          return a
      }, g.prototype.layout = function () {
          this._resetLayout(), this._manageStamps();
          var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
          this.layoutItems(this.items, a), this._isLayoutInited = !0
      }, g.prototype._init = g.prototype.layout, g.prototype._resetLayout = function () {
          this.getSize()
      }, g.prototype.getSize = function () {
          this.size = d(this.element)
      }, g.prototype._getMeasurement = function (a, b) {
          var c, f = this.options[a];
          f ? ("string" == typeof f ? c = this.element.querySelector(f) : e.isElement(f) && (c = f), this[a] = c ? d(c)[b] : f) : this[a] = 0
      }, g.prototype.layoutItems = function (a, b) {
          a = this._getItemsForLayout(a), this._layoutItems(a, b), this._postLayout()
      }, g.prototype._getItemsForLayout = function (a) {
          for (var b = [], c = 0, d = a.length; d > c; c++) {
              var e = a[c];
              e.isIgnored || b.push(e)
          }
          return b
      }, g.prototype._layoutItems = function (a, b) {
          if (this._emitCompleteOnItems("layout", a), a && a.length) {
              for (var c = [], d = 0, e = a.length; e > d; d++) {
                  var f = a[d], g = this._getItemLayoutPosition(f);
                  g.item = f, g.isInstant = b || f.isLayoutInstant, c.push(g)
              }
              this._processLayoutQueue(c)
          }
      }, g.prototype._getItemLayoutPosition = function () {
          return {x: 0, y: 0}
      }, g.prototype._processLayoutQueue = function (a) {
          for (var b = 0, c = a.length; c > b; b++) {
              var d = a[b];
              this._positionItem(d.item, d.x, d.y, d.isInstant)
          }
      }, g.prototype._positionItem = function (a, b, c, d) {
          d ? a.goTo(b, c) : a.moveTo(b, c)
      }, g.prototype._postLayout = function () {
          this.resizeContainer()
      }, g.prototype.resizeContainer = function () {
          if (this.options.isResizingContainer) {
              var a = this._getContainerSize();
              a && (this._setContainerMeasure(a.width, !0), this._setContainerMeasure(a.height, !1))
          }
      }, g.prototype._getContainerSize = j, g.prototype._setContainerMeasure = function (a, b) {
          if (void 0 !== a) {
              var c = this.size;
              c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom + c.paddingTop + c.borderTopWidth + c.borderBottomWidth), a = Math.max(a, 0), this.element.style[b ? "width" : "height"] = a + "px"
          }
      }, g.prototype._emitCompleteOnItems = function (a, b) {
          function c() {
              e.dispatchEvent(a + "Complete", null, [b])
          }
  
          function d() {
              g++, g === f && c()
          }
  
          var e = this, f = b.length;
          if (!b || !f) return void c();
          for (var g = 0, h = 0, i = b.length; i > h; h++) {
              var j = b[h];
              j.once(a, d)
          }
      }, g.prototype.dispatchEvent = function (a, b, c) {
          var d = b ? [b].concat(c) : c;
          if (this.emitEvent(a, d), i) if (this.$element = this.$element || i(this.element), b) {
              var e = i.Event(b);
              e.type = a, this.$element.trigger(e, c)
          } else this.$element.trigger(a, c)
      }, g.prototype.ignore = function (a) {
          var b = this.getItem(a);
          b && (b.isIgnored = !0)
      }, g.prototype.unignore = function (a) {
          var b = this.getItem(a);
          b && delete b.isIgnored
      }, g.prototype.stamp = function (a) {
          if (a = this._find(a)) {
              this.stamps = this.stamps.concat(a);
              for (var b = 0, c = a.length; c > b; b++) {
                  var d = a[b];
                  this.ignore(d)
              }
          }
      }, g.prototype.unstamp = function (a) {
          if (a = this._find(a)) for (var b = 0, c = a.length; c > b; b++) {
              var d = a[b];
              e.removeFrom(this.stamps, d), this.unignore(d)
          }
      }, g.prototype._find = function (a) {
          return a ? ("string" == typeof a && (a = this.element.querySelectorAll(a)), a = e.makeArray(a)) : void 0
      }, g.prototype._manageStamps = function () {
          if (this.stamps && this.stamps.length) {
              this._getBoundingRect();
              for (var a = 0, b = this.stamps.length; b > a; a++) {
                  var c = this.stamps[a];
                  this._manageStamp(c)
              }
          }
      }, g.prototype._getBoundingRect = function () {
          var a = this.element.getBoundingClientRect(), b = this.size;
          this._boundingRect = {
              left: a.left + b.paddingLeft + b.borderLeftWidth,
              top: a.top + b.paddingTop + b.borderTopWidth,
              right: a.right - (b.paddingRight + b.borderRightWidth),
              bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
          }
      }, g.prototype._manageStamp = j, g.prototype._getElementOffset = function (a) {
          var b = a.getBoundingClientRect(), c = this._boundingRect, e = d(a), f = {
              left: b.left - c.left - e.marginLeft,
              top: b.top - c.top - e.marginTop,
              right: c.right - b.right - e.marginRight,
              bottom: c.bottom - b.bottom - e.marginBottom
          };
          return f
      }, g.prototype.handleEvent = function (a) {
          var b = "on" + a.type;
          this[b] && this[b](a)
      }, g.prototype.bindResize = function () {
          this.isResizeBound || (b.bind(a, "resize", this), this.isResizeBound = !0)
      }, g.prototype.unbindResize = function () {
          this.isResizeBound && b.unbind(a, "resize", this), this.isResizeBound = !1
      }, g.prototype.onresize = function () {
          function a() {
              b.resize(), delete b.resizeTimeout
          }
  
          this.resizeTimeout && clearTimeout(this.resizeTimeout);
          var b = this;
          this.resizeTimeout = setTimeout(a, 100)
      }, g.prototype.resize = function () {
          this.isResizeBound && this.needsResizeLayout() && this.layout()
      }, g.prototype.needsResizeLayout = function () {
          var a = d(this.element), b = this.size && a;
          return b && a.innerWidth !== this.size.innerWidth
      }, g.prototype.addItems = function (a) {
          var b = this._itemize(a);
          return b.length && (this.items = this.items.concat(b)), b
      }, g.prototype.appended = function (a) {
          var b = this.addItems(a);
          b.length && (this.layoutItems(b, !0), this.reveal(b))
      }, g.prototype.prepended = function (a) {
          var b = this._itemize(a);
          if (b.length) {
              var c = this.items.slice(0);
              this.items = b.concat(c), this._resetLayout(), this._manageStamps(), this.layoutItems(b, !0), this.reveal(b), this.layoutItems(c)
          }
      }, g.prototype.reveal = function (a) {
          this._emitCompleteOnItems("reveal", a);
          for (var b = a && a.length, c = 0; b && b > c; c++) {
              var d = a[c];
              d.reveal()
          }
      }, g.prototype.hide = function (a) {
          this._emitCompleteOnItems("hide", a);
          for (var b = a && a.length, c = 0; b && b > c; c++) {
              var d = a[c];
              d.hide()
          }
      }, g.prototype.revealItemElements = function (a) {
          var b = this.getItems(a);
          this.reveal(b)
      }, g.prototype.hideItemElements = function (a) {
          var b = this.getItems(a);
          this.hide(b)
      }, g.prototype.getItem = function (a) {
          for (var b = 0, c = this.items.length; c > b; b++) {
              var d = this.items[b];
              if (d.element === a) return d
          }
      }, g.prototype.getItems = function (a) {
          a = e.makeArray(a);
          for (var b = [], c = 0, d = a.length; d > c; c++) {
              var f = a[c], g = this.getItem(f);
              g && b.push(g)
          }
          return b
      }, g.prototype.remove = function (a) {
          var b = this.getItems(a);
          if (this._emitCompleteOnItems("remove", b), b && b.length) for (var c = 0, d = b.length; d > c; c++) {
              var f = b[c];
              f.remove(), e.removeFrom(this.items, f)
          }
      }, g.prototype.destroy = function () {
          var a = this.element.style;
          a.height = "", a.position = "", a.width = "";
          for (var b = 0, c = this.items.length; c > b; b++) {
              var d = this.items[b];
              d.destroy()
          }
          this.unbindResize();
          var e = this.element.outlayerGUID;
          delete l[e], delete this.element.outlayerGUID, i && i.removeData(this.element, this.constructor.namespace)
      }, g.data = function (a) {
          a = e.getQueryElement(a);
          var b = a && a.outlayerGUID;
          return b && l[b]
      }, g.create = function (a, b) {
          function c() {
              g.apply(this, arguments)
          }
  
          return Object.create ? c.prototype = Object.create(g.prototype) : e.extend(c.prototype, g.prototype), c.prototype.constructor = c, c.defaults = e.extend({}, g.defaults), e.extend(c.defaults, b), c.prototype.settings = {}, c.namespace = a, c.data = g.data, c.Item = function () {
              f.apply(this, arguments)
          }, c.Item.prototype = new f, e.htmlInit(c, a), i && i.bridget && i.bridget(a, c), c
      }, g.Item = f, g
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("isotope/js/item", ["outlayer/outlayer"], b) : "object" == typeof exports ? module.exports = b(require("outlayer")) : (a.Isotope = a.Isotope || {}, a.Isotope.Item = b(a.Outlayer))
  }(window, function (a) {
      "use strict";
  
      function b() {
          a.Item.apply(this, arguments)
      }
  
      b.prototype = new a.Item, b.prototype._create = function () {
          this.id = this.layout.itemGUID++, a.Item.prototype._create.call(this), this.sortData = {}
      }, b.prototype.updateSortData = function () {
          if (!this.isIgnored) {
              this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random();
              var a = this.layout.options.getSortData, b = this.layout._sorters;
              for (var c in a) {
                  var d = b[c];
                  this.sortData[c] = d(this.element, this)
              }
          }
      };
      var c = b.prototype.destroy;
      return b.prototype.destroy = function () {
          c.apply(this, arguments), this.css({display: ""})
      }, b
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("isotope/js/layout-mode", ["get-size/get-size", "outlayer/outlayer"], b) : "object" == typeof exports ? module.exports = b(require("get-size"), require("outlayer")) : (a.Isotope = a.Isotope || {}, a.Isotope.LayoutMode = b(a.getSize, a.Outlayer))
  }(window, function (a, b) {
      "use strict";
  
      function c(a) {
          this.isotope = a, a && (this.options = a.options[this.namespace], this.element = a.element, this.items = a.filteredItems, this.size = a.size)
      }
  
      return function () {
          function a(a) {
              return function () {
                  return b.prototype[a].apply(this.isotope, arguments)
              }
          }
  
          for (var d = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset", "needsResizeLayout"], e = 0, f = d.length; f > e; e++) {
              var g = d[e];
              c.prototype[g] = a(g)
          }
      }(), c.prototype.needsVerticalResizeLayout = function () {
          var b = a(this.isotope.element), c = this.isotope.size && b;
          return c && b.innerHeight != this.isotope.size.innerHeight
      }, c.prototype._getMeasurement = function () {
          this.isotope._getMeasurement.apply(this, arguments)
      }, c.prototype.getColumnWidth = function () {
          this.getSegmentSize("column", "Width")
      }, c.prototype.getRowHeight = function () {
          this.getSegmentSize("row", "Height")
      }, c.prototype.getSegmentSize = function (a, b) {
          var c = a + b, d = "outer" + b;
          if (this._getMeasurement(c, d), !this[c]) {
              var e = this.getFirstItemSize();
              this[c] = e && e[d] || this.isotope.size["inner" + b]
          }
      }, c.prototype.getFirstItemSize = function () {
          var b = this.isotope.filteredItems[0];
          return b && b.element && a(b.element)
      }, c.prototype.layout = function () {
          this.isotope.layout.apply(this.isotope, arguments)
      }, c.prototype.getSize = function () {
          this.isotope.getSize(), this.size = this.isotope.size
      }, c.modes = {}, c.create = function (a, b) {
          function d() {
              c.apply(this, arguments)
          }
  
          return d.prototype = new c, b && (d.options = b), d.prototype.namespace = a, c.modes[a] = d, d
      }, c
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("masonry/masonry", ["outlayer/outlayer", "get-size/get-size", "fizzy-ui-utils/utils"], b) : "object" == typeof exports ? module.exports = b(require("outlayer"), require("get-size"), require("fizzy-ui-utils")) : a.Masonry = b(a.Outlayer, a.getSize, a.fizzyUIUtils)
  }(window, function (a, b, c) {
      var d = a.create("masonry");
      return d.prototype._resetLayout = function () {
          this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns();
          var a = this.cols;
          for (this.colYs = []; a--;) this.colYs.push(0);
          this.maxY = 0
      }, d.prototype.measureColumns = function () {
          if (this.getContainerWidth(), !this.columnWidth) {
              var a = this.items[0], c = a && a.element;
              this.columnWidth = c && b(c).outerWidth || this.containerWidth
          }
          var d = this.columnWidth += this.gutter, e = this.containerWidth + this.gutter, f = e / d, g = d - e % d,
              h = g && 1 > g ? "round" : "floor";
          f = Math[h](f), this.cols = Math.max(f, 1)
      }, d.prototype.getContainerWidth = function () {
          var a = this.options.isFitWidth ? this.element.parentNode : this.element, c = b(a);
          this.containerWidth = c && c.innerWidth
      }, d.prototype._getItemLayoutPosition = function (a) {
          a.getSize();
          var b = a.size.outerWidth % this.columnWidth, d = b && 1 > b ? "round" : "ceil",
              e = Math[d](a.size.outerWidth / this.columnWidth);
          e = Math.min(e, this.cols);
          for (var f = this._getColGroup(e), g = Math.min.apply(Math, f), h = c.indexOf(f, g), i = {
              x: this.columnWidth * h,
              y: g
          }, j = g + a.size.outerHeight, k = this.cols + 1 - f.length, l = 0; k > l; l++) this.colYs[h + l] = j;
          return i
      }, d.prototype._getColGroup = function (a) {
          if (2 > a) return this.colYs;
          for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
              var e = this.colYs.slice(d, d + a);
              b[d] = Math.max.apply(Math, e)
          }
          return b
      }, d.prototype._manageStamp = function (a) {
          var c = b(a), d = this._getElementOffset(a), e = this.options.isOriginLeft ? d.left : d.right,
              f = e + c.outerWidth, g = Math.floor(e / this.columnWidth);
          g = Math.max(0, g);
          var h = Math.floor(f / this.columnWidth);
          h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);
          for (var i = (this.options.isOriginTop ? d.top : d.bottom) + c.outerHeight, j = g; h >= j; j++) this.colYs[j] = Math.max(i, this.colYs[j])
      }, d.prototype._getContainerSize = function () {
          this.maxY = Math.max.apply(Math, this.colYs);
          var a = {height: this.maxY};
          return this.options.isFitWidth && (a.width = this._getContainerFitWidth()), a
      }, d.prototype._getContainerFitWidth = function () {
          for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];) a++;
          return (this.cols - a) * this.columnWidth - this.gutter
      }, d.prototype.needsResizeLayout = function () {
          var a = this.containerWidth;
          return this.getContainerWidth(), a !== this.containerWidth
      }, d
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("isotope/js/layout-modes/masonry", ["../layout-mode", "masonry/masonry"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode"), require("masonry-layout")) : b(a.Isotope.LayoutMode, a.Masonry)
  }(window, function (a, b) {
      "use strict";
  
      function c(a, b) {
          for (var c in b) a[c] = b[c];
          return a
      }
  
      var d = a.create("masonry"), e = d.prototype._getElementOffset, f = d.prototype.layout,
          g = d.prototype._getMeasurement;
      c(d.prototype, b.prototype), d.prototype._getElementOffset = e, d.prototype.layout = f, d.prototype._getMeasurement = g;
      var h = d.prototype.measureColumns;
      d.prototype.measureColumns = function () {
          this.items = this.isotope.filteredItems, h.call(this)
      };
      var i = d.prototype._manageStamp;
      return d.prototype._manageStamp = function () {
          this.options.isOriginLeft = this.isotope.options.isOriginLeft, this.options.isOriginTop = this.isotope.options.isOriginTop, i.apply(this, arguments)
      }, d
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("isotope/js/layout-modes/fit-rows", ["../layout-mode"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
  }(window, function (a) {
      "use strict";
      var b = a.create("fitRows");
      return b.prototype._resetLayout = function () {
          this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth")
      }, b.prototype._getItemLayoutPosition = function (a) {
          a.getSize();
          var b = a.size.outerWidth + this.gutter, c = this.isotope.size.innerWidth + this.gutter;
          0 !== this.x && b + this.x > c && (this.x = 0, this.y = this.maxY);
          var d = {x: this.x, y: this.y};
          return this.maxY = Math.max(this.maxY, this.y + a.size.outerHeight), this.x += b, d
      }, b.prototype._getContainerSize = function () {
          return {height: this.maxY}
      }, b
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define("isotope/js/layout-modes/vertical", ["../layout-mode"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
  }(window, function (a) {
      "use strict";
      var b = a.create("vertical", {horizontalAlignment: 0});
      return b.prototype._resetLayout = function () {
          this.y = 0
      }, b.prototype._getItemLayoutPosition = function (a) {
          a.getSize();
          var b = (this.isotope.size.innerWidth - a.size.outerWidth) * this.options.horizontalAlignment, c = this.y;
          return this.y += a.size.outerHeight, {x: b, y: c}
      }, b.prototype._getContainerSize = function () {
          return {height: this.y}
      }, b
  }), function (a, b) {
      "use strict";
      "function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "matches-selector/matches-selector", "fizzy-ui-utils/utils", "isotope/js/item", "isotope/js/layout-mode", "isotope/js/layout-modes/masonry", "isotope/js/layout-modes/fit-rows", "isotope/js/layout-modes/vertical"], function (c, d, e, f, g, h) {
          return b(a, c, d, e, f, g, h)
      }) : "object" == typeof exports ? module.exports = b(a, require("outlayer"), require("get-size"), require("desandro-matches-selector"), require("fizzy-ui-utils"), require("./item"), require("./layout-mode"), require("./layout-modes/masonry"), require("./layout-modes/fit-rows"), require("./layout-modes/vertical")) : a.Isotope = b(a, a.Outlayer, a.getSize, a.matchesSelector, a.fizzyUIUtils, a.Isotope.Item, a.Isotope.LayoutMode)
  }(window, function (a, b, c, d, e, f, g) {
      function h(a, b) {
          return function (c, d) {
              for (var e = 0, f = a.length; f > e; e++) {
                  var g = a[e], h = c.sortData[g], i = d.sortData[g];
                  if (h > i || i > h) {
                      var j = void 0 !== b[g] ? b[g] : b, k = j ? 1 : -1;
                      return (h > i ? 1 : -1) * k
                  }
              }
              return 0
          }
      }
  
      var i = a.jQuery, j = String.prototype.trim ? function (a) {
          return a.trim()
      } : function (a) {
          return a.replace(/^\s+|\s+$/g, "")
      }, k = document.documentElement, l = k.textContent ? function (a) {
          return a.textContent
      } : function (a) {
          return a.innerText
      }, m = b.create("isotope", {layoutMode: "masonry", isJQueryFiltering: !0, sortAscending: !0});
      m.Item = f, m.LayoutMode = g, m.prototype._create = function () {
          this.itemGUID = 0, this._sorters = {}, this._getSorters(), b.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ["original-order"];
          for (var a in g.modes) this._initLayoutMode(a)
      }, m.prototype.reloadItems = function () {
          this.itemGUID = 0, b.prototype.reloadItems.call(this)
      }, m.prototype._itemize = function () {
          for (var a = b.prototype._itemize.apply(this, arguments), c = 0, d = a.length; d > c; c++) {
              var e = a[c];
              e.id = this.itemGUID++
          }
          return this._updateItemsSortData(a), a
      }, m.prototype._initLayoutMode = function (a) {
          var b = g.modes[a], c = this.options[a] || {};
          this.options[a] = b.options ? e.extend(b.options, c) : c, this.modes[a] = new b(this)
      }, m.prototype.layout = function () {
          return !this._isLayoutInited && this.options.isInitLayout ? void this.arrange() : void this._layout()
      }, m.prototype._layout = function () {
          var a = this._getIsInstant();
          this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, a), this._isLayoutInited = !0
      }, m.prototype.arrange = function (a) {
          function b() {
              d.reveal(c.needReveal), d.hide(c.needHide)
          }
  
          this.option(a), this._getIsInstant();
          var c = this._filter(this.items);
          this.filteredItems = c.matches;
          var d = this;
          this._bindArrangeComplete(), this._isInstant ? this._noTransition(b) : b(), this._sort(), this._layout()
      }, m.prototype._init = m.prototype.arrange, m.prototype._getIsInstant = function () {
          var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
          return this._isInstant = a, a
      }, m.prototype._bindArrangeComplete = function () {
          function a() {
              b && c && d && e.dispatchEvent("arrangeComplete", null, [e.filteredItems])
          }
  
          var b, c, d, e = this;
          this.once("layoutComplete", function () {
              b = !0, a()
          }), this.once("hideComplete", function () {
              c = !0, a()
          }), this.once("revealComplete", function () {
              d = !0, a()
          })
      }, m.prototype._filter = function (a) {
          var b = this.options.filter;
          b = b || "*";
          for (var c = [], d = [], e = [], f = this._getFilterTest(b), g = 0, h = a.length; h > g; g++) {
              var i = a[g];
              if (!i.isIgnored) {
                  var j = f(i);
                  j && c.push(i), j && i.isHidden ? d.push(i) : j || i.isHidden || e.push(i)
              }
          }
          return {matches: c, needReveal: d, needHide: e}
      }, m.prototype._getFilterTest = function (a) {
          return i && this.options.isJQueryFiltering ? function (b) {
              return i(b.element).is(a)
          } : "function" == typeof a ? function (b) {
              return a(b.element)
          } : function (b) {
              return d(b.element, a)
          }
      }, m.prototype.updateSortData = function (a) {
          var b;
          a ? (a = e.makeArray(a), b = this.getItems(a)) : b = this.items, this._getSorters(), this._updateItemsSortData(b)
      }, m.prototype._getSorters = function () {
          var a = this.options.getSortData;
          for (var b in a) {
              var c = a[b];
              this._sorters[b] = n(c)
          }
      }, m.prototype._updateItemsSortData = function (a) {
          for (var b = a && a.length, c = 0; b && b > c; c++) {
              var d = a[c];
              d.updateSortData()
          }
      };
      var n = function () {
          function a(a) {
              if ("string" != typeof a) return a;
              var c = j(a).split(" "), d = c[0], e = d.match(/^\[(.+)\]$/), f = e && e[1], g = b(f, d),
                  h = m.sortDataParsers[c[1]];
              return a = h ? function (a) {
                  return a && h(g(a))
              } : function (a) {
                  return a && g(a)
              }
          }
  
          function b(a, b) {
              var c;
              return c = a ? function (b) {
                  return b.getAttribute(a)
              } : function (a) {
                  var c = a.querySelector(b);
                  return c && l(c)
              }
          }
  
          return a
      }();
      m.sortDataParsers = {
          parseInt: function (a) {
              return parseInt(a, 10)
          }, parseFloat: function (a) {
              return parseFloat(a)
          }
      }, m.prototype._sort = function () {
          var a = this.options.sortBy;
          if (a) {
              var b = [].concat.apply(a, this.sortHistory), c = h(b, this.options.sortAscending);
              this.filteredItems.sort(c), a != this.sortHistory[0] && this.sortHistory.unshift(a)
          }
      }, m.prototype._mode = function () {
          var a = this.options.layoutMode, b = this.modes[a];
          if (!b) throw new Error("No layout mode: " + a);
          return b.options = this.options[a], b
      }, m.prototype._resetLayout = function () {
          b.prototype._resetLayout.call(this), this._mode()._resetLayout()
      }, m.prototype._getItemLayoutPosition = function (a) {
          return this._mode()._getItemLayoutPosition(a)
      }, m.prototype._manageStamp = function (a) {
          this._mode()._manageStamp(a)
      }, m.prototype._getContainerSize = function () {
          return this._mode()._getContainerSize()
      }, m.prototype.needsResizeLayout = function () {
          return this._mode().needsResizeLayout()
      }, m.prototype.appended = function (a) {
          var b = this.addItems(a);
          if (b.length) {
              var c = this._filterRevealAdded(b);
              this.filteredItems = this.filteredItems.concat(c)
          }
      }, m.prototype.prepended = function (a) {
          var b = this._itemize(a);
          if (b.length) {
              this._resetLayout(), this._manageStamps();
              var c = this._filterRevealAdded(b);
              this.layoutItems(this.filteredItems), this.filteredItems = c.concat(this.filteredItems), this.items = b.concat(this.items)
          }
      }, m.prototype._filterRevealAdded = function (a) {
          var b = this._filter(a);
          return this.hide(b.needHide), this.reveal(b.matches), this.layoutItems(b.matches, !0), b.matches
      }, m.prototype.insert = function (a) {
          var b = this.addItems(a);
          if (b.length) {
              var c, d, e = b.length;
              for (c = 0; e > c; c++) d = b[c], this.element.appendChild(d.element);
              var f = this._filter(b).matches;
              for (c = 0; e > c; c++) b[c].isLayoutInstant = !0;
              for (this.arrange(), c = 0; e > c; c++) delete b[c].isLayoutInstant;
              this.reveal(f)
          }
      };
      var o = m.prototype.remove;
      return m.prototype.remove = function (a) {
          a = e.makeArray(a);
          var b = this.getItems(a);
          o.call(this, a);
          var c = b && b.length;
          if (c) for (var d = 0; c > d; d++) {
              var f = b[d];
              e.removeFrom(this.filteredItems, f)
          }
      }, m.prototype.shuffle = function () {
          for (var a = 0, b = this.items.length; b > a; a++) {
              var c = this.items[a];
              c.sortData.random = Math.random()
          }
          this.options.sortBy = "random", this._sort(), this._layout()
      }, m.prototype._noTransition = function (a) {
          var b = this.options.transitionDuration;
          this.options.transitionDuration = 0;
          var c = a.call(this);
          return this.options.transitionDuration = b, c
      }, m.prototype.getFilteredItemElements = function () {
          for (var a = [], b = 0, c = this.filteredItems.length; c > b; b++) a.push(this.filteredItems[b].element);
          return a
      }, m
  });*/
  
  /*filterable.min.js*/
  /*!
   * remark (http://getbootstrapadmin.com/remark)
   * Copyright 2015 amazingsurge
   * Licensed under the Themeforest Standard Licenses
   */
  $.components.register("filterable", {
      mode: "init",
      defaults: {animationOptions: {duration: 750, easing: "linear", queue: !1}},
      init: function (context) {
          if ("undefined" != typeof $.fn.isotope) {
              var defaults = $.components.getDefaults("filterable"), callback = function () {
                  $("[data-filterable]", context).each(function () {
                      var $this = $(this), options = $.extend(!0, {}, defaults, $this.data(), {filter: "*"});
                      $this.isotope(options)
                  }), $("[data-filter]", context).click(function (e) {
                      var $this = $(this), target = $this.data("target"), $li = $this.parent("li");
                      target || (target = $this.attr("href"), target = target && target.replace(/.*(?=#[^\s]*$)/, "")), $li.siblings(".active").each(function () {
                          $(this).find("a").attr("aria-expanded", !1), $(this).removeClass("active")
                      }), $li.addClass("active"), $this.attr("aria-expanded", !0);
                      var $list = $(target, context), filter = $this.attr("data-filter");
                      "*" !== filter && (filter = '[data-type="' + filter + '"]'), $list.isotope({filter: filter}), e.preventDefault()
                  })
              };
              context !== document ? callback() : $(window).on("load", function () {
                  callback()
              })
          }
      }
  });
  /*index.js*/
  /*
   * M['weburl'] 		//网站网址
   * M['lang']  		//网站语言
   * M['tem']  		//模板目录路径
   * M['classnow']  	//当前栏目ID
   * M['id']  		//当前页面ID
   * M['module']  	//当前页面所属模块
   * lazyloadbg       //延迟加载背景图片，base64：默认灰色
   * deviceType       //设备判断（p：PC,t：平板，m：手机）
  */
  $(document).ready(function () {
      if (M['classnow'] == 10001) {
          /*图片懒加载*/
          $(".met-index-body [data-original]").lazyload();
          /*产品列表*/
          if ($(".met-index-product").length) {
              //内滚导航条（移动端）
              navtabSwiper('.met-index-product .nav-tabs');
          }
          if ($('.met-index-news ul.blocks-2').length) imageSize('.met-index-news ul.blocks-2');
      }
  })
  
  /*editor.js*/
  $(document).ready(function () {
      /*编辑器响应式表格*/
      if ($(".met-editor table").length) {
          $(".met-editor table").addClass('table table-bordered table-hover table-striped table-responsive');
          tablexys();
      }
      /*编辑器图片处理*/
      if ($(".met-editor img").length) {
          //图片懒加载
          $(".met-editor.lazyload img").lazyload({threshold: 200});
          // 编辑器画廊
          if (!$(".met-editor.no-gallery").length) {
              $(".met-editor").wrapInner("<div class='editorlightgallery'></div>");
              $(".met-editor").each(function () {
                  var img_gallery_open = 1,
                      this_editor = this;
                  $("img", this).one('click', function () {
                      if (img_gallery_open) {
                          $('img', this_editor).each(function () {
                              if ($(this).parent("a").length == 0) {
                                  var data_src = $(this).data("original") ? $(this).data("original") : $(this).attr("src");
                                  if ($(this).hasClass('imgload')) {
                                      var data_thumbs = data_src.split('upload/'),
                                          data_thumb = '../include/thumb.php?dir=../upload/' + data_thumbs[1] + '&x=60&y=60';
                                  } else {
                                      var data_thumb = data_src;
                                  }
                                  $(this).wrap("<div class='lg-item-box' data-src='" + data_src + "' data-exthumbimage='" + data_thumb + "'></div>");
                              }
                          });
                          //画廊加载
                          $('.editorlightgallery', this_editor).galleryLoad();
                          $(this).parent('.lg-item-box').trigger('click');
                          img_gallery_open = 0;
                      }
                  });
              });
          }
      }
  })
  
  /*表格格式化*/
  function tablexys() {
      Breakpoints.get('xs').on({
          enter: function () {
              $(".met-editor table").each(function () {
                  var table = $(this);
                  if (table.is(':visible') && !table.hasClass('tablesaw')) {
                      if (table.find("thead").length) {
                          table.addClass('tablesaw').attr("data-tablesaw-mode", "swipe");
                      } else {
                          var td = table.find("tbody tr:eq(0) td"), th;
                          if (td.length == 0) td = table.find("tbody tr:eq(0) th");
                          td.each(function () {
                              th += '<th>' + $(this).html() + '</th>';
                          });
                          table.prepend("<thead><tr>" + th + "</tr></thead>");
                          table.find("tbody tr:eq(0)").remove();
                          table.find("tbody td").attr('width', 'auto');
                          table.addClass('tablesaw').attr("data-tablesaw-mode", "swipe");
                      }
                  }
              });
              $('.met-editor .table-responsive').parent().addClass('table-saw');
              $(document).trigger("enhance.tablesaw");
          }
      });
  }
  
  /*own.js*/
  /*
   * M['weburl'] 		//网站网址
   * M['lang']  		//网站语言
   * M['tem']  		//模板目录路径
   * M['classnow']  	//当前栏目ID
   * M['id']  		//当前页面ID
   * M['module']  	//当前页面所属模块
   * lazyloadbg       //延迟加载背景图片,base64：默认灰色
   * deviceType       //设备判断（p：PC,t：平板，m：手机）
   */
  $(document).ready(function () {
      /*导航处理*/
      if (deviceType != 'p') {
          $('body').wrapInner('<div class="cover"></div>');
          $('.met-nav .nav>li>.dropdown-menu .visible-xs').removeClass('visible-xs');
      }
      $('.met-nav .dropdown a.link').click(function () {
          if (deviceType == 'p' && !Breakpoints.is('xs') && $(this).data("hover")) window.location.href = $(this).attr('href');
      });
  
      /*顶部固定边框阴影处理*/
      var navbarTop = $(".navbar-fixed-top");
      if (navbarTop.length && deviceType == 'p') {
          $(window).scroll(function () {
              if (navbarTop.offset().top > 1) {
                  navbarTop.addClass("navbar-shadow animated fadeInDown");
              } else {
                  navbarTop.removeClass("navbar-shadow animated fadeInDown");
              }
          });
      }
  
      /*下拉菜单动画修复*/
      $(".navlist .dropdown-submenu").hover(
          function () {
              $(this).parent('.dropdown-menu').addClass('overflow-visible');
          },
          function () {
              $(this).parent('.dropdown-menu').removeClass('overflow-visible');
          }
      );
      var nav_li = $(".navlist .dropdown");
      (function ($) {
          $.fn.hoverDelay = function (options) {
              var defaults = {
                  // 鼠标经过的延时时间
                  hoverDuring: 200,
                  // 鼠标移出的延时时间
                  outDuring: 0,
                  // 鼠标经过执行的方法
                  hoverEvent: function () {
                      // 设置为空函数，绑定的时候由使用者定义
                      $.noop();
                  },
                  // 鼠标移出执行的方法
                  outEvent: function () {
                      $.noop();
                  }
              };
              var sets = $.extend(defaults, options || {});
              var hoverTimer, outTimer;
              return $(this).each(function () {
                  // 保存当前上下文的this对象
                  var $this = $(this)
                  $this.hover(function () {
                      clearTimeout(outTimer);
                      hoverTimer = setTimeout(function () {
                          // 调用替换
                          sets.hoverEvent.apply($this);
                      }, sets.hoverDuring);
                  }, function () {
                      clearTimeout(hoverTimer);
                      outTimer = setTimeout(function () {
                          sets.outEvent.apply($this);
                      }, sets.outDuring);
                  });
              });
          }
      })(jQuery);
  // 具体使用，给id为“#test”的元素添加hoverEvent事件
      if (nav_li.find('[data-hover]').length) {
          nav_li.hoverDelay({
              // 自定义，outEvent同
              hoverEvent: function () {
                  $(this).addClass('open');
              },
              outEvent: function () {
                  $(this).removeClass('open');
              }
          });
      }
      /*服务范围*/
      var service_show = $("#serviceSlick").data("show");
      if (service_show) {
          $('#serviceSlick').slick({
              lazyLoad: 'progressive',
              slidesToShow: 4,
              slidesToScroll: 2,
              prevArrow: '<a class="slick-prev" href=""><i class="fa fa-angle-left"></i></a>',
              nextArrow: '<a class="slick-next" href=""><i class="fa fa-angle-right"></i></a>',
              responsive: [{
                  breakpoint: 2000,
                  settings: {
                      slidesToShow: service_show[6],
                      slidesToScroll: 1
                  }
              }, {
                  breakpoint: 1600,
                  settings: {
                      slidesToShow: service_show[4],
                      slidesToScroll: 1
                  }
              }, {
                  breakpoint: 991,
                  settings: {
                      slidesToShow: service_show[2],
                      slidesToScroll: 1,
                  }
              }, {
                  breakpoint: 767,
                  settings: {
                      slidesToShow: service_show[0],
                      slidesToScroll: 1
                  }
              }]
          })
      }
      /*精英团队*/
      $('#exampleResponsive').slick({
          lazyLoad: 'ondemand',
          dots: true,
          infinite: false,
          speed: 500,
          slidesToShow: 3,
          slidesToScroll: 3,
          responsive: [{
              breakpoint: 1024,
              settings: {
                  slidesToShow: 2,
                  slidesToScroll: 2,
                  dots: true
              }
          }, {
              breakpoint: 600,
              settings: {
                  slidesToShow: 1,
                  slidesToScroll: 1,
                  dots: true
              }
          }]
      });
      /*项目案例*/
      var product_show = $("#product_list").data("show");
      if (product_show) {
          $('#product_list').slick({
              slidesToShow: 4,
              slidesToScroll: 1,
              prevArrow: '<a class="slick-prev" href=""><i class="fa fa-long-arrow-left"></i></a>',
              nextArrow: '<a class="slick-next" href=""><i class="fa fa-long-arrow-right"></i></a>',
              responsive: [{
                  breakpoint: 2000,
                  settings: {
                      slidesToShow: product_show[6],
                      slidesToScroll: 1,
                  }
              }, {
                  breakpoint: 1600,
                  settings: {
                      slidesToShow: product_show[4],
                      slidesToScroll: 1,
                  }
              }, {
                  breakpoint: 991,
                  settings: {
                      slidesToShow: product_show[2],
                      slidesToScroll: 1,
                  }
              }, {
                  breakpoint: 767,
                  settings: {
                      slidesToShow: product_show[0],
                      slidesToScroll: 1,
  
                  }
              }]
          })
      }
      /*大图轮播*/
      var metbanner = $('.met-banner'),
          metbanner_slide = '.met-banner .slick-slide';
      var bw = $("body").width();
      if (metbanner.length) {
          imageloadFun('.met-banner img:eq(0)', function () {
              var datah = metbanner.data('height').split('|'),
                  bannerAutoH = function () { //自适应
                      metbanner.find('img[srcset]').height('auto');
                      metbanner.find('img[data-lazy]').height(metbanner.find('img[srcset]').height());
                      if (metbanner.hasClass('fixedheight')) {
                          metbanner.find('img').width('');
                          var x = metbanner.find('img[srcset]').height();
                          metbanner.height(metbanner.find('img[srcset]').height());
                      } else {
                          metbanner.height('auto');
                      }
                  },
                  bannerFixedHeight = function (res) { //固定高度
                      metbanner.find('img').height('').width('auto');
                      metbanner.height(datah[res]);
                  };
              if (metbanner.hasClass('fixedheight')) {
                  Breakpoints.on('md lg', {
                      enter: function () {
                          bannerFixedHeight(0);
                      }
                  })
                  Breakpoints.on('sm', {
                      enter: function () {
                          bannerFixedHeight(1);
                      }
                  })
                  Breakpoints.on('xs', {
                      enter: function () {
                          bannerFixedHeight(2);
                      }
                  })
                  $(window).resize(function () {
                      if ($(window).width() < 430) bannerFixedHeight(2);
                  })
              } else {
                  bannerAutoH();
                  $(window).resize(function () {
                      bannerAutoH();
                  })
              }
              ;
              if ($(metbanner_slide).length > 1) {
                  metbanner.slick({
                      autoplay: true,
                      dots: false,
                      autoplaySpeed: 4000,
                      pauseOnHover: false,
                      fade: true,
                      prevArrow: '<a class="slick-prev" href=""><i class="fa fa-angle-left"></i></a>',
                      nextArrow: '<a class="slick-next" href=""><i class="fa fa-angle-left"></i></a>',
                      responsive: [{
                          breakpoint: 991,
                          settings: {
                              dots: true,
                              fade: false,
                          }
                      }]
                  });
                  metbanner.on('setPosition', function (event, slick) {
                      $(metbanner_slide + ' .banner-text').addClass('hide');
                      $(metbanner_slide + '.slick-active .banner-text').removeClass('hide');
                      var banner_index = metbanner.find('.slick-active').index(),
                          bannerprev = banner_index - 1,
                          bannernext = banner_index + 1;
                      metbanner_prevnext = metbanner_slide + ':eq(' + bannerprev + '),' + metbanner_slide + ':eq(' + bannernext + ')';
                      $(metbanner_prevnext).find('img').each(function () {
                          if ($(this).attr('data-lazy')) $(this).attr({
                              src: $(this).data('original'),
                              srcset: $(this).data('srcset')
                          }).removeAttr('data-lazy').removeAttr('data-srcset').removeClass('slick-loading');
                      })
                  });
                  if (deviceType == 'p') $(metbanner).slick('slickSetOption', 'swipe', false);
              }
          })
      }
  
      /*内页内滚导航条（移动端）*/
      if ($('.met-column-nav-ul').length) navtabSwiper('.met-column-nav-ul');
  
  
      /*底部微信*/
      if ($('#met-weixin').length) {
          var defaults = $.components.getDefaults("webuiPopover");
          var weixinContent = $('#met-weixin-content').html(),
              weixinSettings = {
                  title: '',
                  content: weixinContent,
                  placement: 'top',
                  trigger: 'hover',
                  width: 162,
                  padding: false,
                  offsetTop: -10,
                  animation: 'pop'
              };
          $('#met-weixin').webuiPopover($.extend({}, defaults, weixinSettings));
      }
      /*底部导航手机端处理*/
      if ($('.met-footnav').length) {
          Breakpoints.get('xs').on({
              enter: function () {
                  $('.met-footnav .mob-masonry').masonry({
                      itemSelector: ".masonry-item"
                  });
              }
          });
      }
      /*返回顶部*/
      $(".met-scroll-top").click(function () {
          $('html,body').animate({
              'scrollTop': 0
          }, 300);
      });
      //
      var wh = $(window).height();
      $(window).scroll(function () {
          if ($(this).scrollTop() > wh) {
              $(".met-scroll-top").removeClass('hide').addClass("animation-slide-bottom");
          } else {
              $(".met-scroll-top").addClass('hide').removeClass('animation-slide-bottom');
          }
      });
  
      /*首页窗口内动画预加载*/
      $('.met-index-body:eq(0) [data-plugin=appear],.met-page-ajax-body[data-plugin=appear]').each(function () {
          var thisT = $(this).offset().top,
              thisH = $(this).height();
          if (thisT < wh + $(window).scrollTop()) {
              var dataAnimate = $(this).attr('data-animate');
              $(this).removeClass("invisible").removeAttr('data-plugin').removeAttr('data-animate').addClass('appear-no-repeat animation-' + dataAnimate);
              $('img', this).each(function () {
                  $(this).attr({
                      src: $(this).data('original'),
                      srcset: $(this).data('srcset')
                  }).removeClass('imgloading').removeAttr('data-original').removeAttr('data-srcset');
              });
          }
      });
  })
  
  /*选项卡滑动导航标准处理（移动端）*/
  function navtabSwiper(navObj) {
      var navtabSdefault = function () {
          var navObjW = sonWidthSum(navObj + '>li') + $('.caret', navObj).length;
          if (navObjW > $(navObj).parent().width()) {
              if ($(navObj).hasClass('swiper-wrapper')) {
                  if (!$(navObj).hasClass('flex-start')) $(navObj).addClass('flex-start');
              } else {
                  $(navObj)
                      .addClass("swiper-wrapper flex-start")
                      .wrap("<div class=\"swiper-container swiper-navtab\"></div>").after('<div class="swiper-scrollbar"></div>')
                      .find(">li").addClass("swiper-slide");
                  var swiperNavtab = new Swiper('.swiper-navtab', {
                      slidesPerView: 'auto',
                      scrollbar: '.swiper-scrollbar',
                      scrollbarHide: false,
                      scrollbarDraggable: true,
                      preventClicks: false
                  });
              }
          } else if ($(navObj).hasClass('flex-start')) {
              $(navObj).removeClass('flex-start');
          }
      };
      navtabSdefault();
      $(window).resize(function () {
          navtabSdefault();
      })
      //下拉菜单被隐藏特殊情况处理
      if ($(navObj + ' .dropdown').length) {
          $(".swiper-navtab").addClass("overflow-visible");
          $(".sidebar_tile").addClass("overflow-visible");
      }
  }
  
  /*异步加载文件*/
  function include(file, fun) {
      var files = typeof file == "string" ? [file] : file;
      for (var i = 0; i < files.length; i++) {
          var name = files[i].replace(/^\s|\s$/g, ""),
              att = name.split('.'),
              ext = att[att.length - 1].toLowerCase();
          if (ext == 'js') {
              var filesi = document.createElement('script');
              filesi.src = name;
              filesi.type = "text/javascript";
          } else if (ext == 'css') {
              var filesi = document.createElement('link');
              filesi.href = name;
              filesi.type = 'text/css';
              filesi.rel = "stylesheet";
          }
          if (typeof filesi != "undefined") {
              document.getElementsByTagName('head')[0].appendChild(filesi);
          }
          if (typeof fun === "function") {
              filesi.onload = filesi.onreadystatechange = function () {
                  var r = filesi.readyState;
                  if (!r || r === 'loaded' || r === 'complete') {
                      filesi.onload = filesi.onreadystatechange = null;
                      fun();
                  }
              };
          }
      }
  }
  
  /*图片高度预设*/
  function imageSize(risObj, risImg) {
      var risObjs = risObj.split(','),
          risImg = risImg ? risImg : 'img';
      for (var i = 0; i < risObjs.length; i++) {
          $(risObjs[i]).each(function () {
              var scale = $(this).data('scale');
              if (scale) {
                  $(risImg, this).height($(risImg, this).width() * scale);
                  $(risImg, this).each(function () {
                      var thisimg = $(this);
                      imageloadFun(this, function () {
                          thisimg.height('');
                      })
                  });
                  var $this = $(this);
                  $(window).resize(function () {
                      var resImg = $this.find(risImg + '.imgload');
                      resImg.height(resImg.width() * scale);
                  });
              }
          });
      }
  }
  
  /*图片加载完成回调*/
  function imageloadFun(risObj, fun) {
      $(risObj).each(function () {
          if ($(this).data('lazy') || $(this).data('original')) {
              var thisimg = $(this),
                  loadtime = setInterval(function () {
                      if (thisimg.attr('src') == thisimg.data('original') || thisimg.attr('src') == thisimg.data('lazy')) {
                          clearInterval(loadtime);
                          var img = new Image(),
                              img_url = thisimg.attr('src');
                          img.src = img_url;
                          if (img.complete) {
                              if (typeof fun === "function") fun();
                              return;
                          }
                          img.onload = function () {
                              if (typeof fun === "function") fun();
                          };
                      }
                  }, 100)
          } else if ($(this).attr('src')) {
              var img = new Image(),
                  img_url = $(this).attr('src');
              img.src = img_url;
              if (img.complete) {
                  if (typeof fun === "function") fun();
                  return;
              }
              img.onload = function () {
                  if (typeof fun === "function") fun();
              };
          }
      });
  };
  
  /*父元素宽度计算*/
  function sonWidthSum(sonObj, sonNum) {
      var sonObjs = $(sonObj),
          sonTrueNum = sonObjs.length,
          parentObjW = 0;
      if (sonNum > sonTrueNum || !sonNum) sonNum = sonTrueNum;
      for (var i = 0; i < sonNum; i++) {
          var sonObjW = sonObjs.eq(i).outerWidth() + parseInt(sonObjs.eq(i).css('marginLeft')) + parseInt(sonObjs.eq(i).css('marginRight'));
          parentObjW += sonObjW;
      }
      return parentObjW + sonNum;
  }
  
  /*手动appear动画*/
  // function appear(appearObj,isappear){
  //     thisAppear=$(appearObj).data('animate')?$(appearObj):$(appearObj).find('[data-animate]');
  //     thisAppear.each(function() {
  //         var animate=$(this).data('animate'),
  //             animation='animation-'+animate+'';
  //         if(isappear){
  //             $(this).addClass(animation).addClass('appear-no-repeat').removeClass('invisible');
  //         }else{
  //             $(this).removeClass(animation).removeClass('appear-no-repeat').addClass('invisible');
  //         }
  //     });
  // }
  /*画廊*/
  $.fn.galleryLoad = function (dynamic) {
      $("body").addClass("met-white-lightGallery"); //画廊皮肤
      if (dynamic) {
          $(this).lightGallery({
              autoplayControls: false,
              getCaptionFromTitleOrAlt: false,
              dynamic: true,
              dynamicEl: dynamic,
              thumbWidth: 64,
              thumbContHeight: 84,
          });
      } else {
          $(this).lightGallery({
              selector: '.lg-item-box:not(.slick-cloned)',
              autoplayControls: false,
              exThumbImage: 'data-exthumbimage',
              getCaptionFromTitleOrAlt: false,
              thumbWidth: 64,
              thumbContHeight: 84,
          });
      }
      $(this).on('onSlideClick.lg', function () {
          $('.lg-outer .lg-toolbar').toggleClass('opacity0');
          if ($('.lg-outer .lg-toolbar').hasClass('opacity0')) {
              $('.lg-outer').removeClass('lg-thumb-open');
          } else {
              $('.lg-outer').addClass('lg-thumb-open');
          }
          if (Breakpoints.is('xs')) {
              if ($('.lg-outer .lg-toolbar').hasClass('opacity0')) {
                  $('.lg-outer .lg-actions').addClass('hide');
              } else {
                  $('.lg-outer .lg-actions').removeClass('hide');
              }
          } else {
              $('.lg-outer .lg-actions').removeClass('hide');
          }
      });
  }
  /*sys.js*/
  var Site = window.Site;
  $(document).ready(function () {
      Site.run();
      /*视频插件异步加载*/
      if ($(".metvideobox").length > 0) {
          $(".metvideobox").each(function () {
              var data = $(this).attr("data-metvideo");
              data = data.split("|");
              var width = data[0],
                  height = data[1],
                  poster = data[2],
                  autoplay = data[3],
                  src = data[4];
              var vhtml = '<div class="metvideobox"><video class="metvideo video-js vjs-default-skin" controls preload="none" width="' + width + '" height="' + height + '" poster="' + poster + '" data-setup=\'{\"autoplay\": ' + autoplay + '}\'>';
              vhtml += '<source src="' + src + '" type="video/mp4" />';
              vhtml += '</video></div>';
              $(this).after(vhtml).remove();
          });
          include(M['tem'] + '/min/widget/video-js/video-js.css');
          if (deviceType == 'p') {
              include(M['tem'] + '/min/widget/video-js/video.js', function () {
                  // videojs.options.flash.swf = M['tem'] + '/min/widget/video-js/video-js.swf';
              });
          } else {
              $('.metvideo').each(function () {
                  var scale = $(this).attr('height') / $(this).attr('width');
                  $(this).height($(this).width() * scale);
                  $(window).resize(function () {
                      $(this).height($(this).width() * scale);
                  });
              });
          }
      }
  });
  $(document).ready(function () {
      if ($(".met-form .met-form-codeimg").length) {
          $(document).on('focus', ".met-form input[name='code']", function () {
              codeimgRefresh();
          })
          $(document).on('click', ".met-form-codeimg", function () {
              codeimgRefresh();
          })
      }
  });
  
  function codeimgRefresh() {
      var url = $(".met-form-codeimg").data("url");
      $(".met-form-codeimg").attr("src", url + '&random=' + Math.floor(Math.random() * 9999 + 1));
  }
  
  if (M["module"] && M["id"]) {
      var modulename = "";
      switch (M["module"]) {
          case 2:
              modulename = "news";
              break;
          case 3:
              modulename = "product";
              break;
          case 4:
              modulename = "download";
              break;
          case 5:
              modulename = "img";
              break
      }
      if (modulename != "") {
          $.ajax({
              type: "POST",
              url: M["weburl"] + "include/hits.php?type=" + modulename + "&id=" + M["id"] + "&metinfover=v1"
          })
      }
  }
  var url = M["weburl"] + "include/interface/uidata.php?lang=" + M["lang"], h = window.location.href;
  if (h.indexOf("preview=1") != -1) {
      url = url + "&theme_preview=1"
  }
  $.ajax({
      type: "POST", url: url, dataType: "json", success: function (msg) {
          var c = msg.config;
          if (c.met_online_type != 3) {
              $.extend({
                  includePath: "", include: function (file) {
                      var files = typeof file == "string" ? [file] : file;
                      for (var i = 0; i < files.length; i++) {
                          var name = files[i].replace(/^\s|\s$/g, "");
                          var att = name.split(".");
                          var ext = att[att.length - 1].toLowerCase();
                          var isCSS = ext == "css";
                          var tag = isCSS ? "link" : "script";
                          var attr = isCSS ? " type='text/css' rel='stylesheet' " : " type='text/javascript' ";
                          var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'";
                          if ($(tag + "[" + link + "]").length == 0) {
                              $("head").prepend("<" + tag + attr + link + "></" + tag + ">")
                          }
                      }
                  }
              });
              $.include(M["weburl"] + "public/css/online.css");
              /*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
              jQuery.migrateMute === void 0 && (jQuery.migrateMute = !0), function (e, t, n) {
                  function r(n) {
                      var r = t.console;
                      i[n] || (i[n] = !0, e.migrateWarnings.push(n), r && r.warn && !e.migrateMute && (r.warn("JQMIGRATE: " + n), e.migrateTrace && r.trace && r.trace()))
                  }
  
                  function a(t, a, i, o) {
                      if (Object.defineProperty) {
                          try {
                              return Object.defineProperty(t, a, {
                                  configurable: !0, enumerable: !0, get: function () {
                                      return r(o), i
                                  }, set: function (e) {
                                      r(o), i = e
                                  }
                              }), n
                          } catch (s) {
                          }
                      }
                      e._definePropertyBroken = !0, t[a] = i
                  }
  
                  var i = {};
                  e.migrateWarnings = [], !e.migrateMute && t.console && t.console.log && t.console.log("JQMIGRATE: Logging is active"), e.migrateTrace === n && (e.migrateTrace = !0), e.migrateReset = function () {
                      i = {}, e.migrateWarnings.length = 0
                  }, "BackCompat" === document.compatMode && r("jQuery is not compatible with Quirks Mode");
                  var o = e("<input/>", {size: 1}).attr("size") && e.attrFn, s = e.attr,
                      u = e.attrHooks.value && e.attrHooks.value.get || function () {
                          return null
                      }, c = e.attrHooks.value && e.attrHooks.value.set || function () {
                          return n
                      }, l = /^(?:input|button)$/i, d = /^[238]$/,
                      p = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
                      f = /^(?:checked|selected)$/i;
                  a(e, "attrFn", o || {}, "jQuery.attrFn is deprecated"), e.attr = function (t, a, i, u) {
                      var c = a.toLowerCase(), g = t && t.nodeType;
                      return u && (4 > s.length && r("jQuery.fn.attr( props, pass ) is deprecated"), t && !d.test(g) && (o ? a in o : e.isFunction(e.fn[a]))) ? e(t)[a](i) : ("type" === a && i !== n && l.test(t.nodeName) && t.parentNode && r("Can't change the 'type' of an input or button in IE 6/7/8"), !e.attrHooks[c] && p.test(c) && (e.attrHooks[c] = {
                          get: function (t, r) {
                              var a, i = e.prop(t, r);
                              return i === !0 || "boolean" != typeof i && (a = t.getAttributeNode(r)) && a.nodeValue !== !1 ? r.toLowerCase() : n
                          }, set: function (t, n, r) {
                              var a;
                              return n === !1 ? e.removeAttr(t, r) : (a = e.propFix[r] || r, a in t && (t[a] = !0), t.setAttribute(r, r.toLowerCase())), r
                          }
                      }, f.test(c) && r("jQuery.fn.attr('" + c + "') may use property instead of attribute")), s.call(e, t, a, i))
                  }, e.attrHooks.value = {
                      get: function (e, t) {
                          var n = (e.nodeName || "").toLowerCase();
                          return "button" === n ? u.apply(this, arguments) : ("input" !== n && "option" !== n && r("jQuery.fn.attr('value') no longer gets properties"), t in e ? e.value : null)
                      }, set: function (e, t) {
                          var a = (e.nodeName || "").toLowerCase();
                          return "button" === a ? c.apply(this, arguments) : ("input" !== a && "option" !== a && r("jQuery.fn.attr('value', val) no longer sets properties"), e.value = t, n)
                      }
                  };
                  var g, h, v = e.fn.init, m = e.parseJSON, y = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
                  e.fn.init = function (t, n, a) {
                      var i;
                      return t && "string" == typeof t && !e.isPlainObject(n) && (i = y.exec(e.trim(t))) && i[0] && ("<" !== t.charAt(0) && r("$(html) HTML strings must start with '<' character"), i[3] && r("$(html) HTML text after last tag is ignored"), "#" === i[0].charAt(0) && (r("HTML string cannot start with a '#' character"), e.error("JQMIGRATE: Invalid selector string (XSS)")), n && n.context && (n = n.context), e.parseHTML) ? v.call(this, e.parseHTML(i[2], n, !0), n, a) : v.apply(this, arguments)
                  }, e.fn.init.prototype = e.fn, e.parseJSON = function (e) {
                      return e || null === e ? m.apply(this, arguments) : (r("jQuery.parseJSON requires a valid JSON string"), null)
                  }, e.uaMatch = function (e) {
                      e = e.toLowerCase();
                      var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || 0 > e.indexOf("compatible") && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [];
                      return {browser: t[1] || "", version: t[2] || "0"}
                  }, e.browser || (g = e.uaMatch(navigator.userAgent), h = {}, g.browser && (h[g.browser] = !0, h.version = g.version), h.chrome ? h.webkit = !0 : h.webkit && (h.safari = !0), e.browser = h), a(e, "browser", e.browser, "jQuery.browser is deprecated"), e.sub = function () {
                      function t(e, n) {
                          return new t.fn.init(e, n)
                      }
  
                      e.extend(!0, t, this), t.superclass = this, t.fn = t.prototype = this(), t.fn.constructor = t, t.sub = this.sub, t.fn.init = function (r, a) {
                          return a && a instanceof e && !(a instanceof t) && (a = t(a)), e.fn.init.call(this, r, a, n)
                      }, t.fn.init.prototype = t.fn;
                      var n = t(document);
                      return r("jQuery.sub() is deprecated"), t
                  }, e.ajaxSetup({converters: {"text json": e.parseJSON}});
                  var b = e.fn.data;
                  e.fn.data = function (t) {
                      var a, i, o = this[0];
                      return !o || "events" !== t || 1 !== arguments.length || (a = e.data(o, t), i = e._data(o, t), a !== n && a !== i || i === n) ? b.apply(this, arguments) : (r("Use of jQuery.fn.data('events') is deprecated"), i)
                  };
                  var j = /\/(java|ecma)script/i, w = e.fn.andSelf || e.fn.addBack;
                  e.fn.andSelf = function () {
                      return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"), w.apply(this, arguments)
                  }, e.clean || (e.clean = function (t, a, i, o) {
                      a = a || document, a = !a.nodeType && a[0] || a, a = a.ownerDocument || a, r("jQuery.clean() is deprecated");
                      var s, u, c, l, d = [];
                      if (e.merge(d, e.buildFragment(t, a).childNodes), i) {
                          for (c = function (e) {
                              return !e.type || j.test(e.type) ? o ? o.push(e.parentNode ? e.parentNode.removeChild(e) : e) : i.appendChild(e) : n
                          }, s = 0; null != (u = d[s]); s++) {
                              e.nodeName(u, "script") && c(u) || (i.appendChild(u), u.getElementsByTagName !== n && (l = e.grep(e.merge([], u.getElementsByTagName("script")), c), d.splice.apply(d, [s + 1, 0].concat(l)), s += l.length))
                          }
                      }
                      return d
                  });
                  var Q = e.event.add, x = e.event.remove, k = e.event.trigger, N = e.fn.toggle, T = e.fn.live,
                      M = e.fn.die, S = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
                      C = RegExp("\\b(?:" + S + ")\\b"), H = /(?:^|\s)hover(\.\S+|)\b/, A = function (t) {
                          return "string" != typeof t || e.event.special.hover ? t : (H.test(t) && r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"), t && t.replace(H, "mouseenter$1 mouseleave$1"))
                      };
                  e.event.props && "attrChange" !== e.event.props[0] && e.event.props.unshift("attrChange", "attrName", "relatedNode", "srcElement"), e.event.dispatch && a(e.event, "handle", e.event.dispatch, "jQuery.event.handle is undocumented and deprecated"), e.event.add = function (e, t, n, a, i) {
                      e !== document && C.test(t) && r("AJAX events should be attached to document: " + t), Q.call(this, e, A(t || ""), n, a, i)
                  }, e.event.remove = function (e, t, n, r, a) {
                      x.call(this, e, A(t) || "", n, r, a)
                  }, e.fn.error = function () {
                      var e = Array.prototype.slice.call(arguments, 0);
                      return r("jQuery.fn.error() is deprecated"), e.splice(0, 0, "error"), arguments.length ? this.bind.apply(this, e) : (this.triggerHandler.apply(this, e), this)
                  }, e.fn.toggle = function (t, n) {
                      if (!e.isFunction(t) || !e.isFunction(n)) {
                          return N.apply(this, arguments)
                      }
                      r("jQuery.fn.toggle(handler, handler...) is deprecated");
                      var a = arguments, i = t.guid || e.guid++, o = 0, s = function (n) {
                          var r = (e._data(this, "lastToggle" + t.guid) || 0) % o;
                          return e._data(this, "lastToggle" + t.guid, r + 1), n.preventDefault(), a[r].apply(this, arguments) || !1
                      };
                      for (s.guid = i; a.length > o;) {
                          a[o++].guid = i
                      }
                      return this.click(s)
                  }, e.fn.live = function (t, n, a) {
                      return r("jQuery.fn.live() is deprecated"), T ? T.apply(this, arguments) : (e(this.context).on(t, this.selector, n, a), this)
                  }, e.fn.die = function (t, n) {
                      return r("jQuery.fn.die() is deprecated"), M ? M.apply(this, arguments) : (e(this.context).off(t, this.selector || "**", n), this)
                  }, e.event.trigger = function (e, t, n, a) {
                      return n || C.test(e) || r("Global events are undocumented and deprecated"), k.call(this, e, t, n || document, a)
                  }, e.each(S.split("|"), function (t, n) {
                      e.event.special[n] = {
                          setup: function () {
                              var t = this;
                              return t !== document && (e.event.add(document, n + "." + e.guid, function () {
                                  e.event.trigger(n, null, t, !0)
                              }), e._data(this, n, e.guid++)), !1
                          }, teardown: function () {
                              return this !== document && e.event.remove(document, n + "." + e._data(this, n)), !1
                          }
                      }
                  })
              }(jQuery, window);
              var t, x, y;
              (function ($) {
                  jQuery.fn.PositionFixed = function (options) {
                      var defaults = {css: "", x: 0, y: 0};
                      var o = jQuery.extend(defaults, options);
                      var isIe6 = false;
                      if ($.browser.msie && parseInt($.browser.version) == 6) {
                          isIe6 = true
                      }
                      var html = $("html");
                      if (isIe6 && html.css("backgroundAttachment") !== "fixed") {
                          html.css("backgroundAttachment", "fixed")
                      }
                      return this.each(function () {
                          var domThis = $(this)[0];
                          var objThis = $(this);
                          if (isIe6) {
                              var left = parseInt(o.x) - html.scrollLeft(), top = parseInt(o.y) - html.scrollTop();
                              objThis.css("position", "absolute");
                              domThis.style.setExpression("left", "eval((document.documentElement).scrollLeft + " + o.x + ') + "px"');
                              domThis.style.setExpression("top", "eval((document.documentElement).scrollTop + " + o.y + ') + "px"')
                          } else {
                              objThis.css("position", "fixed").css("top", o.y).css("left", o.x)
                          }
                      })
                  }
              })(jQuery);
              var Floaters = {
                  delta: 0.08,
                  queue: null,
                  collection: {},
                  items: [],
                  addItem: function (Obj, left, top, ani) {
                      Obj.style["top"] = top + "px";
                      Obj.style["left"] = left + "px";
                      var newItem = {object: Obj, oLeft: left, oTop: top};
                      this.items[this.items.length] = newItem;
                      this.delta = ani ? ani : this.delta
                  },
                  sPlay: function () {
                      this.collection = this.items;
                      this.queue = setInterval(function () {
                          metplay()
                      }, 10)
                  }
              };
  
              function checkStandard() {
                  var scrollY;
                  if (document.documentElement && document.documentElement.scrollTop) {
                      scrollY = document.documentElement.scrollTop
                  } else {
                      if (document.body) {
                          scrollY = document.body.scrollTop
                      }
                  }
                  return scrollY
              }
  
              function metplay() {
                  var diffY = checkStandard();
                  for (var i in Floaters.collection) {
                      var obj = Floaters.collection[i].object;
                      var obj_y = Floaters.collection[i].oTop;
                      var total = diffY + obj_y;
                      if (obj.offsetTop != total) {
                          var oy = (total - obj.offsetTop) * Floaters.delta;
                          oy = (oy > 0 ? 1 : -1) * Math.ceil(Math.abs(oy));
                          obj.style["top"] = obj.offsetTop + oy + "px"
                      } else {
                          clearInterval(Floaters.queue);
                          Floaters.queue = setInterval(function () {
                              metplay()
                          }, 10)
                      }
                  }
              }
  
              function onlineclose() {
                  $("#onlinebox").hide();
                  return false
              }
  
              function olne_domx(type, onlinex) {
                  var maxr = document.body.offsetWidth - $("#onlinebox").width();
                  if (type > 1) {
                      onlinex = document.body.scrollWidth - $("#onlinebox").width() - onlinex
                  }
                  if (onlinex < 0) {
                      onlinex = 0
                  }
                  if (onlinex > maxr) {
                      onlinex = maxr;
                      if ($.browser.msie && parseInt($.browser.version) == 6) {
                          onlinex = maxr - 18
                      }
                  }
                  return onlinex
              }
  
              function olne_domx_op(type, onlinex) {
                  var zwd = document.documentElement.clientWidth;
                  var oboxw = $("#onlinebox").width();
                  oboxw = oboxw == 0 ? $("#onlinebox .onlinebox-conbox").width() : oboxw;
                  var maxr = zwd - oboxw;
                  if (type > 1) {
                      onlinex = zwd - oboxw - onlinex
                  }
                  if (onlinex < 0) {
                      onlinex = 0
                  }
                  if (onlinex > maxr) {
                      onlinex = maxr;
                      if ($.browser.msie && parseInt($.browser.version) == 6) {
                          onlinex = maxr - 18
                      }
                  }
                  return onlinex
              }
  
              function olne_dd_wd(d) {
                  var w = 0;
                  d.each(function () {
                      w = w > $(this).outerWidth(true) ? w : $(this).outerWidth(true)
                  });
                  return w
              }
  
              function olne_mouse_on(t, my, nex, type) {
                  if (t == 1) {
                      my.hide();
                      nex.show();
                      var dmk = $("div.onlinebox-conbox .online-tbox").size() ? $("div.onlinebox-conbox .online-tbox").outerWidth(true) : 0;
                      var dt = olne_dd_wd($("div.onlinebox-conbox dd"));
                      dt = dt > dmk ? dt : $("div.onlinebox-conbox .online-tbox").outerWidth(true);
                      if (dt <= 0) {
                          dt = 100
                      }
                      nex.css({"width": dt + "px"})
                  } else {
                      nex.css({"position": "absolute", "left": "0px"});
                      nex.hide();
                      my.show()
                  }
                  olne_resize()
              }
  
              function olne_resize() {
                  mx = Number(olne_domx_op(t, x));
                  my = Number(y);
                  if (t > 0 && t < 3) {
                      var floatDivr = document.getElementById("onlinebox");
                      Floaters.addItem(floatDivr, mx, my);
                      Floaters.sPlay()
                  } else {
                      $("#onlinebox").PositionFixed({x: mx, y: my})
                  }
              }
  
              function olne_mouse(dom, type) {
                  var nex = dom.next("div.onlinebox-conbox");
                  if ($(".onlinebox_2").size() > 0) {
                      dom.click(function () {
                          olne_mouse_on(1, $(this), nex, type)
                      })
                  } else {
                      dom.hover(function () {
                          olne_mouse_on(1, $(this), nex, type)
                      }, function () {
                      })
                  }
                  $("#onlinebox .onlinebox-top").click(function () {
                      if (!nex.is(":hidden")) {
                          olne_mouse_on(0, dom, nex, type)
                      }
                  });
                  textWrap($(".onlinebox-showbox span"))
              }
  
              function textWrap(my) {
                  var text = "", txt = my.text();
                  txt = txt.split("");
                  for (var i = 0; i < txt.length; i++) {
                      text += txt[i] + "<br/>"
                  }
                  my.html(text)
              }
  
              function olne_app(msg, type, mxq, myq) {
                  $("body").append(msg);
                  mx = Number(olne_domx_op(type, mxq));
                  my = Number(myq);
                  if (type > 0 && type < 3) {
                      var floatDivr = document.getElementById("onlinebox");
                      Floaters.addItem(floatDivr, mx, my);
                      Floaters.sPlay()
                  } else {
                      $("#onlinebox").PositionFixed({x: mx, y: my})
                  }
                  $(window).resize(function () {
                      olne_resize()
                  });
                  $("#onlinebox").show();
                  if ($("div.onlinebox-showbox").size() > 0) {
                      olne_mouse($("div.onlinebox-showbox"), type)
                  }
              }
  
              $(document).ready(function () {
                  var url = M["weburl"] + "include/online.php?lang=" + M["lang"];
                  $.ajax({
                      type: "POST", url: url, dataType: "json", success: function (msg) {
                          t = msg.t, x = msg.x, y = msg.y;
                          if (t != 3) {
                              olne_app(msg.html, t, x, y)
                          }
                      }
                  })
              })
          }
          if (c.met_stat == 1) {
              var navurl = M["classnow"] == 10001 ? "" : "../";
              var stat_d = M["classnow"] + "-" + M["id"] + "-" + M["lang"];
              var url = M["weburl"] + "include/stat/stat.php?type=para&u=" + navurl + "&d=" + stat_d;
              $.getScript(url)
          }
      }
  });
  