"] }, Gt = m(ht), Qt = Gt.appendChild(ht.createElement("div")); Yt.optgroup = Yt.option, Yt.tbody = Yt.tfoot = Yt.colgroup = Yt.caption = Yt.thead, Yt.th = Yt.td, it.extend({ clone: function(e, t, n) { var r, i, o, a, s, u = it.contains(e.ownerDocument, e); if (nt.html5Clone || it.isXMLDoc(e) || !Pt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (Qt.innerHTML = e.outerHTML, Qt.removeChild(o = Qt.firstChild)), !(nt.noCloneEvent && nt.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || it.isXMLDoc(e))) for (r = g(o), s = g(e), a = 0; null != (i = s[a]); ++a) r[a] && C(i, r[a]); if (t) if (n) for (s = s || g(e), r = r || g(o), a = 0; null != (i = s[a]); a++) T(i, r[a]); else T(e, o); return r = g(o, "script"), r.length > 0 && w(r, !u && g(e, "script")), r = s = i = null, o }, buildFragment: function(e, t, n, r) { for (var i, o, a, s, u, l, c, d = e.length, f = m(t), p = [], h = 0; d > h; h++) if (o = e[h], o || 0 === o) if ("object" === it.type(o)) it.merge(p, o.nodeType ? [o] : o); else if (zt.test(o)) { for (s = s || f.appendChild(t.createElement("div")), u = (Wt.exec(o) || ["", ""])[1].toLowerCase(), c = Yt[u] || Yt._default, s.innerHTML = c[1] + o.replace(Rt, "<$1>$2>") + c[2], i = c[0]; i--;) s = s.lastChild; if (!nt.leadingWhitespace && Bt.test(o) && p.push(t.createTextNode(Bt.exec(o)[0])), !nt.tbody) for (o = "table" !== u || $t.test(o) ? "
" !== c[1] || $t.test(o) ? 0 : s : s.firstChild, i = o && o.childNodes.length; i--;) it.nodeName(l = o.childNodes[i], "tbody") && !l.childNodes.length && o.removeChild(l); for (it.merge(p, s.childNodes), s.textContent = ""; s.firstChild;) s.removeChild(s.firstChild); s = f.lastChild } else p.push(t.createTextNode(o)); for (s && f.removeChild(s), nt.appendChecked || it.grep(g(p, "input"), v), h = 0; o = p[h++];) if ((!r || -1 === it.inArray(o, r)) && (a = it.contains(o.ownerDocument, o), s = g(f.appendChild(o), "script"), a && w(s), n)) for (i = 0; o = s[i++];) Ut.test(o.type || "") && n.push(o); return s = null, f }, cleanData: function(e, t) { for (var n, r, i, o, a = 0, s = it.expando, u = it.cache, l = nt.deleteExpando, c = it.event.special; null != (n = e[a]); a++) if ((t || it.acceptData(n)) && (i = n[s], o = i && u[i])) { if (o.events) for (r in o.events) c[r] ? it.event.remove(n, r) : it.removeEvent(n, r, o.handle); u[i] && (delete u[i], l ? delete n[s] : typeof n.removeAttribute !== Ct ? n.removeAttribute(s) : n[s] = null, J.push(i)) } } }), it.fn.extend({ text: function(e) { return Dt(this, function(e) { return void 0 === e ? it.text(this) : this.empty().append((this[0] && this[0].ownerDocument || ht).createTextNode(e)) }, null, e, arguments.length) }, append: function() { return this.domManip(arguments, function(e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = y(this, e); t.appendChild(e) } }) }, prepend: function() { return this.domManip(arguments, function(e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = y(this, e); t.insertBefore(e, t.firstChild) } }) }, before: function() { return this.domManip(arguments, function(e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function() { return this.domManip(arguments, function(e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) }) }, remove: function(e, t) { for (var n, r = e ? it.filter(e, this) : this, i = 0; null != (n = r[i]); i++) t || 1 !== n.nodeType || it.cleanData(g(n)), n.parentNode && (t && it.contains(n.ownerDocument, n) && w(g(n, "script")), n.parentNode.removeChild(n)); return this }, empty: function() { for (var e, t = 0; null != (e = this[t]); t++) { for (1 === e.nodeType && it.cleanData(g(e, !1)); e.firstChild;) e.removeChild(e.firstChild); e.options && it.nodeName(e, "select") && (e.options.length = 0) } return this }, clone: function(e, t) { return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() { return it.clone(this, e, t) }) }, html: function(e) { return Dt(this, function(e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e) return 1 === t.nodeType ? t.innerHTML.replace(Ot, "") : void 0; if (!("string" != typeof e || It.test(e) || !nt.htmlSerialize && Pt.test(e) || !nt.leadingWhitespace && Bt.test(e) || Yt[(Wt.exec(e) || ["", ""])[1].toLowerCase()])) { e = e.replace(Rt, "<$1>$2>"); try { for (; r > n; n++) t = this[n] || {}, 1 === t.nodeType && (it.cleanData(g(t, !1)), t.innerHTML = e); t = 0 } catch (i) {} } t && this.empty().append(e) }, null, e, arguments.length) }, replaceWith: function() { var e = arguments[0]; return this.domManip(arguments, function(t) { e = this.parentNode, it.cleanData(g(this)), e && e.replaceChild(t, this) }), e && (e.length || e.nodeType) ? this : this.remove() }, detach: function(e) { return this.remove(e, !0) }, domManip: function(e, t) { e = G.apply([], e); var n, r, i, o, a, s, u = 0, l = this.length, c = this, d = l - 1, f = e[0], p = it.isFunction(f); if (p || l > 1 && "string" == typeof f && !nt.checkClone && Xt.test(f)) return this.each(function(n) { var r = c.eq(n); p && (e[0] = f.call(this, n, r.html())), r.domManip(e, t) }); if (l && (s = it.buildFragment(e, this[0].ownerDocument, !1, this), n = s.firstChild, 1 === s.childNodes.length && (s = n), n)) { for (o = it.map(g(s, "script"), b), i = o.length; l > u; u++) r = s, u !== d && (r = it.clone(r, !0, !0), i && it.merge(o, g(r, "script"))), t.call(this[u], r, u); if (i) for (a = o[o.length - 1].ownerDocument, it.map(o, x), u = 0; i > u; u++) r = o[u], Ut.test(r.type || "") && !it._data(r, "globalEval") && it.contains(a, r) && (r.src ? it._evalUrl && it._evalUrl(r.src) : it.globalEval((r.text || r.textContent || r.innerHTML || "").replace(Jt, ""))); s = n = null } return this } }), it.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function(e, t) { it.fn[e] = function(e) { for (var n, r = 0, i = [], o = it(e), a = o.length - 1; a >= r; r++) n = r === a ? this : this.clone(!0), it(o[r])[t](n), Q.apply(i, n.get()); return this.pushStack(i) } }); var Kt, Zt = {}; ! function() { var e; nt.shrinkWrapBlocks = function() { if (null != e) return e; e = !1; var t, n, r; return n = ht.getElementsByTagName("body")[0], n && n.style ? (t = ht.createElement("div"), r = ht.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(r).appendChild(t), typeof t.style.zoom !== Ct && (t.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", t.appendChild(ht.createElement("div")).style.width = "5px", e = 3 !== t.offsetWidth), n.removeChild(r), e) : void 0 } }(); var en, tn, nn = /^margin/, rn = new RegExp("^(" + kt + ")(?!px)[a-z%]+$", "i"), on = /^(top|right|bottom|left)$/; e.getComputedStyle ? (en = function(t) { return t.ownerDocument.defaultView.opener ? t.ownerDocument.defaultView.getComputedStyle(t, null) : e.getComputedStyle(t, null) }, tn = function(e, t, n) { var r, i, o, a, s = e.style; return n = n || en(e), a = n ? n.getPropertyValue(t) || n[t] : void 0, n && ("" !== a || it.contains(e.ownerDocument, e) || (a = it.style(e, t)), rn.test(a) && nn.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 === a ? a : a + "" }) : ht.documentElement.currentStyle && (en = function(e) { return e.currentStyle }, tn = function(e, t, n) { var r, i, o, a, s = e.style; return n = n || en(e), a = n ? n[t] : void 0, null == a && s && s[t] && (a = s[t]), rn.test(a) && !on.test(t) && (r = s.left, i = e.runtimeStyle, o = i && i.left, o && (i.left = e.currentStyle.left), s.left = "fontSize" === t ? "1em" : a, a = s.pixelLeft + "px", s.left = r, o && (i.left = o)), void 0 === a ? a : a + "" || "auto" }), function() { function t() { var t, n, r, i; n = ht.getElementsByTagName("body")[0], n && n.style && (t = ht.createElement("div"), r = ht.createElement("div"), r.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px", n.appendChild(r).appendChild(t), t.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", o = a = !1, u = !0, e.getComputedStyle && (o = "1%" !== (e.getComputedStyle(t, null) || {}).top, a = "4px" === (e.getComputedStyle(t, null) || { width: "4px" }).width, i = t.appendChild(ht.createElement("div")), i.style.cssText = t.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", t.style.width = "1px", u = !parseFloat((e.getComputedStyle(i, null) || {}).marginRight), t.removeChild(i)), t.innerHTML = "
t
", i = t.getElementsByTagName("td"), i[0].style.cssText = "margin:0;border:0;padding:0;display:none", s = 0 === i[0].offsetHeight, s && (i[0].style.display = "", i[1].style.display = "none", s = 0 === i[0].offsetHeight), n.removeChild(r)) } var n, r, i, o, a, s, u; n = ht.createElement("div"), n.innerHTML = "
a", i = n.getElementsByTagName("a")[0], r = i && i.style, r && (r.cssText = "float:left;opacity:.5", nt.opacity = "0.5" === r.opacity, nt.cssFloat = !!r.cssFloat, n.style.backgroundClip = "content-box", n.cloneNode(!0).style.backgroundClip = "", nt.clearCloneStyle = "content-box" === n.style.backgroundClip, nt.boxSizing = "" === r.boxSizing || "" === r.MozBoxSizing || "" === r.WebkitBoxSizing, it.extend(nt, { reliableHiddenOffsets: function() { return null == s && t(), s }, boxSizingReliable: function() { return null == a && t(), a }, pixelPosition: function() { return null == o && t(), o }, reliableMarginRight: function() { return null == u && t(), u } })) }(), it.swap = function(e, t, n, r) { var i, o, a = {}; for (o in t) a[o] = e.style[o], e.style[o] = t[o]; i = n.apply(e, r || []); for (o in t) e.style[o] = a[o]; return i }; var an = /alpha\([^)]*\)/i, sn = /opacity\s*=\s*([^)]*)/, un = /^(none|table(?!-c[ea]).+)/, ln = new RegExp("^(" + kt + ")(.*)$", "i"), cn = new RegExp("^([+-])=(" + kt + ")", "i"), dn = { position: "absolute", visibility: "hidden", display: "block" }, fn = { letterSpacing: "0", fontWeight: "400" }, pn = ["Webkit", "O", "Moz", "ms"]; it.extend({ cssHooks: { opacity: { get: function(e, t) { if (t) { var n = tn(e, "opacity"); return "" === n ? "1" : n } } } }, 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": nt.cssFloat ? "cssFloat" : "styleFloat" }, style: function(e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, s = it.camelCase(t), u = e.style; if (t = it.cssProps[s] || (it.cssProps[s] = S(u, s)), a = it.cssHooks[t] || it.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : u[t]; if (o = typeof n, "string" === o && (i = cn.exec(n)) && (n = (i[1] + 1) * i[2] + parseFloat(it.css(e, t)), o = "number"), null != n && n === n && ("number" !== o || it.cssNumber[s] || (n += "px"), nt.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"), !(a && "set" in a && void 0 === (n = a.set(e, n, r))))) try { u[t] = n } catch (l) {} } }, css: function(e, t, n, r) { var i, o, a, s = it.camelCase(t); return t = it.cssProps[s] || (it.cssProps[s] = S(e.style, s)), a = it.cssHooks[t] || it.cssHooks[s], a && "get" in a && (o = a.get(e, !0, n)), void 0 === o && (o = tn(e, t, r)), "normal" === o && t in fn && (o = fn[t]), "" === n || n ? (i = parseFloat(o), n === !0 || it.isNumeric(i) ? i || 0 : o) : o } }), it.each(["height", "width"], function(e, t) { it.cssHooks[t] = { get: function(e, n, r) { return n ? un.test(it.css(e, "display")) && 0 === e.offsetWidth ? it.swap(e, dn, function() { return L(e, t, r) }) : L(e, t, r) : void 0 }, set: function(e, n, r) { var i = r && en(e); return D(e, n, r ? j(e, t, r, nt.boxSizing && "border-box" === it.css(e, "boxSizing", !1, i), i) : 0) } } }), nt.opacity || (it.cssHooks.opacity = { get: function(e, t) { return sn.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : "" }, set: function(e, t) { var n = e.style, r = e.currentStyle, i = it.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "", o = r && r.filter || n.filter || ""; n.zoom = 1, (t >= 1 || "" === t) && "" === it.trim(o.replace(an, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = an.test(o) ? o.replace(an, i) : o + " " + i) } }), it.cssHooks.marginRight = k(nt.reliableMarginRight, function(e, t) { return t ? it.swap(e, { display: "inline-block" }, tn, [e, "marginRight"]) : void 0 }), it.each({ margin: "", padding: "", border: "Width" }, function(e, t) { it.cssHooks[e + t] = { expand: function(n) { for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; 4 > r; r++) i[e + St[r] + t] = o[r] || o[r - 2] || o[0]; return i } }, nn.test(e) || (it.cssHooks[e + t].set = D) }), it.fn.extend({ css: function(e, t) { return Dt(this, function(e, t, n) { var r, i, o = {}, a = 0; if (it.isArray(t)) { for (r = en(e), i = t.length; i > a; a++) o[t[a]] = it.css(e, t[a], !1, r); return o } return void 0 !== n ? it.style(e, t, n) : it.css(e, t) }, e, t, arguments.length > 1) }, show: function() { return A(this, !0) }, hide: function() { return A(this) }, toggle: function(e) { return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() { At(this) ? it(this).show() : it(this).hide() }) } }), it.Tween = H, H.prototype = { constructor: H, init: function(e, t, n, r, i, o) { this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (it.cssNumber[n] ? "" : "px") }, cur: function() { var e = H.propHooks[this.prop]; return e && e.get ? e.get(this) : H.propHooks._default.get(this) }, run: function(e) { var t, n = H.propHooks[this.prop]; return this.pos = t = this.options.duration ? it.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : H.propHooks._default.set(this), this } }, H.prototype.init.prototype = H.prototype, H.propHooks = { _default: { get: function(e) { var t; return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = it.css(e.elem, e.prop, ""), t && "auto" !== t ? t : 0) : e.elem[e.prop] }, set: function(e) { it.fx.step[e.prop] ? it.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[it.cssProps[e.prop]] || it.cssHooks[e.prop]) ? it.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now } } }, H.propHooks.scrollTop = H.propHooks.scrollLeft = { set: function(e) { e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) } }, it.easing = { linear: function(e) { return e }, swing: function(e) { return .5 - Math.cos(e * Math.PI) / 2 } }, it.fx = H.prototype.init, it.fx.step = {}; var hn, mn, gn = /^(?:toggle|show|hide)$/, vn = new RegExp("^(?:([+-])=|)(" + kt + ")([a-z%]*)$", "i"), yn = /queueHooks$/, bn = [F], xn = { "*": [function(e, t) { var n = this.createTween(e, t), r = n.cur(), i = vn.exec(t), o = i && i[3] || (it.cssNumber[e] ? "" : "px"), a = (it.cssNumber[e] || "px" !== o && +r) && vn.exec(it.css(n.elem, e)), s = 1, u = 20; if (a && a[3] !== o) { o = o || a[3], i = i || [], a = +r || 1; do s = s || ".5", a /= s, it.style(n.elem, e, a + o); while (s !== (s = n.cur() / r) && 1 !== s && --u) } return i && (a = n.start = +a || +r || 0, n.unit = o, n.end = i[1] ? a + (i[1] + 1) * i[2] : +i[2]), n }] }; it.Animation = it.extend(P, { tweener: function(e, t) { it.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" "); for (var n, r = 0, i = e.length; i > r; r++) n = e[r], xn[n] = xn[n] || [], xn[n].unshift(t) }, prefilter: function(e, t) { t ? bn.unshift(e) : bn.push(e) } }), it.speed = function(e, t, n) { var r = e && "object" == typeof e ? it.extend({}, e) : { complete: n || !n && t || it.isFunction(e) && e, duration: e, easing: n && t || t && !it.isFunction(t) && t }; return r.duration = it.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in it.fx.speeds ? it.fx.speeds[r.duration] : it.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() { it.isFunction(r.old) && r.old.call(this), r.queue && it.dequeue(this, r.queue) }, r }, it.fn.extend({ fadeTo: function(e, t, n, r) { return this.filter(At).css("opacity", 0).show().end().animate({ opacity: t }, e, n, r) }, animate: function(e, t, n, r) { var i = it.isEmptyObject(e), o = it.speed(t, n, r), a = function() { var t = P(this, it.extend({}, e), o); (i || it._data(this, "finish")) && t.stop(!0) }; return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a) }, stop: function(e, t, n) { var r = function(e) { var t = e.stop; delete e.stop, t(n) }; return "string" != typeof e && (n = t, t = e, e = void 0), t && e !== !1 && this.queue(e || "fx", []), this.each(function() { var t = !0, i = null != e && e + "queueHooks", o = it.timers, a = it._data(this); if (i) a[i] && a[i].stop && r(a[i]); else for (i in a) a[i] && a[i].stop && yn.test(i) && r(a[i]); for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1)); (t || !n) && it.dequeue(this, e) }) }, finish: function(e) { return e !== !1 && (e = e || "fx"), this.each(function() { var t, n = it._data(this), r = n[e + "queue"], i = n[e + "queueHooks"], o = it.timers, a = r ? r.length : 0; for (n.finish = !0, it.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1)); for (t = 0; a > t; t++) r[t] && r[t].finish && r[t].finish.call(this); delete n.finish }) } }), it.each(["toggle", "show", "hide"], function(e, t) { var n = it.fn[t]; it.fn[t] = function(e, r, i) { return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(_(t, !0), e, r, i) } }), it.each({ slideDown: _("show"), slideUp: _("hide"), slideToggle: _("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function(e, t) { it.fn[e] = function(e, n, r) { return this.animate(t, e, n, r) } }), it.timers = [], it.fx.tick = function() { var e, t = it.timers, n = 0; for (hn = it.now(); n < t.length; n++) e = t[n], e() || t[n] !== e || t.splice(n--, 1); t.length || it.fx.stop(), hn = void 0 }, it.fx.timer = function(e) { it.timers.push(e), e() ? it.fx.start() : it.timers.pop() }, it.fx.interval = 13, it.fx.start = function() { mn || (mn = setInterval(it.fx.tick, it.fx.interval)) }, it.fx.stop = function() { clearInterval(mn), mn = null }, it.fx.speeds = { slow: 600, fast: 200, _default: 400 }, it.fn.delay = function(e, t) { return e = it.fx ? it.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) { var r = setTimeout(t, e); n.stop = function() { clearTimeout(r) } }) }, function() { var e, t, n, r, i; t = ht.createElement("div"), t.setAttribute("className", "t"), t.innerHTML = "
a", r = t.getElementsByTagName("a")[0], n = ht.createElement("select"), i = n.appendChild(ht.createElement("option")), e = t.getElementsByTagName("input")[0], r.style.cssText = "top:1px", nt.getSetAttribute = "t" !== t.className, nt.style = /top/.test(r.getAttribute("style")), nt.hrefNormalized = "/a" === r.getAttribute("href"), nt.checkOn = !!e.value, nt.optSelected = i.selected, nt.enctype = !!ht.createElement("form").enctype, n.disabled = !0, nt.optDisabled = !i.disabled, e = ht.createElement("input"), e.setAttribute("value", ""), nt.input = "" === e.getAttribute("value"), e.value = "t", e.setAttribute("type", "radio"), nt.radioValue = "t" === e.value }(); var wn = /\r/g; it.fn.extend({ val: function(e) { var t, n, r, i = this[0]; { if (arguments.length) return r = it.isFunction(e), this.each(function(n) { var i; 1 === this.nodeType && (i = r ? e.call(this, n, it(this).val()) : e, null == i ? i = "" : "number" == typeof i ? i += "" : it.isArray(i) && (i = it.map(i, function(e) { return null == e ? "" : e + "" })), t = it.valHooks[this.type] || it.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i)) }); if (i) return t = it.valHooks[i.type] || it.valHooks[i.nodeName.toLowerCase()], t && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : (n = i.value, "string" == typeof n ? n.replace(wn, "") : null == n ? "" : n) } } }), it.extend({ valHooks: { option: { get: function(e) { var t = it.find.attr(e, "value"); return null != t ? t : it.trim(it.text(e)) } }, select: { get: function(e) { for (var t, n, r = e.options, i = e.selectedIndex, o = "select-one" === e.type || 0 > i, a = o ? null : [], s = o ? i + 1 : r.length, u = 0 > i ? s : o ? i : 0; s > u; u++) if (n = r[u], !(!n.selected && u !== i || (nt.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && it.nodeName(n.parentNode, "optgroup"))) { if (t = it(n).val(), o) return t; a.push(t) } return a }, set: function(e, t) { for (var n, r, i = e.options, o = it.makeArray(t), a = i.length; a--;) if (r = i[a], it.inArray(it.valHooks.option.get(r), o) >= 0) try { r.selected = n = !0 } catch (s) { r.scrollHeight } else r.selected = !1; return n || (e.selectedIndex = -1), i } } } }), it.each(["radio", "checkbox"], function() { it.valHooks[this] = { set: function(e, t) { return it.isArray(t) ? e.checked = it.inArray(it(e).val(), t) >= 0 : void 0 } }, nt.checkOn || (it.valHooks[this].get = function(e) { return null === e.getAttribute("value") ? "on" : e.value }) }); var Tn, Cn, Nn = it.expr.attrHandle, En = /^(?:checked|selected)$/i, kn = nt.getSetAttribute, Sn = nt.input; it.fn.extend({ attr: function(e, t) { return Dt(this, it.attr, e, t, arguments.length > 1) }, removeAttr: function(e) { return this.each(function() { it.removeAttr(this, e) }) } }), it.extend({ attr: function(e, t, n) { var r, i, o = e.nodeType; if (e && 3 !== o && 8 !== o && 2 !== o) return typeof e.getAttribute === Ct ? it.prop(e, t, n) : (1 === o && it.isXMLDoc(e) || (t = t.toLowerCase(), r = it.attrHooks[t] || (it.expr.match.bool.test(t) ? Cn : Tn)), void 0 === n ? r && "get" in r && null !== (i = r.get(e, t)) ? i : (i = it.find.attr(e, t), null == i ? void 0 : i) : null !== n ? r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i : (e.setAttribute(t, n + ""), n) : void it.removeAttr(e, t)) }, removeAttr: function(e, t) { var n, r, i = 0, o = t && t.match(bt); if (o && 1 === e.nodeType) for (; n = o[i++];) r = it.propFix[n] || n, it.expr.match.bool.test(n) ? Sn && kn || !En.test(n) ? e[r] = !1 : e[it.camelCase("default-" + n)] = e[r] = !1 : it.attr(e, n, ""), e.removeAttribute(kn ? n : r) }, attrHooks: { type: { set: function(e, t) { if (!nt.radioValue && "radio" === t && it.nodeName(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t } } } } }), Cn = { set: function(e, t, n) { return t === !1 ? it.removeAttr(e, n) : Sn && kn || !En.test(n) ? e.setAttribute(!kn && it.propFix[n] || n, n) : e[it.camelCase("default-" + n)] = e[n] = !0, n } }, it.each(it.expr.match.bool.source.match(/\w+/g), function(e, t) { var n = Nn[t] || it.find.attr; Nn[t] = Sn && kn || !En.test(t) ? function(e, t, r) { var i, o; return r || (o = Nn[t], Nn[t] = i, i = null != n(e, t, r) ? t.toLowerCase() : null, Nn[t] = o), i } : function(e, t, n) { return n ? void 0 : e[it.camelCase("default-" + t)] ? t.toLowerCase() : null } }), Sn && kn || (it.attrHooks.value = { set: function(e, t, n) { return it.nodeName(e, "input") ? void(e.defaultValue = t) : Tn && Tn.set(e, t, n) } }), kn || (Tn = { set: function(e, t, n) { var r = e.getAttributeNode(n); return r || e.setAttributeNode(r = e.ownerDocument.createAttribute(n)), r.value = t += "", "value" === n || t === e.getAttribute(n) ? t : void 0 } }, Nn.id = Nn.name = Nn.coords = function(e, t, n) { var r; return n ? void 0 : (r = e.getAttributeNode(t)) && "" !== r.value ? r.value : null }, it.valHooks.button = { get: function(e, t) { var n = e.getAttributeNode(t); return n && n.specified ? n.value : void 0 }, set: Tn.set }, it.attrHooks.contenteditable = { set: function(e, t, n) { Tn.set(e, "" === t ? !1 : t, n) } }, it.each(["width", "height"], function(e, t) { it.attrHooks[t] = { set: function(e, n) { return "" === n ? (e.setAttribute(t, "auto"), n) : void 0 } } })), nt.style || (it.attrHooks.style = { get: function(e) { return e.style.cssText || void 0 }, set: function(e, t) { return e.style.cssText = t + "" } }); var An = /^(?:input|select|textarea|button|object)$/i, Dn = /^(?:a|area)$/i; it.fn.extend({ prop: function(e, t) { return Dt(this, it.prop, e, t, arguments.length > 1) }, removeProp: function(e) { return e = it.propFix[e] || e, this.each(function() { try { this[e] = void 0, delete this[e] } catch (t) {} }) } }), it.extend({ propFix: { "for": "htmlFor", "class": "className" }, prop: function(e, t, n) { var r, i, o, a = e.nodeType; if (e && 3 !== a && 8 !== a && 2 !== a) return o = 1 !== a || !it.isXMLDoc(e), o && (t = it.propFix[t] || t, i = it.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] }, propHooks: { tabIndex: { get: function(e) { var t = it.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : An.test(e.nodeName) || Dn.test(e.nodeName) && e.href ? 0 : -1 } } } }), nt.hrefNormalized || it.each(["href", "src"], function(e, t) { it.propHooks[t] = { get: function(e) { return e.getAttribute(t, 4) } } }), nt.optSelected || (it.propHooks.selected = { get: function(e) { var t = e.parentNode; return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null } }), it.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() { it.propFix[this.toLowerCase()] = this }), nt.enctype || (it.propFix.enctype = "encoding"); var jn = /[\t\r\n\f]/g; it.fn.extend({ addClass: function(e) { var t, n, r, i, o, a, s = 0, u = this.length, l = "string" == typeof e && e; if (it.isFunction(e)) return this.each(function(t) { it(this).addClass(e.call(this, t, this.className)) }); if (l) for (t = (e || "").match(bt) || []; u > s; s++) if (n = this[s], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(jn, " ") : " ")) { for (o = 0; i = t[o++];) r.indexOf(" " + i + " ") < 0 && (r += i + " "); a = it.trim(r), n.className !== a && (n.className = a) } return this }, removeClass: function(e) { var t, n, r, i, o, a, s = 0, u = this.length, l = 0 === arguments.length || "string" == typeof e && e; if (it.isFunction(e)) return this.each(function(t) { it(this).removeClass(e.call(this, t, this.className)) }); if (l) for (t = (e || "").match(bt) || []; u > s; s++) if (n = this[s], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(jn, " ") : "")) { for (o = 0; i = t[o++];) for (; r.indexOf(" " + i + " ") >= 0;) r = r.replace(" " + i + " ", " "); a = e ? it.trim(r) : "", n.className !== a && (n.className = a) } return this }, toggleClass: function(e, t) { var n = typeof e; return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : this.each(it.isFunction(e) ? function(n) { it(this).toggleClass(e.call(this, n, this.className, t), t) } : function() { if ("string" === n) for (var t, r = 0, i = it(this), o = e.match(bt) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t); else(n === Ct || "boolean" === n) && (this.className && it._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : it._data(this, "__className__") || "") }) }, hasClass: function(e) { for (var t = " " + e + " ", n = 0, r = this.length; r > n; n++) if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(jn, " ").indexOf(t) >= 0) return !0; return !1 } }), it.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) { it.fn[t] = function(e, n) { return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t) } }), it.fn.extend({ hover: function(e, t) { return this.mouseenter(e).mouseleave(t || e) }, bind: function(e, t, n) { return this.on(e, null, t, n) }, unbind: function(e, t) { return this.off(e, null, t) }, delegate: function(e, t, n, r) { return this.on(t, e, n, r) }, undelegate: function(e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n) } }); var Ln = it.now(), Hn = /\?/, qn = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; it.parseJSON = function(t) { if (e.JSON && e.JSON.parse) return e.JSON.parse(t + ""); var n, r = null, i = it.trim(t + ""); return i && !it.trim(i.replace(qn, function(e, t, i, o) { return n && t && (r = 0), 0 === r ? e : (n = i || t, r += !o - !i, "") })) ? Function("return " + i)() : it.error("Invalid JSON: " + t) }, it.parseXML = function(t) { var n, r; if (!t || "string" != typeof t) return null; try { e.DOMParser ? (r = new DOMParser, n = r.parseFromString(t, "text/xml")) : (n = new ActiveXObject("Microsoft.XMLDOM"), n.async = "false", n.loadXML(t)) } catch (i) { n = void 0 } return n && n.documentElement && !n.getElementsByTagName("parsererror").length || it.error("Invalid XML: " + t), n }; var _n, Mn, Fn = /#.*$/, On = /([?&])_=[^&]*/, Pn = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm, Bn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, Rn = /^(?:GET|HEAD)$/, Wn = /^\/\//, $n = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, zn = {}, In = {}, Xn = "*/".concat("*"); try { Mn = location.href } catch (Un) { Mn = ht.createElement("a"), Mn.href = "", Mn = Mn.href } _n = $n.exec(Mn.toLowerCase()) || [], it.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: Mn, type: "GET", isLocal: Bn.test(_n[1]), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": Xn, 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": it.parseJSON, "text xml": it.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function(e, t) { return t ? W(W(e, it.ajaxSettings), t) : W(it.ajaxSettings, e) }, ajaxPrefilter: B(zn), ajaxTransport: B(In), ajax: function(e, t) { function n(e, t, n, r) { var i, c, v, y, x, T = t; 2 !== b && (b = 2, s && clearTimeout(s), l = void 0, a = r || "", w.readyState = e > 0 ? 4 : 0, i = e >= 200 && 300 > e || 304 === e, n && (y = $(d, w, n)), y = z(d, y, w, i), i ? (d.ifModified && (x = w.getResponseHeader("Last-Modified"), x && (it.lastModified[o] = x), x = w.getResponseHeader("etag"), x && (it.etag[o] = x)), 204 === e || "HEAD" === d.type ? T = "nocontent" : 304 === e ? T = "notmodified" : (T = y.state, c = y.data, v = y.error, i = !v)) : (v = T, (e || !T) && (T = "error", 0 > e && (e = 0))), w.status = e, w.statusText = (t || T) + "", i ? h.resolveWith(f, [c, T, w]) : h.rejectWith(f, [w, T, v]), w.statusCode(g), g = void 0, u && p.trigger(i ? "ajaxSuccess" : "ajaxError", [w, d, i ? c : v]), m.fireWith(f, [w, T]), u && (p.trigger("ajaxComplete", [w, d]), --it.active || it.event.trigger("ajaxStop"))) } "object" == typeof e && (t = e, e = void 0), t = t || {}; var r, i, o, a, s, u, l, c, d = it.ajaxSetup({}, t), f = d.context || d, p = d.context && (f.nodeType || f.jquery) ? it(f) : it.event, h = it.Deferred(), m = it.Callbacks("once memory"), g = d.statusCode || {}, v = {}, y = {}, b = 0, x = "canceled", w = { readyState: 0, getResponseHeader: function(e) { var t; if (2 === b) { if (!c) for (c = {}; t = Pn.exec(a);) c[t[1].toLowerCase()] = t[2]; t = c[e.toLowerCase()] } return null == t ? null : t }, getAllResponseHeaders: function() { return 2 === b ? a : null }, setRequestHeader: function(e, t) { var n = e.toLowerCase(); return b || (e = y[n] = y[n] || e, v[e] = t), this }, overrideMimeType: function(e) { return b || (d.mimeType = e), this }, statusCode: function(e) { var t; if (e) if (2 > b) for (t in e) g[t] = [g[t], e[t]]; else w.always(e[w.status]); return this }, abort: function(e) { var t = e || x; return l && l.abort(t), n(0, t), this } }; if (h.promise(w).complete = m.add, w.success = w.done, w.error = w.fail, d.url = ((e || d.url || Mn) + "").replace(Fn, "").replace(Wn, _n[1] + "//"), d.type = t.method || t.type || d.method || d.type, d.dataTypes = it.trim(d.dataType || "*").toLowerCase().match(bt) || [""], null == d.crossDomain && (r = $n.exec(d.url.toLowerCase()), d.crossDomain = !(!r || r[1] === _n[1] && r[2] === _n[2] && (r[3] || ("http:" === r[1] ? "80" : "443")) === (_n[3] || ("http:" === _n[1] ? "80" : "443")))), d.data && d.processData && "string" != typeof d.data && (d.data = it.param(d.data, d.traditional)), R(zn, d, t, w), 2 === b) return w; u = it.event && d.global, u && 0 === it.active++ && it.event.trigger("ajaxStart"), d.type = d.type.toUpperCase(), d.hasContent = !Rn.test(d.type), o = d.url, d.hasContent || (d.data && (o = d.url += (Hn.test(o) ? "&" : "?") + d.data, delete d.data), d.cache === !1 && (d.url = On.test(o) ? o.replace(On, "$1_=" + Ln++) : o + (Hn.test(o) ? "&" : "?") + "_=" + Ln++)), d.ifModified && (it.lastModified[o] && w.setRequestHeader("If-Modified-Since", it.lastModified[o]), it.etag[o] && w.setRequestHeader("If-None-Match", it.etag[o])), (d.data && d.hasContent && d.contentType !== !1 || t.contentType) && w.setRequestHeader("Content-Type", d.contentType), w.setRequestHeader("Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + ("*" !== d.dataTypes[0] ? ", " + Xn + "; q=0.01" : "") : d.accepts["*"]); for (i in d.headers) w.setRequestHeader(i, d.headers[i]); if (d.beforeSend && (d.beforeSend.call(f, w, d) === !1 || 2 === b)) return w.abort(); x = "abort"; for (i in { success: 1, error: 1, complete: 1 }) w[i](d[i]); if (l = R(In, d, t, w)) { w.readyState = 1, u && p.trigger("ajaxSend", [w, d]), d.async && d.timeout > 0 && (s = setTimeout(function() { w.abort("timeout") }, d.timeout)); try { b = 1, l.send(v, n) } catch (T) { if (!(2 > b)) throw T; n(-1, T) } } else n(-1, "No Transport"); return w }, getJSON: function(e, t, n) { return it.get(e, t, n, "json") }, getScript: function(e, t) { return it.get(e, void 0, t, "script") } }), it.each(["get", "post"], function(e, t) { it[t] = function(e, n, r, i) { return it.isFunction(n) && (i = i || r, r = n, n = void 0), it.ajax({ url: e, type: t, dataType: i, data: n, success: r }) } }), it._evalUrl = function(e) { return it.ajax({ url: e, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0 }) }, it.fn.extend({ wrapAll: function(e) { if (it.isFunction(e)) return this.each(function(t) { it(this).wrapAll(e.call(this, t)) }); if (this[0]) { var t = it(e, this[0].ownerDocument).eq(0).clone(!0); this[0].parentNode && t.insertBefore(this[0]), t.map(function() { for (var e = this; e.firstChild && 1 === e.firstChild.nodeType;) e = e.firstChild; return e }).append(this) } return this }, wrapInner: function(e) { return this.each(it.isFunction(e) ? function(t) { it(this).wrapInner(e.call(this, t)) } : function() { var t = it(this), n = t.contents(); n.length ? n.wrapAll(e) : t.append(e) }) }, wrap: function(e) { var t = it.isFunction(e); return this.each(function(n) { it(this).wrapAll(t ? e.call(this, n) : e) }) }, unwrap: function() { return this.parent().each(function() { it.nodeName(this, "body") || it(this).replaceWith(this.childNodes) }).end() } }), it.expr.filters.hidden = function(e) { return e.offsetWidth <= 0 && e.offsetHeight <= 0 || !nt.reliableHiddenOffsets() && "none" === (e.style && e.style.display || it.css(e, "display")) }, it.expr.filters.visible = function(e) { return !it.expr.filters.hidden(e) }; var Vn = /%20/g, Jn = /\[\]$/, Yn = /\r?\n/g, Gn = /^(?:submit|button|image|reset|file)$/i, Qn = /^(?:input|select|textarea|keygen)/i; it.param = function(e, t) { var n, r = [], i = function(e, t) { t = it.isFunction(t) ? t() : null == t ? "" : t, r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t) }; if (void 0 === t && (t = it.ajaxSettings && it.ajaxSettings.traditional), it.isArray(e) || e.jquery && !it.isPlainObject(e)) it.each(e, function() { i(this.name, this.value) }); else for (n in e) I(n, e[n], t, i); return r.join("&").replace(Vn, "+") }, it.fn.extend({ serialize: function() { return it.param(this.serializeArray()) }, serializeArray: function() { return this.map(function() { var e = it.prop(this, "elements"); return e ? it.makeArray(e) : this }).filter(function() { var e = this.type; return this.name && !it(this).is(":disabled") && Qn.test(this.nodeName) && !Gn.test(e) && (this.checked || !jt.test(e)) }).map(function(e, t) { var n = it(this).val(); return null == n ? null : it.isArray(n) ? it.map(n, function(e) { return { name: t.name, value: e.replace(Yn, "\r\n") } }) : { name: t.name, value: n.replace(Yn, "\r\n") } }).get() } }), it.ajaxSettings.xhr = void 0 !== e.ActiveXObject ? function() { return !this.isLocal && /^(get|post|head|put|delete|options)$/i.test(this.type) && X() || U() } : X; var Kn = 0, Zn = {}, er = it.ajaxSettings.xhr(); e.attachEvent && e.attachEvent("onunload", function() { for (var e in Zn) Zn[e](void 0, !0) }), nt.cors = !!er && "withCredentials" in er, er = nt.ajax = !!er, er && it.ajaxTransport(function(e) { if (!e.crossDomain || nt.cors) { var t; return { send: function(n, r) { var i, o = e.xhr(), a = ++Kn; if (o.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields) for (i in e.xhrFields) o[i] = e.xhrFields[i]; e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType), e.crossDomain || n["X-Requested-With"] || (n["X-Requested-With"] = "XMLHttpRequest"); for (i in n) void 0 !== n[i] && o.setRequestHeader(i, n[i] + ""); o.send(e.hasContent && e.data || null), t = function(n, i) { var s, u, l; if (t && (i || 4 === o.readyState)) if (delete Zn[a], t = void 0, o.onreadystatechange = it.noop, i) 4 !== o.readyState && o.abort(); else { l = {}, s = o.status, "string" == typeof o.responseText && (l.text = o.responseText); try { u = o.statusText } catch (c) { u = "" } s || !e.isLocal || e.crossDomain ? 1223 === s && (s = 204) : s = l.text ? 200 : 404 } l && r(s, u, l, o.getAllResponseHeaders()) }, e.async ? 4 === o.readyState ? setTimeout(t) : o.onreadystatechange = Zn[a] = t : t() }, abort: function() { t && t(void 0, !0) } } } }), it.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /(?:java|ecma)script/ }, converters: { "text script": function(e) { return it.globalEval(e), e } } }), it.ajaxPrefilter("script", function(e) { void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1) }), it.ajaxTransport("script", function(e) { if (e.crossDomain) { var t, n = ht.head || it("head")[0] || ht.documentElement; return { send: function(r, i) { t = ht.createElement("script"), t.async = !0, e.scriptCharset && (t.charset = e.scriptCharset), t.src = e.url, t.onload = t.onreadystatechange = function(e, n) { (n || !t.readyState || /loaded|complete/.test(t.readyState)) && (t.onload = t.onreadystatechange = null, t.parentNode && t.parentNode.removeChild(t), t = null, n || i(200, "success")) }, n.insertBefore(t, n.firstChild) }, abort: function() { t && t.onload(void 0, !0) } } } }); var tr = [], nr = /(=)\?(?=&|$)|\?\?/; it.ajaxSetup({ jsonp: "callback", jsonpCallback: function() { var e = tr.pop() || it.expando + "_" + Ln++; return this[e] = !0, e } }), it.ajaxPrefilter("json jsonp", function(t, n, r) { var i, o, a, s = t.jsonp !== !1 && (nr.test(t.url) ? "url" : "string" == typeof t.data && !(t.contentType || "").indexOf("application/x-www-form-urlencoded") && nr.test(t.data) && "data"); return s || "jsonp" === t.dataTypes[0] ? (i = t.jsonpCallback = it.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(nr, "$1" + i) : t.jsonp !== !1 && (t.url += (Hn.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() { return a || it.error(i + " was not called"), a[0] }, t.dataTypes[0] = "json", o = e[i], e[i] = function() { a = arguments }, r.always(function() { e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, tr.push(i)), a && it.isFunction(o) && o(a[0]), a = o = void 0 }), "script") : void 0 }), it.parseHTML = function(e, t, n) { if (!e || "string" != typeof e) return null; "boolean" == typeof t && (n = t, t = !1), t = t || ht; var r = dt.exec(e), i = !n && []; return r ? [t.createElement(r[1])] : (r = it.buildFragment([e], t, i), i && i.length && it(i).remove(), it.merge([], r.childNodes)) }; var rr = it.fn.load; it.fn.load = function(e, t, n) { if ("string" != typeof e && rr) return rr.apply(this, arguments); var r, i, o, a = this, s = e.indexOf(" "); return s >= 0 && (r = it.trim(e.slice(s, e.length)), e = e.slice(0, s)), it.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (o = "POST"), a.length > 0 && it.ajax({ url: e, type: o, dataType: "html", data: t }).done(function(e) { i = arguments, a.html(r ? it("
").append(it.parseHTML(e)).find(r) : e) }).complete(n && function(e, t) { a.each(n, i || [e.responseText, t, e]) }), this }, it.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) { it.fn[t] = function(e) { return this.on(t, e) } }), it.expr.filters.animated = function(e) { return it.grep(it.timers, function(t) { return e === t.elem }).length }; var ir = e.document.documentElement; it.offset = { setOffset: function(e, t, n) { var r, i, o, a, s, u, l, c = it.css(e, "position"), d = it(e), f = {}; "static" === c && (e.style.position = "relative"), s = d.offset(), o = it.css(e, "top"), u = it.css(e, "left"), l = ("absolute" === c || "fixed" === c) && it.inArray("auto", [o, u]) > -1, l ? (r = d.position(), a = r.top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), it.isFunction(t) && (t = t.call(e, n, s)), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : d.css(f) } }, it.fn.extend({ offset: function(e) { if (arguments.length) return void 0 === e ? this : this.each(function(t) { it.offset.setOffset(this, e, t) }); var t, n, r = { top: 0, left: 0 }, i = this[0], o = i && i.ownerDocument; if (o) return t = o.documentElement, it.contains(t, i) ? (typeof i.getBoundingClientRect !== Ct && (r = i.getBoundingClientRect()), n = V(o), { top: r.top + (n.pageYOffset || t.scrollTop) - (t.clientTop || 0), left: r.left + (n.pageXOffset || t.scrollLeft) - (t.clientLeft || 0) }) : r }, position: function() { if (this[0]) { var e, t, n = { top: 0, left: 0 }, r = this[0]; return "fixed" === it.css(r, "position") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), it.nodeName(e[0], "html") || (n = e.offset()), n.top += it.css(e[0], "borderTopWidth", !0), n.left += it.css(e[0], "borderLeftWidth", !0)), { top: t.top - n.top - it.css(r, "marginTop", !0), left: t.left - n.left - it.css(r, "marginLeft", !0) } } }, offsetParent: function() { return this.map(function() { for (var e = this.offsetParent || ir; e && !it.nodeName(e, "html") && "static" === it.css(e, "position");) e = e.offsetParent; return e || ir }) } }), it.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(e, t) { var n = /Y/.test(t); it.fn[e] = function(r) { return Dt(this, function(e, r, i) { var o = V(e); return void 0 === i ? o ? t in o ? o[t] : o.document.documentElement[r] : e[r] : void(o ? o.scrollTo(n ? it(o).scrollLeft() : i, n ? i : it(o).scrollTop()) : e[r] = i) }, e, r, arguments.length, null) } }), it.each(["top", "left"], function(e, t) { it.cssHooks[t] = k(nt.pixelPosition, function(e, n) { return n ? (n = tn(e, t), rn.test(n) ? it(e).position()[t] + "px" : n) : void 0 }) }), it.each({ Height: "height", Width: "width" }, function(t, n) { it.each({ padding: "inner" + t, content: n, "": "outer" + t }, function(r, i) { it.fn[i] = function(i, o) { var a = arguments.length && (r || "boolean" != typeof i), s = r || (i === !0 || o === !0 ? "margin" : "border"); return Dt(this, function(n, r, i) { var o; if (it.isWindow(n)) { if (ht.referrer.indexOf(ht.location.hostname)) { if (e.self !== e.top && "height" == t.toLowerCase() && navigator.userAgent.match(/(iPod|iPhone|iPad)/i) && navigator.userAgent.match(/Safari/i)) return e.frameElement.parentElement.clientHeight; if (e.self !== e.top && "width" == t.toLowerCase() && navigator.userAgent.match(/(iPod|iPhone|iPad)/i) && navigator.userAgent.match(/Safari/i)) return e.frameElement.parentElement.clientWidth } return n.document.documentElement["client" + t] } return 9 === n.nodeType ? (o = n.documentElement, Math.max(n.body["scroll" + t], o["scroll" + t], n.body["offset" + t], o["offset" + t], o["client" + t])) : void 0 === i ? it.css(n, r, s) : it.style(n, r, i, s) }, n, a ? i : void 0, a, null) } }) }), it.fn.size = function() { return this.length }, it.fn.andSelf = it.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() { return it }); var or = e.jQuery, ar = e.$; return it.noConflict = function(t) { return e.$ === it && (e.$ = ar), t && e.jQuery === it && (e.jQuery = or), it }, typeof t === Ct && (e.jQuery = e.$ = it), it }); /** * jQuery Migrate * @see https://github.com/jquery/jquery-migrate * @license MIT License */ ! function(e, t, n) { function r(n) { var r = t.console; o[n] || (o[n] = !0, e.migrateWarnings.push(n), r && r.warn && !e.migrateMute && (r.warn("JQMIGRATE: " + n), e.migrateTrace && r.trace && r.trace())) } function a(t, n, a, o) { if (Object.defineProperty) try { return void Object.defineProperty(t, n, { configurable: !0, enumerable: !0, get: function() { return r(o), a }, set: function(e) { r(o), a = e } }) } catch (i) {} e._definePropertyBroken = !0, t[n] = a } var o = {}; 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() { o = {}, e.migrateWarnings.length = 0 }, "BackCompat" === document.compatMode && r("jQuery is not compatible with Quirks Mode"); var i = e("", { 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 }, d = /^(?:input|button)$/i, l = /^[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", i || {}, "jQuery.attrFn is deprecated"), e.attr = function(t, a, o, u) { var c = a.toLowerCase(), g = t && t.nodeType; return u && (s.length < 4 && r("jQuery.fn.attr( props, pass ) is deprecated"), t && !l.test(g) && (i ? a in i : e.isFunction(e.fn[a]))) ? e(t)[a](o) : ("type" === a && o !== n && d.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, o = e.prop(t, r); return o === !0 || "boolean" != typeof o && (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, o)) }, 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 n = (e.nodeName || "").toLowerCase(); return "button" === n ? c.apply(this, arguments) : ("input" !== n && "option" !== n && r("jQuery.fn.attr('value', val) no longer sets properties"), void(e.value = t)) } }; var g, h, v = e.fn.init, m = e.parseJSON, y = /^([^<]*)(<[\w\W]+>)([^>]*)$/; e.fn.init = function(t, n, a) { var o; return t && "string" == typeof t && !e.isPlainObject(n) && (o = y.exec(e.trim(t))) && o[0] && ("<" !== t.charAt(0) && r("$(html) HTML strings must start with '<' character"), o[3] && r("$(html) HTML text after last tag is ignored"), "#" === o[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(o[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) || e.indexOf("compatible") < 0 && /(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, o, i = this[0]; return !i || "events" !== t || 1 !== arguments.length || (a = e.data(i, t), o = e._data(i, t), a !== n && a !== o || o === n) ? b.apply(this, arguments) : (r("Use of jQuery.fn.data('events') is deprecated"), o) }; var w = /\/(java|ecma)script/i, j = e.fn.andSelf || e.fn.addBack; e.fn.andSelf = function() { return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"), j.apply(this, arguments) }, e.clean || (e.clean = function(t, n, a, o) { n = n || document, n = !n.nodeType && n[0] || n, n = n.ownerDocument || n, r("jQuery.clean() is deprecated"); var i, s, u, c, d = []; if (e.merge(d, e.buildFragment(t, n).childNodes), a) for (u = function(e) { return !e.type || w.test(e.type) ? o ? o.push(e.parentNode ? e.parentNode.removeChild(e) : e) : a.appendChild(e) : void 0 }, i = 0; null != (s = d[i]); i++) e.nodeName(s, "script") && u(s) || (a.appendChild(s), "undefined" != typeof s.getElementsByTagName && (c = e.grep(e.merge([], s.getElementsByTagName("script")), u), d.splice.apply(d, [i + 1, 0].concat(c)), i += c.length)); return d }); var x = e.event.add, Q = e.event.remove, k = e.event.trigger, N = e.fn.toggle, T = e.fn.live, S = e.fn.die, C = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess", M = new RegExp("\\b(?:" + C + ")\\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, o) { e !== document && M.test(t) && r("AJAX events should be attached to document: " + t), x.call(this, e, A(t || ""), n, a, o) }, e.event.remove = function(e, t, n, r, a) { Q.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, o = t.guid || e.guid++, i = 0, s = function(n) { var r = (e._data(this, "lastToggle" + t.guid) || 0) % i; return e._data(this, "lastToggle" + t.guid, r + 1), n.preventDefault(), a[r].apply(this, arguments) || !1 }; for (s.guid = o; i < a.length;) a[i++].guid = o; 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"), S ? S.apply(this, arguments) : (e(this.context).off(t, this.selector || "**", n), this) }, e.event.trigger = function(e, t, n, a) { return n || M.test(e) || r("Global events are undocumented and deprecated"), k.call(this, e, t, n || document, a) }, e.each(C.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); /** * jQuery Cookie Plugin * @see https://github.com/carhartl/jquery-cookie * @license MIT license */ ! function(e) { "function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof exports ? module.exports = e(require("jquery")) : e(jQuery) }(function(e) { function n(e) { return u.raw ? e : encodeURIComponent(e) } function o(e) { return u.raw ? e : decodeURIComponent(e) } function i(e) { return n(u.json ? JSON.stringify(e) : String(e)) } function t(e) { 0 === e.indexOf('"') && (e = e.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\")); try { return e = decodeURIComponent(e.replace(c, " ")), u.json ? JSON.parse(e) : e } catch (n) {} } function r(n, o) { var i = u.raw ? n : t(n); return e.isFunction(o) ? o(i) : i } var c = /\+/g, u = e.cookie = function(t, c, s) { if (arguments.length > 1 && !e.isFunction(c)) { if (s = e.extend({}, u.defaults, s), "number" == typeof s.expires) { var a = s.expires, d = s.expires = new Date; d.setMilliseconds(d.getMilliseconds() + 864e5 * a) } return document.cookie = [n(t), "=", i(c), s.expires ? "; expires=" + s.expires.toUTCString() : "", s.path ? "; path=" + s.path : "", s.domain ? "; domain=" + s.domain : "", s.secure ? "; secure" : ""].join("") } for (var f = t ? void 0 : {}, p = document.cookie ? document.cookie.split("; ") : [], l = 0, m = p.length; m > l; l++) { var x = p[l].split("="), g = o(x.shift()), j = x.join("="); if (t === g) { f = r(j, c); break } t || void 0 === (j = r(j)) || (f[g] = j) } return f }; u.defaults = {}, e.removeCookie = function(n, o) { return e.cookie(n, "", e.extend({}, o, { expires: -1 })), !e.cookie(n) } }); /** * Device.js * @see https://github.com/matthewhudson/device.js * @license MIT License */ (function() { var e, i, n, o, d, c, t, r, a, v; e = window.device, window.device = {}, n = window.document.documentElement, v = window.navigator.userAgent.toLowerCase(), device.ios = function() { return device.iphone() || device.ipod() || device.ipad() }, device.iphone = function() { return o("iphone") }, device.ipod = function() { return o("ipod") }, device.ipad = function() { return o("ipad") }, device.android = function() { return o("android") }, device.androidPhone = function() { return device.android() && o("mobile") }, device.androidTablet = function() { return device.android() && !o("mobile") }, device.blackberry = function() { return o("blackberry") || o("bb10") || o("rim") }, device.blackberryPhone = function() { return device.blackberry() && !o("tablet") }, device.blackberryTablet = function() { return device.blackberry() && o("tablet") }, device.windows = function() { return o("windows") }, device.windowsPhone = function() { return device.windows() && o("phone") }, device.windowsTablet = function() { return device.windows() && o("touch") && !device.windowsPhone() }, device.fxos = function() { return (o("(mobile;") || o("(tablet;")) && o("; rv:") }, device.fxosPhone = function() { return device.fxos() && o("mobile") }, device.fxosTablet = function() { return device.fxos() && o("tablet") }, device.meego = function() { return o("meego") }, device.cordova = function() { return window.cordova && "file:" === location.protocol }, device.nodeWebkit = function() { return "object" == typeof window.process }, device.mobile = function() { return device.androidPhone() || device.iphone() || device.ipod() || device.windowsPhone() || device.blackberryPhone() || device.fxosPhone() || device.meego() }, device.tablet = function() { return device.ipad() || device.androidTablet() || device.blackberryTablet() || device.windowsTablet() || device.fxosTablet() }, device.desktop = function() { return !device.tablet() && !device.mobile() }, device.portrait = function() { return window.innerHeight / window.innerWidth > 1 }, device.landscape = function() { return window.innerHeight / window.innerWidth < 1 }, device.noConflict = function() { return window.device = e, this }, o = function(e) { return -1 !== v.indexOf(e) }, c = function(e) { var i; return i = new RegExp(e, "i"), n.className.match(i) }, i = function(e) { return c(e) ? void 0 : n.className += " " + e }, r = function(e) { return c(e) ? n.className = n.className.replace(e, "") : void 0 }, device.ios() ? device.ipad() ? i("ios ipad tablet") : device.iphone() ? i("ios iphone mobile") : device.ipod() && i("ios ipod mobile") : i(device.android() ? device.androidTablet() ? "android tablet" : "android mobile" : device.blackberry() ? device.blackberryTablet() ? "blackberry tablet" : "blackberry mobile" : device.windows() ? device.windowsTablet() ? "windows tablet" : device.windowsPhone() ? "windows mobile" : "desktop" : device.fxos() ? device.fxosTablet() ? "fxos tablet" : "fxos mobile" : device.meego() ? "meego mobile" : device.nodeWebkit() ? "node-webkit" : "desktop"), device.cordova() && i("cordova"), d = function() { return device.landscape() ? (r("portrait"), i("landscape")) : (r("landscape"), i("portrait")) }, a = "onorientationchange" in window, t = a ? "orientationchange" : "resize", window.addEventListener ? window.addEventListener(t, d, !1) : window.attachEvent ? window.attachEvent(t, d) : window[t] = d, d() }).call(this); /** * jQuery resize event * @see http://benalman.com/projects/jquery-resize-plugin/ * @license MIT license */ (function($, h, c) { var a = $([]), e = $.resize = $.extend($.resize, {}), i, k = "setTimeout", j = "resize", d = j + "-special-event", b = "delay", f = "throttleWindow"; e[b] = 250; e[f] = true; $.event.special[j] = { setup: function() { if (!e[f] && this[k]) { return false } var l = $(this); a = a.add(l); $.data(this, d, { w: l.width(), h: l.height() }); if (a.length === 1) { g() } }, teardown: function() { if (!e[f] && this[k]) { return false } var l = $(this); a = a.not(l); l.removeData(d); if (!a.length) { clearTimeout(i) } }, add: function(l) { if (!e[f] && this[k]) { return false } var n; function m(s, o, p) { var q = $(this), r = $.data(this, d); r.w = o !== c ? o : q.width(); r.h = p !== c ? p : q.height(); n.apply(this, arguments) } if ($.isFunction(l)) { n = l; return m } else { n = l.handler; l.handler = m } } }; function g() { i = h[k](function() { a.each(function() { var n = $(this), m = n.width(), l = n.height(), o = $.data(this, d); if (m !== o.w || l !== o.h) { n.trigger(j, [o.w = m, o.h = l]) } }); g() }, e[b]) } })(jQuery, this); /** * jQuery easing * @see http://gsgd.co.uk/sandbox/jquery/easing/ * @license BSD License */ jQuery.easing.jswing = jQuery.easing.swing, jQuery.extend(jQuery.easing, { def: "easeOutQuad", swing: function(n, e, t, u, a) { return jQuery.easing[jQuery.easing.def](n, e, t, u, a) }, easeInQuad: function(n, e, t, u, a) { return u * (e /= a) * e + t }, easeOutQuad: function(n, e, t, u, a) { return -u * (e /= a) * (e - 2) + t }, easeInOutQuad: function(n, e, t, u, a) { return (e /= a / 2) < 1 ? u / 2 * e * e + t : -u / 2 * (--e * (e - 2) - 1) + t }, easeInCubic: function(n, e, t, u, a) { return u * (e /= a) * e * e + t }, easeOutCubic: function(n, e, t, u, a) { return u * ((e = e / a - 1) * e * e + 1) + t }, easeInOutCubic: function(n, e, t, u, a) { return (e /= a / 2) < 1 ? u / 2 * e * e * e + t : u / 2 * ((e -= 2) * e * e + 2) + t }, easeInQuart: function(n, e, t, u, a) { return u * (e /= a) * e * e * e + t }, easeOutQuart: function(n, e, t, u, a) { return -u * ((e = e / a - 1) * e * e * e - 1) + t }, easeInOutQuart: function(n, e, t, u, a) { return (e /= a / 2) < 1 ? u / 2 * e * e * e * e + t : -u / 2 * ((e -= 2) * e * e * e - 2) + t }, easeInQuint: function(n, e, t, u, a) { return u * (e /= a) * e * e * e * e + t }, easeOutQuint: function(n, e, t, u, a) { return u * ((e = e / a - 1) * e * e * e * e + 1) + t }, easeInOutQuint: function(n, e, t, u, a) { return (e /= a / 2) < 1 ? u / 2 * e * e * e * e * e + t : u / 2 * ((e -= 2) * e * e * e * e + 2) + t }, easeInSine: function(n, e, t, u, a) { return -u * Math.cos(e / a * (Math.PI / 2)) + u + t }, easeOutSine: function(n, e, t, u, a) { return u * Math.sin(e / a * (Math.PI / 2)) + t }, easeInOutSine: function(n, e, t, u, a) { return -u / 2 * (Math.cos(Math.PI * e / a) - 1) + t }, easeInExpo: function(n, e, t, u, a) { return 0 == e ? t : u * Math.pow(2, 10 * (e / a - 1)) + t }, easeOutExpo: function(n, e, t, u, a) { return e == a ? t + u : u * (-Math.pow(2, -10 * e / a) + 1) + t }, easeInOutExpo: function(n, e, t, u, a) { return 0 == e ? t : e == a ? t + u : (e /= a / 2) < 1 ? u / 2 * Math.pow(2, 10 * (e - 1)) + t : u / 2 * (-Math.pow(2, -10 * --e) + 2) + t }, easeInCirc: function(n, e, t, u, a) { return -u * (Math.sqrt(1 - (e /= a) * e) - 1) + t }, easeOutCirc: function(n, e, t, u, a) { return u * Math.sqrt(1 - (e = e / a - 1) * e) + t }, easeInOutCirc: function(n, e, t, u, a) { return (e /= a / 2) < 1 ? -u / 2 * (Math.sqrt(1 - e * e) - 1) + t : u / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + t }, easeInElastic: function(n, e, t, u, a) { var r = 1.70158, i = 0, s = u; if (0 == e) return t; if (1 == (e /= a)) return t + u; if (i || (i = .3 * a), s < Math.abs(u)) { s = u; var r = i / 4 } else var r = i / (2 * Math.PI) * Math.asin(u / s); return -(s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i)) + t }, easeOutElastic: function(n, e, t, u, a) { var r = 1.70158, i = 0, s = u; if (0 == e) return t; if (1 == (e /= a)) return t + u; if (i || (i = .3 * a), s < Math.abs(u)) { s = u; var r = i / 4 } else var r = i / (2 * Math.PI) * Math.asin(u / s); return s * Math.pow(2, -10 * e) * Math.sin((e * a - r) * (2 * Math.PI) / i) + u + t }, easeInOutElastic: function(n, e, t, u, a) { var r = 1.70158, i = 0, s = u; if (0 == e) return t; if (2 == (e /= a / 2)) return t + u; if (i || (i = a * (.3 * 1.5)), s < Math.abs(u)) { s = u; var r = i / 4 } else var r = i / (2 * Math.PI) * Math.asin(u / s); return 1 > e ? -.5 * (s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i)) + t : s * Math.pow(2, -10 * (e -= 1)) * Math.sin((e * a - r) * (2 * Math.PI) / i) * .5 + u + t }, easeInBack: function(n, e, t, u, a, r) { return void 0 == r && (r = 1.70158), u * (e /= a) * e * ((r + 1) * e - r) + t }, easeOutBack: function(n, e, t, u, a, r) { return void 0 == r && (r = 1.70158), u * ((e = e / a - 1) * e * ((r + 1) * e + r) + 1) + t }, easeInOutBack: function(n, e, t, u, a, r) { return void 0 == r && (r = 1.70158), (e /= a / 2) < 1 ? u / 2 * (e * e * (((r *= 1.525) + 1) * e - r)) + t : u / 2 * ((e -= 2) * e * (((r *= 1.525) + 1) * e + r) + 2) + t }, easeInBounce: function(n, e, t, u, a) { return u - jQuery.easing.easeOutBounce(n, a - e, 0, u, a) + t }, easeOutBounce: function(n, e, t, u, a) { return (e /= a) < 1 / 2.75 ? u * (7.5625 * e * e) + t : 2 / 2.75 > e ? u * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + t : 2.5 / 2.75 > e ? u * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + t : u * (7.5625 * (e -= 2.625 / 2.75) * e + .984375) + t }, easeInOutBounce: function(n, e, t, u, a) { return a / 2 > e ? .5 * jQuery.easing.easeInBounce(n, 2 * e, 0, u, a) + t : .5 * jQuery.easing.easeOutBounce(n, 2 * e - a, 0, u, a) + .5 * u + t } }); /** * TouchSwipe * @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin * @license MIT License */ (function(a) { if (typeof define === "function" && define.amd && define.amd.jQuery) { define(["jquery"], a) } else { a(jQuery) } }(function(f) { var y = "1.6.12", p = "left", o = "right", e = "up", x = "down", c = "in", A = "out", m = "none", s = "auto", l = "swipe", t = "pinch", B = "tap", j = "doubletap", b = "longtap", z = "hold", E = "horizontal", u = "vertical", i = "all", r = 10, g = "start", k = "move", h = "end", q = "cancel", a = "ontouchstart" in window, v = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled, d = window.navigator.pointerEnabled || window.navigator.msPointerEnabled, C = "TouchSwipe"; var n = { fingers: 1, threshold: 75, cancelThreshold: null, pinchThreshold: 20, maxTimeThreshold: null, fingerReleaseThreshold: 250, longTapThreshold: 500, doubleTapThreshold: 200, swipe: null, swipeLeft: null, swipeRight: null, swipeUp: null, swipeDown: null, swipeStatus: null, pinchIn: null, pinchOut: null, pinchStatus: null, click: null, tap: null, doubleTap: null, longTap: null, hold: null, triggerOnTouchEnd: true, triggerOnTouchLeave: false, allowPageScroll: "auto", fallbackToMouseEvents: true, excludedElements: "label, button, input, select, textarea, a, .noSwipe", preventDefaultEvents: true }; f.fn.swipe = function(H) { var G = f(this), F = G.data(C); if (F && typeof H === "string") { if (F[H]) { return F[H].apply(this, Array.prototype.slice.call(arguments, 1)) } else { f.error("Method " + H + " does not exist on jQuery.swipe") } } else { if (F && typeof H === "object") { F.option.apply(this, arguments) } else { if (!F && (typeof H === "object" || !H)) { return w.apply(this, arguments) } } } return G }; f.fn.swipe.version = y; f.fn.swipe.defaults = n; f.fn.swipe.phases = { PHASE_START: g, PHASE_MOVE: k, PHASE_END: h, PHASE_CANCEL: q }; f.fn.swipe.directions = { LEFT: p, RIGHT: o, UP: e, DOWN: x, IN: c, OUT: A }; f.fn.swipe.pageScroll = { NONE: m, HORIZONTAL: E, VERTICAL: u, AUTO: s }; f.fn.swipe.fingers = { ONE: 1, TWO: 2, THREE: 3, FOUR: 4, FIVE: 5, ALL: i }; function w(F) { if (F && (F.allowPageScroll === undefined && (F.swipe !== undefined || F.swipeStatus !== undefined))) { F.allowPageScroll = m } if (F.click !== undefined && F.tap === undefined) { F.tap = F.click } if (!F) { F = {} } F = f.extend({}, f.fn.swipe.defaults, F); return this.each(function() { var H = f(this); var G = H.data(C); if (!G) { G = new D(this, F); H.data(C, G) } }) } function D(a4, au) { var au = f.extend({}, au); var az = (a || d || !au.fallbackToMouseEvents), K = az ? (d ? (v ? "MSPointerDown" : "pointerdown") : "touchstart") : "mousedown", ax = az ? (d ? (v ? "MSPointerMove" : "pointermove") : "touchmove") : "mousemove", V = az ? (d ? (v ? "MSPointerUp" : "pointerup") : "touchend") : "mouseup", T = az ? null : "mouseleave", aD = (d ? (v ? "MSPointerCancel" : "pointercancel") : "touchcancel"); var ag = 0, aP = null, ac = 0, a1 = 0, aZ = 0, H = 1, ap = 0, aJ = 0, N = null; var aR = f(a4); var aa = "start"; var X = 0; var aQ = {}; var U = 0, a2 = 0, a5 = 0, ay = 0, O = 0; var aW = null, af = null; try { aR.bind(K, aN); aR.bind(aD, a9) } catch (aj) { f.error("events not supported " + K + "," + aD + " on jQuery.swipe") } this.enable = function() { aR.bind(K, aN); aR.bind(aD, a9); return aR }; this.disable = function() { aK(); return aR }; this.destroy = function() { aK(); aR.data(C, null); aR = null }; this.option = function(bc, bb) { if (typeof bc === "object") { au = f.extend(au, bc) } else { if (au[bc] !== undefined) { if (bb === undefined) { return au[bc] } else { au[bc] = bb } } else { if (!bc) { return au } else { f.error("Option " + bc + " does not exist on jQuery.swipe.options") } } } return null }; function aN(bd) { if (aB()) { return } if (f(bd.target).closest(au.excludedElements, aR).length > 0) { return } var be = bd.originalEvent ? bd.originalEvent : bd; var bc, bf = be.touches, bb = bf ? bf[0] : be; aa = g; if (bf) { X = bf.length } else { if (au.preventDefaultEvents !== false) { bd.preventDefault() } } ag = 0; aP = null; aJ = null; ac = 0; a1 = 0; aZ = 0; H = 1; ap = 0; N = ab(); S(); ai(0, bb); if (!bf || (X === au.fingers || au.fingers === i) || aX()) { U = ar(); if (X == 2) { ai(1, bf[1]); a1 = aZ = at(aQ[0].start, aQ[1].start) } if (au.swipeStatus || au.pinchStatus) { bc = P(be, aa) } } else { bc = false } if (bc === false) { aa = q; P(be, aa); return bc } else { if (au.hold) { af = setTimeout(f.proxy(function() { aR.trigger("hold", [be.target]); if (au.hold) { bc = au.hold.call(aR, be, be.target) } }, this), au.longTapThreshold) } an(true) } return null } function a3(be) { var bh = be.originalEvent ? be.originalEvent : be; if (aa === h || aa === q || al()) { return } var bd, bi = bh.touches, bc = bi ? bi[0] : bh; var bf = aH(bc); a2 = ar(); if (bi) { X = bi.length } if (au.hold) { clearTimeout(af) } aa = k; if (X == 2) { if (a1 == 0) { ai(1, bi[1]); a1 = aZ = at(aQ[0].start, aQ[1].start) } else { aH(bi[1]); aZ = at(aQ[0].end, aQ[1].end); aJ = aq(aQ[0].end, aQ[1].end) } H = a7(a1, aZ); ap = Math.abs(a1 - aZ) } if ((X === au.fingers || au.fingers === i) || !bi || aX()) { aP = aL(bf.start, bf.end); ak(be, aP); ag = aS(bf.start, bf.end); ac = aM(); aI(aP, ag); if (au.swipeStatus || au.pinchStatus) { bd = P(bh, aa) } if (!au.triggerOnTouchEnd || au.triggerOnTouchLeave) { var bb = true; if (au.triggerOnTouchLeave) { var bg = aY(this); bb = F(bf.end, bg) } if (!au.triggerOnTouchEnd && bb) { aa = aC(k) } else { if (au.triggerOnTouchLeave && !bb) { aa = aC(h) } } if (aa == q || aa == h) { P(bh, aa) } } } else { aa = q; P(bh, aa) } if (bd === false) { aa = q; P(bh, aa) } } function M(bb) { var bc = bb.originalEvent ? bb.originalEvent : bb, bd = bc.touches; if (bd) { if (bd.length && !al()) { G(); return true } else { if (bd.length && al()) { return true } } } if (al()) { X = ay } a2 = ar(); ac = aM(); if (ba() || !am()) { aa = q; P(bc, aa) } else { if (au.triggerOnTouchEnd || (au.triggerOnTouchEnd == false && aa === k)) { if (au.preventDefaultEvents !== false) { bb.preventDefault() } aa = h; P(bc, aa) } else { if (!au.triggerOnTouchEnd && a6()) { aa = h; aF(bc, aa, B) } else { if (aa === k) { aa = q; P(bc, aa) } } } } an(false); return null } function a9() { X = 0; a2 = 0; U = 0; a1 = 0; aZ = 0; H = 1; S(); an(false) } function L(bb) { var bc = bb.originalEvent ? bb.originalEvent : bb; if (au.triggerOnTouchLeave) { aa = aC(h); P(bc, aa) } } function aK() { aR.unbind(K, aN); aR.unbind(aD, a9); aR.unbind(ax, a3); aR.unbind(V, M); if (T) { aR.unbind(T, L) } an(false) } function aC(bf) { var be = bf; var bd = aA(); var bc = am(); var bb = ba(); if (!bd || bb) { be = q } else { if (bc && bf == k && (!au.triggerOnTouchEnd || au.triggerOnTouchLeave)) { be = h } else { if (!bc && bf == h && au.triggerOnTouchLeave) { be = q } } } return be } function P(bd, bb) { var bc, be = bd.touches; if ((J() && W()) || (Q() && aX())) { if (J() && W()) { bc = aF(bd, bb, l) } if ((Q() && aX()) && bc !== false) { bc = aF(bd, bb, t) } } else { if (aG() && bc !== false) { bc = aF(bd, bb, j) } else { if (ao() && bc !== false) { bc = aF(bd, bb, b) } else { if (ah() && bc !== false) { bc = aF(bd, bb, B) } } } } if (bb === q) { if (W()) { bc = aF(bd, bb, l) } if (aX()) { bc = aF(bd, bb, t) } a9(bd) } if (bb === h) { if (be) { if (!be.length) { a9(bd) } } else { a9(bd) } } return bc } function aF(be, bb, bd) { var bc; if (bd == l) { aR.trigger("swipeStatus", [bb, aP || null, ag || 0, ac || 0, X, aQ]); if (au.swipeStatus) { bc = au.swipeStatus.call(aR, be, bb, aP || null, ag || 0, ac || 0, X, aQ); if (bc === false) { return false } } if (bb == h && aV()) { aR.trigger("swipe", [aP, ag, ac, X, aQ]); if (au.swipe) { bc = au.swipe.call(aR, be, aP, ag, ac, X, aQ); if (bc === false) { return false } } switch (aP) { case p: aR.trigger("swipeLeft", [aP, ag, ac, X, aQ]); if (au.swipeLeft) { bc = au.swipeLeft.call(aR, be, aP, ag, ac, X, aQ) } break; case o: aR.trigger("swipeRight", [aP, ag, ac, X, aQ]); if (au.swipeRight) { bc = au.swipeRight.call(aR, be, aP, ag, ac, X, aQ) } break; case e: aR.trigger("swipeUp", [aP, ag, ac, X, aQ]); if (au.swipeUp) { bc = au.swipeUp.call(aR, be, aP, ag, ac, X, aQ) } break; case x: aR.trigger("swipeDown", [aP, ag, ac, X, aQ]); if (au.swipeDown) { bc = au.swipeDown.call(aR, be, aP, ag, ac, X, aQ) } break } } } if (bd == t) { aR.trigger("pinchStatus", [bb, aJ || null, ap || 0, ac || 0, X, H, aQ]); if (au.pinchStatus) { bc = au.pinchStatus.call(aR, be, bb, aJ || null, ap || 0, ac || 0, X, H, aQ); if (bc === false) { return false } } if (bb == h && a8()) { switch (aJ) { case c: aR.trigger("pinchIn", [aJ || null, ap || 0, ac || 0, X, H, aQ]); if (au.pinchIn) { bc = au.pinchIn.call(aR, be, aJ || null, ap || 0, ac || 0, X, H, aQ) } break; case A: aR.trigger("pinchOut", [aJ || null, ap || 0, ac || 0, X, H, aQ]); if (au.pinchOut) { bc = au.pinchOut.call(aR, be, aJ || null, ap || 0, ac || 0, X, H, aQ) } break } } } if (bd == B) { if (bb === q || bb === h) { clearTimeout(aW); clearTimeout(af); if (Z() && !I()) { O = ar(); aW = setTimeout(f.proxy(function() { O = null; aR.trigger("tap", [be.target]); if (au.tap) { bc = au.tap.call(aR, be, be.target) } }, this), au.doubleTapThreshold) } else { O = null; aR.trigger("tap", [be.target]); if (au.tap) { bc = au.tap.call(aR, be, be.target) } } } } else { if (bd == j) { if (bb === q || bb === h) { clearTimeout(aW); O = null; aR.trigger("doubletap", [be.target]); if (au.doubleTap) { bc = au.doubleTap.call(aR, be, be.target) } } } else { if (bd == b) { if (bb === q || bb === h) { clearTimeout(aW); O = null; aR.trigger("longtap", [be.target]); if (au.longTap) { bc = au.longTap.call(aR, be, be.target) } } } } } return bc } function am() { var bb = true; if (au.threshold !== null) { bb = ag >= au.threshold } return bb } function ba() { var bb = false; if (au.cancelThreshold !== null && aP !== null) { bb = (aT(aP) - ag) >= au.cancelThreshold } return bb } function ae() { if (au.pinchThreshold !== null) { return ap >= au.pinchThreshold } return true } function aA() { var bb; if (au.maxTimeThreshold) { if (ac >= au.maxTimeThreshold) { bb = false } else { bb = true } } else { bb = true } return bb } function ak(bb, bc) { if (au.preventDefaultEvents === false) { return } if (au.allowPageScroll === m) { bb.preventDefault() } else { var bd = au.allowPageScroll === s; switch (bc) { case p: if ((au.swipeLeft && bd) || (!bd && au.allowPageScroll != E)) { bb.preventDefault() } break; case o: if ((au.swipeRight && bd) || (!bd && au.allowPageScroll != E)) { bb.preventDefault() } break; case e: if ((au.swipeUp && bd) || (!bd && au.allowPageScroll != u)) { bb.preventDefault() } break; case x: if ((au.swipeDown && bd) || (!bd && au.allowPageScroll != u)) { bb.preventDefault() } break } } } function a8() { var bc = aO(); var bb = Y(); var bd = ae(); return bc && bb && bd } function aX() { return !!(au.pinchStatus || au.pinchIn || au.pinchOut) } function Q() { return !!(a8() && aX()) } function aV() { var be = aA(); var bg = am(); var bd = aO(); var bb = Y(); var bc = ba(); var bf = !bc && bb && bd && bg && be; return bf } function W() { return !!(au.swipe || au.swipeStatus || au.swipeLeft || au.swipeRight || au.swipeUp || au.swipeDown) } function J() { return !!(aV() && W()) } function aO() { return ((X === au.fingers || au.fingers === i) || !a) } function Y() { return aQ[0].end.x !== 0 } function a6() { return !!(au.tap) } function Z() { return !!(au.doubleTap) } function aU() { return !!(au.longTap) } function R() { if (O == null) { return false } var bb = ar(); return (Z() && ((bb - O) <= au.doubleTapThreshold)) } function I() { return R() } function aw() { return ((X === 1 || !a) && (isNaN(ag) || ag < au.threshold)) } function a0() { return ((ac > au.longTapThreshold) && (ag < r)) } function ah() { return !!(aw() && a6()) } function aG() { return !!(R() && Z()) } function ao() { return !!(a0() && aU()) } function G() { a5 = ar(); ay = event.touches.length + 1 } function S() { a5 = 0; ay = 0 } function al() { var bb = false; if (a5) { var bc = ar() - a5; if (bc <= au.fingerReleaseThreshold) { bb = true } } return bb } function aB() { return !!(aR.data(C + "_intouch") === true) } function an(bb) { if (bb === true) { aR.bind(ax, a3); aR.bind(V, M); if (T) { aR.bind(T, L) } } else { aR.unbind(ax, a3, false); aR.unbind(V, M, false); if (T) { aR.unbind(T, L, false) } } aR.data(C + "_intouch", bb === true) } function ai(bd, bb) { var bc = { start: { x: 0, y: 0 }, end: { x: 0, y: 0 } }; bc.start.x = bc.end.x = bb.pageX || bb.clientX; bc.start.y = bc.end.y = bb.pageY || bb.clientY; aQ[bd] = bc; return bc } function aH(bb) { var bd = bb.identifier !== undefined ? bb.identifier : 0; var bc = ad(bd); if (bc === null) { bc = ai(bd, bb) } bc.end.x = bb.pageX || bb.clientX; bc.end.y = bb.pageY || bb.clientY; return bc } function ad(bb) { return aQ[bb] || null } function aI(bb, bc) { bc = Math.max(bc, aT(bb)); N[bb].distance = bc } function aT(bb) { if (N[bb]) { return N[bb].distance } return undefined } function ab() { var bb = {}; bb[p] = av(p); bb[o] = av(o); bb[e] = av(e); bb[x] = av(x); return bb } function av(bb) { return { direction: bb, distance: 0 } } function aM() { return a2 - U } function at(be, bd) { var bc = Math.abs(be.x - bd.x); var bb = Math.abs(be.y - bd.y); return Math.round(Math.sqrt(bc * bc + bb * bb)) } function a7(bb, bc) { var bd = (bc / bb) * 1; return bd.toFixed(2) } function aq() { if (H < 1) { return A } else { return c } } function aS(bc, bb) { return Math.round(Math.sqrt(Math.pow(bb.x - bc.x, 2) + Math.pow(bb.y - bc.y, 2))) } function aE(be, bc) { var bb = be.x - bc.x; var bg = bc.y - be.y; var bd = Math.atan2(bg, bb); var bf = Math.round(bd * 180 / Math.PI); if (bf < 0) { bf = 360 - Math.abs(bf) } return bf } function aL(bc, bb) { var bd = aE(bc, bb); if ((bd <= 45) && (bd >= 0)) { return p } else { if ((bd <= 360) && (bd >= 315)) { return p } else { if ((bd >= 135) && (bd <= 225)) { return o } else { if ((bd > 45) && (bd < 135)) { return x } else { return e } } } } } function ar() { var bb = new Date(); return bb.getTime() } function aY(bb) { bb = f(bb); var bd = bb.offset(); var bc = { left: bd.left, right: bd.left + bb.outerWidth(), top: bd.top, bottom: bd.top + bb.outerHeight() }; return bc } function F(bb, bc) { return (bb.x > bc.left && bb.x < bc.right && bb.y > bc.top && bb.y < bc.bottom) } } })); /** * @module Swiper * @description Most modern mobile touch slider and framework with hardware accelerated transitions * @author Vladimir Kharlampidi * @see http://www.idangero.us/swiper/ * @licesne MIT * @version 3.4.2 */ ! function() { "use strict"; var e, a = function(t, s) { function r(e) { return Math.floor(e) } function i() { var e = y.params.autoplay, a = y.slides.eq(y.activeIndex); a.attr("data-swiper-autoplay") && (e = a.attr("data-swiper-autoplay") || y.params.autoplay), 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)) }, e) } function n(a, t) { var s = e(a.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 = new(window.MutationObserver || window.WebkitMutationObserver)(function(e) { e.forEach(function(e) { y.onResize(!0), y.emit("onObserverUpdate", y, e) }) }); t.observe(e, { attributes: void 0 === a.attributes || a.attributes, childList: void 0 === a.childList || a.childList, characterData: void 0 === a.characterData || a.characterData }), y.observers.push(t) } 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("." + y.params.slideClass).length > 0 && 0 === y.container.parents("." + y.params.slideActiveClass).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()), y.emit("onKeyPress", y, a) } } function p(e) { var a = 0, t = 0, s = 0, r = 0; return "detail" in e && (t = e.detail), "wheelDelta" in e && (t = -e.wheelDelta / 120), "wheelDeltaY" in e && (t = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (a = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (a = t, t = 0), s = 10 * a, r = 10 * t, "deltaY" in e && (r = e.deltaY), "deltaX" in e && (s = e.deltaX), (s || r) && e.deltaMode && (1 === e.deltaMode ? (s *= 40, r *= 40) : (s *= 800, r *= 800)), s && !a && (a = s < 1 ? -1 : 1), r && !t && (t = r < 1 ? -1 : 1), { spinX: a, spinY: t, pixelX: s, pixelY: r } } function d(e) { e.originalEvent && (e = e.originalEvent); var a = 0, t = y.rtl ? -1 : 1, s = p(e); if (y.params.mousewheelForceToAxis) if (y.isHorizontal()) { if (!(Math.abs(s.pixelX) > Math.abs(s.pixelY))) return; a = s.pixelX * t } else { if (!(Math.abs(s.pixelY) > Math.abs(s.pixelX))) return; a = s.pixelY } else a = Math.abs(s.pixelX) > Math.abs(s.pixelY) ? -s.pixelX * t : -s.pixelY; if (0 !== a) { if (y.params.mousewheelInvert && (a = -a), y.params.freeMode) { var r = y.getWrapperTranslate() + a * 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(), y.emit("onScroll", y, e), y.params.autoplay && y.params.autoplayDisableOnInteraction && y.stopAutoplay(), 0 === r || r === y.maxTranslate()) return } else { if ((new window.Date).getTime() - y.mousewheel.lastScrollTime > 60) if (a < 0) if (y.isEnd && !y.params.loop || y.animating) { if (y.params.mousewheelReleaseOnEdges) return !0 } else y.slideNext(), y.emit("onScroll", y, e); else if (y.isBeginning && !y.params.loop || y.animating) { if (y.params.mousewheelReleaseOnEdges) return !0 } else y.slidePrev(), y.emit("onScroll", y, e); y.mousewheel.lastScrollTime = (new window.Date).getTime() } return e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1 } } function m(a, t) { a = e(a); var s, r, i, n = y.rtl ? -1 : 1; s = a.attr("data-swiper-parallax") || "0", r = a.attr("data-swiper-parallax-x"), i = a.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", a.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 a)) return new a(t, 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, freeModeMomentumVelocityRatio: 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, zoom: !1, zoomMax: 3, zoomMin: 1, zoomToggle: !0, scrollbar: null, scrollbarHide: !0, scrollbarDraggable: !1, scrollbarSnapOnRelease: !1, keyboardControl: !1, mousewheelControl: !1, mousewheelReleaseOnEdges: !1, mousewheelInvert: !1, mousewheelForceToAxis: !1, mousewheelSensitivity: 1, mousewheelEventsTarged: "container", hashnav: !1, hashnavWatchState: !1, history: !1, replaceState: !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, touchReleaseOnEdges: !1, 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", normalizeSlideIndex: !0, allowSwipeToPrev: !0, allowSwipeToNext: !0, swipeHandler: null, noSwiping: !0, noSwipingClass: "swiper-no-swiping", passiveListeners: !0, containerModifierClass: "swiper-container-", slideClass: "swiper-slide", slideActiveClass: "swiper-slide-active", slideDuplicateActiveClass: "swiper-slide-duplicate-active", slideVisibleClass: "swiper-slide-visible", slideDuplicateClass: "swiper-slide-duplicate", slideNextClass: "swiper-slide-next", slideDuplicateNextClass: "swiper-slide-duplicate-next", slidePrevClass: "swiper-slide-prev", slideDuplicatePrevClass: "swiper-slide-duplicate-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", paginationClickableClass: "swiper-pagination-clickable", paginationModifierClass: "swiper-pagination-", lazyLoadingClass: "swiper-lazy", lazyStatusLoadingClass: "swiper-lazy-loading", lazyStatusLoadedClass: "swiper-lazy-loaded", lazyPreloaderClass: "swiper-lazy-preloader", notificationClass: "swiper-notification", preloaderClass: "preloader", zoomContainerClass: "swiper-zoom-container", 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 }, g = s && s.virtualTranslate; s = s || {}; var h = {}; for (var v in s) if ("object" != typeof s[v] || null === s[v] || s[v].nodeType || s[v] === window || s[v] === document || "undefined" != typeof Dom7 && s[v] instanceof Dom7 || "undefined" != typeof jQuery && s[v] instanceof jQuery) h[v] = s[v]; else { h[v] = {}; for (var f in s[v]) h[v][f] = s[v][f] } for (var w in c) if (void 0 === s[w]) s[w] = c[w]; else if ("object" == typeof s[w]) for (var x in c[w]) void 0 === s[w][x] && (s[w][x] = c[w][x]); var y = this; if (y.params = s, y.originalParams = h, y.classNames = [], void 0 !== e && "undefined" != typeof Dom7 && (e = Dom7), (void 0 !== e || (e = "undefined" == typeof Dom7 ? window.Dom7 || window.Zepto || window.jQuery : Dom7)) && (y.$ = e, 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]) >= 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 = e(t), 0 !== y.container.length)) { if (y.container.length > 1) { var T = []; return y.container.each(function() { T.push(new a(this, s)) }), T } y.container[0].swiper = y, y.container.data("swiper", y), y.classNames.push(y.params.containerModifierClass + y.params.direction), y.params.freeMode && y.classNames.push(y.params.containerModifierClass + "free-mode"), y.support.flexbox || (y.classNames.push(y.params.containerModifierClass + "no-flexbox"), y.params.slidesPerColumn = 1), y.params.autoHeight && y.classNames.push(y.params.containerModifierClass + "autoheight"), (y.params.parallax || y.params.watchSlidesVisibility) && (y.params.watchSlidesProgress = !0), y.params.touchReleaseOnEdges && (y.params.resistanceRatio = 0), ["cube", "coverflow", "flip"].indexOf(y.params.effect) >= 0 && (y.support.transforms3d ? (y.params.watchSlidesProgress = !0, y.classNames.push(y.params.containerModifierClass + "3d")) : y.params.effect = "slide"), "slide" !== y.params.effect && y.classNames.push(y.params.containerModifierClass + 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), "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, void 0 === g && (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 = e(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(y.params.paginationModifierClass + "clickable") : y.params.paginationClickable = !1, y.paginationContainer.addClass(y.params.paginationModifierClass + y.params.paginationType)), (y.params.nextButton || y.params.prevButton) && (y.params.nextButton && (y.nextButton = e(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 = e(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(y.params.containerModifierClass + "rtl"), y.rtl && (y.wrongRTL = "-webkit-box" === y.wrapper.css("display")), y.params.slidesPerColumn > 1 && y.classNames.push(y.params.containerModifierClass + "multirow"), y.device.android && y.classNames.push(y.params.containerModifierClass + "android"), y.container.addClass(y.classNames.join(" ")), y.translate = 0, y.progress = 0, y.velocity = 0, y.lockSwipeToNext = function() { y.params.allowSwipeToNext = !1, !1 === y.params.allowSwipeToPrev && y.params.grabCursor && y.unsetGrabCursor() }, y.lockSwipeToPrev = function() { y.params.allowSwipeToPrev = !1, !1 === y.params.allowSwipeToNext && y.params.grabCursor && y.unsetGrabCursor() }, y.lockSwipes = function() { y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !1, y.params.grabCursor && y.unsetGrabCursor() }, y.unlockSwipeToNext = function() { y.params.allowSwipeToNext = !0, !0 === y.params.allowSwipeToPrev && y.params.grabCursor && y.setGrabCursor() }, y.unlockSwipeToPrev = function() { y.params.allowSwipeToPrev = !0, !0 === y.params.allowSwipeToNext && y.params.grabCursor && y.setGrabCursor() }, y.unlockSwipes = function() { y.params.allowSwipeToNext = y.params.allowSwipeToPrev = !0, y.params.grabCursor && y.setGrabCursor() }, y.setGrabCursor = function(e) { y.container[0].style.cursor = "move", y.container[0].style.cursor = e ? "-webkit-grabbing" : "-webkit-grab", y.container[0].style.cursor = e ? "-moz-grabbin" : "-moz-grab", y.container[0].style.cursor = e ? "grabbing" : "grab" }, y.unsetGrabCursor = function() { y.container[0].style.cursor = "" }, y.params.grabCursor && y.setGrabCursor(), y.imagesToLoad = [], y.imagesLoaded = 0, y.loadImage = function(e, a, t, s, r, i) { function n() { i && i() } var o; e.complete && r ? n() : a ? (o = new window.Image, o.onload = n, o.onerror = n, s && (o.sizes = s), t && (o.srcset = t), a && (o.src = a)) : n() }, y.preloadImages = function() { y.imagesToLoad = y.container.find("img"); for (var e = 0; e < y.imagesToLoad.length; e++) y.loadImage(y.imagesToLoad[e], y.imagesToLoad[e].currentSrc || y.imagesToLoad[e].getAttribute("src"), y.imagesToLoad[e].srcset || y.imagesToLoad[e].getAttribute("srcset"), y.imagesToLoad[e].sizes || y.imagesToLoad[e].getAttribute("sizes"), !0, function() { void 0 !== y && null !== y && y && (void 0 !== y.imagesLoaded && y.imagesLoaded++, y.imagesLoaded === y.imagesToLoad.length && (y.params.updateOnImagesReady && y.update(), y.emit("onImagesReady", y))) }) }, y.autoplayTimeoutId = void 0, y.autoplaying = !1, y.autoplayPaused = !1, y.startAutoplay = function() { return void 0 === y.autoplayTimeoutId && !!y.params.autoplay && !y.autoplaying && (y.autoplaying = !0, y.emit("onAutoplayStart", y), void i()) }, 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, a = [], t = 0; if ("auto" !== y.params.slidesPerView && y.params.slidesPerView > 1) for (e = 0; e < Math.ceil(y.params.slidesPerView); e++) { var s = y.activeIndex + e; if (s > y.slides.length) break; a.push(y.slides.eq(s)[0]) } else a.push(y.slides.eq(y.activeIndex)[0]); for (e = 0; e < a.length; e++) if (void 0 !== a[e]) { var r = a[e].offsetHeight; t = r > t ? r : t } t && y.wrapper.css("height", t + "px") }, y.updateContainerSize = function() { var e, a; e = void 0 !== y.params.width ? y.params.width : y.container[0].clientWidth, a = void 0 !== 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 (void 0 !== 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 m = y.slides.eq(e); if (y.params.slidesPerColumn > 1) { var u, c, g; "column" === y.params.slidesPerColumnFill ? (c = Math.floor(e / l), g = e - c * l, (c > d || c === d && g === l - 1) && ++g >= l && (g = 0, c++), u = c + g * n / l, m.css({ "-webkit-box-ordinal-group": u, "-moz-box-ordinal-group": u, "-ms-flex-order": u, "-webkit-order": u, order: u })) : (g = Math.floor(e / p), c = e - g * p), m.css("margin-" + (y.isHorizontal() ? "top" : "left"), 0 !== g && y.params.spaceBetween && y.params.spaceBetween + "px").attr("data-swiper-column", c).attr("data-swiper-row", g) } "none" !== m.css("display") && ("auto" === y.params.slidesPerView ? (o = y.isHorizontal() ? m.outerWidth(!0) : m.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 === s && 0 !== e && (t = t - y.size / 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 h; 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.isHorizontal() ? y.wrapper.css({ width: y.virtualSize + y.params.spaceBetween + "px" }) : y.wrapper.css({ height: y.virtualSize + y.params.spaceBetween + "px" }), y.params.centeredSlides)) { for (h = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] < y.virtualSize + y.snapGrid[0] && h.push(y.snapGrid[e]); y.snapGrid = h } if (!y.params.centeredSlides) { for (h = [], e = 0; e < y.snapGrid.length; e++) y.snapGrid[e] <= y.virtualSize - y.size && h.push(y.snapGrid[e]); y.snapGrid = h, 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.currentSlidesPerView = function() { var e, a, t = 1; if (y.params.centeredSlides) { var s, r = y.slides[y.activeIndex].swiperSlideSize; for (e = y.activeIndex + 1; e < y.slides.length; e++) y.slides[e] && !s && (r += y.slides[e].swiperSlideSize, t++, r > y.size && (s = !0)); for (a = y.activeIndex - 1; a >= 0; a--) y.slides[a] && !s && (r += y.slides[a].swiperSlideSize, t++, r > y.size && (s = !0)) } else for (e = y.activeIndex + 1; e < y.slides.length; e++) y.slidesGrid[e] - y.slidesGrid[y.activeIndex] < y.size && t++; return t }, y.updateSlidesProgress = function(e) { if (void 0 === e && (e = y.translate || 0), 0 !== y.slides.length) { void 0 === 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 + (y.params.centeredSlides ? y.minTranslate() : 0) - s.swiperSlideOffset) / (s.swiperSlideSize + y.params.spaceBetween); if (y.params.watchSlidesVisibility) { var i = -(a - s.swiperSlideOffset), n = i + y.slidesSizesGrid[t]; (i >= 0 && i < y.size || n > 0 && n <= y.size || i <= 0 && n >= y.size) && y.slides.eq(t).addClass(y.params.slideVisibleClass) } s.progress = y.rtl ? -r : r } } }, y.updateProgress = function(e) { void 0 === 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++) void 0 !== 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); y.params.normalizeSlideIndex && (e < 0 || void 0 === e) && (e = 0), (t = Math.floor(e / y.params.slidesPerGroup)) >= y.snapGrid.length && (t = y.snapGrid.length - 1), e !== y.activeIndex && (y.snapIndex = t, y.previousIndex = y.activeIndex, y.activeIndex = e, y.updateClasses(), y.updateRealIndex()) }, y.updateRealIndex = function() { y.realIndex = parseInt(y.slides.eq(y.activeIndex).attr("data-swiper-slide-index") || y.activeIndex, 10) }, y.updateClasses = function() { y.slides.removeClass(y.params.slideActiveClass + " " + y.params.slideNextClass + " " + y.params.slidePrevClass + " " + y.params.slideDuplicateActiveClass + " " + y.params.slideDuplicateNextClass + " " + y.params.slideDuplicatePrevClass); var a = y.slides.eq(y.activeIndex); a.addClass(y.params.slideActiveClass), s.loop && (a.hasClass(y.params.slideDuplicateClass) ? y.wrapper.children("." + y.params.slideClass + ":not(." + y.params.slideDuplicateClass + ')[data-swiper-slide-index="' + y.realIndex + '"]').addClass(y.params.slideDuplicateActiveClass) : y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + y.realIndex + '"]').addClass(y.params.slideDuplicateActiveClass)); var t = a.next("." + y.params.slideClass).addClass(y.params.slideNextClass); y.params.loop && 0 === t.length && (t = y.slides.eq(0)).addClass(y.params.slideNextClass); var r = a.prev("." + y.params.slideClass).addClass(y.params.slidePrevClass); if (y.params.loop && 0 === r.length && (r = y.slides.eq(-1)).addClass(y.params.slidePrevClass), s.loop && (t.hasClass(y.params.slideDuplicateClass) ? y.wrapper.children("." + y.params.slideClass + ":not(." + y.params.slideDuplicateClass + ')[data-swiper-slide-index="' + t.attr("data-swiper-slide-index") + '"]').addClass(y.params.slideDuplicateNextClass) : y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + t.attr("data-swiper-slide-index") + '"]').addClass(y.params.slideDuplicateNextClass), r.hasClass(y.params.slideDuplicateClass) ? y.wrapper.children("." + y.params.slideClass + ":not(." + y.params.slideDuplicateClass + ')[data-swiper-slide-index="' + r.attr("data-swiper-slide-index") + '"]').addClass(y.params.slideDuplicatePrevClass) : y.wrapper.children("." + y.params.slideClass + "." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + r.attr("data-swiper-slide-index") + '"]').addClass(y.params.slideDuplicatePrevClass)), y.paginationContainer && y.paginationContainer.length > 0) { var i, n = y.params.loop ? Math.ceil((y.slides.length - 2 * y.loopedSlides) / y.params.slidesPerGroup) : y.snapGrid.length; if (y.params.loop ? ((i = Math.ceil((y.activeIndex - y.loopedSlides) / y.params.slidesPerGroup)) > y.slides.length - 1 - 2 * y.loopedSlides && (i -= y.slides.length - 2 * y.loopedSlides), i > n - 1 && (i -= n), i < 0 && "bullets" !== y.params.paginationType && (i = n + i)) : i = void 0 !== 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() { e(this).index() === i && e(this).addClass(y.params.bulletActiveClass) }) : y.bullets.eq(i).addClass(y.params.bulletActiveClass)), "fraction" === y.params.paginationType && (y.paginationContainer.find("." + y.params.paginationCurrentClass).text(i + 1), y.paginationContainer.find("." + y.params.paginationTotalClass).text(n)), "progress" === y.params.paginationType) { var o = (i + 1) / n, l = o, p = 1; y.isHorizontal() || (p = o, l = 1), y.paginationContainer.find("." + y.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX(" + l + ") scaleY(" + p + ")").transition(y.params.speed) } "custom" === y.params.paginationType && y.params.paginationCustomRender && (y.paginationContainer.html(y.params.paginationCustomRender(y, i + 1, n)), 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; t < a; t++) e += y.params.paginationBulletRender ? y.params.paginationBulletRender(y, 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) : ' / ', y.paginationContainer.html(e)), "progress" === y.params.paginationType && (e = y.params.paginationProgressRender ? y.params.paginationProgressRender(y, y.params.paginationProgressbarClass) : '', y.paginationContainer.html(e)), "custom" !== y.params.paginationType && y.emit("onPaginationRendered", y, y.paginationContainer[0]) } }, y.update = function(e) { function a() { y.rtl, y.translate, t = Math.min(Math.max(y.translate, y.maxTranslate()), y.minTranslate()), y.setWrapperTranslate(t), y.updateActiveIndex(), y.updateClasses() } if (y) { y.updateContainerSize(), y.updateSlidesSize(), y.updateProgress(), y.updatePagination(), y.updateClasses(), y.params.scrollbar && y.scrollbar && y.scrollbar.set(); var t; e ? (y.controller && y.controller.spline && (y.controller.spline = void 0), y.params.freeMode ? (a(), y.params.autoHeight && y.updateAutoHeight()) : (("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)) || a()) : y.params.autoHeight && y.updateAutoHeight() } }, y.onResize = function(e) { y.params.onBeforeResize && y.params.onBeforeResize(y), 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, y.params.onAfterResize && y.params.onAfterResize(y) }, y.touchEventsDesktop = { start: "mousedown", move: "mousemove", end: "mouseup" }, window.navigator.pointerEnabled ? y.touchEventsDesktop = { start: "pointerdown", move: "pointermove", end: "pointerup" } : window.navigator.msPointerEnabled && (y.touchEventsDesktop = { start: "MSPointerDown", move: "MSPointerMove", end: "MSPointerUp" }), y.touchEvents = { start: y.support.touch || !y.params.simulateTouch ? "touchstart" : y.touchEventsDesktop.start, move: y.support.touch || !y.params.simulateTouch ? "touchmove" : y.touchEventsDesktop.move, end: y.support.touch || !y.params.simulateTouch ? "touchend" : y.touchEventsDesktop.end }, (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; if (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); else { if (y.support.touch) { var o = !("touchstart" !== y.touchEvents.start || !y.support.passiveListener || !y.params.passiveListeners) && { passive: !0, capture: !1 }; r[t](y.touchEvents.start, y.onTouchStart, o), r[t](y.touchEvents.move, y.onTouchMove, n), r[t](y.touchEvents.end, y.onTouchEnd, o) }(s.simulateTouch && !y.device.ios && !y.device.android || s.simulateTouch && !y.support.touch && y.device.ios) && (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(a) { a.preventDefault(); var t = e(this).index() * y.params.slidesPerGroup; y.params.loop && (t += y.loopedSlides), y.slideTo(t) }, y.updateClickedSlide = function(a) { var t = n(a, "." + 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 = e(t).index(), y.params.slideToClickedSlide && void 0 !== y.clickedIndex && y.clickedIndex !== y.activeIndex) { var i, o = y.clickedIndex, l = "auto" === y.params.slidesPerView ? y.currentSlidesPerView() : y.params.slidesPerView; if (y.params.loop) { if (y.animating) return; i = parseInt(e(y.clickedSlide).attr("data-swiper-slide-index"), 10), y.params.centeredSlides ? o < y.loopedSlides - l / 2 || o > y.slides.length - y.loopedSlides + l / 2 ? (y.fixLoop(), o = y.wrapper.children("." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.' + y.params.slideDuplicateClass + ")").eq(0).index(), setTimeout(function() { y.slideTo(o) }, 0)) : y.slideTo(o) : o > y.slides.length - l ? (y.fixLoop(), o = y.wrapper.children("." + y.params.slideClass + '[data-swiper-slide-index="' + i + '"]:not(.' + y.params.slideDuplicateClass + ")").eq(0).index(), setTimeout(function() { y.slideTo(o) }, 0)) : y.slideTo(o) } else y.slideTo(o) } }; var b, C, S, z, M, P, E, I, k, D, L = "input, select, textarea, button, video", B = Date.now(), H = []; y.animating = !1, y.touches = { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }; var G, X; y.onTouchStart = function(a) { if (a.originalEvent && (a = a.originalEvent), (G = "touchstart" === a.type) || !("which" in a) || 3 !== a.which) { if (y.params.noSwiping && n(a, "." + y.params.noSwipingClass)) return void(y.allowClick = !0); if (!y.params.swipeHandler || n(a, y.params.swipeHandler)) { var t = y.touches.currentX = "touchstart" === a.type ? a.targetTouches[0].pageX : a.pageX, s = y.touches.currentY = "touchstart" === a.type ? a.targetTouches[0].pageY : a.pageY; if (!(y.device.ios && y.params.iOSEdgeSwipeDetection && t <= y.params.iOSEdgeSwipeThreshold)) { if (b = !0, C = !1, S = !0, M = void 0, X = 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 && (I = !1), "touchstart" !== a.type) { var r = !0; e(a.target).is(L) && (r = !1), document.activeElement && e(document.activeElement).is(L) && document.activeElement.blur(), r && a.preventDefault() } y.emit("onTouchStart", y, a) } } } }, y.onTouchMove = function(a) { if (a.originalEvent && (a = a.originalEvent), !G || "mousemove" !== a.type) { if (a.preventedByNestedSwiper) return y.touches.startX = "touchmove" === a.type ? a.targetTouches[0].pageX : a.pageX, void(y.touches.startY = "touchmove" === a.type ? a.targetTouches[0].pageY : a.pageY); if (y.params.onlyExternal) return y.allowClick = !1, void(b && (y.touches.startX = y.touches.currentX = "touchmove" === a.type ? a.targetTouches[0].pageX : a.pageX, y.touches.startY = y.touches.currentY = "touchmove" === a.type ? a.targetTouches[0].pageY : a.pageY, z = Date.now())); if (G && y.params.touchReleaseOnEdges && !y.params.loop) if (y.isHorizontal()) { if (y.touches.currentX < y.touches.startX && y.translate <= y.maxTranslate() || y.touches.currentX > y.touches.startX && y.translate >= y.minTranslate()) return } else if (y.touches.currentY < y.touches.startY && y.translate <= y.maxTranslate() || y.touches.currentY > y.touches.startY && y.translate >= y.minTranslate()) return; if (G && document.activeElement && a.target === document.activeElement && e(a.target).is(L)) return C = !0, void(y.allowClick = !1); if (S && y.emit("onTouchMove", y, a), !(a.targetTouches && a.targetTouches.length > 1)) { if (y.touches.currentX = "touchmove" === a.type ? a.targetTouches[0].pageX : a.pageX, y.touches.currentY = "touchmove" === a.type ? a.targetTouches[0].pageY : a.pageY, void 0 === M) { var t; y.isHorizontal() && y.touches.currentY === y.touches.startY || !y.isHorizontal() && y.touches.currentX === y.touches.startX ? M = !1 : (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, a), void 0 === X && (y.touches.currentX === y.touches.startX && y.touches.currentY === y.touches.startY || (X = !0)), b) { if (M) return void(b = !1); if (X) { y.allowClick = !1, y.emit("onSliderMove", y, a), a.preventDefault(), y.params.touchMoveStopPropagation && !y.params.nested && a.stopPropagation(), C || (s.loop && y.fixLoop(), E = 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()), D = !1, !y.params.grabCursor || !0 !== y.params.allowSwipeToNext && !0 !== y.params.allowSwipeToPrev || y.setGrabCursor(!0)), C = !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 + E; var i = !0; if (r > 0 && P > y.minTranslate() ? (i = !1, y.params.resistance && (P = y.minTranslate() - 1 + Math.pow(-y.minTranslate() + E + r, y.params.resistanceRatio))) : r < 0 && P < y.maxTranslate() && (i = !1, y.params.resistance && (P = y.maxTranslate() + 1 - Math.pow(y.maxTranslate() - E - r, y.params.resistanceRatio))), i && (a.preventedByNestedSwiper = !0), !y.params.allowSwipeToNext && "next" === y.swipeDirection && P < E && (P = E), !y.params.allowSwipeToPrev && "prev" === y.swipeDirection && P > E && (P = E), y.params.threshold > 0) { if (!(Math.abs(r) > y.params.threshold || I)) return void(P = E); if (!I) return I = !0, y.touches.startX = y.touches.currentX, y.touches.startY = y.touches.currentY, P = E, void(y.touches.diff = y.isHorizontal() ? y.touches.currentX - y.touches.startX : y.touches.currentY - y.touches.startY) } y.params.followFinger && ((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(a) { if (a.originalEvent && (a = a.originalEvent), S && y.emit("onTouchEnd", y, a), S = !1, b) { y.params.grabCursor && C && b && (!0 === y.params.allowSwipeToNext || !0 === y.params.allowSwipeToPrev) && y.setGrabCursor(!1); var t = Date.now(), s = t - z; if (y.allowClick && (y.updateClickedSlide(a), y.emit("onTap", y, a), s < 300 && t - B > 300 && (k && clearTimeout(k), k = setTimeout(function() { y && (y.params.paginationHide && y.paginationContainer.length > 0 && !e(a.target).hasClass(y.params.bulletClass) && y.paginationContainer.toggleClass(y.params.paginationHiddenClass), y.emit("onClick", y, a)) }, 300)), s < 300 && t - B < 300 && (k && clearTimeout(k), y.emit("onDoubleTap", y, a))), B = Date.now(), setTimeout(function() { y && (y.allowClick = !0) }, 0), !b || !C || !y.swipeDirection || 0 === y.touches.diff || P === E) return void(b = C = !1); b = C = !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; y.velocity = y.velocity * y.params.freeModeMomentumVelocityRatio, H.length = 0; var p = 1e3 * y.params.freeModeMomentumRatio, d = y.velocity * p, m = y.translate + d; y.rtl && (m = -m); var u, c = !1, g = 20 * Math.abs(y.velocity) * y.params.freeModeMomentumBounceRatio; if (m < y.maxTranslate()) y.params.freeModeMomentumBounce ? (m + y.maxTranslate() < -g && (m = y.maxTranslate() - g), u = y.maxTranslate(), c = !0, D = !0) : m = y.maxTranslate(); else if (m > y.minTranslate()) y.params.freeModeMomentumBounce ? (m - y.minTranslate() > g && (m = y.minTranslate() + g), u = y.minTranslate(), c = !0, D = !0) : m = y.minTranslate(); else if (y.params.freeModeSticky) { var h, v = 0; for (v = 0; v < y.snapGrid.length; v += 1) if (y.snapGrid[v] > -m) { h = v; break } m = Math.abs(y.snapGrid[h] - m) < Math.abs(y.snapGrid[h - 1] - m) || "next" === y.swipeDirection ? y.snapGrid[h] : y.snapGrid[h - 1], y.rtl || (m = -m) } if (0 !== y.velocity) p = y.rtl ? Math.abs((-m - y.translate) / y.velocity) : Math.abs((m - y.translate) / y.velocity); else if (y.params.freeModeSticky) return void y.slideReset(); y.params.freeModeMomentumBounce && c ? (y.updateProgress(u), y.setWrapperTransition(p), y.setWrapperTranslate(m), y.onTransitionStart(), y.animating = !0, y.wrapper.transitionEnd(function() { y && D && (y.emit("onMomentumBounce", y), y.setWrapperTransition(y.params.speed), y.setWrapperTranslate(u), y.wrapper.transitionEnd(function() { y && y.onTransitionEnd() })) })) : y.velocity ? (y.updateProgress(m), y.setWrapperTransition(p), y.setWrapperTranslate(m), y.onTransitionStart(), y.animating || (y.animating = !0, y.wrapper.transitionEnd(function() { y && y.onTransitionEnd() }))) : y.updateProgress(m), y.updateActiveIndex() } return void((!y.params.freeModeMomentum || s >= y.params.longSwipesMs) && (y.updateProgress(), y.updateActiveIndex())) } var f, w = 0, x = y.slidesSizesGrid[0]; for (f = 0; f < y.slidesGrid.length; f += y.params.slidesPerGroup) void 0 !== y.slidesGrid[f + y.params.slidesPerGroup] ? r >= y.slidesGrid[f] && r < y.slidesGrid[f + y.params.slidesPerGroup] && (w = f, x = y.slidesGrid[f + y.params.slidesPerGroup] - y.slidesGrid[f]) : r >= y.slidesGrid[f] && (w = f, x = y.slidesGrid[y.slidesGrid.length - 1] - y.slidesGrid[y.slidesGrid.length - 2]); var T = (r - y.slidesGrid[w]) / x; if (s > y.params.longSwipesMs) { if (!y.params.longSwipes) return void y.slideTo(y.activeIndex); "next" === y.swipeDirection && (T >= y.params.longSwipesRatio ? y.slideTo(w + y.params.slidesPerGroup) : y.slideTo(w)), "prev" === y.swipeDirection && (T > 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) { void 0 === t && (t = !0), void 0 === e && (e = 0), e < 0 && (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]; if (y.params.autoplay && y.autoplaying && (s || !y.params.autoplayDisableOnInteraction ? y.pauseAutoplay(a) : y.stopAutoplay()), y.updateProgress(r), y.params.normalizeSlideIndex) 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() || !y.params.allowSwipeToPrev && r > y.translate && r > y.maxTranslate() && (y.activeIndex || 0) !== e || (void 0 === a && (a = y.params.speed), y.previousIndex = y.activeIndex || 0, y.activeIndex = e, y.updateRealIndex(), 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.browser.lteIE9 ? (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) { void 0 === 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), void 0 === 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.history && y.history && y.history.setHistory(y.params.history, y.activeIndex), y.params.hashnav && y.hashnav && y.hashnav.setHash() }, y.slideNext = function(e, a, t) { return y.params.loop ? !y.animating && (y.fixLoop(), y.container[0].clientLeft, y.slideTo(y.activeIndex + y.params.slidesPerGroup, a, e, t)) : 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) { return y.params.loop ? !y.animating && (y.fixLoop(), y.container[0].clientLeft, y.slideTo(y.activeIndex - 1, a, e, t)) : 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.disableTouchControl = function() { return y.params.onlyExternal = !0, !0 }, y.enableTouchControl = function() { return y.params.onlyExternal = !1, !0 }, 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; 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, 0px)") : y.wrapper.transform("translate(" + s + "px, " + i + "px)")), y.translate = y.isHorizontal() ? s : i; var n = y.maxTranslate() - y.minTranslate(); (0 === n ? 0 : (e - y.minTranslate()) / n) !== 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 void 0 === a && (a = "x"), y.params.virtualTranslate ? y.rtl ? -y.translate : y.translate : (r = window.getComputedStyle(e, null), window.WebKitCSSMatrix ? ((s = r.transform || r.webkitTransform).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 void 0 === 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 a = y.wrapper.children("." + y.params.slideClass); "auto" !== y.params.slidesPerView || y.params.loopedSlides || (y.params.loopedSlides = a.length), y.loopedSlides = parseInt(y.params.loopedSlides || y.params.slidesPerView, 10), y.loopedSlides = y.loopedSlides + y.params.loopAdditionalSlides, y.loopedSlides > a.length && (y.loopedSlides = a.length); var t, s = [], r = []; for (a.each(function(t, i) { var n = e(this); t < y.loopedSlides && r.push(i), t < a.length && t >= a.length - y.loopedSlides && s.push(i), n.attr("data-swiper-slide-index", t) }), t = 0; t < r.length; t++) y.wrapper.append(e(r[t].cloneNode(!0)).addClass(y.params.slideDuplicateClass)); for (t = s.length - 1; t >= 0; t--) y.wrapper.prepend(e(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(), a < t && t--; t = Math.max(t, 0) } else a = e, y.slides[a] && y.slides.eq(a).remove(), a < t && 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; y.params.virtualTranslate || (t -= y.translate); var s = 0; y.isHorizontal() || (s = t, t = 0); var r = 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: r }).transform("translate3d(" + t + "px, " + s + "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 a = 0; a < y.slides.length; a++) { var t = y.slides.eq(a), s = t[0].progress; y.params.flip.limitRotation && (s = Math.max(Math.min(t[0].progress, 1), -1)); var r = -180 * s, i = 0, n = -t[0].swiperSlideOffset, o = 0; if (y.isHorizontal() ? y.rtl && (r = -r) : (o = n, n = 0, i = -r, r = 0), t[0].style.zIndex = -Math.abs(Math.round(s)) + y.slides.length, y.params.flip.slideShadows) { var l = y.isHorizontal() ? t.find(".swiper-slide-shadow-left") : t.find(".swiper-slide-shadow-top"), p = y.isHorizontal() ? t.find(".swiper-slide-shadow-right") : t.find(".swiper-slide-shadow-bottom"); 0 === l.length && (l = e(''), t.append(l)), 0 === p.length && (p = e(''), t.append(p)), l.length && (l[0].style.opacity = Math.max(-s, 0)), p.length && (p[0].style.opacity = Math.max(s, 0)) } t.transform("translate3d(" + n + "px, " + o + "px, 0px) rotateX(" + i + "deg) rotateY(" + r + "deg)") } }, setTransition: function(a) { if (y.slides.transition(a).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(a), y.params.virtualTranslate && 0 !== a) { var t = !1; y.slides.eq(y.activeIndex).transitionEnd(function() { if (!t && y && e(this).hasClass(y.params.slideActiveClass)) { t = !0, y.animating = !1; for (var a = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], s = 0; s < a.length; s++) y.wrapper.trigger(a[s]) } }) } } }, cube: { setTranslate: function() { var a, t = 0; y.params.cube.shadow && (y.isHorizontal() ? (0 === (a = y.wrapper.find(".swiper-cube-shadow")).length && (a = e(''), y.wrapper.append(a)), a.css({ height: y.width + "px" })) : 0 === (a = y.container.find(".swiper-cube-shadow")).length && (a = e(''), y.container.append(a))); 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 m = "rotateX(" + (y.isHorizontal() ? 0 : -i) + "deg) rotateY(" + (y.isHorizontal() ? i : 0) + "deg) translate3d(" + l + "px, " + p + "px, " + d + "px)"; if (o <= 1 && o > -1 && (t = 90 * s + 90 * o, y.rtl && (t = 90 * -s - 90 * o)), r.transform(m), y.params.cube.slideShadows) { var u = y.isHorizontal() ? r.find(".swiper-slide-shadow-left") : r.find(".swiper-slide-shadow-top"), c = y.isHorizontal() ? r.find(".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom"); 0 === u.length && (u = e(''), r.append(u)), 0 === c.length && (c = e(''), r.append(c)), u.length && (u[0].style.opacity = Math.max(-o, 0)), c.length && (c[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()) a.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 g = Math.abs(t) - 90 * Math.floor(Math.abs(t) / 90), h = 1.5 - (Math.sin(2 * g * Math.PI / 360) / 2 + Math.cos(2 * g * Math.PI / 360) / 2), v = y.params.cube.shadowScale, f = y.params.cube.shadowScale / h, w = y.params.cube.shadowOffset; a.transform("scale3d(" + v + ", 1, " + f + ") translate3d(0px, " + (y.height / 2 + w) + "px, " + -y.height / 2 / f + "px) rotateX(-90deg)") } var x = y.isSafari || y.isUiWebView ? -y.size / 2 : 0; y.wrapper.transform("translate3d(0px,0," + x + "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 a = y.translate, t = y.isHorizontal() ? -a + y.width / 2 : -a + 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; i < n; i++) { var o = y.slides.eq(i), l = y.slidesSizesGrid[i], p = (t - o[0].swiperSlideOffset - l / 2) / l * y.params.coverflow.modifier, d = y.isHorizontal() ? s * p : 0, m = y.isHorizontal() ? 0 : s * p, u = -r * Math.abs(p), c = y.isHorizontal() ? 0 : y.params.coverflow.stretch * p, g = y.isHorizontal() ? y.params.coverflow.stretch * p : 0; Math.abs(g) < .001 && (g = 0), Math.abs(c) < .001 && (c = 0), Math.abs(u) < .001 && (u = 0), Math.abs(d) < .001 && (d = 0), Math.abs(m) < .001 && (m = 0); var h = "translate3d(" + g + "px," + c + "px," + u + "px) rotateX(" + m + "deg) rotateY(" + d + "deg)"; if (o.transform(h), o[0].style.zIndex = 1 - Math.abs(Math.round(p)), y.params.coverflow.slideShadows) { var v = y.isHorizontal() ? o.find(".swiper-slide-shadow-left") : o.find(".swiper-slide-shadow-top"), f = y.isHorizontal() ? o.find(".swiper-slide-shadow-right") : o.find(".swiper-slide-shadow-bottom"); 0 === v.length && (v = e(''), o.append(v)), 0 === f.length && (f = e(''), o.append(f)), v.length && (v[0].style.opacity = p > 0 ? p : 0), f.length && (f[0].style.opacity = -p > 0 ? -p : 0) } } y.browser.ie && (y.wrapper[0].style.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(a, t) { if (void 0 !== a && (void 0 === t && (t = !0), 0 !== y.slides.length)) { var s = y.slides.eq(a), r = s.find("." + y.params.lazyLoadingClass + ":not(." + y.params.lazyStatusLoadedClass + "):not(." + y.params.lazyStatusLoadingClass + ")"); !s.hasClass(y.params.lazyLoadingClass) || s.hasClass(y.params.lazyStatusLoadedClass) || s.hasClass(y.params.lazyStatusLoadingClass) || (r = r.add(s[0])), 0 !== r.length && r.each(function() { var a = e(this); a.addClass(y.params.lazyStatusLoadingClass); var r = a.attr("data-background"), i = a.attr("data-src"), n = a.attr("data-srcset"), o = a.attr("data-sizes"); y.loadImage(a[0], i || r, n, o, !1, function() { if (void 0 !== y && null !== y && y) { if (r ? (a.css("background-image", 'url("' + r + '")'), a.removeAttr("data-background")) : (n && (a.attr("srcset", n), a.removeAttr("data-srcset")), o && (a.attr("sizes", o), a.removeAttr("data-sizes")), i && (a.attr("src", i), a.removeAttr("data-src"))), a.addClass(y.params.lazyStatusLoadedClass).removeClass(y.params.lazyStatusLoadingClass), s.find("." + y.params.lazyPreloaderClass + ", ." + y.params.preloaderClass).remove(), y.params.loop && t) { var e = s.attr("data-swiper-slide-index"); if (s.hasClass(y.params.slideDuplicateClass)) { var l = y.wrapper.children('[data-swiper-slide-index="' + e + '"]:not(.' + y.params.slideDuplicateClass + ")"); y.lazy.loadImageInSlide(l.index(), !1) } else { var p = y.wrapper.children("." + y.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]'); y.lazy.loadImageInSlide(p.index(), !1) } } y.emit("onLazyImageReady", y, s[0], a[0]) } }), y.emit("onLazyImageLoad", y, s[0], a[0]) }) } }, load: function() { var a, t = y.params.slidesPerView; if ("auto" === t && (t = 0), y.lazy.initialImageLoaded || (y.lazy.initialImageLoaded = !0), y.params.watchSlidesVisibility) y.wrapper.children("." + y.params.slideVisibleClass).each(function() { y.lazy.loadImageInSlide(e(this).index()) }); else if (t > 1) for (a = y.activeIndex; a < y.activeIndex + t; a++) y.slides[a] && y.lazy.loadImageInSlide(a); else y.lazy.loadImageInSlide(y.activeIndex); if (y.params.lazyLoadingInPrevNext) if (t > 1 || y.params.lazyLoadingInPrevNextAmount && y.params.lazyLoadingInPrevNextAmount > 1) { var s = y.params.lazyLoadingInPrevNextAmount, r = t, i = Math.min(y.activeIndex + r + Math.max(s, r), y.slides.length), n = Math.max(y.activeIndex - Math.max(r, s), 0); for (a = y.activeIndex + t; a < i; a++) y.slides[a] && y.lazy.loadImageInSlide(a); for (a = n; a < y.activeIndex; a++) y.slides[a] && y.lazy.loadImageInSlide(a) } else { var o = y.wrapper.children("." + y.params.slideNextClass); o.length > 0 && y.lazy.loadImageInSlide(o.index()); var l = y.wrapper.children("." + y.params.slidePrevClass); l.length > 0 && y.lazy.loadImageInSlide(l.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) - a.track.offset()[y.isHorizontal() ? "left" : "top"] - a.dragSize / 2, s = -y.minTranslate() * a.moveDivider, r = -y.maxTranslate() * a.moveDivider; t < s ? t = s : t > r && (t = r), t = -t / a.moveDivider, y.updateProgress(t), y.setWrapperTranslate(t, !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()) }, draggableEvents: !1 !== y.params.simulateTouch || y.support.touch ? y.touchEvents : y.touchEventsDesktop, enableDraggable: function() { var a = y.scrollbar, t = y.support.touch ? a.track : document; e(a.track).on(a.draggableEvents.start, a.dragStart), e(t).on(a.draggableEvents.move, a.dragMove), e(t).on(a.draggableEvents.end, a.dragEnd) }, disableDraggable: function() { var a = y.scrollbar, t = y.support.touch ? a.track : document; e(a.track).off(a.draggableEvents.start, a.dragStart), e(t).off(a.draggableEvents.move, a.dragMove), e(t).off(a.draggableEvents.end, a.dragEnd) }, set: function() { if (y.params.scrollbar) { var a = y.scrollbar; a.track = e(y.params.scrollbar), y.params.uniqueNavElements && "string" == typeof y.params.scrollbar && a.track.length > 1 && 1 === y.container.find(y.params.scrollbar).length && (a.track = y.container.find(y.params.scrollbar)), a.drag = a.track.find(".swiper-scrollbar-drag"), 0 === a.drag.length && (a.drag = e(''), a.track.append(a.drag)), a.drag[0].style.width = "", a.drag[0].style.height = "", a.trackSize = y.isHorizontal() ? a.track[0].offsetWidth : a.track[0].offsetHeight, a.divider = y.size / y.virtualSize, a.moveDivider = a.divider * (a.trackSize / y.size), a.dragSize = a.trackSize * a.divider, y.isHorizontal() ? a.drag[0].style.width = a.dragSize + "px" : a.drag[0].style.height = a.dragSize + "px", a.divider >= 1 ? a.track[0].style.display = "none" : a.track[0].style.display = "", y.params.scrollbarHide && (a.track[0].style.opacity = 0) } }, setTranslate: function() { if (y.params.scrollbar) { var e, a = y.scrollbar, t = (y.translate, 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)) : e < 0 ? (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) { var t = 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 } }(); this.x = e, this.y = a, this.lastIndex = e.length - 1; var s, r; this.x.length, this.interpolate = function(e) { return e ? (r = t(this.x, e), s = r - 1, (e - this.x[s]) * (this.y[r] - this.y[s]) / (this.x[r] - this.x[s]) + this.y[s]) : 0 } }, 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, t) { 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 (Array.isArray(n)) for (var o = 0; o < n.length; o++) n[o] !== t && n[o] instanceof a && s(n[o]); else n instanceof a && t !== n && s(n) }, setTransition: function(e, t) { 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 (Array.isArray(i)) for (r = 0; r < i.length; r++) i[r] !== t && i[r] instanceof a && s(i[r]); else i instanceof a && t !== i && s(i) } }, y.hashnav = { onHashCange: function(e, a) { var t = document.location.hash.replace("#", ""); t !== y.slides.eq(y.activeIndex).attr("data-hash") && y.slideTo(y.wrapper.children("." + y.params.slideClass + '[data-hash="' + t + '"]').index()) }, attachEvents: function(a) { var t = a ? "off" : "on"; e(window)[t]("hashchange", y.hashnav.onHashCange) }, setHash: function() { if (y.hashnav.initialized && y.params.hashnav) if (y.params.replaceState && window.history && window.history.replaceState) window.history.replaceState(null, null, "#" + y.slides.eq(y.activeIndex).attr("data-hash") || ""); else { var e = y.slides.eq(y.activeIndex), a = e.attr("data-hash") || e.attr("data-history"); document.location.hash = a || "" } }, init: function() { if (y.params.hashnav && !y.params.history) { y.hashnav.initialized = !0; var e = document.location.hash.replace("#", ""); if (e) for (var a = 0, t = y.slides.length; a < t; a++) { var s = y.slides.eq(a); if ((s.attr("data-hash") || s.attr("data-history")) === e && !s.hasClass(y.params.slideDuplicateClass)) { var r = s.index(); y.slideTo(r, 0, y.params.runCallbacksOnInit, !0) } } y.params.hashnavWatchState && y.hashnav.attachEvents() } }, destroy: function() { y.params.hashnavWatchState && y.hashnav.attachEvents(!0) } }, y.history = { init: function() { if (y.params.history) { if (!window.history || !window.history.pushState) return y.params.history = !1, void(y.params.hashnav = !0); y.history.initialized = !0, this.paths = this.getPathValues(), (this.paths.key || this.paths.value) && (this.scrollToSlide(0, this.paths.value, y.params.runCallbacksOnInit), y.params.replaceState || window.addEventListener("popstate", this.setHistoryPopState)) } }, setHistoryPopState: function() { y.history.paths = y.history.getPathValues(), y.history.scrollToSlide(y.params.speed, y.history.paths.value, !1) }, getPathValues: function() { var e = window.location.pathname.slice(1).split("/"), a = e.length; return { key: e[a - 2], value: e[a - 1] } }, setHistory: function(e, a) { if (y.history.initialized && y.params.history) { var t = y.slides.eq(a), s = this.slugify(t.attr("data-history")); window.location.pathname.includes(e) || (s = e + "/" + s), y.params.replaceState ? window.history.replaceState(null, null, s) : window.history.pushState(null, null, s) } }, slugify: function(e) { return e.toString().toLowerCase().replace(/\s+/g, "-").replace(/[^\w\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "") }, scrollToSlide: function(e, a, t) { if (a) for (var s = 0, r = y.slides.length; s < r; s++) { var i = y.slides.eq(s); if (this.slugify(i.attr("data-history")) === a && !i.hasClass(y.params.slideDuplicateClass)) { var n = i.index(); y.slideTo(n, e, t) } } else y.slideTo(0, e, t) } }, y.disableKeyboardControl = function() { y.params.keyboardControl = !1, e(document).off("keydown", l) }, y.enableKeyboardControl = function() { y.params.keyboardControl = !0, e(document).on("keydown", l) }, y.mousewheel = { event: !1, lastScrollTime: (new window.Date).getTime() }, y.params.mousewheelControl && (y.mousewheel.event = navigator.userAgent.indexOf("firefox") > -1 ? "DOMMouseScroll" : function() { var e = "onwheel" in document; if (!e) { var a = document.createElement("div"); a.setAttribute("onwheel", "return;"), e = "function" == typeof a.onwheel } return !e && document.implementation && document.implementation.hasFeature && !0 !== document.implementation.hasFeature("", "") && (e = document.implementation.hasFeature("Events.wheel", "3.0")), e }() ? "wheel" : "mousewheel"), y.disableMousewheelControl = function() { if (!y.mousewheel.event) return !1; var a = y.container; return "container" !== y.params.mousewheelEventsTarged && (a = e(y.params.mousewheelEventsTarged)), a.off(y.mousewheel.event, d), y.params.mousewheelControl = !1, !0 }, y.enableMousewheelControl = function() { if (!y.mousewheel.event) return !1; var a = y.container; return "container" !== y.params.mousewheelEventsTarged && (a = e(y.params.mousewheelEventsTarged)), a.on(y.mousewheel.event, d), y.params.mousewheelControl = !0, !0 }, y.parallax = { setTranslate: function() { y.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { m(this, y.progress) }), y.slides.each(function() { var a = e(this); a.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { m(this, Math.min(Math.max(a[0].progress, -1), 1)) }) }) }, setTransition: function(a) { void 0 === a && (a = y.params.speed), y.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { var t = e(this), s = parseInt(t.attr("data-swiper-parallax-duration"), 10) || a; 0 === a && (s = 0), t.transition(s) }) } }, y.zoom = { scale: 1, currentScale: 1, isScaling: !1, gesture: { slide: void 0, slideWidth: void 0, slideHeight: void 0, image: void 0, imageWrap: void 0, zoomMax: y.params.zoomMax }, image: { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {} }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0 }, getDistanceBetweenTouches: function(e) { if (e.targetTouches.length < 2) return 1; var a = e.targetTouches[0].pageX, t = e.targetTouches[0].pageY, s = e.targetTouches[1].pageX, r = e.targetTouches[1].pageY; return Math.sqrt(Math.pow(s - a, 2) + Math.pow(r - t, 2)) }, onGestureStart: function(a) { var t = y.zoom; if (!y.support.gestures) { if ("touchstart" !== a.type || "touchstart" === a.type && a.targetTouches.length < 2) return; t.gesture.scaleStart = t.getDistanceBetweenTouches(a) } t.gesture.slide && t.gesture.slide.length || (t.gesture.slide = e(this), 0 === t.gesture.slide.length && (t.gesture.slide = y.slides.eq(y.activeIndex)), t.gesture.image = t.gesture.slide.find("img, svg, canvas"), t.gesture.imageWrap = t.gesture.image.parent("." + y.params.zoomContainerClass), t.gesture.zoomMax = t.gesture.imageWrap.attr("data-swiper-zoom") || y.params.zoomMax, 0 !== t.gesture.imageWrap.length) ? (t.gesture.image.transition(0), t.isScaling = !0) : t.gesture.image = void 0 }, onGestureChange: function(e) { var a = y.zoom; if (!y.support.gestures) { if ("touchmove" !== e.type || "touchmove" === e.type && e.targetTouches.length < 2) return; a.gesture.scaleMove = a.getDistanceBetweenTouches(e) } a.gesture.image && 0 !== a.gesture.image.length && (y.support.gestures ? a.scale = e.scale * a.currentScale : a.scale = a.gesture.scaleMove / a.gesture.scaleStart * a.currentScale, a.scale > a.gesture.zoomMax && (a.scale = a.gesture.zoomMax - 1 + Math.pow(a.scale - a.gesture.zoomMax + 1, .5)), a.scale < y.params.zoomMin && (a.scale = y.params.zoomMin + 1 - Math.pow(y.params.zoomMin - a.scale + 1, .5)), a.gesture.image.transform("translate3d(0,0,0) scale(" + a.scale + ")")) }, onGestureEnd: function(e) { var a = y.zoom; !y.support.gestures && ("touchend" !== e.type || "touchend" === e.type && e.changedTouches.length < 2) || a.gesture.image && 0 !== a.gesture.image.length && (a.scale = Math.max(Math.min(a.scale, a.gesture.zoomMax), y.params.zoomMin), a.gesture.image.transition(y.params.speed).transform("translate3d(0,0,0) scale(" + a.scale + ")"), a.currentScale = a.scale, a.isScaling = !1, 1 === a.scale && (a.gesture.slide = void 0)) }, onTouchStart: function(e, a) { var t = e.zoom; t.gesture.image && 0 !== t.gesture.image.length && (t.image.isTouched || ("android" === e.device.os && a.preventDefault(), t.image.isTouched = !0, t.image.touchesStart.x = "touchstart" === a.type ? a.targetTouches[0].pageX : a.pageX, t.image.touchesStart.y = "touchstart" === a.type ? a.targetTouches[0].pageY : a.pageY)) }, onTouchMove: function(e) { var a = y.zoom; if (a.gesture.image && 0 !== a.gesture.image.length && (y.allowClick = !1, a.image.isTouched && a.gesture.slide)) { a.image.isMoved || (a.image.width = a.gesture.image[0].offsetWidth, a.image.height = a.gesture.image[0].offsetHeight, a.image.startX = y.getTranslate(a.gesture.imageWrap[0], "x") || 0, a.image.startY = y.getTranslate(a.gesture.imageWrap[0], "y") || 0, a.gesture.slideWidth = a.gesture.slide[0].offsetWidth, a.gesture.slideHeight = a.gesture.slide[0].offsetHeight, a.gesture.imageWrap.transition(0), y.rtl && (a.image.startX = -a.image.startX), y.rtl && (a.image.startY = -a.image.startY)); var t = a.image.width * a.scale, s = a.image.height * a.scale; if (!(t < a.gesture.slideWidth && s < a.gesture.slideHeight)) { if (a.image.minX = Math.min(a.gesture.slideWidth / 2 - t / 2, 0), a.image.maxX = -a.image.minX, a.image.minY = Math.min(a.gesture.slideHeight / 2 - s / 2, 0), a.image.maxY = -a.image.minY, a.image.touchesCurrent.x = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX, a.image.touchesCurrent.y = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY, !a.image.isMoved && !a.isScaling) { if (y.isHorizontal() && Math.floor(a.image.minX) === Math.floor(a.image.startX) && a.image.touchesCurrent.x < a.image.touchesStart.x || Math.floor(a.image.maxX) === Math.floor(a.image.startX) && a.image.touchesCurrent.x > a.image.touchesStart.x) return void(a.image.isTouched = !1); if (!y.isHorizontal() && Math.floor(a.image.minY) === Math.floor(a.image.startY) && a.image.touchesCurrent.y < a.image.touchesStart.y || Math.floor(a.image.maxY) === Math.floor(a.image.startY) && a.image.touchesCurrent.y > a.image.touchesStart.y) return void(a.image.isTouched = !1) } e.preventDefault(), e.stopPropagation(), a.image.isMoved = !0, a.image.currentX = a.image.touchesCurrent.x - a.image.touchesStart.x + a.image.startX, a.image.currentY = a.image.touchesCurrent.y - a.image.touchesStart.y + a.image.startY, a.image.currentX < a.image.minX && (a.image.currentX = a.image.minX + 1 - Math.pow(a.image.minX - a.image.currentX + 1, .8)), a.image.currentX > a.image.maxX && (a.image.currentX = a.image.maxX - 1 + Math.pow(a.image.currentX - a.image.maxX + 1, .8)), a.image.currentY < a.image.minY && (a.image.currentY = a.image.minY + 1 - Math.pow(a.image.minY - a.image.currentY + 1, .8)), a.image.currentY > a.image.maxY && (a.image.currentY = a.image.maxY - 1 + Math.pow(a.image.currentY - a.image.maxY + 1, .8)), a.velocity.prevPositionX || (a.velocity.prevPositionX = a.image.touchesCurrent.x), a.velocity.prevPositionY || (a.velocity.prevPositionY = a.image.touchesCurrent.y), a.velocity.prevTime || (a.velocity.prevTime = Date.now()), a.velocity.x = (a.image.touchesCurrent.x - a.velocity.prevPositionX) / (Date.now() - a.velocity.prevTime) / 2, a.velocity.y = (a.image.touchesCurrent.y - a.velocity.prevPositionY) / (Date.now() - a.velocity.prevTime) / 2, Math.abs(a.image.touchesCurrent.x - a.velocity.prevPositionX) < 2 && (a.velocity.x = 0), Math.abs(a.image.touchesCurrent.y - a.velocity.prevPositionY) < 2 && (a.velocity.y = 0), a.velocity.prevPositionX = a.image.touchesCurrent.x, a.velocity.prevPositionY = a.image.touchesCurrent.y, a.velocity.prevTime = Date.now(), a.gesture.imageWrap.transform("translate3d(" + a.image.currentX + "px, " + a.image.currentY + "px,0)") } } }, onTouchEnd: function(e, a) { var t = e.zoom; if (t.gesture.image && 0 !== t.gesture.image.length) { if (!t.image.isTouched || !t.image.isMoved) return t.image.isTouched = !1, void(t.image.isMoved = !1); t.image.isTouched = !1, t.image.isMoved = !1; var s = 300, r = 300, i = t.velocity.x * s, n = t.image.currentX + i, o = t.velocity.y * r, l = t.image.currentY + o; 0 !== t.velocity.x && (s = Math.abs((n - t.image.currentX) / t.velocity.x)), 0 !== t.velocity.y && (r = Math.abs((l - t.image.currentY) / t.velocity.y)); var p = Math.max(s, r); t.image.currentX = n, t.image.currentY = l; var d = t.image.width * t.scale, m = t.image.height * t.scale; t.image.minX = Math.min(t.gesture.slideWidth / 2 - d / 2, 0), t.image.maxX = -t.image.minX, t.image.minY = Math.min(t.gesture.slideHeight / 2 - m / 2, 0), t.image.maxY = -t.image.minY, t.image.currentX = Math.max(Math.min(t.image.currentX, t.image.maxX), t.image.minX), t.image.currentY = Math.max(Math.min(t.image.currentY, t.image.maxY), t.image.minY), t.gesture.imageWrap.transition(p).transform("translate3d(" + t.image.currentX + "px, " + t.image.currentY + "px,0)") } }, onTransitionEnd: function(e) { var a = e.zoom; a.gesture.slide && e.previousIndex !== e.activeIndex && (a.gesture.image.transform("translate3d(0,0,0) scale(1)"), a.gesture.imageWrap.transform("translate3d(0,0,0)"), a.gesture.slide = a.gesture.image = a.gesture.imageWrap = void 0, a.scale = a.currentScale = 1) }, toggleZoom: function(a, t) { var s = a.zoom; if (s.gesture.slide || (s.gesture.slide = a.clickedSlide ? e(a.clickedSlide) : a.slides.eq(a.activeIndex), s.gesture.image = s.gesture.slide.find("img, svg, canvas"), s.gesture.imageWrap = s.gesture.image.parent("." + a.params.zoomContainerClass)), s.gesture.image && 0 !== s.gesture.image.length) { var r, i, n, o, l, p, d, m, u, c, g, h, v, f, w, x, y, T; void 0 === s.image.touchesStart.x && t ? (r = "touchend" === t.type ? t.changedTouches[0].pageX : t.pageX, i = "touchend" === t.type ? t.changedTouches[0].pageY : t.pageY) : (r = s.image.touchesStart.x, i = s.image.touchesStart.y), s.scale && 1 !== s.scale ? (s.scale = s.currentScale = 1, s.gesture.imageWrap.transition(300).transform("translate3d(0,0,0)"), s.gesture.image.transition(300).transform("translate3d(0,0,0) scale(1)"), s.gesture.slide = void 0) : (s.scale = s.currentScale = s.gesture.imageWrap.attr("data-swiper-zoom") || a.params.zoomMax, t ? (y = s.gesture.slide[0].offsetWidth, T = s.gesture.slide[0].offsetHeight, n = s.gesture.slide.offset().left, o = s.gesture.slide.offset().top, l = n + y / 2 - r, p = o + T / 2 - i, u = s.gesture.image[0].offsetWidth, c = s.gesture.image[0].offsetHeight, g = u * s.scale, h = c * s.scale, v = Math.min(y / 2 - g / 2, 0), f = Math.min(T / 2 - h / 2, 0), w = -v, x = -f, d = l * s.scale, m = p * s.scale, d < v && (d = v), d > w && (d = w), m < f && (m = f), m > x && (m = x)) : (d = 0, m = 0), s.gesture.imageWrap.transition(300).transform("translate3d(" + d + "px, " + m + "px,0)"), s.gesture.image.transition(300).transform("translate3d(0,0,0) scale(" + s.scale + ")")) } }, attachEvents: function(a) { var t = a ? "off" : "on"; if (y.params.zoom) { var s = (y.slides, !("touchstart" !== y.touchEvents.start || !y.support.passiveListener || !y.params.passiveListeners) && { passive: !0, capture: !1 }); y.support.gestures ? (y.slides[t]("gesturestart", y.zoom.onGestureStart, s), y.slides[t]("gesturechange", y.zoom.onGestureChange, s), y.slides[t]("gestureend", y.zoom.onGestureEnd, s)) : "touchstart" === y.touchEvents.start && (y.slides[t](y.touchEvents.start, y.zoom.onGestureStart, s), y.slides[t](y.touchEvents.move, y.zoom.onGestureChange, s), y.slides[t](y.touchEvents.end, y.zoom.onGestureEnd, s)), y[t]("touchStart", y.zoom.onTouchStart), y.slides.each(function(a, s) { e(s).find("." + y.params.zoomContainerClass).length > 0 && e(s)[t](y.touchEvents.move, y.zoom.onTouchMove) }), y[t]("touchEnd", y.zoom.onTouchEnd), y[t]("transitionEnd", y.zoom.onTransitionEnd), y.params.zoomToggle && y.on("doubleTap", y.zoom.toggleZoom) } }, init: function() { y.zoom.attachEvents() }, destroy: function() { y.zoom.attachEvents(!0) } }, y._plugins = []; for (var Y in y.plugins) { var A = y.plugins[Y](y, y.params[Y]); A && y._plugins.push(A) } 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), void 0 === 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(a) { 13 === a.keyCode && (e(a.target).is(y.params.nextButton) ? (y.onClickNext(a), y.isEnd ? y.a11y.notify(y.params.lastSlideMessage) : y.a11y.notify(y.params.nextSlideMessage)) : e(a.target).is(y.params.prevButton) && (y.onClickPrev(a), y.isBeginning ? y.a11y.notify(y.params.firstSlideMessage) : y.a11y.notify(y.params.prevSlideMessage)), e(a.target).is("." + y.params.bulletClass) && e(a.target)[0].click()) }, liveRegion: e(''), 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)), e(y.container).append(y.a11y.liveRegion) }, initPagination: function() { y.params.pagination && y.params.paginationClickable && y.bullets && y.bullets.length && y.bullets.each(function() { var a = e(this); y.a11y.makeFocusable(a), y.a11y.addRole(a, "button"), y.a11y.addLabel(a, y.params.paginationBulletMessage.replace(/{{index}}/, a.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.zoom && y.zoom && y.zoom.init(), y.params.autoplay && y.startAutoplay(), y.params.keyboardControl && y.enableKeyboardControl && y.enableKeyboardControl(), y.params.mousewheelControl && y.enableMousewheelControl && y.enableMousewheelControl(), y.params.hashnavReplaceState && (y.params.replaceState = y.params.hashnavReplaceState), y.params.history && y.history && y.history.init(), 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 && e(y.params.prevButton).removeClass(y.params.buttonDisabledClass), y.params.nextButton && e(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.zoom && y.zoom && y.zoom.destroy(), y.params.keyboardControl && y.disableKeyboardControl && y.disableKeyboardControl(), y.params.mousewheelControl && y.disableMousewheelControl && y.disableMousewheelControl(), y.params.a11y && y.a11y && y.a11y.destroy(), y.params.history && !y.params.replaceState && window.removeEventListener("popstate", y.history.setHistoryPopState), y.params.hashnav && y.hashnav && y.hashnav.destroy(), y.emit("onDestroy"), !1 !== e && (y = null) }, y.init(), y } }; a.prototype = { isSafari: function() { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf("safari") >= 0 && e.indexOf("chrome") < 0 && e.indexOf("android") < 0 }(), isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.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, lteIE9: function() { var e = document.createElement("div"); return e.innerHTML = "\x3c!--[if lte IE 9]> 0 ? e ? this[0].offsetWidth + parseFloat(this.css("margin-right")) + parseFloat(this.css("margin-left")) : this[0].offsetWidth : null })), window.Swiper = a }(), "undefined" != typeof module ? module.exports = window.Swiper : "function" == typeof define && define.amd && define([], function() { "use strict"; return window.Swiper }); /** * @module WOW * @author Matthieu Aussaguel * @version v1.1.2 * @license MIT License */ (function() { var t, e, n, i, o, r = function(t, e) { return function() { return t.apply(e, arguments) } }, s = [].indexOf || function(t) { for (var e = 0, n = this.length; n > e; e++) if (e in this && this[e] === t) return e; return -1 }; e = function() { function t() {} return t.prototype.extend = function(t, e) { var n, i; for (n in e) i = e[n], null == t[n] && (t[n] = i); return t }, t.prototype.isMobile = function(t) { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t) }, t.prototype.createEvent = function(t, e, n, i) { var o; return null == e && (e = !1), null == n && (n = !1), null == i && (i = null), null != document.createEvent ? (o = document.createEvent("CustomEvent"), o.initCustomEvent(t, e, n, i)) : null != document.createEventObject ? (o = document.createEventObject(), o.eventType = t) : o.eventName = t, o }, t.prototype.emitEvent = function(t, e) { return null != t.dispatchEvent ? t.dispatchEvent(e) : e in (null != t) ? t[e]() : "on" + e in (null != t) ? t["on" + e]() : void 0 }, t.prototype.addEvent = function(t, e, n) { return null != t.addEventListener ? t.addEventListener(e, n, !1) : null != t.attachEvent ? t.attachEvent("on" + e, n) : t[e] = n }, t.prototype.removeEvent = function(t, e, n) { return null != t.removeEventListener ? t.removeEventListener(e, n, !1) : null != t.detachEvent ? t.detachEvent("on" + e, n) : delete t[e] }, t.prototype.innerHeight = function() { return "innerHeight" in window ? window.innerHeight : document.documentElement.clientHeight }, t }(), n = this.WeakMap || this.MozWeakMap || (n = function() { function t() { this.keys = [], this.values = [] } return t.prototype.get = function(t) { var e, n, i, o, r; for (r = this.keys, e = i = 0, o = r.length; o > i; e = ++i) if (n = r[e], n === t) return this.values[e] }, t.prototype.set = function(t, e) { var n, i, o, r, s; for (s = this.keys, n = o = 0, r = s.length; r > o; n = ++o) if (i = s[n], i === t) return void(this.values[n] = e); return this.keys.push(t), this.values.push(e) }, t }()), t = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (t = function() { function t() { "undefined" != typeof console && null !== console && console.warn("MutationObserver is not supported by your browser."), "undefined" != typeof console && null !== console && console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.") } return t.notSupported = !0, t.prototype.observe = function() {}, t }()), i = this.getComputedStyle || function(t) { return this.getPropertyValue = function(e) { var n; return "float" === e && (e = "styleFloat"), o.test(e) && e.replace(o, function(t, e) { return e.toUpperCase() }), (null != (n = t.currentStyle) ? n[e] : void 0) || null }, this }, o = /(\-([a-z]){1})/g, this.WOW = function() { function o(t) { null == t && (t = {}), this.scrollCallback = r(this.scrollCallback, this), this.scrollHandler = r(this.scrollHandler, this), this.resetAnimation = r(this.resetAnimation, this), this.start = r(this.start, this), this.scrolled = !0, this.config = this.util().extend(t, this.defaults), null != t.scrollContainer && (this.config.scrollContainer = document.querySelector(t.scrollContainer)), this.animationNameCache = new n, this.wowEvent = this.util().createEvent(this.config.boxClass) } return o.prototype.defaults = { boxClass: "wow", animateClass: "animated", offset: 0, mobile: !0, live: !0, callback: null, scrollContainer: null }, o.prototype.init = function() { var t; return this.element = window.document.documentElement, "interactive" === (t = document.readyState) || "complete" === t ? this.start() : this.util().addEvent(document, "DOMContentLoaded", this.start), this.finished = [] }, o.prototype.start = function() { var e, n, i, o; if (this.stopped = !1, this.boxes = function() { var t, n, i, o; for (i = this.element.querySelectorAll("." + this.config.boxClass), o = [], t = 0, n = i.length; n > t; t++) e = i[t], o.push(e); return o }.call(this), this.all = function() { var t, n, i, o; for (i = this.boxes, o = [], t = 0, n = i.length; n > t; t++) e = i[t], o.push(e); return o }.call(this), this.boxes.length) if (this.disabled()) this.resetStyle(); else for (o = this.boxes, n = 0, i = o.length; i > n; n++) e = o[n], this.applyStyle(e, !0); return this.disabled() || (this.util().addEvent(this.config.scrollContainer || window, "scroll", this.scrollHandler), this.util().addEvent(window, "resize", this.scrollHandler), this.interval = setInterval(this.scrollCallback, 50)), this.config.live ? new t(function(t) { return function(e) { var n, i, o, r, s; for (s = [], n = 0, i = e.length; i > n; n++) r = e[n], s.push(function() { var t, e, n, i; for (n = r.addedNodes || [], i = [], t = 0, e = n.length; e > t; t++) o = n[t], i.push(this.doSync(o)); return i }.call(t)); return s } }(this)).observe(document.body, { childList: !0, subtree: !0 }) : void 0 }, o.prototype.stop = function() { return this.stopped = !0, this.util().removeEvent(this.config.scrollContainer || window, "scroll", this.scrollHandler), this.util().removeEvent(window, "resize", this.scrollHandler), null != this.interval ? clearInterval(this.interval) : void 0 }, o.prototype.sync = function() { return t.notSupported ? this.doSync(this.element) : void 0 }, o.prototype.doSync = function(t) { var e, n, i, o, r; if (null == t && (t = this.element), 1 === t.nodeType) { for (t = t.parentNode || t, o = t.querySelectorAll("." + this.config.boxClass), r = [], n = 0, i = o.length; i > n; n++) e = o[n], s.call(this.all, e) < 0 ? (this.boxes.push(e), this.all.push(e), this.stopped || this.disabled() ? this.resetStyle() : this.applyStyle(e, !0), r.push(this.scrolled = !0)) : r.push(void 0); return r } }, o.prototype.show = function(t) { return this.applyStyle(t), t.className = t.className + " " + this.config.animateClass, null != this.config.callback && this.config.callback(t), this.util().emitEvent(t, this.wowEvent), this.util().addEvent(t, "animationend", this.resetAnimation), this.util().addEvent(t, "oanimationend", this.resetAnimation), this.util().addEvent(t, "webkitAnimationEnd", this.resetAnimation), this.util().addEvent(t, "MSAnimationEnd", this.resetAnimation), t }, o.prototype.applyStyle = function(t, e) { var n, i, o; return i = t.getAttribute("data-wow-duration"), n = t.getAttribute("data-wow-delay"), o = t.getAttribute("data-wow-iteration"), this.animate(function(r) { return function() { return r.customStyle(t, e, i, n, o) } }(this)) }, o.prototype.animate = function() { return "requestAnimationFrame" in window ? function(t) { return window.requestAnimationFrame(t) } : function(t) { return t() } }(), o.prototype.resetStyle = function() { var t, e, n, i, o; for (i = this.boxes, o = [], e = 0, n = i.length; n > e; e++) t = i[e], o.push(t.style.visibility = "visible"); return o }, o.prototype.resetAnimation = function(t) { var e; return t.type.toLowerCase().indexOf("animationend") >= 0 ? (e = t.target || t.srcElement, e.className = e.className.replace(this.config.animateClass, "").trim()) : void 0 }, o.prototype.customStyle = function(t, e, n, i, o) { return e && this.cacheAnimationName(t), t.style.visibility = e ? "hidden" : "visible", n && this.vendorSet(t.style, { animationDuration: n }), i && this.vendorSet(t.style, { animationDelay: i }), o && this.vendorSet(t.style, { animationIterationCount: o }), this.vendorSet(t.style, { animationName: e ? "none" : this.cachedAnimationName(t) }), t }, o.prototype.vendors = ["moz", "webkit"], o.prototype.vendorSet = function(t, e) { var n, i, o, r; i = []; for (n in e) o = e[n], t["" + n] = o, i.push(function() { var e, i, s, l; for (s = this.vendors, l = [], e = 0, i = s.length; i > e; e++) r = s[e], l.push(t["" + r + n.charAt(0).toUpperCase() + n.substr(1)] = o); return l }.call(this)); return i }, o.prototype.vendorCSS = function(t, e) { var n, o, r, s, l, a; for (l = i(t), s = l.getPropertyCSSValue(e), r = this.vendors, n = 0, o = r.length; o > n; n++) a = r[n], s = s || l.getPropertyCSSValue("-" + a + "-" + e); return s }, o.prototype.animationName = function(t) { var e; try { e = this.vendorCSS(t, "animation-name").cssText } catch (n) { e = i(t).getPropertyValue("animation-name") } return "none" === e ? "" : e }, o.prototype.cacheAnimationName = function(t) { return this.animationNameCache.set(t, this.animationName(t)) }, o.prototype.cachedAnimationName = function(t) { return this.animationNameCache.get(t) }, o.prototype.scrollHandler = function() { return this.scrolled = !0 }, o.prototype.scrollCallback = function() { var t; return !this.scrolled || (this.scrolled = !1, this.boxes = function() { var e, n, i, o; for (i = this.boxes, o = [], e = 0, n = i.length; n > e; e++) t = i[e], t && (this.isVisible(t) ? this.show(t) : o.push(t)); return o }.call(this), this.boxes.length || this.config.live) ? void 0 : this.stop() }, o.prototype.offsetTop = function(t) { for (var e; void 0 === t.offsetTop;) t = t.parentNode; for (e = t.offsetTop; t = t.offsetParent;) e += t.offsetTop; return e }, o.prototype.isVisible = function(t) { var e, n, i, o, r; return n = t.getAttribute("data-wow-offset") || this.config.offset, r = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset, o = r + Math.min(this.element.clientHeight, this.util().innerHeight()) - n, i = this.offsetTop(t), e = i + t.clientHeight, o >= i && e >= r }, o.prototype.util = function() { return null != this._util ? this._util : this._util = new e }, o.prototype.disabled = function() { return !this.config.mobile && this.util().isMobile(navigator.userAgent) }, o }() }).call(this); /** * @module Owl carousel * @version 2.2.1 * @author Bartosz Wojciechowski * @license MIT */ ! function(a, b, c, d) { function e(b, c) { this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }, this._states = { current: {}, tags: { initializing: ["busy"], animating: ["busy"], dragging: ["interacting"] } }, a.each(["onResize", "onThrottledResize"], a.proxy(function(b, c) { this._handlers[c] = a.proxy(this[c], this) }, this)), a.each(e.Plugins, a.proxy(function(a, b) { this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this) }, this)), a.each(e.Workers, a.proxy(function(b, c) { this._pipe.push({ filter: c.filter, run: a.proxy(c.run, this) }) }, this)), this.setup(), this.initialize() } e.Defaults = { items: 3, loop: !1, center: !1, rewind: !1, mouseDrag: !0, touchDrag: !0, pullDrag: !0, freeDrag: !1, margin: 0, stagePadding: 0, merge: !1, mergeFit: !0, autoWidth: !1, startPosition: 0, rtl: !1, smartSpeed: 250, fluidSpeed: !1, dragEndSpeed: !1, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: b, fallbackEasing: "swing", info: !1, nestedItemSelector: !1, itemElement: "div", stageElement: "div", refreshClass: "owl-refresh", loadedClass: "owl-loaded", loadingClass: "owl-loading", rtlClass: "owl-rtl", responsiveClass: "owl-responsive", dragClass: "owl-drag", itemClass: "owl-item", stageClass: "owl-stage", stageOuterClass: "owl-stage-outer", grabClass: "owl-grab" }, e.Width = { Default: "default", Inner: "inner", Outer: "outer" }, e.Type = { Event: "event", State: "state" }, e.Plugins = {}, e.Workers = [{ filter: ["width", "settings"], run: function() { this._width = this.$element.width() } }, { filter: ["width", "items", "settings"], run: function(a) { a.current = this._items && this._items[this.relative(this._current)] } }, { filter: ["items", "settings"], run: function() { this.$stage.children(".cloned").remove() } }, { filter: ["width", "items", "settings"], run: function(a) { var b = this.settings.margin || "", c = !this.settings.autoWidth, d = this.settings.rtl, e = { width: "auto", "margin-left": d ? b : "", "margin-right": d ? "" : b }; !c && this.$stage.children().css(e), a.css = e } }, { filter: ["width", "items", "settings"], run: function(a) { var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, c = null, d = this._items.length, e = !this.settings.autoWidth, f = []; for (a.items = { merge: !1, width: b }; d--;) c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this.settings.items) || c, a.items.merge = c > 1 || a.items.merge, f[d] = e ? b * c : this._items[d].width(); this._widths = f } }, { filter: ["items", "settings"], run: function() { var b = [], c = this._items, d = this.settings, e = Math.max(2 * d.items, 4), f = 2 * Math.ceil(c.length / 2), g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0, h = "", i = ""; for (g /= 2; g--;) b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0].outerHTML, b.push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]][0].outerHTML + i; this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage) } }, { filter: ["width", "items", "settings"], run: function() { for (var a = this.settings.rtl ? 1 : -1, b = this._clones.length + this._items.length, c = -1, d = 0, e = 0, f = []; ++c < b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings.margin, f.push(d + e * a); this._coordinates = f } }, { filter: ["width", "items", "settings"], run: function() { var a = this.settings.stagePadding, b = this._coordinates, c = { width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a, "padding-left": a || "", "padding-right": a || "" }; this.$stage.css(c) } }, { filter: ["width", "items", "settings"], run: function(a) { var b = this._coordinates.length, c = !this.settings.autoWidth, d = this.$stage.children(); if (c && a.items.merge) for (; b--;) a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css); else c && (a.css.width = a.items.width, d.css(a.css)) } }, { filter: ["items"], run: function() { this._coordinates.length < 1 && this.$stage.removeAttr("style") } }, { filter: ["width", "items", "settings"], run: function(a) { a.current = a.current ? this.$stage.children().index(a.current) : 0, a.current = Math.max(this.minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current) } }, { filter: ["position"], run: function() { this.animate(this.coordinates(this._current)) } }, { filter: ["width", "position", "items", "settings"], run: function() { var a, b, c, d, e = this.settings.rtl ? 1 : -1, f = 2 * this.settings.stagePadding, g = this.coordinates(this.current()) + f, h = g + this.width() * e, i = []; for (c = 0, d = this._coordinates.length; c < d; c++) a = this._coordinates[c - 1] || 0, b = Math.abs(this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c); this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.settings.center && (this.$stage.children(".center").removeClass("center"), this.$stage.children().eq(this.current()).addClass("center")) } }], e.prototype.initialize = function() { if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) { var b, c, e; b = this.$element.find("img"), c = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : d, e = this.$element.children(c).width(), b.length && e <= 0 && this.preloadAutoWidthImages(b) } this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>').wrap(''), this.$element.append(this.$stage.parent()), this.replace(this.$element.children().not(this.$stage.parent())), this.$element.is(":visible") ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized") }, e.prototype.setup = function() { var b = this.viewport(), c = this.options.responsive, d = -1, e = null; c ? (a.each(c, function(a) { a <= b && a > d && (d = Number(a)) }), e = a.extend({}, this.options, c[d]), "function" == typeof e.stagePadding && (e.stagePadding = e.stagePadding()), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))) : e = a.extend({}, this.options), this.trigger("change", { property: { name: "settings", value: e } }), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger("changed", { property: { name: "settings", value: this.settings } }) }, e.prototype.optionsLogic = function() { this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1) }, e.prototype.prepare = function(b) { var c = this.trigger("prepare", { content: b }); return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b)), this.trigger("prepared", { content: c.data }), c.data }, e.prototype.update = function() { for (var b = 0, c = this._pipe.length, d = a.proxy(function(a) { return this[a] }, this._invalidated), e = {}; b < c;)(this._invalidated.all || a.grep(this._pipe[b].filter, d).length > 0) && this._pipe[b].run(e), b++; this._invalidated = {}, !this.is("valid") && this.enter("valid") }, e.prototype.width = function(a) { switch (a = a || e.Width.Default) { case e.Width.Inner: case e.Width.Outer: return this._width; default: return this._width - 2 * this.settings.stagePadding + this.settings.margin } }, e.prototype.refresh = function() { this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed") }, e.prototype.onThrottledResize = function() { b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate) }, e.prototype.onResize = function() { return !!this._items.length && (this._width !== this.$element.width() && (!!this.$element.is(":visible") && (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), !1) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized"))))) }, e.prototype.registerEventHandlers = function() { a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), this.settings.responsive !== !1 && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function() { return !1 })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this))) }, e.prototype.onDragStart = function(b) { var d = null; 3 !== b.which && (a.support.transform ? (d = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d = { x: d[16 === d.length ? 12 : 4], y: d[16 === d.length ? 13 : 5] }) : (d = this.$stage.position(), d = { x: this.settings.rtl ? d.left + this.$stage.width() - this.width() + this.settings.margin : d.left, y: d.top }), this.is("animating") && (a.support.transform ? this.animate(d.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function(b) { var d = this.difference(this._drag.pointer, this.pointer(b)); a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter("dragging"), this.trigger("drag")) }, this))) }, e.prototype.onDragMove = function(a) { var b = null, c = null, d = null, e = this.difference(this._drag.pointer, this.pointer(a)), f = this.difference(this._drag.stage.start, e); this.is("dragging") && (a.preventDefault(), this.settings.loop ? (b = this.coordinates(this.minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b) : (b = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), d = this.settings.pullDrag ? -1 * e.x / 5 : 0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this.animate(f.x)) }, e.prototype.onDragEnd = function(b) { var d = this.difference(this._drag.pointer, this.pointer(b)), e = this._drag.stage.current, f = d.x > 0 ^ this.settings.rtl ? "left" : "right"; a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e.x, 0 !== d.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function() { return !1 })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged")) }, e.prototype.closest = function(b, c) { var d = -1, e = 30, f = this.width(), g = this.coordinates(); return this.settings.freeDrag || a.each(g, a.proxy(function(a, h) { return "left" === c && b > h - e && b < h + e ? d = a : "right" === c && b > h - f - e && b < h - f + e ? d = a + 1 : this.op(b, "<", h) && this.op(b, ">", g[a + 1] || h - f) && (d = "left" === c ? a + 1 : a), d === -1 }, this)), this.settings.loop || (this.op(b, ">", g[this.minimum()]) ? d = b = this.minimum() : this.op(b, "<", g[this.maximum()]) && (d = b = this.maximum())), d }, e.prototype.animate = function(b) { var c = this.speed() > 0; this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition ? this.$stage.css({ transform: "translate3d(" + b + "px,0px,0px)", transition: this.speed() / 1e3 + "s" }) : c ? this.$stage.animate({ left: b + "px" }, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this.$stage.css({ left: b + "px" }) }, e.prototype.is = function(a) { return this._states.current[a] && this._states.current[a] > 0 }, e.prototype.current = function(a) { if (a === d) return this._current; if (0 === this._items.length) return d; if (a = this.normalize(a), this._current !== a) { var b = this.trigger("change", { property: { name: "position", value: a } }); b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger("changed", { property: { name: "position", value: this._current } }) } return this._current }, e.prototype.invalidate = function(b) { return "string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function(a, b) { return b }) }, e.prototype.reset = function(a) { a = this.normalize(a), a !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a)), this.release(["translate", "translated"])) }, e.prototype.normalize = function(a, b) { var c = this._items.length, e = b ? 0 : this._clones.length; return !this.isNumeric(a) || c < 1 ? a = d : (a < 0 || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a }, e.prototype.relative = function(a) { return a -= this._clones.length / 2, this.normalize(a, !0) }, e.prototype.maximum = function(a) { var b, c, d, e = this.settings, f = this._coordinates.length; if (e.loop) f = this._clones.length / 2 + this._items.length - 1; else if (e.autoWidth || e.merge) { for (b = this._items.length, c = this._items[--b].width(), d = this.$element.width(); b-- && (c += this._items[b].width() + this.settings.margin, !(c > d));); f = b + 1 } else f = e.center ? this._items.length - 1 : this._items.length - e.items; return a && (f -= this._clones.length / 2), Math.max(f, 0) }, e.prototype.minimum = function(a) { return a ? 0 : this._clones.length / 2 }, e.prototype.items = function(a) { return a === d ? this._items.slice() : (a = this.normalize(a, !0), this._items[a]) }, e.prototype.mergers = function(a) { return a === d ? this._mergers.slice() : (a = this.normalize(a, !0), this._mergers[a]) }, e.prototype.clones = function(b) { var c = this._clones.length / 2, e = c + this._items.length, f = function(a) { return a % 2 === 0 ? e + a / 2 : c - (a + 1) / 2 }; return b === d ? a.map(this._clones, function(a, b) { return f(b) }) : a.map(this._clones, function(a, c) { return a === b ? f(c) : null }) }, e.prototype.speed = function(a) { return a !== d && (this._speed = a), this._speed }, e.prototype.coordinates = function(b) { var c, e = 1, f = b - 1; return b === d ? a.map(this._coordinates, a.proxy(function(a, b) { return this.coordinates(b) }, this)) : (this.settings.center ? (this.settings.rtl && (e = -1, f = b + 1), c = this._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e) : c = this._coordinates[f] || 0, c = Math.ceil(c)) }, e.prototype.duration = function(a, b, c) { return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings.smartSpeed) }, e.prototype.to = function(a, b) { var c = this.current(), d = null, e = a - this.relative(c), f = (e > 0) - (e < 0), g = this._items.length, h = this.minimum(), i = this.maximum(); this.settings.loop ? (!this.settings.rewind && Math.abs(e) > g / 2 && (e += f * -1 * g), a = c + e, d = ((a - h) % g + g) % g + h, d !== a && d - e <= i && d - e > 0 && (c = d - e, a = d, this.reset(c))) : this.settings.rewind ? (i += 1, a = (a % i + i) % i) : a = Math.max(h, Math.min(i, a)), this.speed(this.duration(c, a, b)), this.current(a), this.$element.is(":visible") && this.update() }, e.prototype.next = function(a) { a = a || !1, this.to(this.relative(this.current()) + 1, a) }, e.prototype.prev = function(a) { a = a || !1, this.to(this.relative(this.current()) - 1, a) }, e.prototype.onTransitionEnd = function(a) { if (a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this.$stage.get(0))) return !1; this.leave("animating"), this.trigger("translated") }, e.prototype.viewport = function() { var d; return this.options.responsiveBaseElement !== b ? d = a(this.options.responsiveBaseElement).width() : b.innerWidth ? d = b.innerWidth : c.documentElement && c.documentElement.clientWidth ? d = c.documentElement.clientWidth : console.warn("Can not detect viewport width."), d }, e.prototype.replace = function(b) { this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery ? b : a(b)), this.settings.nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter(function() { return 1 === this.nodeType }).each(a.proxy(function(a, b) { b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1) }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items") }, e.prototype.add = function(b, c) { var e = this.relative(this._current); c = c === d ? this._items.length : this.normalize(c, !0), b = b instanceof jQuery ? b : a(b), this.trigger("add", { content: b, position: c }), b = this.prepare(b), 0 === this._items.length || c === this._items.length ? (0 === this._items.length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)) : (this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this._items[e].index()), this.invalidate("items"), this.trigger("added", { content: b, position: c }) }, e.prototype.remove = function(a) { a = this.normalize(a, !0), a !== d && (this.trigger("remove", { content: this._items[a], position: a }), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this.invalidate("items"), this.trigger("removed", { content: null, position: a })) }, e.prototype.preloadAutoWidthImages = function(b) { b.each(a.proxy(function(b, c) { this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function(a) { c.attr("src", a.target.src), c.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh() }, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr("data-src-retina")) }, this)) }, e.prototype.destroy = function() { this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), this.settings.responsive !== !1 && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize)); for (var d in this._plugins) this._plugins[d].destroy(); this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel") }, e.prototype.op = function(a, b, c) { var d = this.settings.rtl; switch (b) { case "<": return d ? a > c : a < c; case ">": return d ? a < c : a > c; case ">=": return d ? a <= c : a >= c; case "<=": return d ? a >= c : a <= c } }, e.prototype.on = function(a, b, c, d) { a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c) }, e.prototype.off = function(a, b, c, d) { a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c) }, e.prototype.trigger = function(b, c, d, f, g) { var h = { item: { count: this._items.length, index: this.current() } }, i = a.camelCase(a.grep(["on", b, d], function(a) { return a }).join("-").toLowerCase()), j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({ relatedTarget: this }, h, c)); return this._supress[b] || (a.each(this._plugins, function(a, b) { b.onTrigger && b.onTrigger(j) }), this.register({ type: e.Type.Event, name: b }), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j }, e.prototype.enter = function(b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) { this._states.current[b] === d && (this._states.current[b] = 0), this._states.current[b]++ }, this)) }, e.prototype.leave = function(b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) { this._states.current[b]-- }, this)) }, e.prototype.register = function(b) { if (b.type === e.Type.Event) { if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl) { var c = a.event.special[b.name]._default; a.event.special[b.name]._default = function(a) { return !c || !c.apply || a.namespace && a.namespace.indexOf("owl") !== -1 ? a.namespace && a.namespace.indexOf("owl") > -1 : c.apply(this, arguments) }, a.event.special[b.name].owl = !0 } } else b.type === e.Type.State && (this._states.tags[b.name] ? this._states.tags[b.name] = this._states.tags[b.name].concat(b.tags) : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this._states.tags[b.name], a.proxy(function(c, d) { return a.inArray(c, this._states.tags[b.name]) === d }, this))) }, e.prototype.suppress = function(b) { a.each(b, a.proxy(function(a, b) { this._supress[b] = !0 }, this)) }, e.prototype.release = function(b) { a.each(b, a.proxy(function(a, b) { delete this._supress[b] }, this)) }, e.prototype.pointer = function(a) { var c = { x: null, y: null }; return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length ? a.touches[0] : a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, a.pageX ? (c.x = a.pageX, c.y = a.pageY) : (c.x = a.clientX, c.y = a.clientY), c }, e.prototype.isNumeric = function(a) { return !isNaN(parseFloat(a)) }, e.prototype.difference = function(a, b) { return { x: a.x - b.x, y: a.y - b.y } }, a.fn.owlCarousel = function(b) { var c = Array.prototype.slice.call(arguments, 1); return this.each(function() { var d = a(this), f = d.data("owl.carousel"); f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(b, c) { f.register({ type: e.Type.Event, name: c }), f.$element.on(c + ".owl.carousel.core", a.proxy(function(a) { a.namespace && a.relatedTarget !== this && (this.suppress([c]), f[c].apply(this, [].slice.call(arguments, 1)), this.release([c])) }, f)) })), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c) }) }, a.fn.owlCarousel.Constructor = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._interval = null, this._visible = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoRefresh && this.watch() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers) }; e.Defaults = { autoRefresh: !0, autoRefreshInterval: 500 }, e.prototype.watch = function() { this._interval || (this._visible = this._core.$element.is(":visible"), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval)) }, e.prototype.refresh = function() { this._core.$element.is(":visible") !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh()) }, e.prototype.destroy = function() { var a, c; b.clearInterval(this._interval); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._loaded = [], this._handlers = { "initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function(b) { if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b.property && "position" == b.property.name || "initialized" == b.type)) for (var c = this._core.settings, e = c.center && Math.ceil(c.items / 2) || c.items, f = c.center && e * -1 || 0, g = (b.property && b.property.value !== d ? b.property.value : this._core.current()) + f, h = this._core.clones().length, i = a.proxy(function(a, b) { this.load(b) }, this); f++ < e;) this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones(this._core.relative(g)), i), g++ }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers) }; e.Defaults = { lazyLoad: !1 }, e.prototype.load = function(c) { var d = this._core.$stage.children().eq(c), e = d && d.find(".owl-lazy"); !e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(function(c, d) { var e, f = a(d), g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src"); this._core.trigger("load", { element: f, url: g }, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function() { f.css("opacity", 1), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this)).attr("src", g) : (e = new Image, e.onload = a.proxy(function() { f.css({ "background-image": 'url("' + g + '")', opacity: "1" }), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this), e.src = g) }, this)), this._loaded.push(d.get(0))) }, e.prototype.destroy = function() { var a, b; for (a in this.handlers) this._core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._handlers = { "initialized.owl.carousel refreshed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && this.update() }, this), "changed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && "position" == a.property.name && this.update() }, this), "loaded.owl.lazy": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && a.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers) }; e.Defaults = { autoHeight: !1, autoHeightClass: "owl-height" }, e.prototype.update = function() { var b = this._core._current, c = b + this._core.settings.items, d = this._core.$stage.children().toArray().slice(b, c), e = [], f = 0; a.each(d, function(b, c) { e.push(a(c).height()) }), f = Math.max.apply(null, e), this._core.$stage.parent().height(f).addClass(this._core.settings.autoHeightClass) }, e.prototype.destroy = function() { var a, b; for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._videos = {}, this._playing = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a) { a.namespace && this._core.register({ type: "state", name: "playing", tags: ["interacting"] }) }, this), "resize.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.video && this.isInFullScreen() && a.preventDefault() }, this), "refreshed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove() }, this), "changed.owl.carousel": a.proxy(function(a) { a.namespace && "position" === a.property.name && this._playing && this.stop() }, this), "prepared.owl.carousel": a.proxy(function(b) { if (b.namespace) { var c = a(b.content).find(".owl-video"); c.length && (c.css("display", "none"), this.fetch(c, a(b.content))) } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function(a) { this.play(a) }, this)) }; e.Defaults = { video: !1, videoHeight: !1, videoWidth: !1 }, e.prototype.fetch = function(a, b) { var c = function() { return a.attr("data-vimeo-id") ? "vimeo" : a.attr("data-vzaar-id") ? "vzaar" : "youtube" }(), d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"), e = a.attr("data-width") || this._core.settings.videoWidth, f = a.attr("data-height") || this._core.settings.videoHeight, g = a.attr("href"); if (!g) throw new Error("Missing video URL."); if (d = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf("youtu") > -1) c = "youtube"; else if (d[3].indexOf("vimeo") > -1) c = "vimeo"; else { if (!(d[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported."); c = "vzaar" } d = d[6], this._videos[g] = { type: c, id: d, width: e, height: f }, b.attr("data-video", g), this.thumbnail(a, this._videos[g]) }, e.prototype.thumbnail = function(b, c) { var d, e, f, g = c.width && c.height ? 'style="width:' + c.width + "px;height:" + c.height + 'px;"' : "", h = b.find("img"), i = "src", j = "", k = this._core.settings, l = function(a) { e = '', d = k.lazyLoad ? '' : '', b.after(d), b.after(e) }; if (b.wrap('"), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h.length) return l(h.attr(i)), h.remove(), !1; "youtube" === c.type ? (f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)) : "vimeo" === c.type ? a.ajax({ type: "GET", url: "//vimeo.com/api/v2/video/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a) { f = a[0].thumbnail_large, l(f) } }) : "vzaar" === c.type && a.ajax({ type: "GET", url: "//vzaar.com/api/videos/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a) { f = a.framegrab_url, l(f) } }) }, e.prototype.stop = function() { this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video") }, e.prototype.play = function(b) { var c, d = a(b.target), e = d.closest("." + this._core.settings.itemClass), f = this._videos[e.attr("data-video")], g = f.width || "100%", h = f.height || this._core.$stage.height(); this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this._core.items(this._core.relative(e.index())), this._core.reset(e.index()), "youtube" === f.type ? c = '' : "vimeo" === f.type ? c = '' : "vzaar" === f.type && (c = ''), a('
").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on("click", "div", a.proxy(function(b) { var d = a(b.target).parent().is(this._controls.$absolute) ? a(b.target).index() : a(b.target).parent().index(); b.preventDefault(), this.to(d, c.dotsSpeed) }, this)); for (b in this._overrides) this._core[b] = a.proxy(this[b], this) }, e.prototype.destroy = function() { var a, b, c, d; for (a in this._handlers) this.$element.off(a, this._handlers[a]); for (b in this._controls) this._controls[b].remove(); for (d in this.overides) this._core[d] = this._overrides[d]; for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) }, e.prototype.update = function() { var a, b, c, d = this._core.clones().length / 2, e = d + this._core.items().length, f = this._core.maximum(!0), g = this._core.settings, h = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach || g.items; if ("page" !== g.slideBy && (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || "page" == g.slideBy) for (this._pages = [], a = d, b = 0, c = 0; a < e; a++) { if (b >= h || 0 === b) { if (this._pages.push({ start: Math.min(f, a - d), end: a - d + h - 1 }), Math.min(f, a - d) === f) break; b = 0, ++c } b += this._core.mergers(this._core.relative(a)) } }, e.prototype.draw = function() { var b, c = this._core.settings, d = this._core.items().length <= c.items, e = this._core.relative(this._core.current()), f = c.loop || c.rewind; this._controls.$relative.toggleClass("disabled", !c.nav || d), c.nav && (this._controls.$previous.toggleClass("disabled", !f && e <= this._core.minimum(!0)), this._controls.$next.toggleClass("disabled", !f && e >= this._core.maximum(!0))), this._controls.$absolute.toggleClass("disabled", !c.dots || d), c.dots && (b = this._pages.length - this._controls.$absolute.children().length, c.dotsData && 0 !== b ? this._controls.$absolute.html(this._templates.join("")) : b > 0 ? this._controls.$absolute.append(new Array(b + 1).join(this._templates[0])) : b < 0 && this._controls.$absolute.children().slice(b).remove(), this._controls.$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(a.inArray(this.current(), this._pages)).addClass("active")) }, e.prototype.onTrigger = function(b) { var c = this._core.settings; b.page = { index: a.inArray(this.current(), this._pages), count: this._pages.length, size: c && (c.center || c.autoWidth || c.dotsData ? 1 : c.dotsEach || c.items) } }, e.prototype.current = function() { var b = this._core.relative(this._core.current()); return a.grep(this._pages, a.proxy(function(a, c) { return a.start <= b && a.end >= b }, this)).pop() }, e.prototype.getPosition = function(b) { var c, d, e = this._core.settings; return "page" == e.slideBy ? (c = a.inArray(this.current(), this._pages), d = this._pages.length, b ? ++c : --c, c = this._pages[(c % d + d) % d].start) : (c = this._core.relative(this._core.current()), d = this._core.items().length, b ? c += e.slideBy : c -= e.slideBy), c }, e.prototype.next = function(b) { a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b) }, e.prototype.prev = function(b) { a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b) }, e.prototype.to = function(b, c, d) { var e; !d && this._pages.length ? (e = this._pages.length, a.proxy(this._overrides.to, this._core)(this._pages[(b % e + e) % e].start, c)) : a.proxy(this._overrides.to, this._core)(b, c) }, a.fn.owlCarousel.Constructor.Plugins.Navigation = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { "use strict"; var e = function(c) { this._core = c, this._hashes = {}, this.$element = this._core.$element, this._handlers = { "initialized.owl.carousel": a.proxy(function(c) { c.namespace && "URLHash" === this._core.settings.startPosition && a(b).trigger("hashchange.owl.navigation") }, this), "prepared.owl.carousel": a.proxy(function(b) { if (b.namespace) { var c = a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash"); if (!c) return; this._hashes[c] = b.content } }, this), "changed.owl.carousel": a.proxy(function(c) { if (c.namespace && "position" === c.property.name) { var d = this._core.items(this._core.relative(this._core.current())), e = a.map(this._hashes, function(a, b) { return a === d ? b : null }).join(); if (!e || b.location.hash.slice(1) === e) return; b.location.hash = e } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers), a(b).on("hashchange.owl.navigation", a.proxy(function(a) { var c = b.location.hash.substring(1), e = this._core.$stage.children(), f = this._hashes[c] && e.index(this._hashes[c]); f !== d && f !== this._core.current() && this._core.to(this._core.relative(f), !1, !0) }, this)) }; e.Defaults = { URLhashListener: !1 }, e.prototype.destroy = function() { var c, d; a(b).off("hashchange.owl.navigation"); for (c in this._handlers) this._core.$element.off(c, this._handlers[c]); for (d in Object.getOwnPropertyNames(this)) "function" != typeof this[d] && (this[d] = null) }, a.fn.owlCarousel.Constructor.Plugins.Hash = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { function e(b, c) { var e = !1, f = b.charAt(0).toUpperCase() + b.slice(1); return a.each((b + " " + h.join(f + " ") + f).split(" "), function(a, b) { if (g[b] !== d) return e = !c || b, !1 }), e } function f(a) { return e(a, !0) } var g = a("").get(0).style, h = "Webkit Moz O ms".split(" "), i = { transition: { end: { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd", transition: "transitionend" } }, animation: { end: { WebkitAnimation: "webkitAnimationEnd", MozAnimation: "animationend", OAnimation: "oAnimationEnd", animation: "animationend" } } }, j = { csstransforms: function() { return !!e("transform") }, csstransforms3d: function() { return !!e("perspective") }, csstransitions: function() { return !!e("transition") }, cssanimations: function() { return !!e("animation") } }; j.csstransitions() && (a.support.transition = new String(f("transition")), a.support.transition.end = i.transition.end[a.support.transition]), j.cssanimations() && (a.support.animation = new String(f("animation")), a.support.animation.end = i.animation.end[a.support.animation]), j.csstransforms() && (a.support.transform = new String(f("transform")), a.support.transform3d = j.csstransforms3d()) }(window.Zepto || window.jQuery, window, document); /** * @module RD Navbar * @author Evgeniy Gusarov * @see https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a * @version 2.2.5 */ (function() { var t; t = "ontouchstart" in window, function(n, o, e) { var a; a = function() { function a(t, a) { this.options = n.extend(!0, {}, this.Defaults, a), this.$element = n(t), this.$clone = null, this.$win = n(e), this.$doc = n(o), this.currentLayout = this.options.layout, this.loaded = !1, this.focusOnHover = this.options.focusOnHover, this.focusTimer = !1, this.cloneTimer = !1, this.isStuck = !1, this.initialize() } return a.prototype.Defaults = { layout: "rd-navbar-static", deviceLayout: "rd-navbar-fixed", focusOnHover: !0, focusOnHoverTimeout: 800, linkedElements: ["html"], domAppend: !0, stickUp: !0, stickUpClone: !0, stickUpOffset: "100%", anchorNav: !0, anchorNavSpeed: 400, anchorNavOffset: 0, anchorNavEasing: "swing", autoHeight: !0, responsive: { 0: { layout: "rd-navbar-fixed", deviceLayout: "rd-navbar-fixed", focusOnHover: !1, stickUp: !1 }, 992: { layout: "rd-navbar-static", deviceLayout: "rd-navbar-static", focusOnHover: !0, stickUp: !0 } }, callbacks: { onToggleSwitch: !1, onToggleClose: !1, onDomAppend: !1, onDropdownOver: !1, onDropdownOut: !1, onDropdownToggle: !1, onDropdownClose: !1, onStuck: !1, onUnstuck: !1, onAnchorChange: !1 } }, a.prototype.initialize = function() { var n; return (n = this).$element.addClass("rd-navbar").addClass(n.options.layout), t && n.$element.addClass("rd-navbar--is-touch"), n.options.domAppend && n.createNav(n), n.options.stickUpClone && n.createClone(n), n.$element.addClass("rd-navbar-original"), n.addAdditionalClassToToggles(".rd-navbar-original", "toggle-original", "toggle-original-elements"), n.applyHandlers(n), n.offset = n.$element.offset().top, n.height = n.$element.outerHeight(), n.loaded = !0, n }, a.prototype.resize = function(o, e) { var a, s; return s = t ? o.getOption("deviceLayout") : o.getOption("layout"), a = o.$element.add(o.$clone), s === o.currentLayout && o.loaded || (o.switchClass(a, o.currentLayout, s), null != o.options.linkedElements && n.grep(o.options.linkedElements, function(t, n) { return o.switchClass(t, o.currentLayout + "-linked", s + "-linked") }), o.currentLayout = s), o.focusOnHover = o.getOption("focusOnHover"), o }, a.prototype.stickUp = function(t, o) { function e() { "resize" === o.type ? t.switchClass(i, "", "rd-navbar--is-stuck") : i.addClass("rd-navbar--is-stuck"), t.isStuck = !0 } var a, s, r, i, l; return s = t.getOption("stickUp"), (n("html").hasClass("ios") || t.$element.hasClass("rd-navbar-fixed")) && (s = !1), a = t.$doc.scrollTop(), i = null != t.$clone ? t.$clone : t.$element, r = t.getOption("stickUpOffset"), l = "string" == typeof r ? r.indexOf("%") > 0 ? parseFloat(r) * t.height / 100 : parseFloat(r) : r, s ? (a >= l && !t.isStuck || a < l && t.isStuck) && (t.$element.add(t.$clone).find("[data-rd-navbar-toggle]").each(function() { n.proxy(t.closeToggle, this)(t, !1) }).end().find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"), a >= l && !t.isStuck && !t.$element.hasClass("rd-navbar-fixed") ? (t.options.callbacks.onStuck && t.options.callbacks.onStuck.call(t), navigator.platform.match(/(Mac)/i) ? setTimeout(e, 10) : e()) : ("resize" === o.type ? t.switchClass(i, "rd-navbar--is-stuck", "") : i.removeClass("rd-navbar--is-stuck").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", n.proxy(t.resizeWrap, t, o)), t.isStuck = !1, t.options.callbacks.onUnstuck && t.options.callbacks.onUnstuck.call(t))) : (t.$element.find(".rd-navbar-submenu").removeClass("opened").removeClass("focus"), t.isStuck && (t.switchClass(i, "rd-navbar--is-stuck", ""), t.isStuck = !1, t.resizeWrap(o))), t }, a.prototype.resizeWrap = function(t) { var n, o; if (null == (o = this).$clone && !o.isStuck) return n = o.$element.parent(), o.getOption("autoHeight") ? (o.height = o.$element.outerHeight(), "resize" === t.type ? (n.addClass("rd-navbar--no-transition").css("height", o.height), n[0].offsetHeight, n.removeClass("rd-navbar--no-transition")) : n.css("height", o.height)) : void n.css("height", "auto") }, a.prototype.createNav = function(t) { return t.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function() { var t; return t = n(this), this.getBoundingClientRect(), t.hasClass("rd-navbar-megamenu") ? t.parent().addClass("rd-navbar--has-megamenu") : t.parent().addClass("rd-navbar--has-dropdown") }).parents("li").addClass("rd-navbar-submenu"), n('').insertAfter(".rd-navbar-nav li.rd-navbar-submenu > a"), t.options.callbacks.onDomAppend && t.options.callbacks.onDomAppend.call(this), t }, a.prototype.createClone = function(t) { return t.$clone = t.$element.clone().insertAfter(t.$element).addClass("rd-navbar--is-clone"), t.addAdditionalClassToToggles(".rd-navbar--is-clone", "toggle-cloned", "toggle-cloned-elements"), t }, a.prototype.closeToggle = function(t, o) { var e, a, s, r, i, l, c; return a = n(o.target), i = !1, l = this.getAttribute("data-rd-navbar-toggle"), t.options.stickUpClone && t.isStuck ? (r = ".toggle-cloned", s = ".toggle-cloned-elements", c = !a.hasClass("toggle-cloned")) : (r = ".toggle-original", s = ".toggle-original-elements", c = !a.hasClass("toggle-original")), o.target !== this && !a.parents(r + "[data-rd-navbar-toggle]").length && !a.parents(s).length && l && c && ((e = n(this).parents("body").find(l).add(n(this).parents(".rd-navbar")[0])).each(function() { if (!i) return i = !0 === (o.target === this || n.contains(this, o.target)) }), i || (e.add(this).removeClass("active"), t.options.callbacks.onToggleClose && t.options.callbacks.onToggleClose.call(this, t))), this }, a.prototype.switchToggle = function(t, o) { var e, a, s; return o.preventDefault(), n(this).hasClass("toggle-cloned") ? (s = ".rd-navbar--is-clone", e = ".toggle-cloned-elements") : (s = ".rd-navbar-original", e = ".toggle-original-elements"), (a = this.getAttribute("data-rd-navbar-toggle")) && (n(s + " [data-rd-navbar-toggle]").not(this).each(function() { var t; if (t = this.getAttribute("data-rd-navbar-toggle")) return n(this).parents("body").find(s + " " + t + e).add(this).add(n.inArray(".rd-navbar", t.split(/\s*,\s*/i)) > -1 && n(this).parents("body")[0]).removeClass("active") }), n(this).parents("body").find(s + " " + a + e).add(this).add(n.inArray(".rd-navbar", a.split(/\s*,\s*/i)) > -1 && n(this).parents(".rd-navbar")[0]).toggleClass("active")), t.options.callbacks.onToggleSwitch && t.options.callbacks.onToggleSwitch.call(this, t), this }, a.prototype.dropdownOver = function(t, o) { var e; if (t.focusOnHover) { if (e = n(this), clearTimeout(o), t.options.callbacks.onDropdownOver && !t.options.callbacks.onDropdownOver.call(this, t)) return this; e.addClass("focus").siblings().removeClass("opened").each(t.dropdownUnfocus) } return this }, a.prototype.dropdownTouch = function(t, o) { var e, a; if (e = n(this), clearTimeout(o), t.focusOnHover) { if (a = !1, e.hasClass("focus") && (a = !0), !a) return e.addClass("focus").siblings().removeClass("opened").each(t.dropdownUnfocus), !1; t.options.callbacks.onDropdownOver && t.options.callbacks.onDropdownOver.call(this, t) } return this }, a.prototype.dropdownOut = function(t, o) { return t.focusOnHover && (n(this).one("mouseenter.navbar", function() { return clearTimeout(o) }), t.options.callbacks.onDropdownOut && t.options.callbacks.onDropdownOut.call(this, t), clearTimeout(o), o = setTimeout(n.proxy(t.dropdownUnfocus, this, t), t.options.focusOnHoverTimeout)), this }, a.prototype.dropdownUnfocus = function(t) { return n(this).find("li.focus").add(this).removeClass("focus"), this }, a.prototype.dropdownClose = function(t, o) { return o.target === this || n(o.target).parents(".rd-navbar-submenu").length || (n(this).find("li.focus").add(this).removeClass("focus").removeClass("opened"), t.options.callbacks.onDropdownClose && t.options.callbacks.onDropdownClose.call(this, t)), this }, a.prototype.dropdownToggle = function(t) { return n(this).toggleClass("opened").siblings().removeClass("opened"), t.options.callbacks.onDropdownToggle && t.options.callbacks.onDropdownToggle.call(this, t), this }, a.prototype.goToAnchor = function(t, o) { var e, a; return a = this.hash, e = n(a), !!t.getOption("anchorNav") && (e.length && (o.preventDefault(), n("html, body").stop().animate({ scrollTop: e.offset().top + t.getOption("anchorNavOffset") + 1 }, t.getOption("anchorNavSpeed"), t.getOption("anchorNavEasing"), function() { return t.changeAnchor(a) })), this) }, a.prototype.activateAnchor = function(t) { var o, e, a, s, r, i, l, c, d, p, u, h; if (s = this, u = s.$doc.scrollTop(), h = s.$win.height(), r = s.$doc.height(), p = s.getOption("anchorNavOffset"), !s.options.anchorNav) return !1; if (u + h > r - 50) return (o = n('[data-type="anchor"]').last()).length && o.offset().top >= u && (i = "#" + o.attr("id"), (e = n('.rd-navbar-nav a[href^="' + i + '"]').parent()).hasClass("active") || (e.addClass("active").siblings().removeClass("active"), s.options.callbacks.onAnchorChange && s.options.callbacks.onAnchorChange.call(o[0], s))), o; d = n('.rd-navbar-nav a[href^="#"]').get(); for (l in d) c = d[l], i = (a = n(c)).attr("href"), (o = n(i)).length && o.offset().top + p <= u && o.offset().top + o.outerHeight() > u && (a.parent().addClass("active").siblings().removeClass("active"), s.options.callbacks.onAnchorChange && s.options.callbacks.onAnchorChange.call(o[0], s)); return null }, a.prototype.getAnchor = function() { return history && history.state ? history.state.id : null }, a.prototype.changeAnchor = function(t) { return history && (history.state && history.state.id !== t ? history.replaceState({ anchorId: t }, null, t) : history.pushState({ anchorId: t }, null, t)), this }, a.prototype.applyHandlers = function(t) { return null != t.options.responsive && t.$win.on("resize.navbar", n.proxy(t.resize, t.$win[0], t)).on("resize.navbar", n.proxy(t.resizeWrap, t)).on("resize.navbar", n.proxy(t.stickUp, null != t.$clone ? t.$clone : t.$element, t)).on("orientationchange.navbar", n.proxy(t.resize, t.$win[0], t)).trigger("resize.navbar"), t.$doc.on("scroll.navbar", n.proxy(t.stickUp, null != t.$clone ? t.$clone : t.$element, t)).on("scroll.navbar", n.proxy(t.activateAnchor, t)), t.$element.add(t.$clone).find("[data-rd-navbar-toggle]").each(function() { var o; return (o = n(this)).on("click", n.proxy(t.switchToggle, this, t)), o.parents("body").on("click", n.proxy(t.closeToggle, this, t)) }), t.$element.add(t.$clone).find(".rd-navbar-submenu").each(function() { var o, e; return o = n(this), e = o.parents(".rd-navbar--is-clone").length ? t.cloneTimer : t.focusTimer, o.on("mouseleave.navbar", n.proxy(t.dropdownOut, this, t, e)), o.find("> a").on("mouseenter.navbar", n.proxy(t.dropdownOver, this, t, e)), o.find("> a").on("touchstart.navbar", n.proxy(t.dropdownTouch, this, t, e)), o.find("> .rd-navbar-submenu-toggle").on("click", n.proxy(t.dropdownToggle, this, t)), o.parents("body").on("click", n.proxy(t.dropdownClose, this, t)) }), t.$element.add(t.$clone).find('.rd-navbar-nav a[href^="#"]').each(function() { return n(this).on("click", n.proxy(t.goToAnchor, this, t)) }), t.$element.find(".rd-navbar-dropdown, .rd-navbar-megamenu").each(function() { var t, o; t = n(this), (o = this.getBoundingClientRect()).left + t.outerWidth() >= e.innerWidth - 10 ? this.className += " rd-navbar-open-left" : o.left - t.outerWidth() <= 10 && (this.className += " rd-navbar-open-right") }), t }, a.prototype.switchClass = function(t, o, e) { var a; return (a = t instanceof jQuery ? t : n(t)).addClass("rd-navbar--no-transition").removeClass(o).addClass(e), a[0].offsetHeight, a.removeClass("rd-navbar--no-transition") }, a.prototype.getOption = function(t) { var n, o; for (n in this.options.responsive) n <= e.innerWidth && (o = n); return null != this.options.responsive && null != this.options.responsive[o][t] ? this.options.responsive[o][t] : this.options[t] }, a.prototype.addAdditionalClassToToggles = function(t, o, e) { return n(t).find("[data-rd-navbar-toggle]").each(function() { var a; return n(this).addClass(o), a = this.getAttribute("data-rd-navbar-toggle"), n(this).parents("body").find(t).find(a).addClass(e) }) }, a }(), n.fn.extend({ RDNavbar: function(t) { var o; if (!(o = n(this)).data("RDNavbar")) return o.data("RDNavbar", new a(this, t)) } }), e.RDNavbar = a }(window.jQuery, document, window), "undefined" != typeof module && null !== module ? module.exports = window.RDNavbar : "function" == typeof define && define.amd && define(["jquery"], function() { "use strict"; return window.RDNavbar }) }).call(this); /** * @module UIToTop * @author Matt Varone * @see http://www.mattvarone.com/web-design/uitotop-jquery-plugin/ * @license MIT License */ ! function(o) { o.fn.UItoTop = function(n) { var e = { text: "", min: 500, scrollSpeed: 800, containerID: "ui-to-top", containerClass: "ui-to-top fa fa-angle-up", easingType: "easeIn" }, t = o.extend(e, n), i = "#" + t.containerID; o("body").append('' + t.text + ""), o(i).click(function() { return o("html, body").stop().animate({ scrollTop: 0 }, t.scrollSpeed, t.easingType), !1 }), o(window).scroll(function() { var n = o(window).scrollTop(); "undefined" == typeof document.body.style.maxHeight && o(i).css({ position: "absolute", top: o(window).scrollTop() + o(window).height() - 50 }), n > t.min ? o(i).stop(!0, !0).addClass("active") : o(i).removeClass("active") }) } }(jQuery); /** * @module ScrollTo * @license MIT License * @version 1.0.0 */ ! function(o) { o.fn.scrollTo = function(e) { function n(e) { if (e.preventDefault(), a.hasClass("toTop")) return o("html, body").stop().animate({ scrollTop: 0 }, s.scrollSpeed), o(a).removeClass("toTop"), !1; for (var n = 0; n < r.length; n++) if (window.scrollY < r[n].offsetTop + r[n].offsetHeight) { var t = r[n + 1].offsetTop; return t > o(document).height() - window.innerHeight && !a.hasClass("toTop") && a.addClass("toTop"), void 0 === r[n + 2] && a.addClass("toTop"), o("html, body").stop().animate({ scrollTop: t }, s.scrollSpeed, function() { void 0 === r[n + 2] && a.addClass("toTop") }), !1 } return !1 } var t = { containerID: "scrollTo", containerHoverID: "scrollTopHover", scrollSpeed: 1200, easingType: "linear" }, s = o.extend(t, e), l = o(window), r = this; o("body").append(''); var a = o("#" + s.containerID); a.hide().on("click", n), l.on("scroll", function(e) { window.scrollY > window.innerHeight ? o(a).fadeIn() : o(a).fadeOut(), window.scrollY > r[r.length - 1].offsetTop - 1 ? a.addClass("toTop") : a.removeClass("toTop"), window.scrollY === o(document).height() - window.innerHeight && a.addClass("toTop") }) } }(jQuery); /** * Eesy Responsive Tabs to Accordion * @see https://github.com/samsono/Easy-Responsive-Tabs-to-Accordion * @license MIT License */ ! function(t) { t.fn.extend({ easyResponsiveTabs: function(a) { var e = { type: "default", width: "auto", fit: !0, closed: !1, tabidentify: "", activetab_bg: !1, inactive_bg: !1, active_border_color: !1, active_content_border_color: !1, activate: function() {} }, a = t.extend(e, a), i = a, r = i.type, o = i.fit, s = i.width, n = "vertical", c = "accordion", d = window.location.hash, b = !(!window.history || !history.replaceState); t(this).bind("tabactivate", function(t, e) { "function" == typeof a.activate && a.activate.call(e, t) }), this.each(function() { function e() { r == n && i.addClass("resp-vtabs").addClass(a.tabidentify), 1 == o && i.css({ width: "100%" }), r == c && (i.addClass("resp-easy-accordion").addClass(a.tabidentify), i.find(".resp-tabs-list").css("display", "none")) } var i = t(this), l = i.find("ul.resp-tabs-list." + a.tabidentify), f = i.attr("id"); i.find("ul.resp-tabs-list." + a.tabidentify + " li").addClass("resp-tab-item").addClass(a.tabidentify), i.css({ width: s }), "vertical" == a.type && l.css(""), i.find(".resp-tabs-container." + a.tabidentify).css("border-color", a.active_content_border_color), i.find(".resp-tabs-container." + a.tabidentify + " > div").addClass("resp-tab-content").addClass(a.tabidentify), e(); var p; i.find(".resp-tab-content." + a.tabidentify).before("
"), i.find(".resp-tab-content." + a.tabidentify).prev("h2").css({ "background-color": a.inactive_bg, "border-color": a.active_border_color }); var v = 0; i.find(".resp-accordion").each(function() { p = t(this); var e = i.find(".resp-tab-item:eq(" + v + ")"), r = i.find(".resp-accordion:eq(" + v + ")"); r.append(e.html()), r.data(e.data()), p.attr("aria-controls", a.tabidentify + "_tab_item-" + v), v++ }); var y, _ = 0; i.find(".resp-tab-item").each(function() { $tabItem = t(this), $tabItem.attr("aria-controls", a.tabidentify + "_tab_item-" + _), $tabItem.attr("role", "tab"), $tabItem.css({ "background-color": a.inactive_bg, "border-color": "none" }); var e = 0; i.find(".resp-tab-content." + a.tabidentify).each(function() { y = t(this), y.attr("aria-labelledby", a.tabidentify + "_tab_item-" + e).css({ "border-color": a.active_border_color }), e++ }), _++ }); var h = 0; if ("" != d) { var u = d.match(new RegExp(f + "([0-9]+)")); null !== u && 2 === u.length && (h = parseInt(u[1], 10) - 1, h > _ && (h = 0)) } t(i.find(".resp-tab-item." + a.tabidentify)[h]).addClass("resp-tab-active").css({ "background-color": a.activetab_bg, "border-color": a.active_border_color }), a.closed === !0 || "accordion" === a.closed && !l.is(":visible") || "tabs" === a.closed && l.is(":visible") || (t(i.find(".resp-accordion." + a.tabidentify)[h]).addClass("resp-tab-active").css({ "background-color": a.activetab_bg + " !important", "border-color": a.active_border_color }), t(i.find(".resp-tab-content." + a.tabidentify)[h]).addClass("resp-tab-content-active").addClass(a.tabidentify).attr("style", "display:block")), i.find("[role=tab]").each(function() { var e = t(this); e.click(function() { var e = t(this), r = e.attr("aria-controls"); if (e.hasClass("resp-accordion") && e.hasClass("resp-tab-active")) return i.find(".resp-tab-content-active." + a.tabidentify).slideUp("", function() { t(this).addClass("resp-accordion-closed") }), e.removeClass("resp-tab-active").css({ "background-color": a.inactive_bg, "border-color": "none" }), !1; if (!e.hasClass("resp-tab-active") && e.hasClass("resp-accordion") ? (i.find(".resp-tab-active." + a.tabidentify).removeClass("resp-tab-active").css({ "background-color": a.inactive_bg, "border-color": "none" }), i.find(".resp-tab-content-active." + a.tabidentify).slideUp().removeClass("resp-tab-content-active resp-accordion-closed"), i.find("[aria-controls=" + r + "]").addClass("resp-tab-active").css({ "background-color": a.activetab_bg, "border-color": a.active_border_color }), i.find(".resp-tab-content[aria-labelledby = " + r + "]." + a.tabidentify).slideDown().addClass("resp-tab-content-active")) : (i.find(".resp-tab-active." + a.tabidentify).removeClass("resp-tab-active").css({ "background-color": a.inactive_bg, "border-color": "none" }), i.find(".resp-tab-content-active." + a.tabidentify).removeAttr("style").removeClass("resp-tab-content-active").removeClass("resp-accordion-closed"), i.find("[aria-controls=" + r + "]").addClass("resp-tab-active").css({ "background-color": a.activetab_bg, "border-color": a.active_border_color }), i.find(".resp-tab-content[aria-labelledby = " + r + "]." + a.tabidentify).addClass("resp-tab-content-active").attr("style", "display:block")), e.trigger("tabactivate", e), b) { var o = window.location.hash, s = r.split("tab_item-"), n = f + (parseInt(s[1], 10) + 1).toString(); if ("" != o) { var c = new RegExp(f + "[0-9]+"); n = null != o.match(c) ? o.replace(c, n) : o + "|" + n } else n = "#" + n; history.replaceState(null, null, n) } }) }), t(window).resize(function() { i.find(".resp-accordion-closed").removeAttr("style") }) }) } }) }(jQuery); /** * 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: '
', 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: '
' }), 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); /** * Regula: An annotation-based form-validation framework in Javascript * @version 1.3.4 * @license BSD License * @copyright Robert Nyman, http://www.robertnyman.com */ (function(e, t) { typeof define == "function" && define.amd ? define("utils/MapUtils", t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.MapUtils = t()) })(this, function() { return { iterateOverMap: function(e, t) { var n = 0; for (var r in e) e.hasOwnProperty(r) && r !== "__size__" && (t.call(e, r, e[r], n), n++) }, exists: function(e, t) { var n = !1, r = 0; while (!n && r < e.length) n = t == e[r], r++; return n }, put: function(e, t, n) { e.__size__ || (e.__size__ = 0), e[t] || e.__size__++, e[t] = n }, isEmpty: function(e) { for (var t in e) if (e.hasOwnProperty(t)) return !1; return !0 } } }), function(e, t) { typeof define == "function" && define.amd ? define("utils/DOMUtils", t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.DOMUtils = t()) }(this, function() { function t(e, t, n, r) { var i = t == "*" && e.all ? e.all : e.getElementsByTagName(t), s = [], o = typeof r != "undefined" ? new RegExp("(^|\\s)" + r + "(\\s|$)") : null, u, a; for (var f = 0; f < i.length; f++) u = i[f], a = u.getAttribute && u.getAttribute(n), typeof a == "string" && a.length > 0 && (typeof r == "undefined" || o && o.test(a)) && s.push(u); return s } function n(e, t) { var n = e.getAttribute && e.getAttribute(t) || null; if (!n) { var r = e.attributes; for (var i = 0; i < r.length; i++) r[i].nodeName === t && (n = r[i].nodeValue) } return n } function r() { return "regula-generated-" + Math.floor(Math.random() * 1e6) } function i() { return typeof document.createElement("input").checkValidity == "function" } var e = { form: "The form", select: "The select box", textarea: "The text area", checkbox: "The checkbox", radio: "The radio button", text: "The text field", password: "The password", email: "The email", url: "The URL", number: "The number", datetime: "The datetime", "datetime-local": "The local datetime", date: "The date", month: "The month", time: "The time", week: "The week", range: "The range", tel: "The telephone number", color: "The color" }; return { friendlyInputNames: e, getElementsByAttribute: t, getAttributeValueForElement: n, generateRandomId: r, supportsHTML5Validation: i } }), function(e, t) { typeof define == "function" && define.amd ? define("service/GroupService", t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.GroupService = t()) }(this, function() { var e = { Default: 0 }, t = { 0: "Default" }, n = [], r = 1; return { Group: e, ReverseGroup: t, deletedGroupIndices: n, firstCustomGroupIndex: r } }), function(e, t) { typeof define == "function" && define.amd ? define("utils/ArrayUtils", t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.ArrayUtils = t()) }(this, function() { function e(e, t) { var n = ""; for (var r = 0; r < e.length; r++) n += e[r] + t; return n.replace(new RegExp(t + "$"), "") } return { explode: e } }), function(e, t) { typeof define == "function" && define.amd ? define("service/ExceptionService", ["utils/ArrayUtils"], t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.ExceptionService = t(e.regulaModules.ArrayUtils)) }(this, function(e) { function i(e, t, n) { var r = ""; return e != null ? (r = e.id, t == "" || t == null || t == undefined ? r += ": " : r += "." + t + ": ") : t != "" && t != null && t != undefined && (r = "@" + t + ": "), r + n } function s(t) { var n = "Function received: {"; for (var r in t) t.hasOwnProperty(r) && (typeof t[r] == "string" ? n += r + ": " + t[r] + ", " : t[r] instanceof Array && (n += r + ": [" + e.explode(t[r], ", ") + "], ")); return n = n.replace(/, $/, "") + "}", n } var t = { IllegalArgumentException: function(e) { this.name = "IllegalArgumentException", this.message = e }, ConstraintDefinitionException: function(e) { this.name = "ConstraintDefinitionException", this.message = e }, BindException: function(e) { this.name = "BindException", this.message = e }, MissingFeatureException: function(e) { this.name = "MissingFeatureException", this.message = e } }; for (var n in t) if (t.hasOwnProperty(n)) { var r = t[n]; r.prototype = new Error, r.prototype.constructor = r } return { Exception: t, generateExceptionMessage: i, explodeParameters: s } }), function(e, t) { typeof define == "function" && define.amd ? define("service/ValidationService", ["utils/DOMUtils", "utils/MapUtils", "service/GroupService", "service/ExceptionService", "utils/ArrayUtils"], t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.ValidationService = t(e.regulaModules.DOMUtils, e.regulaModules.MapUtils, e.regulaModules.GroupService, e.regulaModules.ExceptionService, e.regulaModules.ArrayUtils)) }(this, function(e, t, n, r, i) { function h(e) { for (var t in e) e.hasOwnProperty(t) && v(t, e) } function p(e) { s = e.config, o = e.ReverseConstraint, u = e.constraintDefinitions, a = e.boundConstraints } function v(e, t) { var n = t[e], i = e.replace(/(^[A-Z]+)/, function(e) { return e.toLowerCase() }); n.async ? c[i] = function(t, i, s) { if (typeof s == "undefined") throw new r.Exception.IllegalArgumentException(e + " is an asynchronous constraint, but you have not provided a callback."); return n.validator.call(t, i, c, s) } : c[i] = function(e, t) { return n.validator.call(e, t, c) } } function m(e, n, r, i) { function a(n, r) { var i = {}; for (var s in n) n.hasOwnProperty(s) && s != "__size__" && t.put(i, s, n[s]); if (r.length > 0) for (var s in e) e.hasOwnProperty(s) && s != "__size__" && t.put(i, s, e[s]); return i } function f(e, t, n, i) { var s = o[y.constraintType], a = W(t, s, i), f = { group: n, constraintName: e.constraintName, custom: u[s].custom, compound: u[s].compound, async: u[s].async, constraintParameters: y.params, failingElements: e.failingElements, message: a }; return r.reportAsSingleViolation || (f.composingConstraintViolations = e.composingConstraintViolations || []), f } var l = [], c = []; for (var h = 0; h < r.composingConstraints.length; h++) { var p = r.composingConstraints[h], d = o[p.constraintType]; u[d].async ? c.push(p) : l.push(p) } var v = null, m = this; if (g(this, e)) { if (l.length > 0) { v = []; for (var h = 0; h < l.length; h++) { var y = l[h], b = o[y.constraintType], w = a(y.params, r.params), E = U(n, m.id, b, w); if (!E.constraintPassed) { var S = f(E, m.id, n, w); if (s.enableHTML5Validation) for (var x = 0; x < E.failingElements.length; x++) E.failingElements[x].setCustomValidity(S.message); v.push(S) } } } if (c.length > 0) { v === null && (v = []); var T = 0; for (var h = 0; h < c.length; h++) { var y = c[h], b = o[y.constraintType], w = a(y.params, r.params); z(n, m.id, b, w, N) } function N(e) { if (!e.constraintPassed) { var t = f(e, m.id, n, w); if (s.enableHTML5Validation) for (var r = 0; r < e.failingElements.length; r++) e.failingElements[r].setCustomValidity(t.message); v.push(t) } T++, T === c.length && i(v) } } } else v = []; return v } function g(e, t) { var n = s.validateEmptyFields; return typeof t["ignoreEmpty"] != "undefined" && (n = !t.ignoreEmpty), !d.blank.call(e) || !!n } function y(e) { var t = { YMD: { Year: 0, Month: 1, Day: 2 }, MDY: { Month: 0, Day: 1, Year: 2 }, DMY: { Day: 0, Month: 1, Year: 2 } }, n = t[e.format], r = e.separator; typeof e["separator"] == "undefined" && (r = /\//.test(this.value) ? "/" : /\./.test(this.value) ? "." : / /.test(this.value) ? " " : /[^0-9]+/); var i = this.value.split(r), s = new Date(i[n.Year], i[n.Month] - 1, i[n.Day]), o = new Date; return typeof e["date"] != "undefined" && (i = e.date.split(r), o = new Date(i[n.Year], i[n.Month] - 1, i[n.Day])), { dateToValidate: s, dateToTestAgainst: o } } function b(e) { return function(t, n, r) { var i = !0; return g(this, t) && (i = e.call(this, t, n, r)), i } } function w() { return !this.validity.typeMismatch } function E(e) { function t(e) { var t = e.groups || null, n = e.elementIds || null, r = (typeof e.constraintType == "undefined" ? null : e.constraintType) || null, i = ""; return i += t == null ? "0" : "1", i += n == null ? "0" : "1", i += r == null ? "0" : "1", i } f = {}, l = {}; var r = { "000": S, "001": x, "010": T, "011": N, 100: C, 101: k, 110: L, 111: A }; if (!e || typeof e == "undefined") e = {}; typeof e.independent == "undefined" && (e.independent = !0), typeof e.constraintType != "undefined" && (e.constraintType = o[e.constraintType]); if (typeof e.groups != "undefined") { var i = e.groups; e.groups = []; for (var s = 0; s < i.length; s++) e.groups.push(n.ReverseGroup[i[s]]) } if (typeof e.elements != "undefined") { e.elementIds = []; for (var s = 0; s < e.elements.length; s++) e.elementIds.push(e.elements[s].id) } else typeof e.elementId != "undefined" && (e.elementIds = [e.elementId]); return r[t(e)](e) } function S(e) { var t = { asyncContexts: [], syncContexts: [] }; for (var n in a) if (a.hasOwnProperty(n)) { var r = a[n]; for (var i in r) if (r.hasOwnProperty(i)) if (!document.getElementById(i)) delete r[i]; else { var s = r[i]; for (var o in s) if (s.hasOwnProperty(o)) { var u = H(n, i, o); u.async ? t.asyncContexts.push(u) : t.syncContexts.push(u) } } } return t = M(t), D(t, e) } function x(e) { var t = { asyncContexts: [], syncContexts: [] }; for (var n in a) if (a.hasOwnProperty(n)) { var r = a[n]; for (var i in r) if (r.hasOwnProperty(i)) { var s = r[i]; if (s[e.constraintType]) { var o = H(n, i, e.constraintType); o.async ? t.asyncContexts.push(o) : t.syncContexts.push(o) } } } return t = M(t), D(t, e) } function T(e) { var t = {}, n = { asyncContexts: [], syncContexts: [] }; for (var s in a) if (a.hasOwnProperty(s)) { var o = a[s]; for (var u = 0; u < e.elementIds.length; u++) { var f = e.elementIds[u]; typeof t[f] == "undefined" && (t[f] = 0); var l = o[f]; if (typeof l != "undefined") { t[f]++; for (var c in l) if (l.hasOwnProperty(c)) { var h = H(s, f, c); h.async ? n.asyncContexts.push(h) : n.syncContexts.push(h) } } } } var p = []; for (var f in t) t.hasOwnProperty(f) && t[f] === 0 && p.push(f); if (p.length > 0) throw new r.Exception.IllegalArgumentException("No constraints have been bound to the specified elements: " + i.explode(p) + ". " + r.explodeParameters(e)); return n = M(n), D(n, e) } function N(e) { var t = [], n = { asyncContexts: [], syncContexts: [] }; for (var s in a) if (a.hasOwnProperty(s)) { var o = a[s]; for (var u = 0; u < e.elementIds.length; u++) { var f = e.elementIds[u], l = o[f]; if (typeof l != "undefined") { var c = H(s, f, e.constraintType); c.async ? n.asyncContexts.push(c) : n.syncContexts.push(c) } else t.push(f) } } if (t.length > 0) throw new r.Exception.IllegalArgumentException("No constraints have been bound to the specified elements: " + i.explode(t) + ". " + r.explodeParameters(e)); return n = M(n), D(n, e) } function C(e) { var t = !1, n = { groupedContexts: {} }, i = 0; while (i < e.groups.length) { var s = e.groups[i], o = a[s]; if (typeof o == "undefined") throw new r.Exception.IllegalArgumentException("Undefined group in group list. " + r.explodeParameters(e)); for (var u in o) if (o.hasOwnProperty(u)) { var f = o[u]; for (var l in f) if (f.hasOwnProperty(l)) { var c = H(s, u, l); n.groupedContexts[s] || (n.groupedContexts[s] = { asyncContexts: [], syncContexts: [] }), c.async ? (t = !0, n.groupedContexts[s].asyncContexts.push(c)) : n.groupedContexts[s].syncContexts.push(c) } } i++ } var h = _(n); return e.groups = h.groups, n = h.uniqueConstraintsToValidate, P(e, n, t) } function k(e) { var t = !1, n = { groupedContexts: {} }, i = 0; while (i < e.groups.length) { var s = e.groups[i], o = a[s]; if (typeof o == "undefined") throw new r.Exception.IllegalArgumentException("Undefined group in group list. " + r.explodeParameters(e)); var u = !1; for (var f in o) if (o.hasOwnProperty(f)) { var l = o[f]; if (l[e.constraintType]) { u = !0; var c = H(s, f, e.constraintType); n.groupedContexts[s] || (n.groupedContexts[s] = { asyncContexts: [], syncContexts: [] }), c.async ? (t = !0, n.groupedContexts[s].asyncContexts.push(c)) : n.groupedContexts[s].syncContexts.push(c) } } if (!u) throw new r.Exception.IllegalArgumentException("Constraint " + e.constraintType + " has not been bound to any element under group " + s + ". " + r.explodeParameters(e)); i++ } var h = _(n); return e.groups = h.groups, n = h.uniqueConstraintsToValidate, P(e, n, t) } function L(e) { var t = [], n = [], s = !1, o = { groupedContexts: {} }, u = 0; while (u < e.groups.length) { var f = e.groups[u], l = a[f]; if (!l) throw new r.Exception.IllegalArgumentException("Undefined group in group list. " + r.explodeParameters(e)); for (var c = 0; c < e.elementIds.length; c++) { var h = e.elementIds[c], p = l[h]; if (p) { for (var d in p) if (p.hasOwnProperty(d)) { var v = H(f, h, d); o.groupedContexts[f] || (o.groupedContexts[f] = { asyncContexts: [], syncContexts: [] }), v.async ? (s = !0, o.groupedContexts[f].asyncContexts.push(v)) : o.groupedContexts[f].syncContexts.push(v) } } else t.push(f), n.push(h) } u++ } if (t.length > 0) throw new r.Exception.IllegalArgumentException("The following elements: " + i.explode(n) + " were not found in one or more of the following group(s): [" + i.explode(t, ",").replace(/,/g, ", ") + "]. " + r.explodeParameters(e)); var m = _(o); return e.groups = m.groups, o = m.uniqueConstraintsToValidate, P(e, o, s) } function A(e) { var t = !1, n = { groupedContexts: {} }, r = 0; while (r < e.groups.length) { var i = e.groups[r]; for (var s = 0; s < e.elementIds.length; s++) { var o = e.elementIds[s], u = H(i, o, e.constraintType); n.groupedContexts[i] || (n.groupedContexts[i] = { asyncContexts: [], syncContexts: [] }), u.async ? (t = !0, n.groupedContexts[i].asyncContexts.push(u)) : n.groupedContexts[i].syncContexts.push(u) } r++ } var a = _(n); return e.groups = a.groups, n = a.uniqueConstraintsToValidate, P(e, n, t) } function O(e) { var t = !0; f[e.elementId] || (f[e.elementId] = {}); var n = document.getElementById(e.elementId).cloneNode(!1), r = n.name.replace(/\s/g, ""); return typeof n.type != "undefined" && n.type.toLowerCase() === "radio" && r !== "" ? l[r] || (l[r] = {}) : l[r] = {}, !f[e.elementId][e.elementConstraint] && !l[r][e.elementConstraint] && (t = !1, f[e.elementId][e.elementConstraint] = !0, typeof n.type != "undefined" && n.type.toLowerCase() === "radio" && r !== "" && (l[r][e.elementConstraint] = !0)), t } function M(e) { var t = { asyncContexts: [], syncContexts: [] }; for (var n = 0; n < e.syncContexts.length; n++) { var r = e.syncContexts[n]; O(r) || t.syncContexts.push(r) } for (var n = 0; n < e.asyncContexts.length; n++) { var r = e.asyncContexts[n]; O(r) || t.asyncContexts.push(r) } return t } function _(e) { var t = [], n = { groupedContexts: {} }; for (var r in e.groupedContexts) if (e.groupedContexts.hasOwnProperty(r)) { for (var i = 0; i < e.groupedContexts[r].syncContexts.length; i++) { var s = e.groupedContexts[r].syncContexts[i]; O(s) || (n.groupedContexts[r] || (n.groupedContexts[r] = { asyncContexts: [], syncContexts: [] }), n.groupedContexts[r].syncContexts.push(s), t.indexOf(r) == -1 && t.push(r)) } for (var i = 0; i < e.groupedContexts[r].asyncContexts.length; i++) { var s = e.groupedContexts[r].asyncContexts[i]; O(s) || (n.groupedContexts[r] || (n.groupedContexts[r] = { asyncContexts: [], syncContexts: [] }), n.groupedContexts[r].asyncContexts.push(s), t.indexOf(r) == -1 && t.push(r)) } } return { groups: t, uniqueConstraintsToValidate: n } } function D(e, t) { var n = []; e.syncContexts.length > 0 && (n = B(e)); if (e.asyncContexts.length > 0) { if (!t.callback) throw new r.Exception.IllegalArgumentException("One or more constraints to be validated are asynchronous, but a callback has not been provided."); j(e, function(e) { n.length > 0 ? n = n.concat(e) : n = e, t.callback(n) }) } else t.callback && t.callback(n); return n } function P(e, t, n) { var i = F(e.groups, e.independent, t); if (n) { if (!e.callback) throw new r.Exception.IllegalArgumentException("One or more constraints to be validated are asynchronous, but a callback has not been provided."); if (!e.independent && i.length > 0) { var s = i[0].group, o = t.groupedContexts[s]; t.groupedContexts = {}, t.groupedContexts[s] = o } I(e.groups, e.independent, t, function(t) { i.length > 0 ? i = i.concat(t) : i = t, e.callback(i) }) } else e.callback && e.callback(i); return i } function H(e, t, n) { var i = a[e]; if (!i) throw new r.Exception.IllegalArgumentException("Undefined group in group list (group: " + e + ", elementId: " + t + ", constraint: " + n + ")"); var s = i[t]; if (!s) throw new r.Exception.IllegalArgumentException("No constraints have been defined for the element with id: " + t + " in group " + e); var o = s[n]; if (!o) throw new r.Exception.IllegalArgumentException("Constraint " + n + " in group " + e + " hasn't been bound to the element with id " + t); return { group: e, elementId: t, elementConstraint: n, params: o, async: u[n].async } } function B(e) { var t = [], n = 0; while (n < e.syncContexts.length) { var r = e.syncContexts[n], i = q(r.group, r.elementId, r.elementConstraint, r.params); i && t.push(i), n++ } return t } function j(e, t) { function o(i) { r++, i && n.push(i), r === e.asyncContexts.length && t(n) } var n = [], r = 0; for (var i = 0; i < e.asyncContexts.length; i++) { var s = e.asyncContexts[i]; R(s.group, s.elementId, s.elementConstraint, s.params, o) } } function F(e, t, n) { var r = [], i = 0, s = !0; while (i < e.length && s) { var o = e[i], u = n.groupedContexts[o].syncContexts; for (var a = 0; a < u.length; a++) { var f = u[a], l = q(f.group, f.elementId, f.elementConstraint, f.params); l && r.push(l) } i++, s = r.length == 0 || t && r.length != 0 } return r } function I(e, t, n, r) { var i = [], s = !0; (function o(u) { if (u < e.length && s) { var a = e[u], f = n.groupedContexts[a].asyncContexts, l = 0; for (var c = 0; c < f.length; c++) { var h = f[c]; R(h.group, h.elementId, h.elementConstraint, h.params, p) } function p(e) { l++, e && i.push(e), l === f.length && (s = i.length === 0 || t && i.length != 0, o(++u)) } } else r(i) })(0) } function q(e, t, n, r) { var i, o = U(e, t, n, r), a = ""; o.constraintPassed || (a = W(t, n, r), i = { group: e, constraintName: n, formSpecific: u[n].formSpecific, custom: u[n].custom, compound: u[n].compound, async: u[n].async, composingConstraintViolations: o.composingConstraintViolations || [], constraintParameters: r, failingElements: o.failingElements, message: a }); if (s.enableHTML5Validation) for (var f = 0; f < o.failingElements.length; f++) o.failingElements[f].setCustomValidity(""); return i } function R(e, t, n, r, i) { var o; z(e, t, n, r, function(a) { var f = ""; a.constraintPassed || (f = W(t, n, r), o = { group: e, constraintName: n, formSpecific: u[n].formSpecific, custom: u[n].custom, compound: u[n].compound, async: u[n].async, composingConstraintViolations: a.composingConstraintViolations || [], constraintParameters: r, failingElements: a.failingElements, message: f }); if (s.enableHTML5Validation) for (var l = 0; l < a.failingElements.length; l++) a.failingElements[l].setCustomValidity(""); i(o) }) } function U(t, n, r, i) { var s = !1, o = [], a = document.getElementById(n), f = []; u[r].formSpecific ? (o = u[r].validator.call(a, i, c), s = o.length == 0) : u[r].compound ? (f = u[r].validator.call(a, i, t, u[r], null), s = f.length == 0, s || o.push(a)) : (s = u[r].validator.call(a, i, c), s || o.push(a)); var l = a.cloneNode(!1).name.replace(/\s/g, ""), h = a.cloneNode(!1).type; typeof h != "undefined" && h.toLowerCase() === "radio" && l !== "" && (o = e.getElementsByAttribute(document.body, "input", "name", l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"))); var p = { constraintName: r, constraintPassed: s, failingElements: o }; return u[r].reportAsSingleViolation || (p.composingConstraintViolations = f), p } function z(t, n, r, i, s) { function a(t, n, i, s) { var a = o.cloneNode(!1).name.replace(/\s/g, ""), f = o.cloneNode(!1).type; typeof f != "undefined" && f.toLowerCase() === "radio" && a !== "" && (i = e.getElementsByAttribute(document.body, "input", "name", a)); var l = { constraintName: r, constraintPassed: t, failingElements: i }; u[r].reportAsSingleViolation || (l.composingConstraintViolations = n), s(l) } var o = document.getElementById(n); u[r].formSpecific ? u[r].validator.call(o, i, c, function(e) { a(e.length === 0, null, e, s) }) : u[r].compound ? u[r].validator.call(o, i, t, u[r], function(e) { var t = [], n = e.length === 0; n || t.push(o), a(n, e, t, s) }) : u[r].validator.call(o, i, c, function(e) { var t = []; e || t.push(o), a(e, null, t, s) }) } function W(t, n, r) { var i = document.getElementById(t), s = ""; r.message ? s = r.message : r.msg ? s = r.msg : s = u[n].defaultMessage; for (var o in r) if (r.hasOwnProperty(o)) { var a = new RegExp("{" + o + "}", "g"); s = s.replace(a, r[o]) } if (u[n].compound && typeof u[n].composingConstraints != "undefined") for (var f = 0; f < u[n].composingConstraints.length; f++) { var l = u[n].composingConstraints[f]; for (var o in l.params) if (l.params.hasOwnProperty(o)) { var a = new RegExp("{" + o + "}", "g"); s = s.replace(a, l.params[o]) } } if (/{label}/.test(s)) { var c = e.friendlyInputNames[i.cloneNode(!1).tagName.toLowerCase()]; c || (c = e.friendlyInputNames[i.cloneNode(!1).type.toLowerCase()]), s = s.replace(/{label}/, c), s = s.replace(/{flags}/g, "") } return s = s.replace(/\\\"/g, '"'), s } var s = {}, o = {}, u = {}, a = {}, f = {}, l = {}, c = {}, d = { checked: function(t) { var n = !1; if (this.type.toLowerCase() === "radio" && this.name.replace(/\s/g, "") !== "") { var r = e.getElementsByAttribute(document.body, "input", "name", this.name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")), i = 0; while (i < r.length && !n) n = r[i].checked, i++ } else n = this.checked; return n }, selected: function(e) { return this.selectedIndex > 0 }, max: function(e) { var t = !0; return g(this, e) && (t = parseFloat(this.value) <= parseFloat(e.value)), t }, min: function(e) { var t = !0; return g(this, e) && (t = parseFloat(this.value) >= parseFloat(e.value)), t }, range: function(e) { var t = !0; return g(this, e) && (t = this.value.replace(/\s/g, "") != "" && parseFloat(this.value) <= parseFloat(e.max) && parseFloat(this.value) >= parseFloat(e.min)), t }, notBlank: function(e) { return this.value.replace(/\s/g, "") != "" }, blank: function(e) { return this.value.replace(/\s/g, "") === "" }, matches: function(e) { var t = !0; if (g(this, e)) { var n, r; typeof e["regex"] == "string" ? r = e.regex.replace(/^\//, "").replace(/\/$/, "") : r = e.regex, typeof e["flags"] != "undefined" ? n = new RegExp(r.toString().replace(/^\//, "").replace(/\/[^\/]*$/, ""), e.flags) : n = new RegExp(r), t = n.test(this.value) } return t }, email: function(e) { var t = !0; return g(this, e) && (t = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(this.value)), t }, alpha: function(e) { var t = !0; return g(this, e) && (t = /^[A-Za-z]+$/.test(this.value)), t }, numeric: function(e) { var t = !0; return g(this, e) && (t = /^[0-9]+$/.test(this.value)), t }, integer: function(e) { var t = !0; return g(this, e) && (t = /^-?[0-9]+$/.test(this.value)), t }, real: function(e) { var t = !0; return g(this, e) && (t = /^-?([0-9]+(\.[0-9]+)?|\.[0-9]+)$/.test(this.value)), t }, alphaNumeric: function(e) { var t = !0; return g(this, e) && (t = /^[0-9A-Za-z]+$/.test(this.value)), t }, completelyFilled: function(e) { var t = []; for (var n = 0; n < this.elements.length; n++) { var r = this.elements[n]; d.required.call(r) || t.push(r) } return t }, passwordsMatch: function(e) { var t = [], n = document.getElementById(e.field1), r = document.getElementById(e.field2); return n.value != r.value && (t = [n, r]), t }, required: function(e) { var t = !0; return this.tagName && (this.tagName.toLowerCase() === "select" ? t = d.selected.call(this) : this.type.toLowerCase() === "checkbox" || this.type.toLowerCase() === "radio" ? t = d.checked.call(this) : (this.tagName.toLowerCase() === "input" || this.tagName.toLowerCase() === "textarea") && this.type.toLowerCase() != "button" && (t = d.notBlank.call(this))), t }, length: function(e) { var t = !0; return g(this, e) && (t = this.value.length >= e.min && this.value.length <= e.max), t }, digits: function(e) { var t = !0; if (g(this, e)) { var n = this.value.replace(/\s/g, ""), r = n.split(/\./); t = !1, n.length > 0 && (r.length == 1 && (r[1] = ""), e.integer > 0 ? t = r[0].length <= e.integer : t = !0, e.fraction > 0 && (t = t && r[1].length <= e.fraction)) } return t }, past: function(e) { var t = !0; if (g(this, e)) { var n = y.call(this, e); t = n.dateToValidate < n.dateToTestAgainst } return t }, future: function(e) { var t = !0; if (g(this, e)) { var n = y.call(this, e); t = n.dateToValidate > n.dateToTestAgainst } return t }, url: function(e) { var t = !0; return g(this, e) && (t = /^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(this.value)), t }, step: function(e) { var t = !0; if (g(this, e)) { var n = parseFloat(this.value), r = parseFloat(e.max), i = parseFloat(e.min), s = parseFloat(e.value); t = n <= r && n >= i && n % s === 0 } return t }, html5Required: function(e) { return !this.validity.valueMissing }, html5Email: w, html5URL: w, html5Number: w, html5DateTime: w, html5DateTimeLocal: w, html5Date: w, html5Month: w, html5Time: w, html5Week: w, html5Range: w, html5Tel: w, html5Color: w, html5Pattern: function(e) { return !this.validity.patternMismatch }, html5MaxLength: function(e) { return !this.validity.tooLong }, html5Min: function(e) { return !this.validity.rangeUnderflow }, html5Max: function(e) { return !this.validity.rangeOverflow }, html5Step: function(e) { return !this.validity.stepMismatch } }; return { Validator: d, init: p, wrapValidatorWithEmptyCheck: b, initializePublicValidators: h, compoundValidator: m, validate: E, runValidatorFor: U, interpolateConstraintDefaultMessage: W, createPublicValidator: v } }), function(e, t) { typeof define == "function" && define.amd ? define("domain/CompositionGraph", t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.CompositionGraph = t()) }(this, function() { function n(n) { var r = n.type, i = n.name, s = n.parent, o = typeof e[r] == "undefined" ? { visited: !1, name: i, type: r, parents: [], children: [] } : e[r]; s == null ? t.children.push(o) : (s.children.push(o), o.parents.push(s)), e[r] = o } function r() { var e = {}, n = function r(t, n) { var i = typeof e[t.type] == "undefined" ? { visited: t.visited, name: t.name, type: t.type, parents: [], children: [] } : e[t.type]; n !== null && i.parents.push(n); for (var s = 0; s < t.children.length; s++) i.children.push(r(t.children[s], i)); return e[t.type] = i, i }(t, null); return { typeToNodeMap: e, root: n } } function i(t) { var n = e[t]; return typeof n == "undefined" ? null : n } function s(e) { var t = function n(e, t) { var r = { cycle: !1, path: t }; if (e.visited) r.cycle = !0; else { e.visited = !0; var i = 0; while (i < e.children.length && !r.cycle) r = n(e.children[i], t + "." + e.children[i].name), i++ } return r }(e, e.name); return t.cycle || o(), t } function o() { (function e(t) { t.visited = !1; for (var n = 0; n < t.children.length; n++) e(t.children[n]) })(t) } function u() { return t } function a(e) { t = e } function f(n) { e = n.typeToNodeMap, t = n.root } var e = {}, t = { visited: !1, name: "RootNode", type: -1, parents: [], children: [] }; return { ROOT: -1, addNode: n, getNodeByType: i, analyze: s, getRoot: u, setRoot: a, clone: r, initializeFromClone: f } }), function(e, t) { typeof define == "function" && define.amd ? define("service/ConstraintService", ["service/ValidationService", "domain/CompositionGraph", "service/ExceptionService", "utils/MapUtils", "utils/ArrayUtils"], t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.ConstraintService = t(e.regulaModules.ValidationService, e.regulaModules.CompositionGraph, e.regulaModules.ExceptionService, e.regulaModules.MapUtils, e.regulaModules.ArrayUtils)) }(this, function(e, t, n, r, i) { function f(r) { var i = typeof r.async == "undefined" ? a[r.name].async : r.async, u = r.validator; r.validatorRedefined && !r.formSpecific && (u = e.wrapValidatorWithEmptyCheck(u)); var f = t.getNodeByType(r.constraintType); if (r.compound) { v(r.name, r.composingConstraints, r.params); var l = t.clone(); d(r.name, r.composingConstraints); var c = t.analyze(f); if (c.cycle) throw t.initializeFromClone(l), new n.Exception.ConstraintDefinitionException("regula.override: The overriding composing-constraints you have specified have created a cyclic composition: " + c.path); i = !1; var h = 0; while (h < r.composingConstraints.length && !i) { var p = r.composingConstraints[h], m = a[o[p.constraintType]]; i = m.async, h++ } } f !== null && function g(e) { for (var n = 0; n < e.parents.length; n++) { var r = e.parents[n]; if (r.type !== t.ROOT) { var s = o[r.type], u = a[s]; u.async = i, g(r) } } }(f), a[r.name] = { async: i, formSpecific: r.formSpecific, constraintType: s[r.name], custom: !0, compound: r.compound, params: r.params, composingConstraints: r.composingConstraints, defaultMessage: r.defaultMessage, validator: u }, a[r.name].custom && r.validatorRedefined && e.createPublicValidator(r.name, a) } function l(t) { s[t.name] = u, o[u++] = t.name; var n = t.validator; t.formSpecific || (n = e.wrapValidatorWithEmptyCheck(t.validator)), a[t.name] = { async: t.async, formSpecific: t.formSpecific, validator: n, constraintType: s[t.name], custom: !0, compound: !1, params: t.params, defaultMessage: t.defaultMessage }, e.createPublicValidator(t.name, a) } function c(t) { v(t.name, t.constraints, t.params); var n = !1, r = 0; while (r < t.constraints.length && !n) { var i = t.constraints[r], f = o[i.constraintType]; n = n || a[f].async, r++ } s[t.name] = u, o[u++] = t.name, a[t.name] = { async: n, formSpecific: t.formSpecific, constraintType: s[t.name], custom: !0, compound: !0, params: t.params, reportAsSingleViolation: t.reportAsSingleViolation, composingConstraints: t.constraints, defaultMessage: t.defaultMessage, validator: e.compoundValidator }, e.createPublicValidator(t.name, a), d(t.name, t.constraints) } function h(e, t, r) { var i = { successful: !0, message: "", data: null }, s = e.cloneNode(!1); if (s.tagName.toLowerCase() == "form" && !a[t].formSpecific) i = { successful: !1, message: n.generateExceptionMessage(e, t, "@" + t + " is not a form constraint, but you are trying to bind it to a form"), data: null }; else if (s.tagName.toLowerCase() != "form" && a[t].formSpecific) i = { successful: !1, message: n.generateExceptionMessage(e, t, "@" + t + " is a form constraint, but you are trying to bind it to a non-form element"), data: null }; else if ((typeof s.type == "undefined" || s.type.toLowerCase() != "checkbox" && s.type.toLowerCase() != "radio") && t == "Checked") i = { successful: !1, message: n.generateExceptionMessage(e, t, "@" + t + " is only applicable to checkboxes and radio buttons. You are trying to bind it to an input element that is neither a checkbox nor a radio button."), data: null }; else if (s.tagName.toLowerCase() != "select" && t == "Selected") i = { successful: !1, message: n.generateExceptionMessage(e, t, "@" + t + " is only applicable to select boxes. You are trying to bind it to an input element that is not a select box."), data: null }; else { var o = p(e, a[t], r); o.error ? i = { successful: !1, message: o.message, data: null } : i.data = r } return i } function p(e, t, r) { var s = { error: !1, message: "" }; r.__size__ < t.params.length && (s = { error: !0, message: n.generateExceptionMessage(e, o[t.constraintType], "@" + o[t.constraintType] + " expects at least " + t.params.length + " parameter(s). However, you have provided only " + r.__size__), data: null }); var u = []; for (var a = 0; a < t.params.length; a++) { var f = t.params[a]; typeof r[f] == "undefined" && u.push(f) } return u.length > 0 && (s = { error: !0, message: n.generateExceptionMessage(e, o[t.constraintType], "You seem to have provided some optional or required parameters for @" + o[t.constraintType] + ", but you are still missing the following " + u.length + " required parameter(s): " + i.explode(u, ", ")), data: null }), s } function d(e, n) { var r = t.getNodeByType(s[e]); r == null && (t.addNode({ type: s[e], name: e, parent: null }), r = t.getNodeByType(s[e])); for (var i = 0; i < r.children.length; i++) { var u = r.children[i], f = []; for (var l = 0; l < u.parents.length; l++) u.parents[l] !== r && f.push(u.parents[l]); u.parents = f } r.children = []; for (var i = 0; i < n.length; i++) { var c = o[n[i].constraintType], h = a[c]; t.addNode({ type: h.constraintType, name: o[h.constraintType], parent: r }) } } function v(e, t, i) { for (var s = 0; s < t.length; s++) { if (typeof t[s].constraintType == "undefined") throw new n.Exception.ConstraintDefinitionException("In compound constraint " + e + ": A composing constraint has no constraint type specified."); var u = t[s], f = o[u.constraintType], l = { __size__: 0 }; u.params = u.params || {}; for (var c in u.params) u.params.hasOwnProperty(c) && r.put(l, c, u.params[c]); var h = 0; for (var d in u.params) u.params.hasOwnProperty(d) && h++; u.params.__size__ = h; for (var v = 0; v < i.length; v++) r.put(l, i[v], null); var m = p(null, a[f], l); if (m.error) throw new n.Exception.ConstraintDefinitionException("In compound constraint " + e + ": " + m.message) } } var s = {}, o = {}, u = 0; (function(e) { for (var t = 0; t < e.length; t++) s[e[t]] = t, o[t] = e[t]; u = t, s.Between = s.Range, s.Matches = s.Pattern, s.Empty = s.Blank, s.NotEmpty = s.NotBlank, s.IsAlpha = s.Alpha, s.IsNumeric = s.Numeric, s.IsAlphaNumeric = s.AlphaNumeric })(["Checked", "Selected", "Max", "Min", "Range", "Between", "NotBlank", "NotEmpty", "Blank", "Empty", "Pattern", "Matches", "Email", "Alpha", "IsAlpha", "Numeric", "IsNumeric", "AlphaNumeric", "IsAlphaNumeric", "Integer", "Real", "CompletelyFilled", "PasswordsMatch", "Required", "Length", "Digits", "Past", "Future", "Step", "URL", "HTML5Required", "HTML5Email", "HTML5URL", "HTML5MaxLength", "HTML5Pattern", "HTML5Min", "HTML5Max", "HTML5Step"]); var a = { Checked: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.checked, constraintType: s.Checked, custom: !1, compound: !1, params: [], defaultMessage: "{label} needs to be checked." }, Selected: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.selected, constraintType: s.Selected, custom: !1, compound: !1, params: [], defaultMessage: "{label} needs to be selected." }, Max: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.max, constraintType: s.Max, custom: !1, compound: !1, params: ["value"], defaultMessage: "{label} needs to be lesser than or equal to {value}." }, Min: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.min, constraintType: s.Min, custom: !1, compound: !1, params: ["value"], defaultMessage: "{label} needs to be greater than or equal to {value}." }, Range: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.range, constraintType: s.Range, custom: !1, compound: !1, params: ["min", "max"], defaultMessage: "{label} needs to be between {min} and {max}." }, NotBlank: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.notBlank, constraintType: s.NotBlank, custom: !1, compound: !1, params: [], defaultMessage: "{label} cannot be blank." }, Blank: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.blank, constraintType: s.Blank, custom: !1, compound: !1, params: [], defaultMessage: "{label} needs to be blank." }, Pattern: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.matches, constraintType: s.Pattern, custom: !1, compound: !1, params: ["regex"], defaultMessage: "{label} needs to match {regex}{flags}." }, Email: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.email, constraintType: s.Email, custom: !1, compound: !1, params: [], defaultMessage: "{label} is not a valid email." }, Alpha: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.alpha, constraintType: s.Alpha, custom: !1, compound: !1, params: [], defaultMessage: "{label} can only contain letters." }, Numeric: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.numeric, constraintType: s.Numeric, custom: !1, compound: !1, params: [], defaultMessage: "Only numbers are required" }, AlphaNumeric: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.alphaNumeric, constraintType: s.AlphaNumeric, custom: !1, compound: !1, params: [], defaultMessage: "{label} can only contain numbers and letters." }, Integer: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.integer, constraintType: s.Integer, custom: !1, compound: !1, params: [], defaultMessage: "{label} must be an integer." }, Real: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.real, constraintType: s.Real, custom: !1, compound: !1, params: [], defaultMessage: "{label} must be a real number." }, CompletelyFilled: { async: !1, html5: !1, formSpecific: !0, validator: e.Validator.completelyFilled, constraintType: s.CompletelyFilled, custom: !1, compound: !1, params: [], defaultMessage: "{label} must be completely filled." }, PasswordsMatch: { async: !1, html5: !1, formSpecific: !0, validator: e.Validator.passwordsMatch, constraintType: s.PasswordsMatch, custom: !1, compound: !1, params: ["field1", "field2"], defaultMessage: "Passwords do not match." }, Required: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.required, constraintType: s.Required, custom: !1, compound: !1, params: [], defaultMessage: "{label} is required." }, Length: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.length, constraintType: s.Length, custom: !1, compound: !1, params: ["min", "max"], defaultMessage: "{label} length must be between {min} and {max}." }, Digits: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.digits, constraintType: s.Digits, custom: !1, compound: !1, params: ["integer", "fraction"], defaultMessage: "{label} must have up to {integer} digits and {fraction} fractional digits." }, Past: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.past, constraintType: s.Past, custom: !1, compound: !1, params: ["format"], defaultMessage: "{label} must be in the past." }, Future: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.future, constraintType: s.Future, custom: !1, compound: !1, params: ["format"], defaultMessage: "{label} must be in the future." }, Step: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.step, constraintType: s.Step, custom: !1, compound: !1, params: ["min", "max", "value"], defaultMessage: "{label} must be equal to {min} or greater, and equal to {max} or lesser, at increments of {value}." }, URL: { async: !1, html5: !1, formSpecific: !1, validator: e.Validator.url, constraintType: s.URL, custom: !1, compound: !1, params: [], defaultMessage: "{label} must be a valid URL." }, HTML5Required: { async: !1, html5: !0, inputType: null, attribute: "required", formSpecific: !1, validator: e.Validator.html5Required, constraintType: s.HTML5Required, custom: !1, compound: !1, params: [], defaultMessage: "{label} is required." }, HTML5Email: { async: !1, html5: !0, inputType: "email", attribute: null, formSpecific: !1, validator: e.Validator.html5Email, constraintType: s.HTML5Email, custom: !1, compound: !1, params: [], defaultMessage: "{label} is not a valid email." }, HTML5Pattern: { async: !1, html5: !0, inputType: null, attribute: "pattern", formSpecific: !1, validator: e.Validator.html5Pattern, constraintType: s.HTML5Pattern, custom: !1, compound: !1, params: ["pattern"], defaultMessage: "{label} needs to match {pattern}." }, HTML5URL: { async: !1, html5: !0, inputType: "url", attribute: null, formSpecific: !1, validator: e.Validator.html5URL, constraintType: s.HTML5URL, custom: !1, compound: !1, params: [], defaultMessage: "{label} is not a valid URL." }, HTML5MaxLength: { async: !1, html5: !0, inputType: null, attribute: "maxlength", formSpecific: !1, validator: e.Validator.html5MaxLength, constraintType: s.HTML5MaxLength, custom: !1, compound: !1, params: ["maxlength"], defaultMessage: "{label} must be less than {maxlength} characters." }, HTML5Min: { async: !1, html5: !0, inputType: null, attribute: "min", formSpecific: !1, validator: e.Validator.html5Min, constraintType: s.HTML5Min, custom: !1, compound: !1, params: ["min"], defaultMessage: "{label} needs to be greater than or equal to {min}." }, HTML5Max: { async: !1, html5: !0, inputType: null, attribute: "max", formSpecific: !1, validator: e.Validator.html5Max, constraintType: s.HTML5Max, custom: !1, compound: !1, params: ["max"], defaultMessage: "{label} needs to be lesser than or equal to {max}." }, HTML5Step: { async: !1, html5: !0, inputType: null, attribute: "step", formSpecific: !1, validator: e.Validator.html5Step, constraintType: s.HTML5Step, custom: !1, compound: !1, params: ["step"], defaultMessage: "{label} must be equal to the minimum value or greater at increments of {step}." } }; return { Constraint: s, ReverseConstraint: o, firstCustomConstraintIndex: u, constraintDefinitions: a, override: f, custom: l, compound: c, verifyConstraintDefinition: h, verifyParameterCountMatches: p } }), function(e, t) { typeof define == "function" && define.amd ? define("parser/Parser", ["utils/MapUtils", "service/ExceptionService", "service/ConstraintService"], t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.Parser = t(e.regulaModules.MapUtils, e.regulaModules.ExceptionService, e.regulaModules.ConstraintService)) }(this, function(e, t, n) { function r(e) { return e ? e.replace(/^\s+/, "").replace(/\s+$/, "") : "" } function i(e) { return e[0] } function s(t) { var n = t.str, r = t.delimiters.split(""), i = t.returnDelimiters || !1, s = t.returnEmptyTokens || !1, o = [], u = 0; for (var a = 0; a < n.length; a++) if (e.exists(r, n.charAt(a))) { var f = n.substring(u, a); f.length == 0 ? s && o.push(f) : o.push(f), i && o.push(n.charAt(a)), u = a + 1 } if (u < n.length) { var f = n.substring(u, n.length); f.length == 0 ? s && o.push(f) : o.push(f) } return o } function o(o, u) { function l(e) { var t = { successful: !0, message: "", data: null }, n = []; while (e.length > 0 && t.successful) t = c(e), n.push(t.data); return t.data = n, t } function c(e) { var n = { successful: !0, message: "", data: null }, i = e.shift(); return r(i).length == 0 && (i = e.shift()), i == "@" ? n = h(e) : n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid constraint. Constraint definitions need to start with '@'") + " " + n.message, data: null }, n } function h(e) { var r = { Between: "Range", Matches: "Pattern", Empty: "Blank", NotEmpty: "NotBlank", IsAlpha: "Alpha", IsNumeric: "Integer", IsAlphaNumeric: "AlphaNumeric" }, i = p(e); if (i.successful) { a = i.data, a = r[a] ? r[a] : a; if (n.constraintDefinitions[a]) { i = m(e); if (i.successful) { i = n.verifyConstraintDefinition(o, a, i.data); if (i.successful) { var s = i.data; i.data = { element: o, constraintName: a, definedParameters: s } } } } else i = { successful: !1, message: t.generateExceptionMessage(o, a, "I cannot find the specified constraint name. If this is a custom constraint, you need to define it before you bind to it") + " " + i.message, data: null } } else i = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid constraint name in constraint definition") + " " + i.message, data: null }; return i } function p(e) { var n = r(e.shift()), i = d(n.charAt(0)); if (i.successful) { var s = 1; while (s < n.length && i.successful) i = v(n.charAt(s)), s++; i.successful && (i.data = n) } else i = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid starting character for constraint name. Can only include A-Z, a-z, and _") + " " + i.message, data: null }; return i } function d(e) { var n = { successful: !0, message: "", data: null }; if (!/[A-Za-z_]/.test(e) || typeof e == "undefined" || e == null) n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid starting character"), data: null }; return n } function v(e) { var n = { successful: !0, message: "", data: null }; return /[0-9A-Za-z_]/.test(e) || (n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid character in identifier. Can only include 0-9, A-Z, a-z, and _") + " " + n.message, data: null }), n } function m(n) { var s = { successful: !0, message: "", data: {} }; if (i(n) == "(") { n.shift(); var u = {}; if (i(n) == ")") n.shift(); else { s = g(n); if (s.successful) { e.put(u, s.data.name, s.data.value), r(i(n)).length == 0 && n.shift(); while (n.length > 0 && i(n) == "," && s.successful) n.shift(), s = g(n), s.successful && (e.put(u, s.data.name, s.data.value), r(i(n)).length == 0 && n.shift()); if (s.successful) { var f = n.shift(); r(f).length == 0 && (f = n.shift()), f != ")" ? s = { successful: !1, message: t.generateExceptionMessage(o, a, "Cannot find matching closing ) in parameter list") + " " + s.message, data: null } : s.data = u } } else s = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid parameter definition") + " " + s.message, data: null } } } else i(n) !== undefined && i(n) != "@" && (s = { successful: !1, message: t.generateExceptionMessage(o, a, "Unexpected character '" + i(n) + "'" + " after constraint definition") + " " + s.message, data: null }); return s } function g(e) { var n = y(e); if (n.successful) { var r = n.data, i = e.shift(); i == "=" ? (n = b(e), n.successful ? n.data = { name: r, value: n.data } : n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid parameter value") + " " + n.message, data: null }) : (e.unshift(i), n = { successful: !1, message: t.generateExceptionMessage(o, a, "'=' expected after parameter name " + n.message), data: null }) } else n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid parameter name. You might have unmatched parentheses") + " " + n.message, data: null }; return n } function y(e) { var n = r(e.shift()); n.length == 0 && (n = e.shift()); var i = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid starting character for parameter name. Can only include A-Z, a-z, and _"), data: null }; if (typeof n != "undefined") { i = d(n.charAt(0)); if (i.successful) { var s = 1; while (s < n.length && i.successful) i = v(n.charAt(s)), s++; i.successful && (i.data = n) } else i = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid starting character for parameter name. Can only include A-Z, a-z, and _") + " " + i.message, data: null } } return i } function b(e) { r(i(e)).length == 0 && e.shift(); var n = { successful: !0, message: "", data: [] }; if (i(e) == ")") n = { successful: !1, message: t.generateExceptionMessage(o, a, "Parameter value expected") + " " + n.message, data: null }; else { n = w(e); var s = n.message; n.successful || (n = C(e), n.message = n.message + " " + s, s = n.message, n.successful || (n = L(e), n.message = n.message + " " + s, s = n.message, n.successful || (n = A(e), n.message = n.message + " " + s, s = n.message, n.successful || (n = O(e), n.message = n.message + " " + s, s = n.message, n.successful || (n = { successful: !1, message: t.generateExceptionMessage(o, a, "Parameter value must be a number, quoted string, regular expression, or a boolean") + " " + s, data: null }))))) } return n } function w(e) { var n = E(e); return n.successful || (n = S(e), n.successful || (n = { successful: !1, message: t.generateExceptionMessage(o, a, "Parameter value is not a number") + " " + n.message, data: null })), n } function E(e) { var n = e.shift(), r = { successful: !0, message: "", data: null }; return n == "-" ? (r = S(e), r.successful && (r.data = n + r.data)) : (e.unshift(n), r = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a negative number"), data: null }), r } function S(e) { var n = null; if (i(e) != ".") { n = T(e); if (i(e) == ".") { var r = n.data; n = x(e), n.successful && (n.data = r + n.data) } } else n = x(e); return n.successful || (n = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a positive number") + " " + n.message, data: null }), n } function x(e) { var n = e.shift(), r = T(e); return r.successful ? r.data = n + r.data : r = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a valid fraction"), data: null }, r } function T(e) { var n = r(e.shift()), i = N(n.charAt(0)); if (i.successful) { var s = 1; while (s < n.length && i.successful) i = N(n.charAt(s)), s++; i.successful && (i.data = n) } else e.unshift(n), i = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a valid integer") + " " + i.message, data: [] }; return i } function N(e) { var n = { successful: !0, message: "", data: null }; return /[0-9]/.test(e) || (n = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a valid digit"), data: null }), n } function C(e) { var n = e.shift(), r = "", s = { successful: !0, message: "", data: null }; if (n == '"') { var u = !1; while (e.length > 0 && s.successful && !u) i(e) == '"' ? (u = !0, e.shift()) : (s = k(e), r += s.data); u || (s = { successful: !1, message: t.generateExceptionMessage(o, a, "Unterminated string literal"), data: null }) } else e.unshift(n), s = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid quoted string"), data: null }; return s.successful = s.successful && u, s.data = r, s } function k(e) { var t = "", n = e.shift(); return n == "\\" && (t = e.shift()), { successful: !0, message: "", data: n + t } } function L(e) { var n = "", r = e.shift(), s = { successful: !0, message: "", data: null }; if (r == "/") { n = r; var u = !1; while (e.length > 0 && s.successful && !u) i(e) == "/" ? (n += e.shift(), u = !0) : (s = k(e), n += s.data); u || (s = { successful: !1, message: t.generateExceptionMessage(o, a, "Unterminated regex literal"), data: null }) } else e.unshift(r), s = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a regular expression"), data: null }; return s.successful = s.successful && u, s.data = n, s } function A(e) { var n = e.shift(), i = { successful: !0, message: "", data: null }; return r(n) == "true" || r(n) == "false" ? i = { successful: !0, message: "", data: n === "true" } : (e.unshift(n), i = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a boolean"), data: null }), i } function O(e) { var n = [], s = e.shift(), u = { successful: !0, message: "", data: null }; if (s == "[") { r(i(e)).length == 0 && e.shift(), i(e) == "]" ? u = { successful: !0, message: "", data: "" } : u = M(e); if (u.successful) { n.push(u.data), r(i(e)).length == 0 && e.shift(); while (e.length > 0 && i(e) == "," && u.successful) e.shift(), u = M(e), n.push(u.data), r(i(e)).length == 0 && e.shift(); u.data = n, s = e.shift(), r(s).length == 0 && e.shift(), s != "]" && (u = { successful: !1, message: t.generateExceptionMessage(o, a, "Cannot find matching closing ] in group definition") + " " + u.message, data: null }) } else u = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid group definition") + " " + u.message, data: null } } else e.unshift(s), u = { successful: !1, message: t.generateExceptionMessage(o, a, "Not a valid group definition"), data: null }; return u } function M(e) { var n = { successful: !0, message: "", data: "" }, i = r(e.shift()); i.length == 0 && (i = e.shift()), n = d(i.charAt(0)); if (n.successful) { var s = 1; while (s < i.length && n.successful) n = v(i.charAt(s)), s++; n.successful && (n.data = i) } else n = { successful: !1, message: t.generateExceptionMessage(o, a, "Invalid starting character for group name. Can only include A-Z, a-z, and _") + " " + n.message, data: null }; return n } var a = "", f = s({ str: r(u.replace(/\s*\n\s*/g, "")), delimiters: '@()[]=,"\\/-\\.', returnDelimiters: !0, returnEmptyTokens: !1 }); return l(f) } return { parse: o } }), function(e, t) { typeof define == "function" && define.amd ? define("service/BindingService", ["utils/MapUtils", "service/GroupService", "utils/DOMUtils", "parser/Parser", "service/ConstraintService", "service/ExceptionService"], t) : (typeof e.regulaModules == "undefined" && (e.regulaModules = {}), e.regulaModules.BindingService = t(e.regulaModules.MapUtils, e.regulaModules.GroupService, e.regulaModules.DOMUtils, e.regulaModules.Parser, e.regulaModules.ConstraintService, e.regulaModules.ExceptionService)) }(this, function(e, t, n, r, i, s) { function a() { o === null && f() } function f() { o = { Default: {} } } function l() { return o } function c(n, r) { if (e.isEmpty(o[r][n])) { delete o[r][n]; if (e.isEmpty(o[r])) { delete o[r]; var i = t.Group[r]; delete t.Group[r], delete t.ReverseGroup[i], t.deletedGroupIndices.push(i) } } } function h(e) { var t = { successful: !0, message: "", data: null }, n = typeof e.cloneNode != "undefined" ? e.cloneNode(!1) : e, r = null; return typeof n.tagName != "undefined" && (r = n.tagName.toLowerCase()), r !== "form" && r !== "select" && r !== "textarea" && r !== "input" ? t = { successful: !1, message: r + "#" + e.id + " is not an input, select, textarea, or form element! Validation constraints can only be attached to input, select, textarea, or form elements.", data: null } : r === "input" && e.getAttribute("type") === null && (t = { successful: !1, message: r + "#" + e.id + " does not have a type attribute.", data: null }), t } function p(e) { var t = e.element, i; t === null ? i = n.getElementsByAttribute(document.body, "*", "data-constraints") : i = [t]; var s = { successful: !0, message: "", data: null }, o = 0; while (o < i.length && s.successful) { t = i[o], s = h(t); if (s.successful) { t.id || (t.id = n.generateRandomId()); var u = t.getAttribute("data-constraints"); if (u !== null) { s = r.parse(t, u); if (s.successful && s.data !== null) { var a = s.data, f = 0; while (s.successful && f < a.length) { var l = a[f]; s = g(l.element, l.constraintName, l.definedParameters), f++ } } } o++ } } return s } function d(t) { function a(e, t, r) { for (var i = 0; i < t.length; i++) { var s = t[i]; s.id || (s.id = n.generateRandomId()), e[s.id] || (e[s.id] = []); var o = { constraint: r.constraint, params: {} }; r.value === null && (o.params[r.attribute] = n.getAttributeValueForElement(s, r.attribute)), e[s.id].push(o) } } var r = t.element, s = { successful: !0, message: "", data: null }, o = [{ attribute: "required", value: null, constraint: i.Constraint.HTML5Required }, { attribute: "type", value: "email", constraint: i.Constraint.HTML5Email }, { attribute: "type", value: "url", constraint: i.Constraint.HTML5URL }, { attribute: "pattern", value: null, constraint: i.Constraint.HTML5Pattern }, { attribute: "maxlength", value: null, constraint: i.Constraint.HTML5MaxLength }, { attribute: "min", value: null, constraint: i.Constraint.HTML5Min }, { attribute: "max", value: null, constraint: i.Constraint.HTML5Max }, { attribute: "step", value: null, constraint: i.Constraint.HTML5Step }], u = { email: i.Constraint.HTML5Email, url: i.Constraint.HTML5URL }, f = {}; if (r === null) for (var l = 0; l < o.length; l++) { var c = o[l], p = null; c.value == null ? p = n.getElementsByAttribute(document.body, "*", c.attribute) : p = n.getElementsByAttribute(document.body, "*", c.attribute, c.value), a(f, p, c) } else { r.id || (r.id = n.generateRandomId()), s = h(r); if (s.successful) { f[r.id] = []; for (var l = 0; l < o.length; l++) { var c = o[l]; if (c.value === null) { if (n.getAttributeValueForElement(r, c.attribute) != null) { var d = { constraint: c.constraint, params: {} }; d.params[c.attribute] = n.getAttributeValueForElement(r, c.attribute), f[r.id].push(d) } } else { var v = n.getAttributeValueForElement(r, c.attribute); v != null && typeof u[v] != "undefined" && f[r.id].push({ constraint: u[v], params: {} }) } } } } return e.iterateOverMap(f, function(e, t, n) { var r = document.getElementById(e); for (var o = 0; o < t.length; o++) { var u = t[o]; s = g(r, i.ReverseConstraint[u.constraint], u.params) } }), s } function v(e) { var t = { successful: !0, message: "", data: null }, n = e.element, r = e.constraints || [], i = n && n.tagName ? n.tagName.toLowerCase() : null; if (!n) t = { successful: !1, message: "regula.bind expects a non-null element attribute in the options argument. " + s.explodeParameters(e), data: null }; else if (n.nodeType !== 1) t = { successful: !1, message: "regula.bind: element attribute is expected to be an HTMLElement, but was of unexpected type: " + typeof n + ". " + s.explodeParameters(e), data: null }; else if (i != "form" && i != "select" && i != "textarea" && i != "input") t = { successful: !1, message: i + "#" + n.id + " is not an input, select, textarea, or form element! Validation constraints can only be attached to input, select, textarea, or form elements. " + s.explodeParameters(e), data: null }; else if (r.length > 0) { var o = 0; while (o < r.length && t.successful) t = m(r[o], e), o++ } else t = p({ element: n }); return t } function m(n, r) { function u(e, t) { var n = {}, r = []; for (var i = 0; i < e.length; i++) r.push(e[i]), n[e[i]] = !0; for (var s = 0; s < t.length; s++) n[t[s]] || r.push(t[s]); return r } function a(t, n) { var r = []; for (var i = 0; i < n.length; i++) e.exists(t, n[i]) || r.push(n[i]); return r } function f(n, r, s) { var f = o[t.ReverseGroup[t.Group.Default]][n.id][i.ReverseConstraint[r]].groups, l = []; s.groups ? l = s.groups : l.push(t.ReverseGroup[t.Group.Default]), e.exists(l, t.ReverseGroup[t.Group.Default]) || l.push(t.ReverseGroup[t.Group.Default]); var h = a(l, u(f, l)); for (var p = 0; p < h.length; p++) { var d = h[p]; delete o[d][n.id][i.ReverseConstraint[r]], c(n.id, d) } } var l = { successful: !0, message: "", data: null }, h = r.element, p = n.overwriteConstraint || !1, d = n.overwriteParameters || !1, v = n.constraintType, m = n.params || {}, y = { __size__: 0 }, b = m.groups; if (typeof v == "undefined") l = { successful: !1, message: "regula.bind expects a valid constraint type for each constraint in constraints attribute of the options argument. " + s.explodeParameters(r), data: null }; else if (m && m.groups) if (m.groups instanceof Array) { var w = [], E = 0; while (E < m.groups.length && l.successful) typeof m["groups"][E] == "string" ? w.push(m.groups[E]) : typeof t.ReverseGroup[m["groups"][E]] != "undefined" ? w.push(t.ReverseGroup[m.groups[E]]) : l = { successful: !1, message: "Invalid group: " + m.groups[E] + ". " + s.explodeParameters(r), data: null }, E++; l.successful && (m.groups = w) } else l = { successful: !1, message: "The groups parameter must be an array of enums or strings " + s.explodeParameters(r), data: null }; if (l.successful) { if (!o[t.ReverseGroup[t.Group.Default]][h.id] || !o[t.ReverseGroup[t.Group.Default]][h.id][i.ReverseConstraint[v]]) { for (var S in m) m.hasOwnProperty(S) && e.put(y, S, m[S]); l = i.verifyConstraintDefinition(h, i.ReverseConstraint[v], y) } else if (p) { for (var S in m) m.hasOwnProperty(S) && e.put(y, S, m[S]); l = i.verifyConstraintDefinition(h, i.ReverseConstraint[v], y), l.successful && f(h, v, m) } else { var x = o[t.ReverseGroup[t.Group.Default]][h.id][i.ReverseConstraint[v]]; for (var S in x) x.hasOwnProperty(S) && e.put(y, S, x[S]); if (d) { for (var S in m) m.hasOwnProperty(S) && e.put(y, S, m[S]); l = i.verifyConstraintDefinition(h, i.ReverseConstraint[v], y), l.successful && f(h, v, y) } else for (var S in m) m.hasOwnProperty(S) && (x[S] || e.put(y, S, m[S])) } l.successful && (l = g(h, i.ReverseConstraint[v], y)) } return m.groups = b, l } function g(n, r, u) { var a = { successful: !0, message: "", data: null }; u.groups || e.put(u, "groups", [t.ReverseGroup[t.Group.Default]]); var f = u.groups; f.indexOf(t.ReverseGroup[t.Group.Default]) === -1 && (f.push(t.ReverseGroup[t.Group.Default]), u.groups = f); for (var l = 0; l < f.length; l++) { var c = f[l]; if (!o[c]) { var h = -1; t.deletedGroupIndices.length > 0 ? h = t.deletedGroupIndices.pop() : h = t.firstCustomGroupIndex++, t.Group[c] = h, t.ReverseGroup[h] = c, o[c] = {} } o[c][n.id] || (o[c][n.id] = {}), o[c][n.id][r] = u } if (i.constraintDefinitions[r].html5) if (n.getAttribute("type") !== null && i.constraintDefinitions[r].inputType !== null && n.getAttribute("type") !== i.constraintDefinitions[r].inputType) a = { successful: !1, message: s.generateExceptionMessage(n, r, "Element type of " + n.getAttribute("type") + " conflicts with type of constraint @" + r + ": " + i.constraintDefinitions[r].inputType), data: null }; else { var p = i.constraintDefinitions[r].attribute, d = i.constraintDefinitions[r].inputType; (p !== null && n.getAttribute(p) === null || d !== null && n.getAttribute("type") === null) && y(n, r, u) } return a } function y(e, t, n) { if (t === i.ReverseConstraint[i.Constraint.HTML5Required]) e.setAttribute("required", "true"); else { var r = i.constraintDefinitions[t]; for (var s = 0; s < r.params.length; s++) e.setAttribute(r.params[s], n[r.params[s]]) } var o = e.getAttribute("class"); /regula-modified/.test(o) || e.setAttribute("class", o + " regula-modified") } function b(e) { var t = !1; for (var n = 0; n < e.elements.length; n++) { var r = e.elements[n].id, u = e.constraints || []; if (u.length == 0) for (var a in o) o.hasOwnProperty(a) && typeof o[a][r] != "undefined" && (delete o[a][r], a !== "Default" && c(r, a), t = !0); else for (var f = 0; f < u.length; f++) { var l = u[f]; for (var a in o) o.hasOwnProperty(a) && typeof o[a][r] != "undefined" && (delete o[a][r][i.ReverseConstraint[l]], a !== "Default" && c(r, a), t = !0) } } if (e.elements.length > 0 && !t) throw new s.Exception.IllegalArgumentException("Element with id " + r + " does not have any constraints bound to it. " + s.explodeParameters(e)) } function w(e) { var n = e.elementId, r = e.group, s = e.constraint, u = typeof o[t.ReverseGroup[t.Group.Default]][n] != "undefined"; if (u && typeof r != "undefined" && typeof s == "undefined") { var a = t.ReverseGroup[r]; u = typeof a != "undefined" && typeof o[a][n] != "undefined" } else if (u && typeof r == "undefined" && typeof s != "undefined") { var f = i.ReverseConstraint[s]; u = typeof f != "undefined" && typeof o[t.ReverseGroup[t.Group.Default]][n][f] != "undefined" } else if (u && typeof r != "undefined" && typeof s != "undefined") { var a = t.ReverseGroup[r], f = i.ReverseConstraint[s]; u = typeof a != "undefined" && typeof f != "undefined" && typeof o[a][n] != "undefined" && typeof o[a][n][f] != "undefined" } return u } var o = null, u = {}; return { initializeBoundConstraints: a, resetBoundConstraints: f, getBoundConstraints: l, removeElementAndGroupFromBoundConstraintsIfEmpty: c, bindAfterParsing: p, bindHTML5ValidationConstraints: d, bindFromOptions: v, unbind: b, isBound: w } }), function(e, t) { typeof define == "function" && define.amd ? define("regula", ["utils/MapUtils", "utils/DOMUtils", "service/BindingService", "service/ExceptionService", "service/ConstraintService", "service/ValidationService", "service/GroupService"], t) : (e.regula = t(e.regulaModules.MapUtils, e.regulaModules.DOMUtils, e.regulaModules.BindingService, e.regulaModules.ExceptionService, e.regulaModules.ConstraintService, e.regulaModules.ValidationService, e.regulaModules.GroupService), e.regula._modules = e.regulaModules, e.regulaModules = undefined) }(this, function(e, t, n, r, i, s, o) { function f(t) { e.iterateOverMap(t, function(e, t, n) { typeof u[e] != "undefined" && (u[e] = t) }) } function l(e) { var i = { successful: !0, message: "", data: null }; if (typeof e == "undefined" || !e) n.resetBoundConstraints(), u.enableHTML5Validation && t.supportsHTML5Validation() && (i = n.bindHTML5ValidationConstraints({ element: null })), i.successful && (i = n.bindAfterParsing({ element: null })); else { var s = e.elements; if (typeof s == "undefined" || !s) u.enableHTML5Validation && t.supportsHTML5Validation() && typeof e.element != "undefined" && e.element !== null && (i = n.bindHTML5ValidationConstraints({ element: e.element })), i.successful && (i = n.bindFromOptions(e)); else { var o = 0; while (i.successful && o < s.length) e.element = s[o], u.enableHTML5Validation && t.supportsHTML5Validation() && (i = n.bindHTML5ValidationConstraints({ element: e.element })), i.successful ? (i = n.bindFromOptions(e), i.successful || (i.message = "regula.bind: Element " + (o + 1) + " of " + s.length + " failed: " + i.message)) : i.message = "regula.bind: Failed binding HTML5 validation constraints: Element " + (o + 1) + " of " + s.length + " failed: " + i.message, o++ } } if (!i.successful) throw new r.Exception.BindException(i.message) } function c(e) { if (typeof e == "undefined" || !e) n.resetBoundConstraints(); else { if (typeof e.elementId == "undefined" && typeof e.elements == "undefined") throw new r.Exception.IllegalArgumentException("regula.unbind requires an elementId attribute, or an elements attribute if options are provided"); if (!(typeof e.elements == "undefined" || e.elements instanceof Array)) throw new r.Exception.IllegalArgumentException("regula.unbind expects the elements attribute to be an array, if it is provided"); if (typeof e.elements == "undefined") { e.elements = [document.getElementById(e.elementId)]; if (e.elements[0] === null) throw new r.Exception.IllegalArgumentException("Element with id " + e.elementId + " does not have any constraints bound to it. " + r.explodeParameters(e)) } n.unbind(e) } } function h(e) { if (typeof e == "undefined") throw new r.Exception.IllegalArgumentException("regula.isBound expects options"); var t = e.element, i = e.elementId; if (typeof t == "undefined" && typeof i == "undefined") throw new r.Exception.IllegalArgumentException("regula.isBound expects at the very least, either an element or elementId attribute"); if (e.hasOwnProperty("constraint") && typeof e.constraint == "undefined") throw new r.Exception.IllegalArgumentException("Undefined constraint was supplied as a parameter"); if (e.hasOwnProperty("group") && typeof e.group == "undefined") throw new r.Exception.IllegalArgumentException("Undefined group was supplied as a parameter"); return typeof t != "undefined" && (i = t.id), n.isBound({ elementId: i, group: e.group, constraint: e.constraint }) } function p(e) { if (!e) throw new r.Exception.IllegalArgumentException("regula.override expects options"); if (typeof e.constraintType == "undefined") throw new r.Exception.IllegalArgumentException("regula.override expects a valid constraintType attribute in the options argument"); var t = i.ReverseConstraint[e.constraintType]; if (typeof t == "undefined") throw new r.Exception.IllegalArgumentException("regula.override: I could not find the specified constraint. Perhaps it has not been defined? Function received: " + r.explodeParameters(e)); var n = !1, s = i.constraintDefinitions[t].formSpecific; i.constraintDefinitions[t].custom && (s = typeof e.formSpecific == "undefined" ? i.constraintDefinitions[t].formSpecific : e.formSpecific); var o = i.constraintDefinitions[t].custom && typeof e.async != "undefined" ? e.async : i.constraintDefinitions[t].async, u = i.constraintDefinitions[t].custom ? e.params || i.constraintDefinitions[t].params : i.constraintDefinitions[t].params, a = e.defaultMessage || i.constraintDefinitions[t].defaultMessage, f = i.constraintDefinitions[t].compound, l = e.constraints || i.constraintDefinitions[t].constraints, c = i.constraintDefinitions[t].validator; i.constraintDefinitions[t].custom && !i.constraintDefinitions[t].compound && typeof e.validator != "undefined" && (c = e.validator, n = !0); if (typeof s != "boolean") throw new r.Exception.IllegalArgumentException("regula.override expects the formSpecific attribute in the options argument to be a boolean"); if (typeof c != "function") throw new r.Exception.IllegalArgumentException("regula.override expects the validator attribute in the options argument to be a function"); if (!(u instanceof Array)) throw new r.Exception.IllegalArgumentException("regula.override expects the params attribute in the options argument to be an array"); if (typeof a != "string") throw new r.Exception.IllegalArgumentException("regula.override expects the defaultMessage attribute in the options argument to be a string"); i.override({ async: o, formSpecific: s, name: t, constraintType: e.constraintType, compound: f, params: u, composingConstraints: l, defaultMessage: a, validator: c, validatorRedefined: n }) } function d(e) { if (!e) throw new r.Exception.IllegalArgumentException("regula.custom expects options"); var t = e.name, n = e.formSpecific || !1, s = e.validator, o = e.params || [], u = e.defaultMessage || "", a = typeof e.async == "undefined" ? !1 : e.async; if (!t) throw new r.Exception.IllegalArgumentException("regula.custom expects a name attribute in the options argument"); if (typeof t != "string") throw new r.Exception.IllegalArgumentException("regula.custom expects the name attribute in the options argument to be a string"); if (t.replace(/\s/g, "").length == 0) throw new r.Exception.IllegalArgumentException("regula.custom cannot accept an empty string for the name attribute in the options argument"); if (typeof n != "boolean") throw new r.Exception.IllegalArgumentException("regula.custom expects the formSpecific attribute in the options argument to be a boolean"); if (!s) throw new r.Exception.IllegalArgumentException("regula.custom expects a validator attribute in the options argument"); if (typeof s != "function") throw new r.Exception.IllegalArgumentException("regula.custom expects the validator attribute in the options argument to be a function"); if (o.constructor.toString().indexOf("Array") < 0) throw new r.Exception.IllegalArgumentException("regula.custom expects the params attribute in the options argument to be an array"); if (typeof u != "string") throw new r.Exception.IllegalArgumentException("regula.custom expects the defaultMessage attribute in the options argument to be a string"); if (i.constraintDefinitions[t]) throw new r.Exception.IllegalArgumentException("There is already a constraint called " + t + ". If you wish to override this constraint, use regula.override"); i.custom({ async: a, name: t, formSpecific: n, validator: s, custom: !0, compound: !1, params: o, defaultMessage: u }) } function v(e) { if (!e) throw new r.Exception.IllegalArgumentException("regula.compound expects options"); var t = e.name, n = e.constraints || [], s = e.formSpecific || !1, o = e.defaultMessage || "", u = e.params || [], a = typeof e.reportAsSingleViolation == "undefined" ? !1 : e.reportAsSingleViolation; if (!t) throw new r.Exception.IllegalArgumentException("regula.compound expects a name attribute in the options argument"); if (typeof t != "string") throw new r.Exception.IllegalArgumentException("regula.compound expects name to be a string parameter"); if (u.constructor.toString().indexOf("Array") < 0) throw new r.Exception.IllegalArgumentException("regula.compound expects the params attribute in the options argument to be an array"); if (n.length == 0) throw new r.Exception.IllegalArgumentException("regula.compound expects an array of composing constraints under a constraints attribute in the options argument"); if (i.constraintDefinitions[t]) throw new r.Exception.IllegalArgumentException("regula.compound: There is already a constraint called " + t + ". If you wish to override this constraint, use regula.override"); i.compound({ name: t, formSpecific: s, params: u, reportAsSingleViolation: a, constraints: n, defaultMessage: o }) } function m(e, t) { s.init({ config: u, ReverseConstraint: i.ReverseConstraint, constraintDefinitions: i.constraintDefinitions, boundConstraints: n.getBoundConstraints() }); var o = []; if (typeof e == "undefined" || typeof e.groups == "undefined" || e.groups instanceof Array) { if (typeof e != "undefined" && typeof e.groups != "undefined" && e.groups.length == 0) throw new r.Exception.IllegalArgumentException("regula.validate: If a groups attribute is provided, it must not be empty."); if (typeof e != "undefined" && e.hasOwnProperty("constraintType") && typeof e.constraintType == "undefined") throw new r.Exception.IllegalArgumentException("regula.validate: If a constraintType attribute is provided, it cannot be undefined."); typeof t == "undefined" && typeof e == "function" && (e = { callback: e }), typeof t != "undefined" && (e.callback = t); if (typeof e != "undefined" && typeof e.elements != "undefined") { if (!(e.elements instanceof Array)) throw new r.Exception.IllegalArgumentException("regula.validate: If an elements attribute is provided, it must be an array."); if (e.elements.length == 0) throw new r.Exception.IllegalArgumentException("regula.validate: If an elements attribute is provided, it must not be empty."); o = s.validate(e) } else o = s.validate(e); return o } throw new r.Exception.IllegalArgumentException("regula.validate: If a groups attribute is provided, it must be an array.") } var u = { validateEmptyFields: !0, enableHTML5Validation: !0, debug: !1 }, a = { DMY: "DMY", MDY: "MDY", YMD: "YMD" }; return n.initializeBoundConstraints(), s.initializePublicValidators(i.constraintDefinitions), { configure: f, bind: l, unbind: c, isBound: h, validate: m, custom: d, compound: v, override: p, Constraint: i.Constraint, Group: o.Group, DateFormat: a, Exception: r.Exception } }); ! function(e) { "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery) }(function(e) { function t(e) { return i[e] ? i[e].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof e && e ? void n.error("Method " + e + " does not exist on jQuery.regula") : i.bind.apply(this, arguments) } var n = e, i = { bind: function(t) { return this instanceof e && (t || (t = {}), this.get().length > 0 && n.extend(!0, t, { elements: this.get() })), regula.bind(t), this }, unbind: function(t) { return this instanceof e && (t || (t = {}), this.get().length > 0 && n.extend(!0, t, { elements: this.get() })), regula.unbind(t), this }, isBound: function(t) { return this instanceof e && (t || (t = {}), this.get().length > 0 && n.extend(!0, t, { element: this.get(0) })), regula.isBound(t), this }, validate: function(t) { return this instanceof e && (t || (t = {}), this.get().length > 0 && n.extend(!0, t, { elements: this.get() })), regula.validate(t) }, custom: function(e) { return regula.custom(e), this }, compound: function(e) { return regula.compound(e), this }, override: function(e) { return regula.override(e), this } }; i.on = i.bind, i.off = i.unbind, n.fn.regula = t, n.regula = t }); /** * @module jQuery Form Plugin * @version 3.51 * @author M. Alsup * @see http://malsup.com/jquery/form/ * @license MIT and GPL licenses */ ! function(e) { "use strict"; "function" == typeof define && define.amd ? define(["../jquery"], e) : e("undefined" != typeof jQuery ? jQuery : window.Zepto) }(function(e) { "use strict"; function t(t) { var r = t.data; t.isDefaultPrevented() || (t.preventDefault(), e(t.target).ajaxSubmit(r)) } function r(t) { var r = t.target, a = e(r); if (!a.is("[type=submit],[type=image]")) { var n = a.closest("[type=submit]"); if (0 === n.length) return; r = n[0] } var i = this; if (i.clk = r, "image" == r.type) if (void 0 !== t.offsetX) i.clk_x = t.offsetX, i.clk_y = t.offsetY; else if ("function" == typeof e.fn.offset) { var o = a.offset(); i.clk_x = t.pageX - o.left, i.clk_y = t.pageY - o.top } else i.clk_x = t.pageX - r.offsetLeft, i.clk_y = t.pageY - r.offsetTop; setTimeout(function() { i.clk = i.clk_x = i.clk_y = null }, 100) } function a() { if (e.fn.ajaxSubmit.debug) { var t = "[jquery.form] " + Array.prototype.join.call(arguments, ""); window.console && window.console.log ? window.console.log(t) : window.opera && window.opera.postError && window.opera.postError(t) } } var n = {}; n.fileapi = void 0 !== e("").get(0).files, n.formdata = void 0 !== window.FormData; var i = !!e.fn.prop; e.fn.attr2 = function() { if (!i) return this.attr.apply(this, arguments); var e = this.prop.apply(this, arguments); return e && e.jquery || "string" == typeof e ? e : this.attr.apply(this, arguments) }, e.fn.ajaxSubmit = function(t) { function r(r) { var a, n, i = e.param(r, t.traditional).split("&"), o = i.length, s = []; for (a = 0; o > a; a++) i[a] = i[a].replace(/\+/g, " "), n = i[a].split("="), s.push([decodeURIComponent(n[0]), decodeURIComponent(n[1])]); return s } function o(a) { for (var n = new FormData, i = 0; i < a.length; i++) n.append(a[i].name, a[i].value); if (t.extraData) { var o = r(t.extraData); for (i = 0; i < o.length; i++) o[i] && n.append(o[i][0], o[i][1]) } t.data = null; var s = e.extend(!0, {}, e.ajaxSettings, t, { contentType: !1, processData: !1, cache: !1, type: u || "POST" }); t.uploadProgress && (s.xhr = function() { var r = e.ajaxSettings.xhr(); return r.upload && r.upload.addEventListener("progress", function(e) { var r = 0, a = e.loaded || e.position, n = e.total; e.lengthComputable && (r = Math.ceil(a / n * 100)), t.uploadProgress(e, a, n, r) }, !1), r }), s.data = null; var c = s.beforeSend; return s.beforeSend = function(e, r) { r.data = t.formData ? t.formData : n, c && c.call(this, e, r) }, e.ajax(s) } function s(r) { function n(e) { var t = null; try { e.contentWindow && (t = e.contentWindow.document) } catch (r) { a("cannot get iframe.contentWindow document: " + r) } if (t) return t; try { t = e.contentDocument ? e.contentDocument : e.document } catch (r) { a("cannot get iframe.contentDocument: " + r), t = e.document } return t } function o() { function t() { try { var e = n(g).readyState; a("state = " + e), e && "uninitialized" == e.toLowerCase() && setTimeout(t, 50) } catch (r) { a("Server abort: ", r, " (", r.name, ")"), s(k), j && clearTimeout(j), j = void 0 } } var r = f.attr2("target"), i = f.attr2("action"), o = "multipart/form-data", c = f.attr("enctype") || f.attr("encoding") || o; w.setAttribute("target", p), (!u || /post/i.test(u)) && w.setAttribute("method", "POST"), i != m.url && w.setAttribute("action", m.url), m.skipEncodingOverride || u && !/post/i.test(u) || f.attr({ encoding: "multipart/form-data", enctype: "multipart/form-data" }), m.timeout && (j = setTimeout(function() { T = !0, s(D) }, m.timeout)); var l = []; try { if (m.extraData) for (var d in m.extraData) m.extraData.hasOwnProperty(d) && l.push(e.isPlainObject(m.extraData[d]) && m.extraData[d].hasOwnProperty("name") && m.extraData[d].hasOwnProperty("value") ? e('').val(m.extraData[d].value).appendTo(w)[0] : e('').val(m.extraData[d]).appendTo(w)[0]); m.iframeTarget || v.appendTo("body"), g.attachEvent ? g.attachEvent("onload", s) : g.addEventListener("load", s, !1), setTimeout(t, 15); try { w.submit() } catch (h) { var x = document.createElement("form").submit; x.apply(w) } } finally { w.setAttribute("action", i), w.setAttribute("enctype", c), r ? w.setAttribute("target", r) : f.removeAttr("target"), e(l).remove() } } function s(t) { if (!x.aborted && !F) { if (M = n(g), M || (a("cannot access response document"), t = k), t === D && x) return x.abort("timeout"), void S.reject(x, "timeout"); if (t == k && x) return x.abort("server abort"), void S.reject(x, "error", "server abort"); if (M && M.location.href != m.iframeSrc || T) { g.detachEvent ? g.detachEvent("onload", s) : g.removeEventListener("load", s, !1); var r, i = "success"; try { if (T) throw "timeout"; var o = "xml" == m.dataType || M.XMLDocument || e.isXMLDoc(M); if (a("isXml=" + o), !o && window.opera && (null === M.body || !M.body.innerHTML) && --O) return a("requeing onLoad callback, DOM not available"), void setTimeout(s, 250); var u = M.body ? M.body : M.documentElement; x.responseText = u ? u.innerHTML : null, x.responseXML = M.XMLDocument ? M.XMLDocument : M, o && (m.dataType = "xml"), x.getResponseHeader = function(e) { var t = { "content-type": m.dataType }; return t[e.toLowerCase()] }, u && (x.status = Number(u.getAttribute("status")) || x.status, x.statusText = u.getAttribute("statusText") || x.statusText); var c = (m.dataType || "").toLowerCase(), l = /(json|script|text)/.test(c); if (l || m.textarea) { var f = M.getElementsByTagName("textarea")[0]; if (f) x.responseText = f.value, x.status = Number(f.getAttribute("status")) || x.status, x.statusText = f.getAttribute("statusText") || x.statusText; else if (l) { var p = M.getElementsByTagName("pre")[0], h = M.getElementsByTagName("body")[0]; p ? x.responseText = p.textContent ? p.textContent : p.innerText : h && (x.responseText = h.textContent ? h.textContent : h.innerText) } } else "xml" == c && !x.responseXML && x.responseText && (x.responseXML = X(x.responseText)); try { E = _(x, c, m) } catch (y) { i = "parsererror", x.error = r = y || i } } catch (y) { a("error caught: ", y), i = "error", x.error = r = y || i } x.aborted && (a("upload aborted"), i = null), x.status && (i = x.status >= 200 && x.status < 300 || 304 === x.status ? "success" : "error"), "success" === i ? (m.success && m.success.call(m.context, E, "success", x), S.resolve(x.responseText, "success", x), d && e.event.trigger("ajaxSuccess", [x, m])) : i && (void 0 === r && (r = x.statusText), m.error && m.error.call(m.context, x, i, r), S.reject(x, "error", r), d && e.event.trigger("ajaxError", [x, m, r])), d && e.event.trigger("ajaxComplete", [x, m]), d && !--e.active && e.event.trigger("ajaxStop"), m.complete && m.complete.call(m.context, x, i), F = !0, m.timeout && clearTimeout(j), setTimeout(function() { m.iframeTarget ? v.attr("src", m.iframeSrc) : v.remove(), x.responseXML = null }, 100) } } } var c, l, m, d, p, v, g, x, y, b, T, j, w = f[0], S = e.Deferred(); if (S.abort = function(e) { x.abort(e) }, r) for (l = 0; l < h.length; l++) c = e(h[l]), i ? c.prop("disabled", !1) : c.removeAttr("disabled"); if (m = e.extend(!0, {}, e.ajaxSettings, t), m.context = m.context || m, p = "jqFormIO" + (new Date).getTime(), m.iframeTarget ? (v = e(m.iframeTarget), b = v.attr2("name"), b ? p = b : v.attr2("name", p)) : (v = e(''), v.css({ position: "absolute", top: "-1000px", left: "-1000px" })), g = v[0], x = { aborted: 0, responseText: null, responseXML: null, status: 0, statusText: "n/a", getAllResponseHeaders: function() {}, getResponseHeader: function() {}, setRequestHeader: function() {}, abort: function(t) { var r = "timeout" === t ? "timeout" : "aborted"; a("aborting upload... " + r), this.aborted = 1; try { g.contentWindow.document.execCommand && g.contentWindow.document.execCommand("Stop") } catch (n) {} v.attr("src", m.iframeSrc), x.error = r, m.error && m.error.call(m.context, x, r, t), d && e.event.trigger("ajaxError", [x, m, r]), m.complete && m.complete.call(m.context, x, r) } }, d = m.global, d && 0 === e.active++ && e.event.trigger("ajaxStart"), d && e.event.trigger("ajaxSend", [x, m]), m.beforeSend && m.beforeSend.call(m.context, x, m) === !1) return m.global && e.active--, S.reject(), S; if (x.aborted) return S.reject(), S; y = w.clk, y && (b = y.name, b && !y.disabled && (m.extraData = m.extraData || {}, m.extraData[b] = y.value, "image" == y.type && (m.extraData[b + ".x"] = w.clk_x, m.extraData[b + ".y"] = w.clk_y))); var D = 1, k = 2, A = e("meta[name=csrf-token]").attr("content"), L = e("meta[name=csrf-param]").attr("content"); L && A && (m.extraData = m.extraData || {}, m.extraData[L] = A), m.forceSync ? o() : setTimeout(o, 10); var E, M, F, O = 50, X = e.parseXML || function(e, t) { return window.ActiveXObject ? (t = new ActiveXObject("Microsoft.XMLDOM"), t.async = "false", t.loadXML(e)) : t = (new DOMParser).parseFromString(e, "text/xml"), t && t.documentElement && "parsererror" != t.documentElement.nodeName ? t : null }, C = e.parseJSON || function(e) { return window.eval("(" + e + ")") }, _ = function(t, r, a) { var n = t.getResponseHeader("content-type") || "", i = "xml" === r || !r && n.indexOf("xml") >= 0, o = i ? t.responseXML : t.responseText; return i && "parsererror" === o.documentElement.nodeName && e.error && e.error("parsererror"), a && a.dataFilter && (o = a.dataFilter(o, r)), "string" == typeof o && ("json" === r || !r && n.indexOf("json") >= 0 ? o = C(o) : ("script" === r || !r && n.indexOf("javascript") >= 0) && e.globalEval(o)), o }; return S } if (!this.length) return a("ajaxSubmit: skipping submit process - no element selected"), this; var u, c, l, f = this; "function" == typeof t ? t = { success: t } : void 0 === t && (t = {}), u = t.type || this.attr2("method"), c = t.url || this.attr2("action"), l = "string" == typeof c ? e.trim(c) : "", l = l || window.location.href || "", l && (l = (l.match(/^([^#]+)/) || [])[1]), t = e.extend(!0, { url: l, success: e.ajaxSettings.success, type: u || e.ajaxSettings.type, iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank" }, t); var m = {}; if (this.trigger("form-pre-serialize", [this, t, m]), m.veto) return a("ajaxSubmit: submit vetoed via form-pre-serialize trigger"), this; if (t.beforeSerialize && t.beforeSerialize(this, t) === !1) return a("ajaxSubmit: submit aborted via beforeSerialize callback"), this; var d = t.traditional; void 0 === d && (d = e.ajaxSettings.traditional); var p, h = [], v = this.formToArray(t.semantic, h); if (t.data && (t.extraData = t.data, p = e.param(t.data, d)), t.beforeSubmit && t.beforeSubmit(v, this, t) === !1) return a("ajaxSubmit: submit aborted via beforeSubmit callback"), this; if (this.trigger("form-submit-validate", [v, this, t, m]), m.veto) return a("ajaxSubmit: submit vetoed via form-submit-validate trigger"), this; var g = e.param(v, d); p && (g = g ? g + "&" + p : p), "GET" == t.type.toUpperCase() ? (t.url += (t.url.indexOf("?") >= 0 ? "&" : "?") + g, t.data = null) : t.data = g; var x = []; if (t.resetForm && x.push(function() { f.resetForm() }), t.clearForm && x.push(function() { f.clearForm(t.includeHidden) }), !t.dataType && t.target) { var y = t.success || function() {}; x.push(function(r) { var a = t.replaceTarget ? "replaceWith" : "html"; e(t.target)[a](r).each(y, arguments) }) } else t.success && x.push(t.success); if (t.success = function(e, r, a) { for (var n = t.context || this, i = 0, o = x.length; o > i; i++) x[i].apply(n, [e, r, a || f, f]) }, t.error) { var b = t.error; t.error = function(e, r, a) { var n = t.context || this; b.apply(n, [e, r, a, f]) } } if (t.complete) { var T = t.complete; t.complete = function(e, r) { var a = t.context || this; T.apply(a, [e, r, f]) } } var j = e("input[type=file]:enabled", this).filter(function() { return "" !== e(this).val() }), w = j.length > 0, S = "multipart/form-data", D = f.attr("enctype") == S || f.attr("encoding") == S, k = n.fileapi && n.formdata; a("fileAPI :" + k); var A, L = (w || D) && !k; t.iframe !== !1 && (t.iframe || L) ? t.closeKeepAlive ? e.get(t.closeKeepAlive, function() { A = s(v) }) : A = s(v) : A = (w || D) && k ? o(v) : e.ajax(t), f.removeData("jqxhr").data("jqxhr", A); for (var E = 0; E < h.length; E++) h[E] = null; return this.trigger("form-submit-notify", [this, t]), this }, e.fn.ajaxForm = function(n) { if (n = n || {}, n.delegation = n.delegation && e.isFunction(e.fn.on), !n.delegation && 0 === this.length) { var i = { s: this.selector, c: this.context }; return !e.isReady && i.s ? (a("DOM not ready, queuing ajaxForm"), e(function() { e(i.s, i.c).ajaxForm(n) }), this) : (a("terminating; zero elements found by selector" + (e.isReady ? "" : " (DOM not ready)")), this) } return n.delegation ? (e(document).off("submit.form-plugin", this.selector, t).off("click.form-plugin", this.selector, r).on("submit.form-plugin", this.selector, n, t).on("click.form-plugin", this.selector, n, r), this) : this.ajaxFormUnbind().bind("submit.form-plugin", n, t).bind("click.form-plugin", n, r) }, e.fn.ajaxFormUnbind = function() { return this.unbind("submit.form-plugin click.form-plugin") }, e.fn.formToArray = function(t, r) { var a = []; if (0 === this.length) return a; var i, o = this[0], s = this.attr("id"), u = t ? o.getElementsByTagName("*") : o.elements; if (u && !/MSIE [678]/.test(navigator.userAgent) && (u = e(u).get()), s && (i = e(':input[form="' + s + '"]').get(), i.length && (u = (u || []).concat(i))), !u || !u.length) return a; var c, l, f, m, d, p, h; for (c = 0, p = u.length; p > c; c++) if (d = u[c], f = d.name, f && !d.disabled) if (t && o.clk && "image" == d.type) o.clk == d && (a.push({ name: f, value: e(d).val(), type: d.type }), a.push({ name: f + ".x", value: o.clk_x }, { name: f + ".y", value: o.clk_y })); else if (m = e.fieldValue(d, !0), m && m.constructor == Array) for (r && r.push(d), l = 0, h = m.length; h > l; l++) a.push({ name: f, value: m[l] }); else if (n.fileapi && "file" == d.type) { r && r.push(d); var v = d.files; if (v.length) for (l = 0; l < v.length; l++) a.push({ name: f, value: v[l], type: d.type }); else a.push({ name: f, value: "", type: d.type }) } else null !== m && "undefined" != typeof m && (r && r.push(d), a.push({ name: f, value: m, type: d.type, required: d.required })); if (!t && o.clk) { var g = e(o.clk), x = g[0]; f = x.name, f && !x.disabled && "image" == x.type && (a.push({ name: f, value: g.val() }), a.push({ name: f + ".x", value: o.clk_x }, { name: f + ".y", value: o.clk_y })) } return a }, e.fn.formSerialize = function(t) { return e.param(this.formToArray(t)) }, e.fn.fieldSerialize = function(t) { var r = []; return this.each(function() { var a = this.name; if (a) { var n = e.fieldValue(this, t); if (n && n.constructor == Array) for (var i = 0, o = n.length; o > i; i++) r.push({ name: a, value: n[i] }); else null !== n && "undefined" != typeof n && r.push({ name: this.name, value: n }) } }), e.param(r) }, e.fn.fieldValue = function(t) { for (var r = [], a = 0, n = this.length; n > a; a++) { var i = this[a], o = e.fieldValue(i, t); null === o || "undefined" == typeof o || o.constructor == Array && !o.length || (o.constructor == Array ? e.merge(r, o) : r.push(o)) } return r }, e.fieldValue = function(t, r) { var a = t.name, n = t.type, i = t.tagName.toLowerCase(); if (void 0 === r && (r = !0), r && (!a || t.disabled || "reset" == n || "button" == n || ("checkbox" == n || "radio" == n) && !t.checked || ("submit" == n || "image" == n) && t.form && t.form.clk != t || "select" == i && -1 == t.selectedIndex)) return null; if ("select" == i) { var o = t.selectedIndex; if (0 > o) return null; for (var s = [], u = t.options, c = "select-one" == n, l = c ? o + 1 : u.length, f = c ? o : 0; l > f; f++) { var m = u[f]; if (m.selected) { var d = m.value; if (d || (d = m.attributes && m.attributes.value && !m.attributes.value.specified ? m.text : m.value), c) return d; s.push(d) } } return s } return e(t).val() }, e.fn.clearForm = function(t) { return this.each(function() { e("input,select,textarea", this).clearFields(t) }) }, e.fn.clearFields = e.fn.clearInputs = function(t) { var r = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; return this.each(function() { var a = this.type, n = this.tagName.toLowerCase(); r.test(a) || "textarea" == n ? this.value = "" : "checkbox" == a || "radio" == a ? this.checked = !1 : "select" == n ? this.selectedIndex = -1 : "file" == a ? /MSIE/.test(navigator.userAgent) ? e(this).replaceWith(e(this).clone(!0)) : e(this).val("") : t && (t === !0 && /hidden/.test(a) || "string" == typeof t && e(this).is(t)) && (this.value = "") }) }, e.fn.resetForm = function() { return this.each(function() { ("function" == typeof this.reset || "object" == typeof this.reset && !this.reset.nodeType) && this.reset() }) }, e.fn.enable = function(e) { return void 0 === e && (e = !0), this.each(function() { this.disabled = !e }) }, e.fn.selected = function(t) { return void 0 === t && (t = !0), this.each(function() { var r = this.type; if ("checkbox" == r || "radio" == r) this.checked = t; else if ("option" == this.tagName.toLowerCase()) { var a = e(this).parent("select"); t && a[0] && "select-one" == a[0].type && a.find("option").selected(!1), this.selected = t } }) }, e.fn.ajaxSubmit.debug = !1 }); /** * @module RDInputLabel * @author Evgeniy Gusarov * @license MIT License */ (function() { ! function(t, e, i) { var s, n; return n = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isWebkit = /safari|chrome/i.test(navigator.userAgent), s = function() { function s(s, n) { this.options = t.extend(!0, {}, this.Defaults, n), this.$element = t(s).addClass("rd-input-label"), this.$target = t("#" + this.$element.attr("for")), this.$win = t(i), this.$doc = t(e), this.initialize() } return s.prototype.Defaults = { callbacks: null }, s.prototype.initialize = function() { return this.$target.on("input", t.proxy(this.change, this)).on("focus", t.proxy(this.focus, this)).on("blur", t.proxy(this.blur, this)).on("hover", t.proxy(this.hover, this)).parents("form").on("reset", t.proxy(this.reset, this)), this.change(), this.hover(), this }, s.prototype.hover = function() { return isWebkit && (this.$target.is(":-webkit-autofill") ? this.$element.addClass("auto-fill") : this.$element.removeClass("auto-fill")), this }, s.prototype.change = function() { return isWebkit && (this.$target.is(":-webkit-autofill") ? this.$element.addClass("auto-fill") : this.$element.removeClass("auto-fill")), "" !== this.$target.val() ? (this.$element.hasClass("focus") || this.focus(), this.$element.addClass("not-empty")) : this.$element.removeClass("not-empty"), this }, s.prototype.focus = function() { return this.$element.addClass("focus"), this }, s.prototype.reset = function() { return setTimeout(t.proxy(this.blur, this)), this }, s.prototype.blur = function(t) { return "" === this.$target.val() && this.$element.removeClass("focus").removeClass("not-empty"), this }, s }(), t.fn.extend({ RDInputLabel: function(e) { return this.each(function() { var i; return i = t(this), i.data("RDInputLabel") ? void 0 : i.data("RDInputLabel", new s(this, e)) }) } }), i.RDInputLabel = s }(window.jQuery, document, window), "undefined" != typeof module && null !== module ? module.exports = window.RDInputLabel : "function" == typeof define && define.amd && define(["jquery"], function() { "use strict"; return window.RDInputLabel }) }).call(this); /** * @module Select2 * @version 4.0.2 * @license MIT License * @link https://github.com/select2/select2/blob/master/ */ ! function(a) { "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : jQuery) }(function(a) { var b = function() { if (a && a.fn && a.fn.select2 && a.fn.select2.amd) var b = a.fn.select2.amd; var b; return function() { if (!b || !b.requirejs) { b ? c = b : b = {}; var a, c, d; ! function(b) { function e(a, b) { return u.call(a, b) } function f(a, b) { var c, d, e, f, g, h, i, j, k, l, m, n = b && b.split("/"), o = s.map, p = o && o["*"] || {}; if (a && "." === a.charAt(0)) if (b) { for (a = a.split("/"), g = a.length - 1, s.nodeIdCompat && w.test(a[g]) && (a[g] = a[g].replace(w, "")), a = n.slice(0, n.length - 1).concat(a), k = 0; k < a.length; k += 1) if (m = a[k], "." === m) a.splice(k, 1), k -= 1; else if (".." === m) { if (1 === k && (".." === a[2] || ".." === a[0])) break; k > 0 && (a.splice(k - 1, 2), k -= 2) } a = a.join("/") } else 0 === a.indexOf("./") && (a = a.substring(2)); if ((n || p) && o) { for (c = a.split("/"), k = c.length; k > 0; k -= 1) { if (d = c.slice(0, k).join("/"), n) for (l = n.length; l > 0; l -= 1) if (e = o[n.slice(0, l).join("/")], e && (e = e[d])) { f = e, h = k; break } if (f) break; !i && p && p[d] && (i = p[d], j = k) }!f && i && (f = i, h = j), f && (c.splice(0, h, f), a = c.join("/")) } return a } function g(a, c) { return function() { var d = v.call(arguments, 0); return "string" != typeof d[0] && 1 === d.length && d.push(null), n.apply(b, d.concat([a, c])) } } function h(a) { return function(b) { return f(b, a) } } function i(a) { return function(b) { q[a] = b } } function j(a) { if (e(r, a)) { var c = r[a]; delete r[a], t[a] = !0, m.apply(b, c) } if (!e(q, a) && !e(t, a)) throw new Error("No " + a); return q[a] } function k(a) { var b, c = a ? a.indexOf("!") : -1; return c > -1 && (b = a.substring(0, c), a = a.substring(c + 1, a.length)), [b, a] } function l(a) { return function() { return s && s.config && s.config[a] || {} } } var m, n, o, p, q = {}, r = {}, s = {}, t = {}, u = Object.prototype.hasOwnProperty, v = [].slice, w = /\.js$/; o = function(a, b) { var c, d = k(a), e = d[0]; return a = d[1], e && (e = f(e, b), c = j(e)), e ? a = c && c.normalize ? c.normalize(a, h(b)) : f(a, b) : (a = f(a, b), d = k(a), e = d[0], a = d[1], e && (c = j(e))), { f: e ? e + "!" + a : a, n: a, pr: e, p: c } }, p = { require: function(a) { return g(a) }, exports: function(a) { var b = q[a]; return "undefined" != typeof b ? b : q[a] = {} }, module: function(a) { return { id: a, uri: "", exports: q[a], config: l(a) } } }, m = function(a, c, d, f) { var h, k, l, m, n, s, u = [], v = typeof d; if (f = f || a, "undefined" === v || "function" === v) { for (c = !c.length && d.length ? ["require", "exports", "module"] : c, n = 0; n < c.length; n += 1) if (m = o(c[n], f), k = m.f, "require" === k) u[n] = p.require(a); else if ("exports" === k) u[n] = p.exports(a), s = !0; else if ("module" === k) h = u[n] = p.module(a); else if (e(q, k) || e(r, k) || e(t, k)) u[n] = j(k); else { if (!m.p) throw new Error(a + " missing " + k); m.p.load(m.n, g(f, !0), i(k), {}), u[n] = q[k] } l = d ? d.apply(q[a], u) : void 0, a && (h && h.exports !== b && h.exports !== q[a] ? q[a] = h.exports : l === b && s || (q[a] = l)) } else a && (q[a] = d) }, a = c = n = function(a, c, d, e, f) { if ("string" == typeof a) return p[a] ? p[a](c) : j(o(a, c).f); if (!a.splice) { if (s = a, s.deps && n(s.deps, s.callback), !c) return; c.splice ? (a = c, c = d, d = null) : a = b } return c = c || function() {}, "function" == typeof d && (d = e, e = f), e ? m(b, a, c, d) : setTimeout(function() { m(b, a, c, d) }, 4), n }, n.config = function(a) { return n(a) }, a._defined = q, d = function(a, b, c) { if ("string" != typeof a) throw new Error("See almond README: incorrect module build, no module name"); b.splice || (c = b, b = []), e(q, a) || e(r, a) || (r[a] = [a, b, c]) }, d.amd = { jQuery: !0 } }(), b.requirejs = a, b.require = c, b.define = d } }(), b.define("almond", function() {}), b.define("jquery", [], function() { var b = a || $; return null == b && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."), b }), b.define("select2/utils", ["jquery"], function(a) { function b(a) { var b = a.prototype, c = []; for (var d in b) { var e = b[d]; "function" == typeof e && "constructor" !== d && c.push(d) } return c } var c = {}; c.Extend = function(a, b) { function c() { this.constructor = a } var d = {}.hasOwnProperty; for (var e in b) d.call(b, e) && (a[e] = b[e]); return c.prototype = b.prototype, a.prototype = new c, a.__super__ = b.prototype, a }, c.Decorate = function(a, c) { function d() { var b = Array.prototype.unshift, d = c.prototype.constructor.length, e = a.prototype.constructor; d > 0 && (b.call(arguments, a.prototype.constructor), e = c.prototype.constructor), e.apply(this, arguments) } function e() { this.constructor = d } var f = b(c), g = b(a); c.displayName = a.displayName, d.prototype = new e; for (var h = 0; h < g.length; h++) { var i = g[h]; d.prototype[i] = a.prototype[i] } for (var j = (function(a) { var b = function() {}; a in d.prototype && (b = d.prototype[a]); var e = c.prototype[a]; return function() { var a = Array.prototype.unshift; return a.call(arguments, b), e.apply(this, arguments) } }), k = 0; k < f.length; k++) { var l = f[k]; d.prototype[l] = j(l) } return d }; var d = function() { this.listeners = {} }; return d.prototype.on = function(a, b) { this.listeners = this.listeners || {}, a in this.listeners ? this.listeners[a].push(b) : this.listeners[a] = [b] }, d.prototype.trigger = function(a) { var b = Array.prototype.slice; this.listeners = this.listeners || {}, a in this.listeners && this.invoke(this.listeners[a], b.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments) }, d.prototype.invoke = function(a, b) { for (var c = 0, d = a.length; d > c; c++) a[c].apply(this, b) }, c.Observable = d, c.generateChars = function(a) { for (var b = "", c = 0; a > c; c++) { var d = Math.floor(36 * Math.random()); b += d.toString(36) } return b }, c.bind = function(a, b) { return function() { a.apply(b, arguments) } }, c._convertData = function(a) { for (var b in a) { var c = b.split("-"), d = a; if (1 !== c.length) { for (var e = 0; e < c.length; e++) { var f = c[e]; f = f.substring(0, 1).toLowerCase() + f.substring(1), f in d || (d[f] = {}), e == c.length - 1 && (d[f] = a[b]), d = d[f] } delete a[b] } } return a }, c.hasScroll = function(b, c) { var d = a(c), e = c.style.overflowX, f = c.style.overflowY; return e !== f || "hidden" !== f && "visible" !== f ? "scroll" === e || "scroll" === f ? !0 : d.innerHeight() < c.scrollHeight || d.innerWidth() < c.scrollWidth : !1 }, c.escapeMarkup = function(a) { var b = { "\\": "\", "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" }; return "string" != typeof a ? a : String(a).replace(/[&<>"'\/\\]/g, function(a) { return b[a] }) }, c.appendMany = function(b, c) { if ("1.7" === a.fn.jquery.substr(0, 3)) { var d = a(); a.map(c, function(a) { d = d.add(a) }), c = d } b.append(c) }, c }), b.define("select2/results", ["jquery", "./utils"], function(a, b) { function c(a, b, d) { this.$element = a, this.data = d, this.options = b, c.__super__.constructor.call(this) } return b.Extend(c, b.Observable), c.prototype.render = function() { var b = a('
'); return this.options.get("multiple") && b.attr("aria-multiselectable", "true"), this.$results = b, b }, c.prototype.clear = function() { this.$results.empty() }, c.prototype.displayMessage = function(b) { var c = this.options.get("escapeMarkup"); this.clear(), this.hideLoading(); var d = a(''), e = this.options.get("translations").get(b.message); d.append(c(e(b.args))), d[0].className += " select2-results__message", this.$results.append(d) }, c.prototype.hideMessages = function() { this.$results.find(".select2-results__message").remove() }, c.prototype.append = function(a) { this.hideLoading(); var b = []; if (null == a.results || 0 === a.results.length) return void(0 === this.$results.children().length && this.trigger("results:message", { message: "noResults" })); a.results = this.sort(a.results); for (var c = 0; c < a.results.length; c++) { var d = a.results[c], e = this.option(d); b.push(e) } this.$results.append(b) }, c.prototype.position = function(a, b) { var c = b.find(".select2-results"); c.append(a) }, c.prototype.sort = function(a) { var b = this.options.get("sorter"); return b(a) }, c.prototype.setClasses = function() { var b = this; this.data.current(function(c) { var d = a.map(c, function(a) { return a.id.toString() }), e = b.$results.find(".select2-results__option[aria-selected]"); e.each(function() { var b = a(this), c = a.data(this, "data"), e = "" + c.id; null != c.element && c.element.selected || null == c.element && a.inArray(e, d) > -1 ? b.attr("aria-selected", "true") : b.attr("aria-selected", "false") }); var f = e.filter("[aria-selected=true]"); f.length > 0 ? f.first().trigger("mouseenter") : e.first().trigger("mouseenter") }) }, c.prototype.showLoading = function(a) { this.hideLoading(); var b = this.options.get("translations").get("searching"), c = { disabled: !0, loading: !0, text: b(a) }, d = this.option(c); d.className += " loading-results", this.$results.prepend(d) }, c.prototype.hideLoading = function() { this.$results.find(".loading-results").remove() }, c.prototype.option = function(b) { var c = document.createElement("li"); c.className = "select2-results__option"; var d = { role: "treeitem", "aria-selected": "false" }; b.disabled && (delete d["aria-selected"], d["aria-disabled"] = "true"), null == b.id && delete d["aria-selected"], null != b._resultId && (c.id = b._resultId), b.title && (c.title = b.title), b.children && (d.role = "group", d["aria-label"] = b.text, delete d["aria-selected"]); for (var e in d) { var f = d[e]; c.setAttribute(e, f) } if (b.children) { var g = a(c), h = document.createElement("strong"); h.className = "select2-results__group"; a(h); this.template(b, h); for (var i = [], j = 0; j < b.children.length; j++) { var k = b.children[j], l = this.option(k); i.push(l) } var m = a("
", { "class": "select2-results__options select2-results__options--nested" }); m.append(i), g.append(h), g.append(m) } else this.template(b, c); return a.data(c, "data", b), c }, c.prototype.bind = function(b, c) { var d = this, e = b.id + "-results"; this.$results.attr("id", e), b.on("results:all", function(a) { d.clear(), d.append(a.data), b.isOpen() && d.setClasses() }), b.on("results:append", function(a) { d.append(a.data), b.isOpen() && d.setClasses() }), b.on("query", function(a) { d.hideMessages(), d.showLoading(a) }), b.on("select", function() { b.isOpen() && d.setClasses() }), b.on("unselect", function() { b.isOpen() && d.setClasses() }), b.on("open", function() { d.$results.attr("aria-expanded", "true"), d.$results.attr("aria-hidden", "false"), d.setClasses(), d.ensureHighlightVisible() }), b.on("close", function() { d.$results.attr("aria-expanded", "false"), d.$results.attr("aria-hidden", "true"), d.$results.removeAttr("aria-activedescendant") }), b.on("results:toggle", function() { var a = d.getHighlightedResults(); 0 !== a.length && a.trigger("mouseup") }), b.on("results:select", function() { var a = d.getHighlightedResults(); if (0 !== a.length) { var b = a.data("data"); "true" == a.attr("aria-selected") ? d.trigger("close", {}) : d.trigger("select", { data: b }) } }), b.on("results:previous", function() { var a = d.getHighlightedResults(), b = d.$results.find("[aria-selected]"), c = b.index(a); if (0 !== c) { var e = c - 1; 0 === a.length && (e = 0); var f = b.eq(e); f.trigger("mouseenter"); var g = d.$results.offset().top, h = f.offset().top, i = d.$results.scrollTop() + (h - g); 0 === e ? d.$results.scrollTop(0) : 0 > h - g && d.$results.scrollTop(i) } }), b.on("results:next", function() { var a = d.getHighlightedResults(), b = d.$results.find("[aria-selected]"), c = b.index(a), e = c + 1; if (!(e >= b.length)) { var f = b.eq(e); f.trigger("mouseenter"); var g = d.$results.offset().top + d.$results.outerHeight(!1), h = f.offset().top + f.outerHeight(!1), i = d.$results.scrollTop() + h - g; 0 === e ? d.$results.scrollTop(0) : h > g && d.$results.scrollTop(i) } }), b.on("results:focus", function(a) { a.element.addClass("select2-results__option--highlighted") }), b.on("results:message", function(a) { d.displayMessage(a) }), a.fn.mousewheel && this.$results.on("mousewheel", function(a) { var b = d.$results.scrollTop(), c = d.$results.get(0).scrollHeight - b + a.deltaY, e = a.deltaY > 0 && b - a.deltaY <= 0, f = a.deltaY < 0 && c <= d.$results.height(); e ? (d.$results.scrollTop(0), a.preventDefault(), a.stopPropagation()) : f && (d.$results.scrollTop(d.$results.get(0).scrollHeight - d.$results.height()), a.preventDefault(), a.stopPropagation()) }), this.$results.on("mouseup", ".select2-results__option[aria-selected]", function(b) { var c = a(this), e = c.data("data"); return "true" === c.attr("aria-selected") ? void(d.options.get("multiple") ? d.trigger("unselect", { originalEvent: b, data: e }) : d.trigger("close", {})) : void d.trigger("select", { originalEvent: b, data: e }) }), this.$results.on("mouseenter", ".select2-results__option[aria-selected]", function(b) { var c = a(this).data("data"); d.getHighlightedResults().removeClass("select2-results__option--highlighted"), d.trigger("results:focus", { data: c, element: a(this) }) }) }, c.prototype.getHighlightedResults = function() { var a = this.$results.find(".select2-results__option--highlighted"); return a }, c.prototype.destroy = function() { this.$results.remove() }, c.prototype.ensureHighlightVisible = function() { var a = this.getHighlightedResults(); if (0 !== a.length) { var b = this.$results.find("[aria-selected]"), c = b.index(a), d = this.$results.offset().top, e = a.offset().top, f = this.$results.scrollTop() + (e - d), g = e - d; f -= 2 * a.outerHeight(!1), 2 >= c ? this.$results.scrollTop(0) : (g > this.$results.outerHeight() || 0 > g) && this.$results.scrollTop(f) } }, c.prototype.template = function(b, c) { var d = this.options.get("templateResult"), e = this.options.get("escapeMarkup"), f = d(b, c); null == f ? c.style.display = "none" : "string" == typeof f ? c.innerHTML = e(f) : a(c).append(f) }, c }), b.define("select2/keys", [], function() { var a = { BACKSPACE: 8, TAB: 9, ENTER: 13, SHIFT: 16, CTRL: 17, ALT: 18, ESC: 27, SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DELETE: 46 }; return a }), b.define("select2/selection/base", ["jquery", "../utils", "../keys"], function(a, b, c) { function d(a, b) { this.$element = a, this.options = b, d.__super__.constructor.call(this) } return b.Extend(d, b.Observable), d.prototype.render = function() { var b = a(''); return this._tabindex = 0, null != this.$element.data("old-tabindex") ? this._tabindex = this.$element.data("old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")), b.attr("title", this.$element.attr("title")), b.attr("tabindex", this._tabindex), this.$selection = b, b }, d.prototype.bind = function(a, b) { var d = this, e = (a.id + "-container", a.id + "-results"); this.container = a, this.$selection.on("focus", function(a) { d.trigger("focus", a) }), this.$selection.on("blur", function(a) { d._handleBlur(a) }), this.$selection.on("keydown", function(a) { d.trigger("keypress", a), a.which === c.SPACE && a.preventDefault() }), a.on("results:focus", function(a) { d.$selection.attr("aria-activedescendant", a.data._resultId) }), a.on("selection:update", function(a) { d.update(a.data) }), a.on("open", function() { d.$selection.attr("aria-expanded", "true"), d.$selection.attr("aria-owns", e), d._attachCloseHandler(a) }), a.on("close", function() { d.$selection.attr("aria-expanded", "false"), d.$selection.removeAttr("aria-activedescendant"), d.$selection.removeAttr("aria-owns"), d.$selection.focus(), d._detachCloseHandler(a) }), a.on("enable", function() { d.$selection.attr("tabindex", d._tabindex) }), a.on("disable", function() { d.$selection.attr("tabindex", "-1") }) }, d.prototype._handleBlur = function(b) { var c = this; window.setTimeout(function() { document.activeElement == c.$selection[0] || a.contains(c.$selection[0], document.activeElement) || c.trigger("blur", b) }, 1) }, d.prototype._attachCloseHandler = function(b) { a(document.body).on("mousedown.select2." + b.id, function(b) { var c = a(b.target), d = c.closest(".select2"), e = a(".select2.select2-container--open"); e.each(function() { var b = a(this); if (this != d[0]) { var c = b.data("element"); c.select2("close") } }) }) }, d.prototype._detachCloseHandler = function(b) { a(document.body).off("mousedown.select2." + b.id) }, d.prototype.position = function(a, b) { var c = b.find(".selection"); c.append(a) }, d.prototype.destroy = function() { this._detachCloseHandler(this.container) }, d.prototype.update = function(a) { throw new Error("The `update` method must be defined in child classes.") }, d }), b.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], function(a, b, c, d) { function e() { e.__super__.constructor.apply(this, arguments) } return c.Extend(e, b), e.prototype.render = function() { var a = e.__super__.render.call(this); return a.addClass("select2-selection--single"), a.html(''), a }, e.prototype.bind = function(a, b) { var c = this; e.__super__.bind.apply(this, arguments); var d = a.id + "-container"; this.$selection.find(".select2-selection__rendered").attr("id", d), this.$selection.attr("aria-labelledby", d), this.$selection.on("mousedown", function(a) { 1 === a.which && c.trigger("toggle", { originalEvent: a }) }), this.$selection.on("focus", function(a) {}), this.$selection.on("blur", function(a) {}), a.on("selection:update", function(a) { c.update(a.data) }) }, e.prototype.clear = function() { this.$selection.find(".select2-selection__rendered").empty() }, e.prototype.display = function(a, b) { var c = this.options.get("templateSelection"), d = this.options.get("escapeMarkup"); return d(c(a, b)) }, e.prototype.selectionContainer = function() { return a("") }, e.prototype.update = function(a) { if (0 === a.length) return void this.clear(); var b = a[0], c = this.$selection.find(".select2-selection__rendered"), d = this.display(b, c); c.empty().append(d), c.prop("title", b.title || b.text) }, e }), b.define("select2/selection/multiple", ["jquery", "./base", "../utils"], function(a, b, c) { function d(a, b) { d.__super__.constructor.apply(this, arguments) } return c.Extend(d, b), d.prototype.render = function() { var a = d.__super__.render.call(this); return a.addClass("select2-selection--multiple"), a.html('
'), a }, d.prototype.bind = function(b, c) { var e = this; d.__super__.bind.apply(this, arguments), this.$selection.on("click", function(a) { e.trigger("toggle", { originalEvent: a }) }), this.$selection.on("click", ".select2-selection__choice__remove", function(b) { if (!e.options.get("disabled")) { var c = a(this), d = c.parent(), f = d.data("data"); e.trigger("unselect", { originalEvent: b, data: f }) } }) }, d.prototype.clear = function() { this.$selection.find(".select2-selection__rendered").empty() }, d.prototype.display = function(a, b) { var c = this.options.get("templateSelection"), d = this.options.get("escapeMarkup"); return d(c(a, b)) }, d.prototype.selectionContainer = function() { var b = a('
×
'); return b }, d.prototype.update = function(a) { if (this.clear(), 0 !== a.length) { for (var b = [], d = 0; d < a.length; d++) { var e = a[d], f = this.selectionContainer(), g = this.display(e, f); f.append(g), f.prop("title", e.title || e.text), f.data("data", e), b.push(f) } var h = this.$selection.find(".select2-selection__rendered"); c.appendMany(h, b) } }, d }), b.define("select2/selection/placeholder", ["../utils"], function(a) { function b(a, b, c) { this.placeholder = this.normalizePlaceholder(c.get("placeholder")), a.call(this, b, c) } return b.prototype.normalizePlaceholder = function(a, b) { return "string" == typeof b && (b = { id: "", text: b }), b }, b.prototype.createPlaceholder = function(a, b) { var c = this.selectionContainer(); return c.html(this.display(b)), c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), c }, b.prototype.update = function(a, b) { var c = 1 == b.length && b[0].id != this.placeholder.id, d = b.length > 1; if (d || c) return a.call(this, b); this.clear(); var e = this.createPlaceholder(this.placeholder); this.$selection.find(".select2-selection__rendered").append(e) }, b }), b.define("select2/selection/allowClear", ["jquery", "../keys"], function(a, b) { function c() {} return c.prototype.bind = function(a, b, c) { var d = this; a.call(this, b, c), null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."), this.$selection.on("mousedown", ".select2-selection__clear", function(a) { d._handleClear(a) }), b.on("keypress", function(a) { d._handleKeyboardClear(a, b) }) }, c.prototype._handleClear = function(a, b) { if (!this.options.get("disabled")) { var c = this.$selection.find(".select2-selection__clear"); if (0 !== c.length) { b.stopPropagation(); for (var d = c.data("data"), e = 0; e < d.length; e++) { var f = { data: d[e] }; if (this.trigger("unselect", f), f.prevented) return } this.$element.val(this.placeholder.id).trigger("change"), this.trigger("toggle", {}) } } }, c.prototype._handleKeyboardClear = function(a, c, d) { d.isOpen() || (c.which == b.DELETE || c.which == b.BACKSPACE) && this._handleClear(c) }, c.prototype.update = function(b, c) { if (b.call(this, c), !(this.$selection.find(".select2-selection__placeholder").length > 0 || 0 === c.length)) { var d = a('×'); d.data("data", c), this.$selection.find(".select2-selection__rendered").prepend(d) } }, c }), b.define("select2/selection/search", ["jquery", "../utils", "../keys"], function(a, b, c) { function d(a, b, c) { a.call(this, b, c) } return d.prototype.render = function(b) { var c = a(''); this.$searchContainer = c, this.$search = c.find("input"); var d = b.call(this); return this._transferTabIndex(), d }, d.prototype.bind = function(a, b, d) { var e = this; a.call(this, b, d), b.on("open", function() { e.$search.trigger("focus") }), b.on("close", function() { e.$search.val(""), e.$search.removeAttr("aria-activedescendant"), e.$search.trigger("focus") }), b.on("enable", function() { e.$search.prop("disabled", !1), e._transferTabIndex() }), b.on("disable", function() { e.$search.prop("disabled", !0) }), b.on("focus", function(a) { e.$search.trigger("focus") }), b.on("results:focus", function(a) { e.$search.attr("aria-activedescendant", a.id) }), this.$selection.on("focusin", ".select2-search--inline", function(a) { e.trigger("focus", a) }), this.$selection.on("focusout", ".select2-search--inline", function(a) { e._handleBlur(a) }), this.$selection.on("keydown", ".select2-search--inline", function(a) { a.stopPropagation(), e.trigger("keypress", a), e._keyUpPrevented = a.isDefaultPrevented(); var b = a.which; if (b === c.BACKSPACE && "" === e.$search.val()) { var d = e.$searchContainer.prev(".select2-selection__choice"); if (d.length > 0) { var f = d.data("data"); e.searchRemoveChoice(f), a.preventDefault() } } }); var f = document.documentMode, g = f && 11 >= f; this.$selection.on("input.searchcheck", ".select2-search--inline", function(a) { return g ? void e.$selection.off("input.search input.searchcheck") : void e.$selection.off("keyup.search") }), this.$selection.on("keyup.search input.search", ".select2-search--inline", function(a) { if (g && "input" === a.type) return void e.$selection.off("input.search input.searchcheck"); var b = a.which; b != c.SHIFT && b != c.CTRL && b != c.ALT && b != c.TAB && e.handleSearch(a) }) }, d.prototype._transferTabIndex = function(a) { this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1") }, d.prototype.createPlaceholder = function(a, b) { this.$search.attr("placeholder", b.text) }, d.prototype.update = function(a, b) { var c = this.$search[0] == document.activeElement; this.$search.attr("placeholder", ""), a.call(this, b), this.$selection.find(".select2-selection__rendered").append(this.$searchContainer), this.resizeSearch(), c && this.$search.focus() }, d.prototype.handleSearch = function() { if (this.resizeSearch(), !this._keyUpPrevented) { var a = this.$search.val(); this.trigger("query", { term: a }) } this._keyUpPrevented = !1 }, d.prototype.searchRemoveChoice = function(a, b) { this.trigger("unselect", { data: b }), this.$search.val(b.text), this.handleSearch() }, d.prototype.resizeSearch = function() { this.$search.css("width", "25px"); var a = ""; if ("" !== this.$search.attr("placeholder")) a = this.$selection.find(".select2-selection__rendered").innerWidth(); else { var b = this.$search.val().length + 1; a = .75 * b + "em" } this.$search.css("width", a) }, d }), b.define("select2/selection/eventRelay", ["jquery"], function(a) { function b() {} return b.prototype.bind = function(b, c, d) { var e = this, f = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting"], g = ["opening", "closing", "selecting", "unselecting"]; b.call(this, c, d), c.on("*", function(b, c) { if (-1 !== a.inArray(b, f)) { c = c || {}; var d = a.Event("select2:" + b, { params: c }); e.$element.trigger(d), -1 !== a.inArray(b, g) && (c.prevented = d.isDefaultPrevented()) } }) }, b }), b.define("select2/translation", ["jquery", "require"], function(a, b) { function c(a) { this.dict = a || {} } return c.prototype.all = function() { return this.dict }, c.prototype.get = function(a) { return this.dict[a] }, c.prototype.extend = function(b) { this.dict = a.extend({}, b.all(), this.dict) }, c._cache = {}, c.loadPath = function(a) { if (!(a in c._cache)) { var d = b(a); c._cache[a] = d } return new c(c._cache[a]) }, c }), b.define("select2/diacritics", [], function() { var a = { "Ⓐ": "A", "A": "A", "À": "A", "Á": "A", "Â": "A", "Ầ": "A", "Ấ": "A", "Ẫ": "A", "Ẩ": "A", "Ã": "A", "Ā": "A", "Ă": "A", "Ằ": "A", "Ắ": "A", "Ẵ": "A", "Ẳ": "A", "Ȧ": "A", "Ǡ": "A", "Ä": "A", "Ǟ": "A", "Ả": "A", "Å": "A", "Ǻ": "A", "Ǎ": "A", "Ȁ": "A", "Ȃ": "A", "Ạ": "A", "Ậ": "A", "Ặ": "A", "Ḁ": "A", "Ą": "A", "Ⱥ": "A", "Ɐ": "A", "Ꜳ": "AA", "Æ": "AE", "Ǽ": "AE", "Ǣ": "AE", "Ꜵ": "AO", "Ꜷ": "AU", "Ꜹ": "AV", "Ꜻ": "AV", "Ꜽ": "AY", "Ⓑ": "B", "B": "B", "Ḃ": "B", "Ḅ": "B", "Ḇ": "B", "Ƀ": "B", "Ƃ": "B", "Ɓ": "B", "Ⓒ": "C", "C": "C", "Ć": "C", "Ĉ": "C", "Ċ": "C", "Č": "C", "Ç": "C", "Ḉ": "C", "Ƈ": "C", "Ȼ": "C", "Ꜿ": "C", "Ⓓ": "D", "D": "D", "Ḋ": "D", "Ď": "D", "Ḍ": "D", "Ḑ": "D", "Ḓ": "D", "Ḏ": "D", "Đ": "D", "Ƌ": "D", "Ɗ": "D", "Ɖ": "D", "Ꝺ": "D", "DZ": "DZ", "DŽ": "DZ", "Dz": "Dz", "Dž": "Dz", "Ⓔ": "E", "E": "E", "È": "E", "É": "E", "Ê": "E", "Ề": "E", "Ế": "E", "Ễ": "E", "Ể": "E", "Ẽ": "E", "Ē": "E", "Ḕ": "E", "Ḗ": "E", "Ĕ": "E", "Ė": "E", "Ë": "E", "Ẻ": "E", "Ě": "E", "Ȅ": "E", "Ȇ": "E", "Ẹ": "E", "Ệ": "E", "Ȩ": "E", "Ḝ": "E", "Ę": "E", "Ḙ": "E", "Ḛ": "E", "Ɛ": "E", "Ǝ": "E", "Ⓕ": "F", "F": "F", "Ḟ": "F", "Ƒ": "F", "Ꝼ": "F", "Ⓖ": "G", "G": "G", "Ǵ": "G", "Ĝ": "G", "Ḡ": "G", "Ğ": "G", "Ġ": "G", "Ǧ": "G", "Ģ": "G", "Ǥ": "G", "Ɠ": "G", "Ꞡ": "G", "Ᵹ": "G", "Ꝿ": "G", "Ⓗ": "H", "H": "H", "Ĥ": "H", "Ḣ": "H", "Ḧ": "H", "Ȟ": "H", "Ḥ": "H", "Ḩ": "H", "Ḫ": "H", "Ħ": "H", "Ⱨ": "H", "Ⱶ": "H", "Ɥ": "H", "Ⓘ": "I", "I": "I", "Ì": "I", "Í": "I", "Î": "I", "Ĩ": "I", "Ī": "I", "Ĭ": "I", "İ": "I", "Ï": "I", "Ḯ": "I", "Ỉ": "I", "Ǐ": "I", "Ȉ": "I", "Ȋ": "I", "Ị": "I", "Į": "I", "Ḭ": "I", "Ɨ": "I", "Ⓙ": "J", "J": "J", "Ĵ": "J", "Ɉ": "J", "Ⓚ": "K", "K": "K", "Ḱ": "K", "Ǩ": "K", "Ḳ": "K", "Ķ": "K", "Ḵ": "K", "Ƙ": "K", "Ⱪ": "K", "Ꝁ": "K", "Ꝃ": "K", "Ꝅ": "K", "Ꞣ": "K", "Ⓛ": "L", "L": "L", "Ŀ": "L", "Ĺ": "L", "Ľ": "L", "Ḷ": "L", "Ḹ": "L", "Ļ": "L", "Ḽ": "L", "Ḻ": "L", "Ł": "L", "Ƚ": "L", "Ɫ": "L", "Ⱡ": "L", "Ꝉ": "L", "Ꝇ": "L", "Ꞁ": "L", "LJ": "LJ", "Lj": "Lj", "Ⓜ": "M", "M": "M", "Ḿ": "M", "Ṁ": "M", "Ṃ": "M", "Ɱ": "M", "Ɯ": "M", "Ⓝ": "N", "N": "N", "Ǹ": "N", "Ń": "N", "Ñ": "N", "Ṅ": "N", "Ň": "N", "Ṇ": "N", "Ņ": "N", "Ṋ": "N", "Ṉ": "N", "Ƞ": "N", "Ɲ": "N", "Ꞑ": "N", "Ꞥ": "N", "NJ": "NJ", "Nj": "Nj", "Ⓞ": "O", "O": "O", "Ò": "O", "Ó": "O", "Ô": "O", "Ồ": "O", "Ố": "O", "Ỗ": "O", "Ổ": "O", "Õ": "O", "Ṍ": "O", "Ȭ": "O", "Ṏ": "O", "Ō": "O", "Ṑ": "O", "Ṓ": "O", "Ŏ": "O", "Ȯ": "O", "Ȱ": "O", "Ö": "O", "Ȫ": "O", "Ỏ": "O", "Ő": "O", "Ǒ": "O", "Ȍ": "O", "Ȏ": "O", "Ơ": "O", "Ờ": "O", "Ớ": "O", "Ỡ": "O", "Ở": "O", "Ợ": "O", "Ọ": "O", "Ộ": "O", "Ǫ": "O", "Ǭ": "O", "Ø": "O", "Ǿ": "O", "Ɔ": "O", "Ɵ": "O", "Ꝋ": "O", "Ꝍ": "O", "Ƣ": "OI", "Ꝏ": "OO", "Ȣ": "OU", "Ⓟ": "P", "P": "P", "Ṕ": "P", "Ṗ": "P", "Ƥ": "P", "Ᵽ": "P", "Ꝑ": "P", "Ꝓ": "P", "Ꝕ": "P", "Ⓠ": "Q", "Q": "Q", "Ꝗ": "Q", "Ꝙ": "Q", "Ɋ": "Q", "Ⓡ": "R", "R": "R", "Ŕ": "R", "Ṙ": "R", "Ř": "R", "Ȑ": "R", "Ȓ": "R", "Ṛ": "R", "Ṝ": "R", "Ŗ": "R", "Ṟ": "R", "Ɍ": "R", "Ɽ": "R", "Ꝛ": "R", "Ꞧ": "R", "Ꞃ": "R", "Ⓢ": "S", "S": "S", "ẞ": "S", "Ś": "S", "Ṥ": "S", "Ŝ": "S", "Ṡ": "S", "Š": "S", "Ṧ": "S", "Ṣ": "S", "Ṩ": "S", "Ș": "S", "Ş": "S", "Ȿ": "S", "Ꞩ": "S", "Ꞅ": "S", "Ⓣ": "T", "T": "T", "Ṫ": "T", "Ť": "T", "Ṭ": "T", "Ț": "T", "Ţ": "T", "Ṱ": "T", "Ṯ": "T", "Ŧ": "T", "Ƭ": "T", "Ʈ": "T", "Ⱦ": "T", "Ꞇ": "T", "Ꜩ": "TZ", "Ⓤ": "U", "U": "U", "Ù": "U", "Ú": "U", "Û": "U", "Ũ": "U", "Ṹ": "U", "Ū": "U", "Ṻ": "U", "Ŭ": "U", "Ü": "U", "Ǜ": "U", "Ǘ": "U", "Ǖ": "U", "Ǚ": "U", "Ủ": "U", "Ů": "U", "Ű": "U", "Ǔ": "U", "Ȕ": "U", "Ȗ": "U", "Ư": "U", "Ừ": "U", "Ứ": "U", "Ữ": "U", "Ử": "U", "Ự": "U", "Ụ": "U", "Ṳ": "U", "Ų": "U", "Ṷ": "U", "Ṵ": "U", "Ʉ": "U", "Ⓥ": "V", "V": "V", "Ṽ": "V", "Ṿ": "V", "Ʋ": "V", "Ꝟ": "V", "Ʌ": "V", "Ꝡ": "VY", "Ⓦ": "W", "W": "W", "Ẁ": "W", "Ẃ": "W", "Ŵ": "W", "Ẇ": "W", "Ẅ": "W", "Ẉ": "W", "Ⱳ": "W", "Ⓧ": "X", "X": "X", "Ẋ": "X", "Ẍ": "X", "Ⓨ": "Y", "Y": "Y", "Ỳ": "Y", "Ý": "Y", "Ŷ": "Y", "Ỹ": "Y", "Ȳ": "Y", "Ẏ": "Y", "Ÿ": "Y", "Ỷ": "Y", "Ỵ": "Y", "Ƴ": "Y", "Ɏ": "Y", "Ỿ": "Y", "Ⓩ": "Z", "Z": "Z", "Ź": "Z", "Ẑ": "Z", "Ż": "Z", "Ž": "Z", "Ẓ": "Z", "Ẕ": "Z", "Ƶ": "Z", "Ȥ": "Z", "Ɀ": "Z", "Ⱬ": "Z", "Ꝣ": "Z", "ⓐ": "a", "a": "a", "ẚ": "a", "à": "a", "á": "a", "â": "a", "ầ": "a", "ấ": "a", "ẫ": "a", "ẩ": "a", "ã": "a", "ā": "a", "ă": "a", "ằ": "a", "ắ": "a", "ẵ": "a", "ẳ": "a", "ȧ": "a", "ǡ": "a", "ä": "a", "ǟ": "a", "ả": "a", "å": "a", "ǻ": "a", "ǎ": "a", "ȁ": "a", "ȃ": "a", "ạ": "a", "ậ": "a", "ặ": "a", "ḁ": "a", "ą": "a", "ⱥ": "a", "ɐ": "a", "ꜳ": "aa", "æ": "ae", "ǽ": "ae", "ǣ": "ae", "ꜵ": "ao", "ꜷ": "au", "ꜹ": "av", "ꜻ": "av", "ꜽ": "ay", "ⓑ": "b", "b": "b", "ḃ": "b", "ḅ": "b", "ḇ": "b", "ƀ": "b", "ƃ": "b", "ɓ": "b", "ⓒ": "c", "c": "c", "ć": "c", "ĉ": "c", "ċ": "c", "č": "c", "ç": "c", "ḉ": "c", "ƈ": "c", "ȼ": "c", "ꜿ": "c", "ↄ": "c", "ⓓ": "d", "d": "d", "ḋ": "d", "ď": "d", "ḍ": "d", "ḑ": "d", "ḓ": "d", "ḏ": "d", "đ": "d", "ƌ": "d", "ɖ": "d", "ɗ": "d", "ꝺ": "d", "dz": "dz", "dž": "dz", "ⓔ": "e", "e": "e", "è": "e", "é": "e", "ê": "e", "ề": "e", "ế": "e", "ễ": "e", "ể": "e", "ẽ": "e", "ē": "e", "ḕ": "e", "ḗ": "e", "ĕ": "e", "ė": "e", "ë": "e", "ẻ": "e", "ě": "e", "ȅ": "e", "ȇ": "e", "ẹ": "e", "ệ": "e", "ȩ": "e", "ḝ": "e", "ę": "e", "ḙ": "e", "ḛ": "e", "ɇ": "e", "ɛ": "e", "ǝ": "e", "ⓕ": "f", "f": "f", "ḟ": "f", "ƒ": "f", "ꝼ": "f", "ⓖ": "g", "g": "g", "ǵ": "g", "ĝ": "g", "ḡ": "g", "ğ": "g", "ġ": "g", "ǧ": "g", "ģ": "g", "ǥ": "g", "ɠ": "g", "ꞡ": "g", "ᵹ": "g", "ꝿ": "g", "ⓗ": "h", "h": "h", "ĥ": "h", "ḣ": "h", "ḧ": "h", "ȟ": "h", "ḥ": "h", "ḩ": "h", "ḫ": "h", "ẖ": "h", "ħ": "h", "ⱨ": "h", "ⱶ": "h", "ɥ": "h", "ƕ": "hv", "ⓘ": "i", "i": "i", "ì": "i", "í": "i", "î": "i", "ĩ": "i", "ī": "i", "ĭ": "i", "ï": "i", "ḯ": "i", "ỉ": "i", "ǐ": "i", "ȉ": "i", "ȋ": "i", "ị": "i", "į": "i", "ḭ": "i", "ɨ": "i", "ı": "i", "ⓙ": "j", "j": "j", "ĵ": "j", "ǰ": "j", "ɉ": "j", "ⓚ": "k", "k": "k", "ḱ": "k", "ǩ": "k", "ḳ": "k", "ķ": "k", "ḵ": "k", "ƙ": "k", "ⱪ": "k", "ꝁ": "k", "ꝃ": "k", "ꝅ": "k", "ꞣ": "k", "ⓛ": "l", "l": "l", "ŀ": "l", "ĺ": "l", "ľ": "l", "ḷ": "l", "ḹ": "l", "ļ": "l", "ḽ": "l", "ḻ": "l", "ſ": "l", "ł": "l", "ƚ": "l", "ɫ": "l", "ⱡ": "l", "ꝉ": "l", "ꞁ": "l", "ꝇ": "l", "lj": "lj", "ⓜ": "m", "m": "m", "ḿ": "m", "ṁ": "m", "ṃ": "m", "ɱ": "m", "ɯ": "m", "ⓝ": "n", "n": "n", "ǹ": "n", "ń": "n", "ñ": "n", "ṅ": "n", "ň": "n", "ṇ": "n", "ņ": "n", "ṋ": "n", "ṉ": "n", "ƞ": "n", "ɲ": "n", "ʼn": "n", "ꞑ": "n", "ꞥ": "n", "nj": "nj", "ⓞ": "o", "o": "o", "ò": "o", "ó": "o", "ô": "o", "ồ": "o", "ố": "o", "ỗ": "o", "ổ": "o", "õ": "o", "ṍ": "o", "ȭ": "o", "ṏ": "o", "ō": "o", "ṑ": "o", "ṓ": "o", "ŏ": "o", "ȯ": "o", "ȱ": "o", "ö": "o", "ȫ": "o", "ỏ": "o", "ő": "o", "ǒ": "o", "ȍ": "o", "ȏ": "o", "ơ": "o", "ờ": "o", "ớ": "o", "ỡ": "o", "ở": "o", "ợ": "o", "ọ": "o", "ộ": "o", "ǫ": "o", "ǭ": "o", "ø": "o", "ǿ": "o", "ɔ": "o", "ꝋ": "o", "ꝍ": "o", "ɵ": "o", "ƣ": "oi", "ȣ": "ou", "ꝏ": "oo", "ⓟ": "p", "p": "p", "ṕ": "p", "ṗ": "p", "ƥ": "p", "ᵽ": "p", "ꝑ": "p", "ꝓ": "p", "ꝕ": "p", "ⓠ": "q", "q": "q", "ɋ": "q", "ꝗ": "q", "ꝙ": "q", "ⓡ": "r", "r": "r", "ŕ": "r", "ṙ": "r", "ř": "r", "ȑ": "r", "ȓ": "r", "ṛ": "r", "ṝ": "r", "ŗ": "r", "ṟ": "r", "ɍ": "r", "ɽ": "r", "ꝛ": "r", "ꞧ": "r", "ꞃ": "r", "ⓢ": "s", "s": "s", "ß": "s", "ś": "s", "ṥ": "s", "ŝ": "s", "ṡ": "s", "š": "s", "ṧ": "s", "ṣ": "s", "ṩ": "s", "ș": "s", "ş": "s", "ȿ": "s", "ꞩ": "s", "ꞅ": "s", "ẛ": "s", "ⓣ": "t", "t": "t", "ṫ": "t", "ẗ": "t", "ť": "t", "ṭ": "t", "ț": "t", "ţ": "t", "ṱ": "t", "ṯ": "t", "ŧ": "t", "ƭ": "t", "ʈ": "t", "ⱦ": "t", "ꞇ": "t", "ꜩ": "tz", "ⓤ": "u", "u": "u", "ù": "u", "ú": "u", "û": "u", "ũ": "u", "ṹ": "u", "ū": "u", "ṻ": "u", "ŭ": "u", "ü": "u", "ǜ": "u", "ǘ": "u", "ǖ": "u", "ǚ": "u", "ủ": "u", "ů": "u", "ű": "u", "ǔ": "u", "ȕ": "u", "ȗ": "u", "ư": "u", "ừ": "u", "ứ": "u", "ữ": "u", "ử": "u", "ự": "u", "ụ": "u", "ṳ": "u", "ų": "u", "ṷ": "u", "ṵ": "u", "ʉ": "u", "ⓥ": "v", "v": "v", "ṽ": "v", "ṿ": "v", "ʋ": "v", "ꝟ": "v", "ʌ": "v", "ꝡ": "vy", "ⓦ": "w", "w": "w", "ẁ": "w", "ẃ": "w", "ŵ": "w", "ẇ": "w", "ẅ": "w", "ẘ": "w", "ẉ": "w", "ⱳ": "w", "ⓧ": "x", "x": "x", "ẋ": "x", "ẍ": "x", "ⓨ": "y", "y": "y", "ỳ": "y", "ý": "y", "ŷ": "y", "ỹ": "y", "ȳ": "y", "ẏ": "y", "ÿ": "y", "ỷ": "y", "ẙ": "y", "ỵ": "y", "ƴ": "y", "ɏ": "y", "ỿ": "y", "ⓩ": "z", "z": "z", "ź": "z", "ẑ": "z", "ż": "z", "ž": "z", "ẓ": "z", "ẕ": "z", "ƶ": "z", "ȥ": "z", "ɀ": "z", "ⱬ": "z", "ꝣ": "z", "Ά": "Α", "Έ": "Ε", "Ή": "Η", "Ί": "Ι", "Ϊ": "Ι", "Ό": "Ο", "Ύ": "Υ", "Ϋ": "Υ", "Ώ": "Ω", "ά": "α", "έ": "ε", "ή": "η", "ί": "ι", "ϊ": "ι", "ΐ": "ι", "ό": "ο", "ύ": "υ", "ϋ": "υ", "ΰ": "υ", "ω": "ω", "ς": "σ" }; return a }), b.define("select2/data/base", ["../utils"], function(a) { function b(a, c) { b.__super__.constructor.call(this) } return a.Extend(b, a.Observable), b.prototype.current = function(a) { throw new Error("The `current` method must be defined in child classes.") }, b.prototype.query = function(a, b) { throw new Error("The `query` method must be defined in child classes.") }, b.prototype.bind = function(a, b) {}, b.prototype.destroy = function() {}, b.prototype.generateResultId = function(b, c) { var d = b.id + "-result-"; return d += a.generateChars(4), d += null != c.id ? "-" + c.id.toString() : "-" + a.generateChars(4) }, b }), b.define("select2/data/select", ["./base", "../utils", "jquery"], function(a, b, c) { function d(a, b) { this.$element = a, this.options = b, d.__super__.constructor.call(this) } return b.Extend(d, a), d.prototype.current = function(a) { var b = [], d = this; this.$element.find(":selected").each(function() { var a = c(this), e = d.item(a); b.push(e) }), a(b) }, d.prototype.select = function(a) { var b = this; if (a.selected = !0, c(a.element).is("option")) return a.element.selected = !0, void this.$element.trigger("change"); if (this.$element.prop("multiple")) this.current(function(d) { var e = []; a = [a], a.push.apply(a, d); for (var f = 0; f < a.length; f++) { var g = a[f].id; - 1 === c.inArray(g, e) && e.push(g) } b.$element.val(e), b.$element.trigger("change") }); else { var d = a.id; this.$element.val(d), this.$element.trigger("change") } }, d.prototype.unselect = function(a) { var b = this; if (this.$element.prop("multiple")) return a.selected = !1, c(a.element).is("option") ? (a.element.selected = !1, void this.$element.trigger("change")) : void this.current(function(d) { for (var e = [], f = 0; f < d.length; f++) { var g = d[f].id; g !== a.id && -1 === c.inArray(g, e) && e.push(g) } b.$element.val(e), b.$element.trigger("change") }) }, d.prototype.bind = function(a, b) { var c = this; this.container = a, a.on("select", function(a) { c.select(a.data) }), a.on("unselect", function(a) { c.unselect(a.data) }) }, d.prototype.destroy = function() { this.$element.find("*").each(function() { c.removeData(this, "data") }) }, d.prototype.query = function(a, b) { var d = [], e = this, f = this.$element.children(); f.each(function() { var b = c(this); if (b.is("option") || b.is("optgroup")) { var f = e.item(b), g = e.matches(a, f); null !== g && d.push(g) } }), b({ results: d }) }, d.prototype.addOptions = function(a) { b.appendMany(this.$element, a) }, d.prototype.option = function(a) { var b; a.children ? (b = document.createElement("optgroup"), b.label = a.text) : (b = document.createElement("option"), void 0 !== b.textContent ? b.textContent = a.text : b.innerText = a.text), a.id && (b.value = a.id), a.disabled && (b.disabled = !0), a.selected && (b.selected = !0), a.title && (b.title = a.title); var d = c(b), e = this._normalizeItem(a); return e.element = b, c.data(b, "data", e), d }, d.prototype.item = function(a) { var b = {}; if (b = c.data(a[0], "data"), null != b) return b; if (a.is("option")) b = { id: a.val(), text: a.text(), disabled: a.prop("disabled"), selected: a.prop("selected"), title: a.prop("title") }; else if (a.is("optgroup")) { b = { text: a.prop("label"), children: [], title: a.prop("title") }; for (var d = a.children("option"), e = [], f = 0; f < d.length; f++) { var g = c(d[f]), h = this.item(g); e.push(h) } b.children = e } return b = this._normalizeItem(b), b.element = a[0], c.data(a[0], "data", b), b }, d.prototype._normalizeItem = function(a) { c.isPlainObject(a) || (a = { id: a, text: a }), a = c.extend({}, { text: "" }, a); var b = { selected: !1, disabled: !1 }; return null != a.id && (a.id = a.id.toString()), null != a.text && (a.text = a.text.toString()), null == a._resultId && a.id && null != this.container && (a._resultId = this.generateResultId(this.container, a)), c.extend({}, b, a) }, d.prototype.matches = function(a, b) { var c = this.options.get("matcher"); return c(a, b) }, d }), b.define("select2/data/array", ["./select", "../utils", "jquery"], function(a, b, c) { function d(a, b) { var c = b.get("data") || []; d.__super__.constructor.call(this, a, b), this.addOptions(this.convertToOptions(c)) } return b.Extend(d, a), d.prototype.select = function(a) { var b = this.$element.find("option").filter(function(b, c) { return c.value == a.id.toString() }); 0 === b.length && (b = this.option(a), this.addOptions(b)), d.__super__.select.call(this, a) }, d.prototype.convertToOptions = function(a) { function d(a) { return function() { return c(this).val() == a.id } } for (var e = this, f = this.$element.find("option"), g = f.map(function() { return e.item(c(this)).id }).get(), h = [], i = 0; i < a.length; i++) { var j = this._normalizeItem(a[i]); if (c.inArray(j.id, g) >= 0) { var k = f.filter(d(j)), l = this.item(k), m = c.extend(!0, {}, j, l), n = this.option(m); k.replaceWith(n) } else { var o = this.option(j); if (j.children) { var p = this.convertToOptions(j.children); b.appendMany(o, p) } h.push(o) } } return h }, d }), b.define("select2/data/ajax", ["./array", "../utils", "jquery"], function(a, b, c) { function d(a, b) { this.ajaxOptions = this._applyDefaults(b.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), d.__super__.constructor.call(this, a, b) } return b.Extend(d, a), d.prototype._applyDefaults = function(a) { var b = { data: function(a) { return c.extend({}, a, { q: a.term }) }, transport: function(a, b, d) { var e = c.ajax(a); return e.then(b), e.fail(d), e } }; return c.extend({}, b, a, !0) }, d.prototype.processResults = function(a) { return a }, d.prototype.query = function(a, b) { function d() { var d = f.transport(f, function(d) { var f = e.processResults(d, a); e.options.get("debug") && window.console && console.error && (f && f.results && c.isArray(f.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")), b(f) }, function() { e.trigger("results:message", { message: "errorLoading" }) }); e._request = d } var e = this; null != this._request && (c.isFunction(this._request.abort) && this._request.abort(), this._request = null); var f = c.extend({ type: "GET" }, this.ajaxOptions); "function" == typeof f.url && (f.url = f.url.call(this.$element, a)), "function" == typeof f.data && (f.data = f.data.call(this.$element, a)), this.ajaxOptions.delay && "" !== a.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(d, this.ajaxOptions.delay)) : d() }, d }), b.define("select2/data/tags", ["jquery"], function(a) { function b(b, c, d) { var e = d.get("tags"), f = d.get("createTag"); void 0 !== f && (this.createTag = f); var g = d.get("insertTag"); if (void 0 !== g && (this.insertTag = g), b.call(this, c, d), a.isArray(e)) for (var h = 0; h < e.length; h++) { var i = e[h], j = this._normalizeItem(i), k = this.option(j); this.$element.append(k) } } return b.prototype.query = function(a, b, c) { function d(a, f) { for (var g = a.results, h = 0; h < g.length; h++) { var i = g[h], j = null != i.children && !d({ results: i.children }, !0), k = i.text === b.term; if (k || j) return f ? !1 : (a.data = g, void c(a)) } if (f) return !0; var l = e.createTag(b); if (null != l) { var m = e.option(l); m.attr("data-select2-tag", !0), e.addOptions([m]), e.insertTag(g, l) } a.results = g, c(a) } var e = this; return this._removeOldTags(), null == b.term || null != b.page ? void a.call(this, b, c) : void a.call(this, b, d) }, b.prototype.createTag = function(b, c) { var d = a.trim(c.term); return "" === d ? null : { id: d, text: d } }, b.prototype.insertTag = function(a, b, c) { b.unshift(c) }, b.prototype._removeOldTags = function(b) { var c = (this._lastTag, this.$element.find("option[data-select2-tag]")); c.each(function() { this.selected || a(this).remove() }) }, b }), b.define("select2/data/tokenizer", ["jquery"], function(a) { function b(a, b, c) { var d = c.get("tokenizer"); void 0 !== d && (this.tokenizer = d), a.call(this, b, c) } return b.prototype.bind = function(a, b, c) { a.call(this, b, c), this.$search = b.dropdown.$search || b.selection.$search || c.find(".select2-search__field") }, b.prototype.query = function(a, b, c) { function d(a) { e.trigger("select", { data: a }) } var e = this; b.term = b.term || ""; var f = this.tokenizer(b, this.options, d); f.term !== b.term && (this.$search.length && (this.$search.val(f.term), this.$search.focus()), b.term = f.term), a.call(this, b, c) }, b.prototype.tokenizer = function(b, c, d, e) { for (var f = d.get("tokenSeparators") || [], g = c.term, h = 0, i = this.createTag || function(a) { return { id: a.term, text: a.term } }; h < g.length;) { var j = g[h]; if (-1 !== a.inArray(j, f)) { var k = g.substr(0, h), l = a.extend({}, c, { term: k }), m = i(l); null != m ? (e(m), g = g.substr(h + 1) || "", h = 0) : h++ } else h++ } return { term: g } }, b }), b.define("select2/data/minimumInputLength", [], function() { function a(a, b, c) { this.minimumInputLength = c.get("minimumInputLength"), a.call(this, b, c) } return a.prototype.query = function(a, b, c) { return b.term = b.term || "", b.term.length < this.minimumInputLength ? void this.trigger("results:message", { message: "inputTooShort", args: { minimum: this.minimumInputLength, input: b.term, params: b } }) : void a.call(this, b, c) }, a }), b.define("select2/data/maximumInputLength", [], function() { function a(a, b, c) { this.maximumInputLength = c.get("maximumInputLength"), a.call(this, b, c) } return a.prototype.query = function(a, b, c) { return b.term = b.term || "", this.maximumInputLength > 0 && b.term.length > this.maximumInputLength ? void this.trigger("results:message", { message: "inputTooLong", args: { maximum: this.maximumInputLength, input: b.term, params: b } }) : void a.call(this, b, c) }, a }), b.define("select2/data/maximumSelectionLength", [], function() { function a(a, b, c) { this.maximumSelectionLength = c.get("maximumSelectionLength"), a.call(this, b, c) } return a.prototype.query = function(a, b, c) { var d = this; this.current(function(e) { var f = null != e ? e.length : 0; return d.maximumSelectionLength > 0 && f >= d.maximumSelectionLength ? void d.trigger("results:message", { message: "maximumSelected", args: { maximum: d.maximumSelectionLength } }) : void a.call(d, b, c) }) }, a }), b.define("select2/dropdown", ["jquery", "./utils"], function(a, b) { function c(a, b) { this.$element = a, this.options = b, c.__super__.constructor.call(this) } return b.Extend(c, b.Observable), c.prototype.render = function() { var b = a(''); return b.attr("dir", this.options.get("dir")), this.$dropdown = b, b }, c.prototype.bind = function() {}, c.prototype.position = function(a, b) {}, c.prototype.destroy = function() { this.$dropdown.remove() }, c }), b.define("select2/dropdown/search", ["jquery", "../utils"], function(a, b) { function c() {} return c.prototype.render = function(b) { var c = b.call(this), d = a(''); return this.$searchContainer = d, this.$search = d.find("input"), c.prepend(d), c }, c.prototype.bind = function(b, c, d) { var e = this; b.call(this, c, d), this.$search.on("keydown", function(a) { e.trigger("keypress", a), e._keyUpPrevented = a.isDefaultPrevented() }), this.$search.on("input", function(b) { a(this).off("keyup") }), this.$search.on("keyup input", function(a) { e.handleSearch(a) }), c.on("open", function() { e.$search.attr("tabindex", 0), e.$search.focus(), window.setTimeout(function() { e.$search.focus() }, 0) }), c.on("close", function() { e.$search.attr("tabindex", -1), e.$search.val("") }), c.on("results:all", function(a) { if (null == a.query.term || "" === a.query.term) { var b = e.showSearch(a); b ? e.$searchContainer.removeClass("select2-search--hide") : e.$searchContainer.addClass("select2-search--hide") } }) }, c.prototype.handleSearch = function(a) { if (!this._keyUpPrevented) { var b = this.$search.val(); this.trigger("query", { term: b }) } this._keyUpPrevented = !1 }, c.prototype.showSearch = function(a, b) { return !0 }, c }), b.define("select2/dropdown/hidePlaceholder", [], function() { function a(a, b, c, d) { this.placeholder = this.normalizePlaceholder(c.get("placeholder")), a.call(this, b, c, d) } return a.prototype.append = function(a, b) { b.results = this.removePlaceholder(b.results), a.call(this, b) }, a.prototype.normalizePlaceholder = function(a, b) { return "string" == typeof b && (b = { id: "", text: b }), b }, a.prototype.removePlaceholder = function(a, b) { for (var c = b.slice(0), d = b.length - 1; d >= 0; d--) { var e = b[d]; this.placeholder.id === e.id && c.splice(d, 1) } return c }, a }), b.define("select2/dropdown/infiniteScroll", ["jquery"], function(a) { function b(a, b, c, d) { this.lastParams = {}, a.call(this, b, c, d), this.$loadingMore = this.createLoadingMore(), this.loading = !1 } return b.prototype.append = function(a, b) { this.$loadingMore.remove(), this.loading = !1, a.call(this, b), this.showLoadingMore(b) && this.$results.append(this.$loadingMore) }, b.prototype.bind = function(b, c, d) { var e = this; b.call(this, c, d), c.on("query", function(a) { e.lastParams = a, e.loading = !0 }), c.on("query:append", function(a) { e.lastParams = a, e.loading = !0 }), this.$results.on("scroll", function() { var b = a.contains(document.documentElement, e.$loadingMore[0]); if (!e.loading && b) { var c = e.$results.offset().top + e.$results.outerHeight(!1), d = e.$loadingMore.offset().top + e.$loadingMore.outerHeight(!1); c + 50 >= d && e.loadMore() } }) }, b.prototype.loadMore = function() { this.loading = !0; var b = a.extend({}, { page: 1 }, this.lastParams); b.page++, this.trigger("query:append", b) }, b.prototype.showLoadingMore = function(a, b) { return b.pagination && b.pagination.more }, b.prototype.createLoadingMore = function() { var b = a(''), c = this.options.get("translations").get("loadingMore"); return b.html(c(this.lastParams)), b }, b }), b.define("select2/dropdown/attachBody", ["jquery", "../utils"], function(a, b) { function c(b, c, d) { this.$dropdownParent = d.get("dropdownParent") || a(document.body), b.call(this, c, d) } return c.prototype.bind = function(a, b, c) { var d = this, e = !1; a.call(this, b, c), b.on("open", function() { d._showDropdown(), d._attachPositioningHandler(b), e || (e = !0, b.on("results:all", function() { d._positionDropdown(), d._resizeDropdown() }), b.on("results:append", function() { d._positionDropdown(), d._resizeDropdown() })) }), b.on("close", function() { d._hideDropdown(), d._detachPositioningHandler(b) }), this.$dropdownContainer.on("mousedown", function(a) { a.stopPropagation() }) }, c.prototype.destroy = function(a) { a.call(this), this.$dropdownContainer.remove() }, c.prototype.position = function(a, b, c) { b.attr("class", c.attr("class")), b.removeClass("select2"), b.addClass("select2-container--open"), b.css({ position: "absolute", top: -999999 }), this.$container = c }, c.prototype.render = function(b) { var c = a(""), d = b.call(this); return c.append(d), this.$dropdownContainer = c, c }, c.prototype._hideDropdown = function(a) { this.$dropdownContainer.detach() }, c.prototype._attachPositioningHandler = function(c, d) { var e = this, f = "scroll.select2." + d.id, g = "resize.select2." + d.id, h = "orientationchange.select2." + d.id, i = this.$container.parents().filter(b.hasScroll); i.each(function() { a(this).data("select2-scroll-position", { x: a(this).scrollLeft(), y: a(this).scrollTop() }) }), i.on(f, function(b) { var c = a(this).data("select2-scroll-position"); a(this).scrollTop(c.y) }), a(window).on(f + " " + g + " " + h, function(a) { e._positionDropdown(), e._resizeDropdown() }) }, c.prototype._detachPositioningHandler = function(c, d) { var e = "scroll.select2." + d.id, f = "resize.select2." + d.id, g = "orientationchange.select2." + d.id, h = this.$container.parents().filter(b.hasScroll); h.off(e), a(window).off(e + " " + f + " " + g) }, c.prototype._positionDropdown = function() { var b = a(window), c = this.$dropdown.hasClass("select2-dropdown--above"), d = this.$dropdown.hasClass("select2-dropdown--below"), e = null, f = this.$container.offset(); f.bottom = f.top + this.$container.outerHeight(!1); var g = { height: this.$container.outerHeight(!1) }; g.top = f.top, g.bottom = f.top + g.height; var h = { height: this.$dropdown.outerHeight(!1) }, i = { top: b.scrollTop(), bottom: b.scrollTop() + b.height() }, j = i.top < f.top - h.height, k = i.bottom > f.bottom + h.height, l = { left: f.left, top: g.bottom }, m = this.$dropdownParent; "static" === m.css("position") && (m = m.offsetParent()); var n = m.offset(); l.top -= n.top, l.left -= n.left, c || d || (e = "below"), k || !j || c ? !j && k && c && (e = "below") : e = "above", ("above" == e || c && "below" !== e) && (l.top = g.top - h.height), null != e && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + e), this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + e)), this.$dropdownContainer.css(l) }, c.prototype._resizeDropdown = function() { var a = { width: this.$container.outerWidth(!1) + "px" }; this.options.get("dropdownAutoWidth") && (a.minWidth = a.width, a.width = "auto"), this.$dropdown.css(a) }, c.prototype._showDropdown = function(a) { this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown() }, c }), b.define("select2/dropdown/minimumResultsForSearch", [], function() { function a(b) { for (var c = 0, d = 0; d < b.length; d++) { var e = b[d]; e.children ? c += a(e.children) : c++ } return c } function b(a, b, c, d) { this.minimumResultsForSearch = c.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), a.call(this, b, c, d) } return b.prototype.showSearch = function(b, c) { return a(c.data.results) < this.minimumResultsForSearch ? !1 : b.call(this, c) }, b }), b.define("select2/dropdown/selectOnClose", [], function() { function a() {} return a.prototype.bind = function(a, b, c) { var d = this; a.call(this, b, c), b.on("close", function() { d._handleSelectOnClose() }) }, a.prototype._handleSelectOnClose = function() { var a = this.getHighlightedResults(); if (!(a.length < 1)) { var b = a.data("data"); null != b.element && b.element.selected || null == b.element && b.selected || this.trigger("select", { data: b }) } }, a }), b.define("select2/dropdown/closeOnSelect", [], function() { function a() {} return a.prototype.bind = function(a, b, c) { var d = this; a.call(this, b, c), b.on("select", function(a) { d._selectTriggered(a) }), b.on("unselect", function(a) { d._selectTriggered(a) }) }, a.prototype._selectTriggered = function(a, b) { var c = b.originalEvent; c && c.ctrlKey || this.trigger("close", {}) }, a }), b.define("select2/i18n/en", [], function() { return { errorLoading: function() { return "The results could not be loaded." }, inputTooLong: function(a) { var b = a.input.length - a.maximum, c = "Please delete " + b + " character"; return 1 != b && (c += "s"), c }, inputTooShort: function(a) { var b = a.minimum - a.input.length, c = "Please enter " + b + " or more characters"; return c }, loadingMore: function() { return "Loading more results…" }, maximumSelected: function(a) { var b = "You can only select " + a.maximum + " item"; return 1 != a.maximum && (b += "s"), b }, noResults: function() { return "No results found" }, searching: function() { return "Searching…" } } }), b.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C) { function D() { this.reset() } D.prototype.apply = function(l) { if (l = a.extend(!0, {}, this.defaults, l), null == l.dataAdapter) { if (null != l.ajax ? l.dataAdapter = o : null != l.data ? l.dataAdapter = n : l.dataAdapter = m, l.minimumInputLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, r)), l.maximumInputLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, s)), l.maximumSelectionLength > 0 && (l.dataAdapter = j.Decorate(l.dataAdapter, t)), l.tags && (l.dataAdapter = j.Decorate(l.dataAdapter, p)), (null != l.tokenSeparators || null != l.tokenizer) && (l.dataAdapter = j.Decorate(l.dataAdapter, q)), null != l.query) { var C = b(l.amdBase + "compat/query"); l.dataAdapter = j.Decorate(l.dataAdapter, C) } if (null != l.initSelection) { var D = b(l.amdBase + "compat/initSelection"); l.dataAdapter = j.Decorate(l.dataAdapter, D) } } if (null == l.resultsAdapter && (l.resultsAdapter = c, null != l.ajax && (l.resultsAdapter = j.Decorate(l.resultsAdapter, x)), null != l.placeholder && (l.resultsAdapter = j.Decorate(l.resultsAdapter, w)), l.selectOnClose && (l.resultsAdapter = j.Decorate(l.resultsAdapter, A))), null == l.dropdownAdapter) { if (l.multiple) l.dropdownAdapter = u; else { var E = j.Decorate(u, v); l.dropdownAdapter = E } if (0 !== l.minimumResultsForSearch && (l.dropdownAdapter = j.Decorate(l.dropdownAdapter, z)), l.closeOnSelect && (l.dropdownAdapter = j.Decorate(l.dropdownAdapter, B)), null != l.dropdownCssClass || null != l.dropdownCss || null != l.adaptDropdownCssClass) { var F = b(l.amdBase + "compat/dropdownCss"); l.dropdownAdapter = j.Decorate(l.dropdownAdapter, F) } l.dropdownAdapter = j.Decorate(l.dropdownAdapter, y) } if (null == l.selectionAdapter) { if (l.multiple ? l.selectionAdapter = e : l.selectionAdapter = d, null != l.placeholder && (l.selectionAdapter = j.Decorate(l.selectionAdapter, f)), l.allowClear && (l.selectionAdapter = j.Decorate(l.selectionAdapter, g)), l.multiple && (l.selectionAdapter = j.Decorate(l.selectionAdapter, h)), null != l.containerCssClass || null != l.containerCss || null != l.adaptContainerCssClass) { var G = b(l.amdBase + "compat/containerCss"); l.selectionAdapter = j.Decorate(l.selectionAdapter, G) } l.selectionAdapter = j.Decorate(l.selectionAdapter, i) } if ("string" == typeof l.language) if (l.language.indexOf("-") > 0) { var H = l.language.split("-"), I = H[0]; l.language = [l.language, I] } else l.language = [l.language]; if (a.isArray(l.language)) { var J = new k; l.language.push("en"); for (var K = l.language, L = 0; L < K.length; L++) { var M = K[L], N = {}; try { N = k.loadPath(M) } catch (O) { try { M = this.defaults.amdLanguageBase + M, N = k.loadPath(M) } catch (P) { l.debug && window.console && console.warn && console.warn('Select2: The language file for "' + M + '" could not be automatically loaded. A fallback will be used instead.'); continue } } J.extend(N) } l.translations = J } else { var Q = k.loadPath(this.defaults.amdLanguageBase + "en"), R = new k(l.language); R.extend(Q), l.translations = R } return l }, D.prototype.reset = function() { function b(a) { function b(a) { return l[a] || a } return a.replace(/[^\u0000-\u007E]/g, b) } function c(d, e) { if ("" === a.trim(d.term)) return e; if (e.children && e.children.length > 0) { for (var f = a.extend(!0, {}, e), g = e.children.length - 1; g >= 0; g--) { var h = e.children[g], i = c(d, h); null == i && f.children.splice(g, 1) } return f.children.length > 0 ? f : c(d, f) } var j = b(e.text).toUpperCase(), k = b(d.term).toUpperCase(); return j.indexOf(k) > -1 ? e : null } this.defaults = { amdBase: "./", amdLanguageBase: "./i18n/", closeOnSelect: !0, debug: !1, dropdownAutoWidth: !1, escapeMarkup: j.escapeMarkup, language: C, matcher: c, minimumInputLength: 0, maximumInputLength: 0, maximumSelectionLength: 0, minimumResultsForSearch: 0, selectOnClose: !1, sorter: function(a) { return a }, templateResult: function(a) { return a.text }, templateSelection: function(a) { return a.text }, theme: "default", width: "resolve" } }, D.prototype.set = function(b, c) { var d = a.camelCase(b), e = {}; e[d] = c; var f = j._convertData(e); a.extend(this.defaults, f) }; var E = new D; return E }), b.define("select2/options", ["require", "jquery", "./defaults", "./utils"], function(a, b, c, d) { function e(b, e) { if (this.options = b, null != e && this.fromElement(e), this.options = c.apply(this.options), e && e.is("input")) { var f = a(this.get("amdBase") + "compat/inputData"); this.options.dataAdapter = d.Decorate(this.options.dataAdapter, f) } } return e.prototype.fromElement = function(a) { var c = ["select2"]; null == this.options.multiple && (this.options.multiple = a.prop("multiple")), null == this.options.disabled && (this.options.disabled = a.prop("disabled")), null == this.options.language && (a.prop("lang") ? this.options.language = a.prop("lang").toLowerCase() : a.closest("[lang]").prop("lang") && (this.options.language = a.closest("[lang]").prop("lang"))), null == this.options.dir && (a.prop("dir") ? this.options.dir = a.prop("dir") : a.closest("[dir]").prop("dir") ? this.options.dir = a.closest("[dir]").prop("dir") : this.options.dir = "ltr"), a.prop("disabled", this.options.disabled), a.prop("multiple", this.options.multiple), a.data("select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'), a.data("data", a.data("select2Tags")), a.data("tags", !0)), a.data("ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."), a.attr("ajax--url", a.data("ajaxUrl")), a.data("ajax--url", a.data("ajaxUrl"))); var e = {}; e = b.fn.jquery && "1." == b.fn.jquery.substr(0, 2) && a[0].dataset ? b.extend(!0, {}, a[0].dataset, a.data()) : a.data(); var f = b.extend(!0, {}, e); f = d._convertData(f); for (var g in f) b.inArray(g, c) > -1 || (b.isPlainObject(this.options[g]) ? b.extend(this.options[g], f[g]) : this.options[g] = f[g]); return this }, e.prototype.get = function(a) { return this.options[a] }, e.prototype.set = function(a, b) { this.options[a] = b }, e }), b.define("select2/core", ["jquery", "./options", "./utils", "./keys"], function(a, b, c, d) { var e = function(a, c) { null != a.data("select2") && a.data("select2").destroy(), this.$element = a, this.id = this._generateId(a), c = c || {}, this.options = new b(c, a), e.__super__.constructor.call(this); var d = a.attr("tabindex") || 0; a.data("old-tabindex", d), a.attr("tabindex", "-1"); var f = this.options.get("dataAdapter"); this.dataAdapter = new f(a, this.options); var g = this.render(); this._placeContainer(g); var h = this.options.get("selectionAdapter"); this.selection = new h(a, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, g); var i = this.options.get("dropdownAdapter"); this.dropdown = new i(a, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, g); var j = this.options.get("resultsAdapter"); this.results = new j(a, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown); var k = this; this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current(function(a) { k.trigger("selection:update", { data: a }) }), a.addClass("select2-hidden-accessible"), a.attr("aria-hidden", "true"), this._syncAttributes(), a.data("select2", this) }; return c.Extend(e, c.Observable), e.prototype._generateId = function(a) { var b = ""; return b = null != a.attr("id") ? a.attr("id") : null != a.attr("name") ? a.attr("name") + "-" + c.generateChars(2) : c.generateChars(4), b = b.replace(/(:|\.|\[|\]|,)/g, ""), b = "select2-" + b }, e.prototype._placeContainer = function(a) { a.insertAfter(this.$element); var b = this._resolveWidth(this.$element, this.options.get("width")); null != b && a.css("width", b) }, e.prototype._resolveWidth = function(a, b) { var c = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; if ("resolve" == b) { var d = this._resolveWidth(a, "style"); return null != d ? d : this._resolveWidth(a, "element") } if ("element" == b) { var e = a.outerWidth(!1); return 0 >= e ? "auto" : e + "px" } if ("style" == b) { var f = a.attr("style"); if ("string" != typeof f) return null; for (var g = f.split(";"), h = 0, i = g.length; i > h; h += 1) { var j = g[h].replace(/\s/g, ""), k = j.match(c); if (null !== k && k.length >= 1) return k[1] } return null } return b }, e.prototype._bindAdapters = function() { this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container) }, e.prototype._registerDomEvents = function() { var b = this; this.$element.on("change.select2", function() { b.dataAdapter.current(function(a) { b.trigger("selection:update", { data: a }) }) }), this._sync = c.bind(this._syncAttributes, this), this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._sync); var d = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; null != d ? (this._observer = new d(function(c) { a.each(c, b._sync) }), this._observer.observe(this.$element[0], { attributes: !0, subtree: !1 })) : this.$element[0].addEventListener && this.$element[0].addEventListener("DOMAttrModified", b._sync, !1) }, e.prototype._registerDataEvents = function() { var a = this; this.dataAdapter.on("*", function(b, c) { a.trigger(b, c) }) }, e.prototype._registerSelectionEvents = function() { var b = this, c = ["toggle", "focus"]; this.selection.on("toggle", function() { b.toggleDropdown() }), this.selection.on("focus", function(a) { b.focus(a) }), this.selection.on("*", function(d, e) { -1 === a.inArray(d, c) && b.trigger(d, e) }) }, e.prototype._registerDropdownEvents = function() { var a = this; this.dropdown.on("*", function(b, c) { a.trigger(b, c) }) }, e.prototype._registerResultsEvents = function() { var a = this; this.results.on("*", function(b, c) { a.trigger(b, c) }) }, e.prototype._registerEvents = function() { var a = this; this.on("open", function() { a.$container.addClass("select2-container--open") }), this.on("close", function() { a.$container.removeClass("select2-container--open") }), this.on("enable", function() { a.$container.removeClass("select2-container--disabled") }), this.on("disable", function() { a.$container.addClass("select2-container--disabled") }), this.on("blur", function() { a.$container.removeClass("select2-container--focus") }), this.on("query", function(b) { a.isOpen() || a.trigger("open", {}), this.dataAdapter.query(b, function(c) { a.trigger("results:all", { data: c, query: b }) }) }), this.on("query:append", function(b) { this.dataAdapter.query(b, function(c) { a.trigger("results:append", { data: c, query: b }) }) }), this.on("keypress", function(b) { var c = b.which; a.isOpen() ? c === d.ESC || c === d.TAB || c === d.UP && b.altKey ? (a.close(), b.preventDefault()) : c === d.ENTER ? (a.trigger("results:select", {}), b.preventDefault()) : c === d.SPACE && b.ctrlKey ? (a.trigger("results:toggle", {}), b.preventDefault()) : c === d.UP ? (a.trigger("results:previous", {}), b.preventDefault()) : c === d.DOWN && (a.trigger("results:next", {}), b.preventDefault()) : (c === d.ENTER || c === d.SPACE || c === d.DOWN && b.altKey) && (a.open(), b.preventDefault()) }) }, e.prototype._syncAttributes = function() { this.options.set("disabled", this.$element.prop("disabled")), this.options.get("disabled") ? (this.isOpen() && this.close(), this.trigger("disable", {})) : this.trigger("enable", {}) }, e.prototype.trigger = function(a, b) { var c = e.__super__.trigger, d = { open: "opening", close: "closing", select: "selecting", unselect: "unselecting" }; if (void 0 === b && (b = {}), a in d) { var f = d[a], g = { prevented: !1, name: a, args: b }; if (c.call(this, f, g), g.prevented) return void(b.prevented = !0) } c.call(this, a, b) }, e.prototype.toggleDropdown = function() { this.options.get("disabled") || (this.isOpen() ? this.close() : this.open()) }, e.prototype.open = function() { this.isOpen() || this.trigger("query", {}) }, e.prototype.close = function() { this.isOpen() && this.trigger("close", {}) }, e.prototype.isOpen = function() { return this.$container.hasClass("select2-container--open") }, e.prototype.hasFocus = function() { return this.$container.hasClass("select2-container--focus") }, e.prototype.focus = function(a) { this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {})) }, e.prototype.enable = function(a) { this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'), (null == a || 0 === a.length) && (a = [!0]); var b = !a[0]; this.$element.prop("disabled", b) }, e.prototype.data = function() { this.options.get("debug") && arguments.length > 0 && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.'); var a = []; return this.dataAdapter.current(function(b) { a = b }), a }, e.prototype.val = function(b) { if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == b || 0 === b.length) return this.$element.val(); var c = b[0]; a.isArray(c) && (c = a.map(c, function(a) { return a.toString() })), this.$element.val(c).trigger("change") }, e.prototype.destroy = function() { this.$container.remove(), this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._sync), null != this._observer ? (this._observer.disconnect(), this._observer = null) : this.$element[0].removeEventListener && this.$element[0].removeEventListener("DOMAttrModified", this._sync, !1), this._sync = null, this.$element.off(".select2"), this.$element.attr("tabindex", this.$element.data("old-tabindex")), this.$element.removeClass("select2-hidden-accessible"), this.$element.attr("aria-hidden", "false"), this.$element.removeData("select2"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null }, e.prototype.render = function() { var b = a(''); return b.attr("dir", this.options.get("dir")), this.$container = b, this.$container.addClass("select2-container--" + this.options.get("theme")), b.data("element", this.$element), b }, e }), b.define("jquery-mousewheel", ["jquery"], function(a) { return a }), b.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults"], function(a, b, c, d) { if (null == a.fn.select2) { var e = ["open", "close", "destroy"]; a.fn.select2 = function(b) { if (b = b || {}, "object" == typeof b) return this.each(function() { var d = a.extend(!0, {}, b); new c(a(this), d) }), this; if ("string" == typeof b) { var d; return this.each(function() { var c = a(this).data("select2"); null == c && window.console && console.error && console.error("The select2('" + b + "') method was called on an element that is not using Select2."); var e = Array.prototype.slice.call(arguments, 1); d = c[b].apply(c, e) }), a.inArray(b, e) > -1 ? this : d } throw new Error("Invalid arguments for Select2: " + b) } } return null == a.fn.select2.defaults && (a.fn.select2.defaults = d), c }), { define: b.define, require: b.require } }(), c = b.require("jquery.select2"); return a.fn.select2.amd = b, c }); /** * @module RD-Google Map * @author Evgeniy Gusarov * @see https://ua.linkedin.com/pub/evgeniy-gusarov/8a/a40/54a * @version 0.1.5 */ ! function(a) { "use strict"; var o = { cntClass: "rd-google-map", mapClass: "rd-google-map__model", locationsClass: "rd-google-map__locations", marker: { basic: "images/gmap_marker.png", active: "images/gmap_marker_active.png" }, styles: [], onInit: !1 }, t = { map: { x: -73.9924068, y: 40.646197, zoom: 14 }, locations: [] }, e = function(o, t) { var e = o.parent().find("." + t.locationsClass).find("li"), n = []; return e.length > 0 && e.each(function(o) { var e = a(this); e.data("x") && e.data("y") && (n[o] = { x: e.data("x"), y: e.data("y"), basic: e.data("basic") ? e.data("basic") : t.marker.basic, active: e.data("active") ? e.data("active") : t.marker.active }, a.trim(e.html()) ? n[o].content = '
' + e.html() + "
" : n[o].content = !1) }), n }; a.fn.googleMap = function(n) { n = a.extend(!0, {}, o, n), a(this).each(function() { var o = a(this), s = a.extend(!0, {}, t, { map: { x: o.data("x"), y: o.data("y"), zoom: o.data("zoom") }, locations: e(o, n) }), i = new google.maps.Map(this, { center: new google.maps.LatLng(parseFloat(s.map.y), parseFloat(s.map.x)), styles: n.styles, zoom: s.map.zoom, scrollwheel: !1 }); n.onInit && n.onInit.call(this, i); var c = new google.maps.InfoWindow, l = []; for (var r in s.locations) l[r] = new google.maps.Marker({ position: new google.maps.LatLng(parseFloat(s.locations[r].y), parseFloat(s.locations[r].x)), map: i, icon: s.locations[r].basic, index: r }), s.locations[r].content && (google.maps.event.addListener(l[r], "click", function() { for (var o in l) l[o].setIcon(s.locations[o].basic); c.setContent(s.locations[this.index].content), c.open(i, this), a(".gm-style-iw").parent().parent().addClass("gm-wrapper"), this.setIcon(s.locations[this.index].active) }), google.maps.event.addListener(c, "closeclick", function() { for (var a in l) l[a].setIcon(s.locations[a].basic) })); google.maps.event.addDomListener(window, "resize", function() { i.setCenter(new google.maps.LatLng(parseFloat(s.map.y), parseFloat(s.map.x))) }) }) } }(jQuery); /** * @module highlight.js * @version 9.2.0 * @license BSD3 License * @link git.io/hljslicense */ ! function(e) { var t = "object" == typeof window && window || "object" == typeof self && self; "undefined" != typeof exports ? e(exports) : t && (t.hljs = e({}), "function" == typeof define && define.amd && define([], function() { return t.hljs })) }(function(e) { function t(e) { return e.replace(/&/gm, "&").replace(//gm, ">") } function r(e) { return e.nodeName.toLowerCase() } function a(e, t) { var r = e && e.exec(t); return r && 0 == r.index } function n(e) { return /^(no-?highlight|plain|text)$/i.test(e) } function i(e) { var t, r, a, i = e.className + " "; if (i += e.parentNode ? e.parentNode.className : "", r = /\blang(?:uage)?-([\w-]+)\b/i.exec(i)) return y(r[1]) ? r[1] : "no-highlight"; for (i = i.split(/\s+/), t = 0, a = i.length; a > t; t++) if (y(i[t]) || n(i[t])) return i[t] } function s(e, t) { var r, a = {}; for (r in e) a[r] = e[r]; if (t) for (r in t) a[r] = t[r]; return a } function c(e) { var t = []; return function a(e, n) { for (var i = e.firstChild; i; i = i.nextSibling) 3 == i.nodeType ? n += i.nodeValue.length : 1 == i.nodeType && (t.push({ event: "start", offset: n, node: i }), n = a(i, n), r(i).match(/br|hr|img|input/) || t.push({ event: "stop", offset: n, node: i })); return n }(e, 0), t } function o(e, a, n) { function i() { return e.length && a.length ? e[0].offset != a[0].offset ? e[0].offset < a[0].offset ? e : a : "start" == a[0].event ? e : a : e.length ? e : a } function s(e) { function a(e) { return " " + e.nodeName + '="' + t(e.value) + '"' } u += "<" + r(e) + Array.prototype.map.call(e.attributes, a).join("") + ">" } function c(e) { u += "" + r(e) + ">" } function o(e) { ("start" == e.event ? s : c)(e.node) } for (var l = 0, u = "", d = []; e.length || a.length;) { var b = i(); if (u += t(n.substr(l, b[0].offset - l)), l = b[0].offset, b == e) { d.reverse().forEach(c); do o(b.splice(0, 1)[0]), b = i(); while (b == e && b.length && b[0].offset == l); d.reverse().forEach(s) } else "start" == b[0].event ? d.push(b[0].node) : d.pop(), o(b.splice(0, 1)[0]) } return u + t(n.substr(l)) } function l(e) { function t(e) { return e && e.source || e } function r(r, a) { return new RegExp(t(r), "m" + (e.cI ? "i" : "") + (a ? "g" : "")) } function a(n, i) { if (!n.compiled) { if (n.compiled = !0, n.k = n.k || n.bK, n.k) { var c = {}, o = function(t, r) { e.cI && (r = r.toLowerCase()), r.split(" ").forEach(function(e) { var r = e.split("|"); c[r[0]] = [t, r[1] ? Number(r[1]) : 1] }) }; "string" == typeof n.k ? o("keyword", n.k) : Object.keys(n.k).forEach(function(e) { o(e, n.k[e]) }), n.k = c } n.lR = r(n.l || /\b\w+\b/, !0), i && (n.bK && (n.b = "\\b(" + n.bK.split(" ").join("|") + ")\\b"), n.b || (n.b = /\B|\b/), n.bR = r(n.b), n.e || n.eW || (n.e = /\B|\b/), n.e && (n.eR = r(n.e)), n.tE = t(n.e) || "", n.eW && i.tE && (n.tE += (n.e ? "|" : "") + i.tE)), n.i && (n.iR = r(n.i)), void 0 === n.r && (n.r = 1), n.c || (n.c = []); var l = []; n.c.forEach(function(e) { e.v ? e.v.forEach(function(t) { l.push(s(e, t)) }) : l.push("self" == e ? n : e) }), n.c = l, n.c.forEach(function(e) { a(e, n) }), n.starts && a(n.starts, i); var u = n.c.map(function(e) { return e.bK ? "\\.?(" + e.b + ")\\.?" : e.b }).concat([n.tE, n.i]).map(t).filter(Boolean); n.t = u.length ? r(u.join("|"), !0) : { exec: function() { return null } } } } a(e) } function u(e, r, n, i) { function s(e, t) { for (var r = 0; r < t.c.length; r++) if (a(t.c[r].bR, e)) return t.c[r] } function c(e, t) { if (a(e.eR, t)) { for (; e.endsParent && e.parent;) e = e.parent; return e } return e.eW ? c(e.parent, t) : void 0 } function o(e, t) { return !n && a(t.iR, e) } function b(e, t) { var r = v.cI ? t[0].toLowerCase() : t[0]; return e.k.hasOwnProperty(r) && e.k[r] } function p(e, t, r, a) { var n = a ? "" : w.classPrefix, i = '"; return i += e + '">', i + t + s } function m() { if (!x.k) return t(E); var e = "", r = 0; x.lR.lastIndex = 0; for (var a = x.lR.exec(E); a;) { e += t(E.substr(r, a.index - r)); var n = b(x, a); n ? (B += n[1], e += p(n[0], t(a[0]))) : e += t(a[0]), r = x.lR.lastIndex, a = x.lR.exec(E) } return e + t(E.substr(r)) } function f() { var e = "string" == typeof x.sL; if (e && !N[x.sL]) return t(E); var r = e ? u(x.sL, E, !0, C[x.sL]) : d(E, x.sL.length ? x.sL : void 0); return x.r > 0 && (B += r.r), e && (C[x.sL] = r.top), p(r.language, r.value, !1, !0) } function g() { M += void 0 !== x.sL ? f() : m(), E = "" } function h(e, t) { M += e.cN ? p(e.cN, "", !0) : "", x = Object.create(e, { parent: { value: x } }) } function _(e, t) { if (E += e, void 0 === t) return g(), 0; var r = s(t, x); if (r) return r.skip ? E += t : (r.eB && (E += t), g(), r.rB || r.eB || (E = t)), h(r, t), r.rB ? 0 : t.length; var a = c(x, t); if (a) { var n = x; n.skip ? E += t : (n.rE || n.eE || (E += t), g(), n.eE && (E = t)); do x.cN && (M += ""), x.skip || (B += x.r), x = x.parent; while (x != a.parent); return a.starts && h(a.starts, ""), n.rE ? 0 : t.length } if (o(t, x)) throw new Error('Illegal lexeme "' + t + '" for mode "' + (x.cN || "") + '"'); return E += t, t.length || 1 } var v = y(e); if (!v) throw new Error('Unknown language: "' + e + '"'); l(v); var k, x = i || v, C = {}, M = ""; for (k = x; k != v; k = k.parent) k.cN && (M = p(k.cN, "", !0) + M); var E = "", B = 0; try { for (var $, z, L = 0;;) { if (x.t.lastIndex = L, $ = x.t.exec(r), !$) break; z = _(r.substr(L, $.index - L), $[0]), L = $.index + z } for (_(r.substr(L)), k = x; k.parent; k = k.parent) k.cN && (M += ""); return { r: B, value: M, language: e, top: x } } catch (R) { if (-1 != R.message.indexOf("Illegal")) return { r: 0, value: t(r) }; throw R } } function d(e, r) { r = r || w.languages || Object.keys(N); var a = { r: 0, value: t(e) }, n = a; return r.forEach(function(t) { if (y(t)) { var r = u(t, e, !1); r.language = t, r.r > n.r && (n = r), r.r > a.r && (n = a, a = r) } }), n.language && (a.second_best = n), a } function b(e) { return w.tabReplace && (e = e.replace(/^((<[^>]+>|\t)+)/gm, function(e, t) { return t.replace(/\t/g, w.tabReplace) })), w.useBR && (e = e.replace(/\n/g, " ")), e } function p(e, t, r) { var a = t ? k[t] : r, n = [e.trim()]; return e.match(/\bhljs\b/) || n.push("hljs"), -1 === e.indexOf(a) && n.push(a), n.join(" ").trim() } function m(e) { var t = i(e); if (!n(t)) { var r; w.useBR ? (r = document.createElementNS("http://www.w3.org/1999/xhtml", "div"), r.innerHTML = e.innerHTML.replace(/\n/g, "").replace(/ /g, "\n")) : r = e; var a = r.textContent, s = t ? u(t, a, !0) : d(a), l = c(r); if (l.length) { var m = document.createElementNS("http://www.w3.org/1999/xhtml", "div"); m.innerHTML = s.value, s.value = o(l, c(m), a) } s.value = b(s.value), e.innerHTML = s.value, e.className = p(e.className, t, s.language), e.result = { language: s.language, re: s.r }, s.second_best && (e.second_best = { language: s.second_best.language, re: s.second_best.r }) } } function f(e) { w = s(w, e) } function g() { if (!g.called) { g.called = !0; var e = document.querySelectorAll("pre code"); Array.prototype.forEach.call(e, m) } } function h() { addEventListener("DOMContentLoaded", g, !1), addEventListener("load", g, !1) } function _(t, r) { var a = N[t] = r(e); a.aliases && a.aliases.forEach(function(e) { k[e] = t }) } function v() { return Object.keys(N) } function y(e) { return e = (e || "").toLowerCase(), N[e] || N[k[e]] } var w = { classPrefix: "hljs-", tabReplace: null, useBR: !1, languages: void 0 }, N = {}, k = {}; return e.highlight = u, e.highlightAuto = d, e.fixMarkup = b, e.highlightBlock = m, e.configure = f, e.initHighlighting = g, e.initHighlightingOnLoad = h, e.registerLanguage = _, e.listLanguages = v, e.getLanguage = y, e.inherit = s, e.IR = "[a-zA-Z]\\w*", e.UIR = "[a-zA-Z_]\\w*", e.NR = "\\b\\d+(\\.\\d+)?", e.CNR = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", e.BNR = "\\b(0b[01]+)", e.RSR = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", e.BE = { b: "\\\\[\\s\\S]", r: 0 }, e.ASM = { cN: "string", b: "'", e: "'", i: "\\n", c: [e.BE] }, e.QSM = { cN: "string", b: '"', e: '"', i: "\\n", c: [e.BE] }, e.PWM = { b: /\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/ }, e.C = function(t, r, a) { var n = e.inherit({ cN: "comment", b: t, e: r, c: [] }, a || {}); return n.c.push(e.PWM), n.c.push({ cN: "doctag", b: "(?:TODO|FIXME|NOTE|BUG|XXX):", r: 0 }), n }, e.CLCM = e.C("//", "$"), e.CBCM = e.C("/\\*", "\\*/"), e.HCM = e.C("#", "$"), e.NM = { cN: "number", b: e.NR, r: 0 }, e.CNM = { cN: "number", b: e.CNR, r: 0 }, e.BNM = { cN: "number", b: e.BNR, r: 0 }, e.CSSNM = { cN: "number", b: e.NR + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", r: 0 }, e.RM = { cN: "regexp", b: /\//, e: /\/[gimuy]*/, i: /\n/, c: [e.BE, { b: /\[/, e: /\]/, r: 0, c: [e.BE] }] }, e.TM = { cN: "title", b: e.IR, r: 0 }, e.UTM = { cN: "title", b: e.UIR, r: 0 }, e.METHOD_GUARD = { b: "\\.\\s*" + e.UIR, r: 0 }, e.registerLanguage("apache", function(e) { var t = { cN: "number", b: "[\\$%]\\d+" }; return { aliases: ["apacheconf"], cI: !0, c: [e.HCM, { cN: "section", b: "?", e: ">" }, { cN: "attribute", b: /\w+/, r: 0, k: { nomarkup: "order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername" }, starts: { e: /$/, r: 0, k: { literal: "on off all" }, c: [{ cN: "meta", b: "\\s\\[", e: "\\]$" }, { cN: "variable", b: "[\\$%]\\{", e: "\\}", c: ["self", t] }, t, e.QSM] } }], i: /\S/ } }), e.registerLanguage("bash", function(e) { var t = { cN: "variable", v: [{ b: /\$[\w\d#@][\w\d_]*/ }, { b: /\$\{(.*?)}/ }] }, r = { cN: "string", b: /"/, e: /"/, c: [e.BE, t, { cN: "variable", b: /\$\(/, e: /\)/, c: [e.BE] }] }, a = { cN: "string", b: /'/, e: /'/ }; return { aliases: ["sh", "zsh"], l: /-?[a-z\.]+/, k: { keyword: "if then else elif fi for while in do done case esac function", literal: "true false", built_in: "break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp", _: "-ne -eq -lt -gt -f -d -e -s -l -a" }, c: [{ cN: "meta", b: /^#![^\n]+sh\s*$/, r: 10 }, { cN: "function", b: /\w[\w\d_]*\s*\(\s*\)\s*\{/, rB: !0, c: [e.inherit(e.TM, { b: /\w[\w\d_]*/ })], r: 0 }, e.HCM, r, a, t] } }), e.registerLanguage("coffeescript", function(e) { var t = { keyword: "in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not", literal: "true false null undefined yes no on off", built_in: "npm require console print module global window document" }, r = "[A-Za-z$_][0-9A-Za-z$_]*", a = { cN: "subst", b: /#\{/, e: /}/, k: t }, n = [e.BNM, e.inherit(e.CNM, { starts: { e: "(\\s*/)?", r: 0 } }), { cN: "string", v: [{ b: /'''/, e: /'''/, c: [e.BE] }, { b: /'/, e: /'/, c: [e.BE] }, { b: /"""/, e: /"""/, c: [e.BE, a] }, { b: /"/, e: /"/, c: [e.BE, a] }] }, { cN: "regexp", v: [{ b: "///", e: "///", c: [a, e.HCM] }, { b: "//[gim]*", r: 0 }, { b: /\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/ }] }, { b: "@" + r }, { b: "`", e: "`", eB: !0, eE: !0, sL: "javascript" }]; a.c = n; var i = e.inherit(e.TM, { b: r }), s = "(\\(.*\\))?\\s*\\B[-=]>", c = { cN: "params", b: "\\([^\\(]", rB: !0, c: [{ b: /\(/, e: /\)/, k: t, c: ["self"].concat(n) }] }; return { aliases: ["coffee", "cson", "iced"], k: t, i: /\/\*/, c: n.concat([e.C("###", "###"), e.HCM, { cN: "function", b: "^\\s*" + r + "\\s*=\\s*" + s, e: "[-=]>", rB: !0, c: [i, c] }, { b: /[:\(,=]\s*/, r: 0, c: [{ cN: "function", b: s, e: "[-=]>", rB: !0, c: [c] }] }, { cN: "class", bK: "class", e: "$", i: /[:="\[\]]/, c: [{ bK: "extends", eW: !0, i: /[:="\[\]]/, c: [i] }, i] }, { b: r + ":", e: ":", rB: !0, rE: !0, r: 0 }]) } }), e.registerLanguage("cpp", function(e) { var t = { cN: "keyword", b: "\\b[a-z\\d_]*_t\\b" }, r = { cN: "string", v: [e.inherit(e.QSM, { b: '((u8?|U)|L)?"' }), { b: '(u8?|U)?R"', e: '"', c: [e.BE] }, { b: "'\\\\?.", e: "'", i: "." }] }, a = { cN: "number", v: [{ b: "\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)" }, { b: e.CNR }], r: 0 }, n = { cN: "meta", b: "#", e: "$", k: { "meta-keyword": "if else elif endif define undef warning error line pragma ifdef ifndef" }, c: [{ b: /\\\n/, r: 0 }, { bK: "include", e: "$", k: { "meta-keyword": "include" }, c: [e.inherit(r, { cN: "meta-string" }), { cN: "meta-string", b: "<", e: ">", i: "\\n" }] }, r, e.CLCM, e.CBCM] }, i = e.IR + "\\s*\\(", s = { keyword: "int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong", built_in: "std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr", literal: "true false nullptr NULL" }; return { aliases: ["c", "cc", "h", "c++", "h++", "hpp"], k: s, i: "", c: [t, e.CLCM, e.CBCM, a, r, n, { b: "\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<", e: ">", k: s, c: ["self", t] }, { b: e.IR + "::", k: s }, { bK: "new throw return else", r: 0 }, { cN: "function", b: "(" + e.IR + "[\\*&\\s]+)+" + i, rB: !0, e: /[{;=]/, eE: !0, k: s, i: /[^\w\s\*&]/, c: [{ b: i, rB: !0, c: [e.TM], r: 0 }, { cN: "params", b: /\(/, e: /\)/, k: s, r: 0, c: [e.CLCM, e.CBCM, r, a] }, e.CLCM, e.CBCM, n] }] } }), e.registerLanguage("cs", function(e) { var t = "abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield", r = e.IR + "(<" + e.IR + ">)?"; return { aliases: ["csharp"], k: t, i: /::/, c: [e.C("///", "$", { rB: !0, c: [{ cN: "doctag", v: [{ b: "///", r: 0 }, { b: "" }, { b: "?", e: ">" }] }] }), e.CLCM, e.CBCM, { cN: "meta", b: "#", e: "$", k: { "meta-keyword": "if else elif endif define undef warning error line region endregion pragma checksum" } }, { cN: "string", b: '@"', e: '"', c: [{ b: '""' }] }, e.ASM, e.QSM, e.CNM, { bK: "class interface", e: /[{;=]/, i: /[^\s:]/, c: [e.TM, e.CLCM, e.CBCM] }, { bK: "namespace", e: /[{;=]/, i: /[^\s:]/, c: [e.inherit(e.TM, { b: "[a-zA-Z](\\.?\\w)*" }), e.CLCM, e.CBCM] }, { bK: "new return throw await", r: 0 }, { cN: "function", b: "(" + r + "\\s+)+" + e.IR + "\\s*\\(", rB: !0, e: /[{;=]/, eE: !0, k: t, c: [{ b: e.IR + "\\s*\\(", rB: !0, c: [e.TM], r: 0 }, { cN: "params", b: /\(/, e: /\)/, eB: !0, eE: !0, k: t, r: 0, c: [e.ASM, e.QSM, e.CNM, e.CBCM] }, e.CLCM, e.CBCM] }] } }), e.registerLanguage("css", function(e) { var t = "[a-zA-Z-][a-zA-Z0-9_-]*", r = { b: /[A-Z\_\.\-]+\s*:/, rB: !0, e: ";", eW: !0, c: [{ cN: "attribute", b: /\S/, e: ":", eE: !0, starts: { eW: !0, eE: !0, c: [{ b: /[\w-]+\(/, rB: !0, c: [{ cN: "built_in", b: /[\w-]+/ }, { b: /\(/, e: /\)/, c: [e.ASM, e.QSM] }] }, e.CSSNM, e.QSM, e.ASM, e.CBCM, { cN: "number", b: "#[0-9A-Fa-f]+" }, { cN: "meta", b: "!important" }] } }] }; return { cI: !0, i: /[=\/|'\$]/, c: [e.CBCM, { cN: "selector-id", b: /#[A-Za-z0-9_-]+/ }, { cN: "selector-class", b: /\.[A-Za-z0-9_-]+/ }, { cN: "selector-attr", b: /\[/, e: /\]/, i: "$" }, { cN: "selector-pseudo", b: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/ }, { b: "@(font-face|page)", l: "[a-z-]+", k: "font-face page" }, { b: "@", e: "[{;]", c: [{ cN: "keyword", b: /\S+/ }, { b: /\s/, eW: !0, eE: !0, r: 0, c: [e.ASM, e.QSM, e.CSSNM] }] }, { cN: "selector-tag", b: t, r: 0 }, { b: "{", e: "}", i: /\S/, c: [e.CBCM, r] }] } }), e.registerLanguage("diff", function(e) { return { aliases: ["patch"], c: [{ cN: "meta", r: 10, v: [{ b: /^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/ }, { b: /^\*\*\* +\d+,\d+ +\*\*\*\*$/ }, { b: /^\-\-\- +\d+,\d+ +\-\-\-\-$/ }] }, { cN: "comment", v: [{ b: /Index: /, e: /$/ }, { b: /=====/, e: /=====$/ }, { b: /^\-\-\-/, e: /$/ }, { b: /^\*{3} /, e: /$/ }, { b: /^\+\+\+/, e: /$/ }, { b: /\*{5}/, e: /\*{5}$/ }] }, { cN: "addition", b: "^\\+", e: "$" }, { cN: "deletion", b: "^\\-", e: "$" }, { cN: "addition", b: "^\\!", e: "$" }] } }), e.registerLanguage("http", function(e) { var t = "HTTP/[0-9\\.]+"; return { aliases: ["https"], i: "\\S", c: [{ b: "^" + t, e: "$", c: [{ cN: "number", b: "\\b\\d{3}\\b" }] }, { b: "^[A-Z]+ (.*?) " + t + "$", rB: !0, e: "$", c: [{ cN: "string", b: " ", e: " ", eB: !0, eE: !0 }, { b: t }, { cN: "keyword", b: "[A-Z]+" }] }, { cN: "attribute", b: "^\\w", e: ": ", eE: !0, i: "\\n|\\s|=", starts: { e: "$", r: 0 } }, { b: "\\n\\n", starts: { sL: [], eW: !0 } }] } }), e.registerLanguage("ini", function(e) { var t = { cN: "string", c: [e.BE], v: [{ b: "'''", e: "'''", r: 10 }, { b: '"""', e: '"""', r: 10 }, { b: '"', e: '"' }, { b: "'", e: "'" }] }; return { aliases: ["toml"], cI: !0, i: /\S/, c: [e.C(";", "$"), e.HCM, { cN: "section", b: /^\s*\[+/, e: /\]+/ }, { b: /^[a-z0-9\[\]_-]+\s*=\s*/, e: "$", rB: !0, c: [{ cN: "attr", b: /[a-z0-9\[\]_-]+/ }, { b: /=/, eW: !0, r: 0, c: [{ cN: "literal", b: /\bon|off|true|false|yes|no\b/ }, { cN: "variable", v: [{ b: /\$[\w\d"][\w\d_]*/ }, { b: /\$\{(.*?)}/ }] }, t, { cN: "number", b: /([\+\-]+)?[\d]+_[\d_]+/ }, e.NM] }] }] } }), e.registerLanguage("java", function(e) { var t = e.UIR + "(<" + e.UIR + "(\\s*,\\s*" + e.UIR + ")*>)?", r = "false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private", a = "\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?", n = { cN: "number", b: a, r: 0 }; return { aliases: ["jsp"], k: r, i: /<\/|#/, c: [e.C("/\\*\\*", "\\*/", { r: 0, c: [{ b: /\w+@/, r: 0 }, { cN: "doctag", b: "@[A-Za-z]+" }] }), e.CLCM, e.CBCM, e.ASM, e.QSM, { cN: "class", bK: "class interface", e: /[{;=]/, eE: !0, k: "class interface", i: /[:"\[\]]/, c: [{ bK: "extends implements" }, e.UTM] }, { bK: "new throw return else", r: 0 }, { cN: "function", b: "(" + t + "\\s+)+" + e.UIR + "\\s*\\(", rB: !0, e: /[{;=]/, eE: !0, k: r, c: [{ b: e.UIR + "\\s*\\(", rB: !0, r: 0, c: [e.UTM] }, { cN: "params", b: /\(/, e: /\)/, k: r, r: 0, c: [e.ASM, e.QSM, e.CNM, e.CBCM] }, e.CLCM, e.CBCM] }, n, { cN: "meta", b: "@[A-Za-z]+" }] } }), e.registerLanguage("javascript", function(e) { return { aliases: ["js", "jsx"], k: { keyword: "in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as", literal: "true false null undefined NaN Infinity", built_in: "eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise" }, c: [{ cN: "meta", r: 10, b: /^\s*['"]use (strict|asm)['"]/ }, { cN: "meta", b: /^#!/, e: /$/ }, e.ASM, e.QSM, { cN: "string", b: "`", e: "`", c: [e.BE, { cN: "subst", b: "\\$\\{", e: "\\}" }] }, e.CLCM, e.CBCM, { cN: "number", v: [{ b: "\\b(0[bB][01]+)" }, { b: "\\b(0[oO][0-7]+)" }, { b: e.CNR }], r: 0 }, { b: "(" + e.RSR + "|\\b(case|return|throw)\\b)\\s*", k: "return throw case", c: [e.CLCM, e.CBCM, e.RM, { b: /, e: /(\/\w+|\w+\/)>/, sL: "xml", c: [{ b: /<\w+\/>/, skip: !0 }, { b: /<\w+/, e: /(\/\w+|\w+\/)>/, skip: !0, c: ["self"] }] }], r: 0 }, { cN: "function", bK: "function", e: /\{/, eE: !0, c: [e.inherit(e.TM, { b: /[A-Za-z$_][0-9A-Za-z$_]*/ }), { cN: "params", b: /\(/, e: /\)/, eB: !0, eE: !0, c: [e.CLCM, e.CBCM] }], i: /\[|%/ }, { b: /\$[(.]/ }, e.METHOD_GUARD, { cN: "class", bK: "class", e: /[{;=]/, eE: !0, i: /[:"\[\]]/, c: [{ bK: "extends" }, e.UTM] }, { bK: "constructor", e: /\{/, eE: !0 }], i: /#(?!!)/ } }), e.registerLanguage("json", function(e) { var t = { literal: "true false null" }, r = [e.QSM, e.CNM], a = { e: ",", eW: !0, eE: !0, c: r, k: t }, n = { b: "{", e: "}", c: [{ cN: "attr", b: /"/, e: /"/, c: [e.BE], i: "\\n" }, e.inherit(a, { b: /:/ })], i: "\\S" }, i = { b: "\\[", e: "\\]", c: [e.inherit(a)], i: "\\S" }; return r.splice(r.length, 0, n, i), { c: r, k: t, i: "\\S" } }), e.registerLanguage("makefile", function(e) { var t = { cN: "variable", b: /\$\(/, e: /\)/, c: [e.BE] }; return { aliases: ["mk", "mak"], c: [e.HCM, { b: /^\w+\s*\W*=/, rB: !0, r: 0, starts: { e: /\s*\W*=/, eE: !0, starts: { e: /$/, r: 0, c: [t] } } }, { cN: "section", b: /^[\w]+:\s*$/ }, { cN: "meta", b: /^\.PHONY:/, e: /$/, k: { "meta-keyword": ".PHONY" }, l: /[\.\w]+/ }, { b: /^\t+/, e: /$/, r: 0, c: [e.QSM, t] }] } }), e.registerLanguage("xml", function(e) { var t = "[A-Za-z0-9\\._:-]+", r = { eW: !0, i: /, r: 0, c: [{ cN: "attr", b: t, r: 0 }, { b: "=", r: 0, c: [{ cN: "string", v: [{ b: /"/, e: /"/ }, { b: /'/, e: /'/ }, { b: /[^\s\/>]+/ }] }] }] }; return { aliases: ["html", "xhtml", "rss", "atom", "xsl", "plist"], cI: !0, c: [{ cN: "meta", b: "", r: 10, c: [{ b: "\\[", e: "\\]" }] }, e.C("", { r: 10 }), { b: "<\\!\\[CDATA\\[", e: "\\]\\]>", r: 10 }, { b: /<\?(php)?/, e: /\?>/, sL: "php", c: [{ b: "/\\*", e: "\\*/", skip: !0 }] }, { cN: "tag", b: "", rE: !0, sL: ["css", "xml"] } }, { cN: "tag", b: "Sign in - Mailjethttps://app.mailjet.com