6 _(e.objectMaxDepth) && (Ir.objectMaxDepth = n(e.objectMaxDepth) ? e.objectMaxDepth : NaN)
14 return t = t || Error,
16 var n, r, i = arguments[0],
18 a = "[" + (e ? e + ":" : "") + i + "] ",
19 s = Y(arguments, 2).map(function(e) {
20 return Ee(e, Ir.objectMaxDepth)
22 for (a += o.replace(/\{\d+\}/g, function(e) {
23 var t = +e.slice(1, -1);
24 return t < s.length ? s[t] : e
25 }), a += "\nhttp://errors.angularjs.org/1.6.6/" + (e ? e + "/" : "") + i, r = 0, n = "?"; r < s.length; r++, n = "&") a += n + "p" + r + "=" + encodeURIComponent(s[r]);
31 if (null == e || A(e)) return !1;
32 if (Jr(e) || E(e) || qr && e instanceof qr) return !0;
33 var t = "length" in Object(e) && e.length;
34 return k(t) && (t >= 0 && (t - 1 in e || e instanceof Array) || "function" == typeof e.item)
41 for (r in e) "prototype" !== r && "length" !== r && "name" !== r && e.hasOwnProperty(r) && t.call(n, e[r], r, e);
42 else if (Jr(e) || i(e)) {
43 var s = "object" != typeof e;
44 for (r = 0, a = e.length; r < a; r++)(s || r in e) && t.call(n, e[r], r, e)
45 } else if (e.forEach && e.forEach !== o) e.forEach(t, n, e);
47 for (r in e) t.call(n, e[r], r, e);
48 else if ("function" == typeof e.hasOwnProperty)
49 for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
51 for (r in e) jr.call(e, r) && t.call(n, e[r], r, e);
56 for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
61 return function(t, n) {
71 t ? e.$$hashKey = t : delete e.$$hashKey
75 for (var r = e.$$hashKey, i = 0, o = t.length; i < o; ++i) {
78 for (var s = Object.keys(a), c = 0, d = s.length; c < d; c++) {
81 n && $(h) ? C(h) ? e[f] = new Date(h.valueOf()) : M(h) ? e[f] = new RegExp(h) : h.nodeName ? e[f] = h.cloneNode(!0) : H(h) ? e[f] = h.clone() : ($(e[f]) || (e[f] = Jr(h) ? [] : {}), u(e[f], [h], !0)) : e[f] = h
88 return u(e, zr.call(arguments, 1), !1)
92 return u(e, zr.call(arguments, 1), !0)
96 return parseInt(e, 10)
100 return d(Object.create(e), t)
116 return T(e.toString) && e.toString !== Yr
128 return null !== e && "object" == typeof e
132 return null !== e && "object" == typeof e && !Gr(e)
136 return "string" == typeof e
140 return "number" == typeof e
144 return "[object Date]" === Yr.call(e)
148 switch (Yr.call(e)) {
149 case "[object Error]":
150 case "[object Exception]":
151 case "[object DOMException]":
154 return e instanceof Error
159 return "function" == typeof e
163 return "[object RegExp]" === Yr.call(e)
167 return e && e.window === e
171 return e && e.$evalAsync && e.$watch
175 return "[object File]" === Yr.call(e)
179 return "[object FormData]" === Yr.call(e)
183 return "[object Blob]" === Yr.call(e)
187 return "boolean" == typeof e
191 return e && T(e.then)
195 return e && k(e.length) && ei.test(Yr.call(e))
199 return "[object ArrayBuffer]" === Yr.call(e)
203 return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
209 for (t = 0; t < r.length; t++) n[r[t]] = !0;
214 return Hr(e.nodeName || e[0] && e[0].nodeName)
218 return -1 !== Array.prototype.indexOf.call(e, t)
222 var n = e.indexOf(t);
223 return n >= 0 && e.splice(n, 1), n
226 function V(e, t, r) {
227 function i(e, t, n) {
228 if (--n < 0) return "...";
229 var r, i = t.$$hashKey;
231 for (var o = 0, s = e.length; o < s; o++) t.push(a(e[o], n));
233 for (r in e) t[r] = a(e[r], n);
234 else if (e && "function" == typeof e.hasOwnProperty)
235 for (r in e) e.hasOwnProperty(r) && (t[r] = a(e[r], n));
237 for (r in e) jr.call(e, r) && (t[r] = a(e[r], n));
243 var n = c.indexOf(e);
244 if (-1 !== n) return u[n];
245 if (A(e) || S(e)) throw Kr("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
248 return void 0 === o && (o = Jr(e) ? [] : Object.create(Gr(e)), r = !0), c.push(e), u.push(o), r ? i(e, o, t) : o
252 switch (Yr.call(e)) {
253 case "[object Int8Array]":
254 case "[object Int16Array]":
255 case "[object Int32Array]":
256 case "[object Float32Array]":
257 case "[object Float64Array]":
258 case "[object Uint8Array]":
259 case "[object Uint8ClampedArray]":
260 case "[object Uint16Array]":
261 case "[object Uint32Array]":
262 return new e.constructor(a(e.buffer), e.byteOffset, e.length);
263 case "[object ArrayBuffer]":
265 var t = new ArrayBuffer(e.byteLength);
266 return new Uint8Array(t).set(new Uint8Array(e)), t
269 case "[object Boolean]":
270 case "[object Number]":
271 case "[object String]":
272 case "[object Date]":
273 return new e.constructor(e.valueOf());
274 case "[object RegExp]":
275 var n = new RegExp(e.source, e.toString().match(/[^/]*$/)[0]);
276 return n.lastIndex = e.lastIndex, n;
277 case "[object Blob]":
278 return new e.constructor([e], {
282 if (T(e.cloneNode)) return e.cloneNode(!0)
286 if (r = n(r) ? r : NaN, t) {
287 if (P(t) || j(t)) throw Kr("cpta", "Can't copy! TypedArray destination cannot be mutated.");
288 if (e === t) throw Kr("cpi", "Can't copy! Source and destination are identical.");
289 return Jr(t) ? t.length = 0 : o(t, function(e, n) {
290 "$$hashKey" !== n && delete t[n]
291 }), c.push(e), u.push(t), i(e, t, r)
297 return e === t || e !== e && t !== t
301 if (e === t) return !0;
302 if (null === e || null === t) return !1;
303 if (e !== e && t !== t) return !0;
304 var n, r, i, o = typeof e;
305 if (o === typeof t && "object" === o) {
307 if (C(e)) return !!C(t) && z(e.getTime(), t.getTime());
308 if (M(e)) return !!M(t) && e.toString() === t.toString();
309 if (S(e) || S(t) || A(e) || A(t) || Jr(t) || C(t) || M(t)) return !1;
312 if ("$" !== r.charAt(0) && !T(e[r])) {
313 if (!B(e[r], t[r])) return !1;
317 if (!(r in i) && "$" !== r.charAt(0) && _(t[r]) && !T(t[r])) return !1;
320 if (!Jr(t)) return !1;
321 if ((n = e.length) === t.length) {
322 for (r = 0; r < n; r++)
323 if (!B(e[r], t[r])) return !1;
330 function W(e, t, n) {
331 return e.concat(zr.call(t, n))
335 return zr.call(e, t || 0)
339 var n = arguments.length > 2 ? Y(arguments, 2) : [];
340 return !T(t) || t instanceof RegExp ? t : n.length ? function() {
341 return arguments.length ? t.apply(e, W(n, arguments, 0)) : t.apply(e, n)
343 return arguments.length ? t.apply(e, arguments) : t.call(e)
349 return "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1) ? r = void 0 : A(n) ? r = "$WINDOW" : n && e.document === n ? r = "$DOCUMENT" : S(n) && (r = "$SCOPE"), r
353 if (!y(e)) return k(t) || (t = t ? 2 : null), JSON.stringify(e, K, t)
357 return E(e) ? JSON.parse(e) : e
361 e = e.replace(oi, "");
362 var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
367 return (e = new Date(e.getTime())).setMinutes(e.getMinutes() + t), e
370 function ee(e, t, n) {
372 var r = e.getTimezoneOffset();
373 return J(e, n * (Q(t, r) - r))
377 e = qr(e).clone().empty();
378 var t = qr("<div>").append(e).html();
380 return e[0].nodeType === di ? Hr(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(e, t) {
390 return decodeURIComponent(e)
396 return o((e || "").split("&"), function(e) {
398 e && (r = e = e.replace(/\+/g, "%20"), -1 !== (n = e.indexOf("=")) && (r = e.substring(0, n), i = e.substring(n + 1)), _(r = ne(r)) && (i = !_(i) || ne(i), jr.call(t, r) ? Jr(t[r]) ? t[r].push(i) : t[r] = [t[r], i] : t[r] = i))
404 return o(e, function(e, n) {
405 Jr(e) ? o(e, function(e) {
406 t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
407 }) : t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
408 }), t.length ? t.join("&") : ""
412 return ae(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
416 return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
420 var n, r, i = ai.length;
421 for (r = 0; r < i; ++r)
422 if (n = ai[r] + t, E(n = e.getAttribute(n))) return n;
428 if (o(ai, function(e) {
430 !r && t.hasAttribute && t.hasAttribute(n) && (r = t, i = t.getAttribute(n))
431 }), o(ai, function(e) {
432 var n, o = e + "app";
433 !r && (n = t.querySelector("[" + o.replace(":", "\\:") + "]")) && (r = n, i = n.getAttribute(o))
435 if (!si) return void e.console.error("Angular: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
436 a.strictDi = null !== se(r, "strict-di"), n(r, i ? [i] : [], a)
440 function le(t, n, r) {
441 $(r) || (r = {}), r = d({
445 if ((t = qr(t)).injector()) {
446 var i = t[0] === e.document ? "document" : te(t);
447 throw Kr("btstrpd", "App already bootstrapped with this element '{0}'", i.replace(/</, "<").replace(/>/, ">"))
448 }(n = n || []).unshift(["$provide", function(e) {
449 e.value("$rootElement", t)
450 }]), r.debugInfoEnabled && n.push(["$compileProvider", function(e) {
451 e.debugInfoEnabled(!0)
452 }]), n.unshift("ng");
453 var o = st(n, r.strictDi);
454 return o.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
455 e.$apply(function() {
456 t.data("$injector", r), n(t)(e)
460 a = /^NG_ENABLE_DEBUG_INFO!/,
461 s = /^NG_DEFER_BOOTSTRAP!/;
462 if (e && a.test(e.name) && (r.debugInfoEnabled = !0, e.name = e.name.replace(a, "")), e && !s.test(e.name)) return i();
463 e.name = e.name.replace(s, ""), Zr.resumeBootstrap = function(e) {
464 return o(e, function(e) {
467 }, T(Zr.resumeDeferredBootstrap) && Zr.resumeDeferredBootstrap()
471 e.name = "NG_ENABLE_DEBUG_INFO!" + e.name, e.location.reload()
475 var t = Zr.element(e).injector();
476 if (!t) throw Kr("test", "no injector found for element argument to getTestability");
477 return t.get("$$testability")
481 return t = t || "_", e.replace(ci, function(e, n) {
482 return (n ? t : "") + e.toLowerCase()
486 function he(e, t, n) {
487 if (!e) throw Kr("areq", "Argument '{0}' is {1}", t || "?", n || "required");
491 function pe(e, t, n) {
492 return n && Jr(e) && (e = e[e.length - 1]), he(T(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
496 if ("hasOwnProperty" === e) throw Kr("badname", "hasOwnProperty is not a valid {0} name", t)
499 function ge(e, t, n) {
501 for (var r, i = t.split("."), o = e, a = i.length, s = 0; s < a; s++) r = i[s], e && (e = (o = e)[r]);
502 return !n && T(e) ? G(o, e) : e
506 for (var t, n = e[0], r = e[e.length - 1], i = 1; n !== r && (n = n.nextSibling); i++)(t || e[i] !== n) && (t || (t = qr(zr.call(e, 0, i))), t.push(n));
511 return Object.create(null)
515 if (null == e) return "";
523 e = !b(e) || Jr(e) || C(e) ? Z(e) : e.toString()
529 function t(e, t, n) {
530 return e[t] || (e[t] = n())
532 var n = r("$injector"),
534 o = t(e, "angular", Object);
535 return o.$$minErr = o.$$minErr || r, t(o, "module", function() {
537 return function(r, o, a) {
539 return function(e, t) {
540 if ("hasOwnProperty" === e) throw i("badname", "hasOwnProperty is not a valid {0} name", t)
541 }(r, "module"), o && e.hasOwnProperty(r) && (e[r] = null), t(e, r, function() {
542 function e(e, t, n, r) {
545 return r[n || "push"]([e, t, arguments]), f
549 function t(e, t, n) {
552 return o && T(o) && (o.$$moduleName = r), n.push([e, t, arguments]), f
555 if (!o) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
559 d = e("$injector", "invoke", "push", l),
566 if (!$(e)) throw i("aobj", "Argument '{0}' must be an object", "value");
573 provider: t("$provide", "provider"),
574 factory: t("$provide", "factory"),
575 service: t("$provide", "service"),
576 value: e("$provide", "value"),
577 constant: e("$provide", "constant", "unshift"),
578 decorator: t("$provide", "decorator", l),
579 animation: t("$animateProvider", "register"),
580 filter: t("$filterProvider", "register"),
581 controller: t("$controllerProvider", "register"),
582 directive: t("$compileProvider", "directive"),
583 component: t("$compileProvider", "component"),
586 return u.push(e), this
598 for (var n = 0, r = e.length; n < r; n++) t[n] = e[n]
601 for (var i in e) "$" === i.charAt(0) && "$" === i.charAt(1) || (t[i] = e[i])
608 return n(t) && (e = Zr.copy(e, null, t)), JSON.stringify(e, function(e, t) {
609 if (t = K(e, t), $(t)) {
610 if (r.indexOf(t) >= 0) return "...";
618 return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : y(e) ? "undefined" : "string" != typeof e ? we(e, t) : e
626 return Te(e.replace(yi, "ms-"))
630 return t.toUpperCase()
634 return e.replace(bi, xe)
643 return t === ui || !t || t === hi
647 var n, r, i, a, s = t.createDocumentFragment(),
649 if (Me(e)) c.push(t.createTextNode(e));
651 for (n = s.appendChild(t.createElement("div")), r = (ki.exec(e) || ["", ""])[1].toLowerCase(), i = xi[r] || xi._default, n.innerHTML = i[1] + e.replace(Ci, "<$1></$2>") + i[2], a = i[0]; a--;) n = n.lastChild;
652 c = W(c, n.childNodes), (n = s.firstChild).textContent = ""
654 return s.textContent = "", s.innerHTML = "", o(c, function(e) {
662 return (r = wi.exec(t)) ? [n.createElement(r[1])] : (r = Se(t, n)) ? r.childNodes : []
666 var n = e.parentNode;
667 n && n.replaceChild(t, e), t.appendChild(e)
671 if (e instanceof Ne) return e;
673 if (E(e) && (e = ti(e), t = !0), !(this instanceof Ne)) {
674 if (t && "<" !== e.charAt(0)) throw $i("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
677 t ? Ve(this, Oe(e)) : T(e) ? Ke(e) : Ve(this, e)
681 return e.cloneNode(!0)
685 !t && Ae(e) && qr.cleanData([e]), e.querySelectorAll && qr.cleanData(e.querySelectorAll("*"))
688 function Pe(e, t, n, r) {
689 if (_(r)) throw $i("offargs", "jqLite#off() does not support the `selector` argument");
695 var c = function(t) {
697 _(n) && U(r || [], n), _(n) && r && r.length > 0 || (e.removeEventListener(t, s), delete a[t])
699 o(t.split(" "), function(e) {
700 c(e), _i[e] && c(_i[e])
703 for (t in a) "$destroy" !== t && e.removeEventListener(t, s), delete a[t]
710 if (t) return void delete r.data[t];
711 r.handle && (r.events.$destroy && r.handle({}, "$destroy"), Pe(e)), delete gi[n], e.ng339 = void 0
718 return t && !r && (e.ng339 = n = ke(), r = gi[n] = {
725 function Le(e, t, n) {
728 o = !i && t && !$(t),
735 if (o) return c && c[Te(t)];
736 for (r in t) c[Te(r)] = t[r]
742 return !!e.getAttribute && (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ") > -1
746 t && e.setAttribute && o(t.split(" "), function(t) {
747 e.setAttribute("class", ti((" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + ti(t) + " ", " ")))
752 if (t && e.setAttribute) {
753 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
754 o(t.split(" "), function(e) {
755 e = ti(e), -1 === n.indexOf(" " + e + " ") && (n += e + " ")
756 }), e.setAttribute("class", ti(n))
762 if (t.nodeType) e[e.length++] = t;
765 if ("number" == typeof n && t.window !== t) {
767 for (var r = 0; r < n; r++) e[e.length++] = t[r]
768 } else e[e.length++] = t
773 return Be(e, "$" + (t || "ngController") + "Controller")
776 function Be(e, t, n) {
777 e.nodeType === hi && (e = e.documentElement);
778 for (var r = Jr(t) ? t : [t]; e;) {
779 for (var i = 0, o = r.length; i < o; i++)
780 if (_(n = qr.data(e, r[i]))) return n;
781 e = e.parentNode || e.nodeType === pi && e.host
786 for (Re(e, !0); e.firstChild;) e.removeChild(e.firstChild)
791 var n = e.parentNode;
792 n && n.removeChild(e)
796 "complete" === (n = n || e).document.readyState ? n.setTimeout(t) : qr(n).on("load", t)
801 e.document.removeEventListener("DOMContentLoaded", n), e.removeEventListener("load", n), t()
803 "complete" === e.document.readyState ? e.setTimeout(t) : (e.document.addEventListener("DOMContentLoaded", n), e.addEventListener("load", n))
807 var n = Ai[t.toLowerCase()];
808 return n && Si[F(e)] && n
816 var n = function(n, r) {
817 n.isDefaultPrevented = function() {
818 return n.defaultPrevented
820 var i = t[r || n.type],
821 o = i ? i.length : 0;
823 if (y(n.immediatePropagationStopped)) {
824 var a = n.stopImmediatePropagation;
825 n.stopImmediatePropagation = function() {
826 n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), a && a.call(n)
829 n.isImmediatePropagationStopped = function() {
830 return !0 === n.immediatePropagationStopped
832 var s = i.specialHandlerWrapper || Je;
833 o > 1 && (i = $e(i));
834 for (var c = 0; c < o; c++) n.isImmediatePropagationStopped() || s(e, n, i[c])
840 function Je(e, t, n) {
844 function et(e, t, n) {
845 var r = t.relatedTarget;
846 r && (r === e || Ti.call(e, r)) || n.call(e, t)
850 this.$get = function() {
852 hasClass: function(e, t) {
853 return e.attr && (e = e[0]), Fe(e, t)
855 addClass: function(e, t) {
856 return e.attr && (e = e[0]), Ue(e, t)
858 removeClass: function(e, t) {
859 return e.attr && (e = e[0]), qe(e, t)
866 var n = e && e.$$hashKey;
867 if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
869 return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || c)() : r + ":" + e
873 this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
877 return Function.prototype.toString.call(e)
881 var t = it(e).replace(Li, "");
882 return t.match(Ri) || t.match(Pi)
887 return t ? "function(" + (t[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
892 return function(t, n) {
893 if (!$(t)) return e(t, n);
899 if (me(e, "service"), (T(t) || Jr(t)) && (t = m.instantiate(t)), !t.$get) throw Fi("pget", "Provider '{0}' must define $get factory method.", e);
905 var n = _.invoke(t, this);
906 if (y(n)) throw Fi("undef", "Provider '{0}' must return a value from $get factory method.", e);
911 function a(e, t, n) {
913 $get: !1 !== n ? i(e, t) : t
918 he(y(e) || Jr(e), "modulesToLoad", "not an array");
920 return o(e, function(e) {
923 for (t = 0, n = e.length; t < n; t++) {
926 i[r[1]].apply(i, r[2])
932 E(e) ? (t = Vr(e), _.modules[e] = t, n = n.concat(c(t.requires)).concat(t._runBlocks), r(t._invokeQueue), r(t._configBlocks)) : T(e) ? n.push(m.invoke(e)) : Jr(e) ? n.push(m.invoke(e)) : pe(e, "module")
934 throw Jr(e) && (e = e[e.length - 1]), t.message && t.stack && -1 === t.stack.indexOf(t.message) && (t = t.message + "\n" + t.stack), Fi("modulerr", "Failed to instantiate module {0} due to:\n{1}", e, t.stack || t.message || t)
942 if (e.hasOwnProperty(t)) {
943 if (e[t] === u) throw Fi("cdep", "Circular dependency found: {0}", t + " <- " + f.join(" <- "));
947 return f.unshift(t), e[t] = u, e[t] = n(t, r), e[t]
949 throw e[t] === u && delete e[t], n
955 function i(e, n, i) {
956 for (var o = [], a = st.$$annotate(e, t, i), s = 0, c = a.length; s < c; s++) {
958 if ("string" != typeof l) throw Fi("itkn", "Incorrect injection token! Expected service name as string, got {0}", l);
959 o.push(n && n.hasOwnProperty(l) ? n[l] : r(l, i))
965 if (Fr || "function" != typeof e) return !1;
966 var t = e.$$ngIsClass;
967 return I(t) || (t = e.$$ngIsClass = /^(?:class\b|constructor\()/.test(it(e))), t
970 invoke: function(e, t, n, r) {
971 "string" == typeof n && (r = n, n = null);
973 return Jr(e) && (e = e[e.length - 1]), o(e) ? (a.unshift(null), new(Function.prototype.bind.apply(e, a))) : e.apply(t, a)
975 instantiate: function(e, t, n) {
976 var r = Jr(e) ? e[e.length - 1] : e,
978 return o.unshift(null), new(Function.prototype.bind.apply(r, o))
981 annotate: st.$$annotate,
983 return p.hasOwnProperty(t + d) || e.hasOwnProperty(t)
996 service: n(function(e, t) {
997 return a(e, ["$injector", function(e) {
998 return e.instantiate(t)
1001 value: n(function(e, t) {
1002 return a(e, v(t), !1)
1004 constant: n(function(e, t) {
1005 me(e, "constant"), p[e] = t, g[e] = t
1007 decorator: function(e, t) {
1008 var n = m.get(e + d),
1010 n.$get = function() {
1011 var e = _.invoke(r, n);
1012 return _.invoke(t, null, {
1019 m = p.$injector = l(p, function(e, t) {
1020 throw Zr.isString(t) && f.push(t), Fi("unpr", "Unknown provider: {0}", f.join(" <- "))
1023 b = l(g, function(e, t) {
1024 var n = m.get(e + d, t);
1025 return _.invoke(n.$get, n, void 0, e)
1028 p["$injector" + d] = {
1030 }, _.modules = m.modules = be();
1032 return _ = b.get("$injector"), _.strictDi = t, o(w, function(e) {
1039 this.disableAutoScrolling = function() {
1041 }, this.$get = ["$window", "$location", "$rootScope", function(t, n, r) {
1044 return Array.prototype.some.call(e, function(e) {
1045 if ("a" === F(e)) return t = e, !0
1054 e = "fixed" !== t.getComputedStyle(n).position ? 0 : n.getBoundingClientRect().bottom
1055 } else k(e) || (e = 0);
1064 var r = e.getBoundingClientRect().top;
1065 t.scrollBy(0, r - n)
1067 } else t.scrollTo(0, 0)
1072 (e = E(e) ? e : k(e) ? e.toString() : n.hash()) ? (t = c.getElementById(e)) ? a(t): (t = i(c.getElementsByName(e))) ? a(t) : "top" === e && a(null): a(null)
1075 return e && r.$watch(function() {
1078 e === t && "" === e || Ge(function() {
1086 return e || t ? e ? t ? (Jr(e) && (e = e.join(" ")), Jr(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1090 for (var t = 0; t < e.length; t++) {
1092 if (n.nodeType === Ui) return n
1097 E(e) && (e = e.split(" "));
1099 return o(e, function(e) {
1100 e.length && (t[e] = !0)
1105 return $(e) ? e : {}
1108 function ht(e, t, n, r) {
1111 e.apply(null, Y(arguments, 1))
1114 for (; b.length;) try {
1123 var t = e.indexOf("#");
1124 return -1 === t ? "" : e.substr(t)
1132 _ = C(), B(_ = y(_) ? null : _, M) && (_ = M), M = _, $ = _
1137 c(), w === u.url() && e === _ || (w = u.url(), $ = _, o(x, function(e) {
1150 u.$$completeOutstandingRequest = i, u.$$incOutstandingRequestCount = function() {
1152 }, u.notifyWhenNoOutstandingRequests = function(e) {
1153 0 === v ? e() : b.push(e)
1155 var _, $, w = d.href,
1158 C = r.history ? function() {
1163 c(), u.url = function(t, n, i) {
1164 if (y(i) && (i = null), d !== e.location && (d = e.location), f !== e.history && (f = e.history), t) {
1166 if (w === t && (!r.history || o)) return u;
1167 var s = w && Yt(w) === Yt(t);
1168 return w = t, $ = i, !r.history || s && o ? (s || (k = t), n ? d.replace(t) : s ? d.hash = a(t) : d.href = t, d.href !== t && (k = t)) : (f[n ? "replaceState" : "pushState"](i, "", t), c()), k && (k = t), u
1170 return k || d.href.replace(/%27/g, "'")
1171 }, u.state = function() {
1177 u.onUrlChange = function(t) {
1178 return T || (r.history && qr(e).on("popstate", s), qr(e).on("hashchange", s), T = !0), x.push(t), t
1179 }, u.$$applicationDestroyed = function() {
1180 qr(e).off("hashchange popstate", s)
1181 }, u.$$checkUrlChange = l, u.baseHref = function() {
1182 var e = E.attr("href");
1183 return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1184 }, u.defer = function(e, t) {
1186 return v++, n = h(function() {
1188 }, t || 0), g[n] = !0, n
1189 }, u.defer.cancel = function(e) {
1190 return !!g[e] && (delete g[e], p(e), i(m), !0)
1195 this.$get = ["$window", "$log", "$sniffer", "$document", function(e, t, n, r) {
1196 return new ht(e, r, t, n)
1201 this.$get = function() {
1204 e !== f && (h ? h === e && (h = e.n) : h = e, o(e.n, e.p), o(e, f), (f = e).n = null)
1208 e !== t && (e && (e.p = t), t && (t.n = e))
1210 if (e in t) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1216 l = n && n.capacity || Number.MAX_VALUE,
1221 put: function(e, t) {
1222 if (!y(t)) return l < Number.MAX_VALUE && i(u[e] || (u[e] = {
1224 })), e in c || a++, c[e] = t, a > l && this.remove(h.key), t
1227 if (l < Number.MAX_VALUE) {
1234 remove: function(e) {
1235 if (l < Number.MAX_VALUE) {
1238 t === f && (f = t.p), t === h && (h = t.n), o(t.n, t.p), delete u[e]
1240 e in c && (delete c[e], a--)
1242 removeAll: function() {
1243 c = be(), a = 0, u = be(), f = h = null
1245 destroy: function() {
1246 c = null, s = null, u = null, delete t[e]
1256 return e.info = function() {
1258 return o(t, function(t, n) {
1261 }, e.get = function(e) {
1268 this.$get = ["$cacheFactory", function(e) {
1269 return e("templates")
1274 function r(e, t, n) {
1275 var r = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/,
1277 return o(e, function(e, o) {
1278 if (e in M) i[o] = M[e];
1281 if (!a) throw Ki("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", t, o, e, n ? "controller bindings definition" : "isolate scope definition");
1284 collection: "*" === a[2],
1285 optional: "?" === a[3],
1287 }, a[4] && (M[e] = i[o])
1295 bindToController: null
1297 if ($(e.scope) && (!0 === e.bindToController ? (n.bindToController = r(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = r(e.scope, t, !1)), $(e.bindToController) && (n.bindToController = r(e.bindToController, t, !0)), n.bindToController && !e.controller) throw Ki("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1302 var t = e.charAt(0);
1303 if (!t || t !== Hr(t)) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1304 if (e !== e.trim()) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1308 var t = e.require || e.controller && e.name;
1309 return !Jr(t) && $(t) && o(t, function(e, n) {
1311 e.substring(r[0].length) || (t[n] = r[0] + n)
1316 if (e && (!E(e) || !/[EACM]/.test(e))) throw Ki("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1321 h = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1322 b = /(([\w-]+)(?::([^;]+))?;?)/,
1323 w = L("ngSrc,ngSrcset,src,srcset"),
1324 k = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1325 C = /^(on[a-z]+|formaction)$/,
1327 this.directive = function e(n, r) {
1328 return he(n, "name"), me(n, "directive"), E(n) ? (a(n), he(r, "directiveFactory"), u.hasOwnProperty(n) || (u[n] = [], t.factory(n + f, ["$injector", "$exceptionHandler", function(e, t) {
1330 return o(u[n], function(i, o) {
1332 var a = e.invoke(i);
1335 } : !a.compile && a.link && (a.compile = v(a.link)), a.priority = a.priority || 0, a.index = o, a.name = a.name || n, a.require = c(a), a.restrict = l(a.restrict, n), a.$$moduleName = i.$$moduleName, r.push(a)
1340 }])), u[n].push(r)) : o(n, s(e)), this
1341 }, this.component = function e(t, n) {
1344 return T(t) || Jr(t) ? function(n, r) {
1345 return e.invoke(t, this, {
1351 var r = n.template || n.templateUrl ? n.template : "",
1354 controllerAs: wt(n.controller) || n.controllerAs || "$ctrl",
1356 templateUrl: t(n.templateUrl),
1357 transclude: n.transclude,
1359 bindToController: n.bindings || {},
1363 return o(n, function(e, t) {
1364 "$" === t.charAt(0) && (a[t] = e)
1367 if (!E(t)) return o(t, s(G(this, e))), this;
1368 var i = n.controller || function() {};
1369 return o(n, function(e, t) {
1370 "$" === t.charAt(0) && (r[t] = e, T(i) && (i[t] = e))
1371 }), r.$inject = ["$injector"], this.directive(t, r)
1372 }, this.aHrefSanitizationWhitelist = function(e) {
1373 return _(e) ? (n.aHrefSanitizationWhitelist(e), this) : n.aHrefSanitizationWhitelist()
1374 }, this.imgSrcSanitizationWhitelist = function(e) {
1375 return _(e) ? (n.imgSrcSanitizationWhitelist(e), this) : n.imgSrcSanitizationWhitelist()
1378 this.debugInfoEnabled = function(e) {
1379 return _(e) ? (A = e, this) : A
1382 this.preAssignBindingsEnabled = function(e) {
1383 return _(e) ? (O = e, this) : O
1386 this.strictComponentBindingsEnabled = function(e) {
1387 return _(e) ? (D = e, this) : D
1390 this.onChangesTtl = function(e) {
1391 return arguments.length ? (N = e, this) : N
1394 this.commentDirectivesEnabled = function(e) {
1395 return arguments.length ? (R = e, this) : R
1398 this.cssClassDirectivesEnabled = function(e) {
1399 return arguments.length ? (P = e, this) : P
1400 }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", "$$sanitizeUri", function(t, n, r, a, s, c, l, v, M, j) {
1403 if (!--Ne) throw Te = void 0, Ki("infchng", "{0} $onChanges() iterations reached. Aborting!\n", N);
1404 l.$apply(function() {
1405 for (var e = [], t = 0, n = Te.length; t < n; ++t) try {
1410 if (Te = void 0, e.length) throw e
1419 var n, r, i, o = Object.keys(t);
1420 for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1421 } else this.$attr = {};
1425 function q(e, t, n) {
1426 Se.innerHTML = "<span " + t + ">";
1427 var r = Se.firstChild.attributes,
1429 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1438 function W(e, t, n, r, i) {
1439 e instanceof qr || (e = qr(e));
1440 var o = Z(e, t, e, n, r, i);
1441 W.$$addScopeClass(e);
1443 return function(t, n, r) {
1444 if (!e) throw Ki("multilink", "This element has already been linked.");
1445 he(t, "scope"), i && i.needsNewScope && (t = t.$parent.$new());
1446 var s = (r = r || {}).parentBoundTranscludeFn,
1447 c = r.transcludeControllers,
1448 l = r.futureParentElement;
1449 s && s.$$boundTransclude && (s = s.$$boundTransclude), a || (a = K(l));
1451 if (u = "html" !== a ? qr(ye(a, qr("<div>").append(e).html())) : n ? Mi.clone.call(e) : e, c)
1452 for (var d in c) u.data("$" + d + "Controller", c[d].instance);
1453 return W.$$addScopeInfo(u, t), n && n(u, t), o && o(t, u, u, s), n || (e = o = null), u
1459 return t && "foreignobject" !== F(t) && Yr.call(t).match(/SVG/) ? "svg" : "html"
1462 function Z(e, t, n, r, i, o) {
1463 for (var a, s, c, l, u, d, f, h = [], p = Jr(e) || e instanceof qr, m = 0; m < e.length; m++) a = new L, 11 === Fr && X(e, m, p), (c = (s = J(e[m], [], a, 0 === m ? r : void 0, i)).length ? oe(s, e[m], a, t, n, null, [], [], o) : null) && c.scope && W.$$addScopeClass(a.$$element), u = c && c.terminal || !(l = e[m].childNodes) || !l.length ? null : Z(l, c ? (c.transcludeOnThisElement || !c.templateOnThisElement) && c.transclude : t), (c || u) && (h.push(m, c, u), d = !0, f = f || c), o = null;
1464 return d ? function(e, n, r, i) {
1465 var o, a, s, c, l, u, d, p;
1468 for (p = new Array(m), l = 0; l < h.length; l += 3) p[d = h[l]] = n[d]
1470 for (l = 0, u = h.length; l < u;) s = p[h[l++]], o = h[l++], a = h[l++], o ? (o.scope ? (c = e.$new(), W.$$addScopeInfo(qr(s), c)) : c = e, o(a, c, s, r, o.transcludeOnThisElement ? Q(e, o.transclude, i) : !o.templateOnThisElement && i ? i : !i && t ? Q(e, t) : null)) : a && a(e, s.childNodes, void 0, i)
1474 function X(e, t, n) {
1477 if (i.nodeType === di)
1479 if (!(r = o ? i.nextSibling : e[t + 1]) || r.nodeType !== di) break;
1480 i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
1484 function Q(e, t, n) {
1485 function r(r, i, o, a, s) {
1486 return r || ((r = e.$new(!1, s)).$$transcluded = !0), t(r, i, {
1487 parentBoundTranscludeFn: n,
1488 transcludeControllers: o,
1489 futureParentElement: a
1492 var i = r.$$slots = be();
1493 for (var o in t.$$slots) t.$$slots[o] ? i[o] = Q(e, t.$$slots[o], n) : i[o] = null;
1497 function J(e, t, n, r, i) {
1498 var o, a, s, c = e.nodeType,
1502 le(t, yt(a = F(e)), "E", r, i);
1503 for (var u, d, f, h, p, m, g = e.attributes, v = 0, y = g && g.length; v < y; v++) {
1506 d = (u = g[v]).name, p = u.value, h = yt(d), (m = He.test(h)) && (d = d.replace(Xi, "").substr(8).replace(/_(.)/g, function(e, t) {
1507 return t.toUpperCase()
1509 var k = h.match(Le);
1510 k && ue(k[1]) && (_ = d, w = d.substr(0, d.length - 5) + "end", d = d.substr(0, d.length - 6)), l[f = yt(d.toLowerCase())] = d, !m && n.hasOwnProperty(f) || (n[f] = p, Ze(e, f) && (n[f] = !0)), $e(e, t, p, f, m), le(t, f, "A", r, i, _, w)
1512 if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !De) break;
1513 if (s = e.className, $(s) && (s = s.animVal), E(s) && "" !== s)
1514 for (; o = b.exec(s);) le(t, f = yt(o[2]), "C", r, i) && (n[f] = ti(o[3])), s = s.substr(o.index + o[0].length);
1523 return t.sort(me), t
1526 function ee(e, t, n, r, i) {
1528 var o = h.exec(e.nodeValue);
1531 le(t, a, "M", r, i) && (n[a] = ti(o[2]))
1536 function ne(e, t, n) {
1539 if (t && e.hasAttribute && e.hasAttribute(t))
1541 if (!e) throw Ki("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
1542 e.nodeType === ui && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
1548 function re(e, t, n) {
1549 return function(r, i, o, a, s) {
1550 return i = ne(i[0], t, n), e(r, i, o, a, s)
1554 function ie(e, t, n, r, i, o) {
1556 return e ? W(t, n, r, i, o) : function() {
1557 return a || (a = W(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
1561 function oe(e, t, n, i, a, s, c, l, u) {
1562 function f(e, t, n, r) {
1563 e && (n && (e = re(e, n, r)), e.require = p.require, e.directiveName = m, (k === p || p.$$isolateScope) && (e = Ee(e, {
1565 })), c.push(e)), t && (n && (t = re(t, n, r)), t.require = p.require, t.directiveName = m, (k === p || p.$$isolateScope) && (t = Ee(t, {
1570 function h(e, i, a, s, u) {
1571 var f, h, p, m, g, v, b, _, x, M;
1572 t === a ? (x = n, _ = n.$$element) : x = new L(_ = qr(a), n), g = i, k ? m = i.$new(!0) : w && (g = i.$parent), u && ((b = function(e, t, n, r) {
1574 if (S(e) || (r = n, n = t, t = e, e = void 0), D && (i = v), n || (n = D ? _.parent() : _), !r) return u(e, t, i, n, j);
1575 var o = u.$$slots[r];
1576 if (o) return o(e, t, i, n, j);
1577 if (y(o)) throw Ki("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, te(_))
1578 }).$$boundTransclude = u, b.isSlotFilled = function(e) {
1579 return !!u.$$slots[e]
1580 }), E && (v = se(_, x, b, E, m, i, k)), k && (W.$$addScopeInfo(_, m, !0, !(C && (C === k || C === k.$$originalDirective))), W.$$addScopeClass(_, !0), m.$$isolateBindings = k.$$isolateBindings, (M = xe(i, x, m, m.$$isolateBindings, k)).removeWatches && m.$on("$destroy", M.removeWatches));
1584 R = N.$$bindings.bindToController;
1586 I.bindingInfo = R ? xe(g, x, I.instance, R, N) : {};
1588 P !== I.instance && (I.instance = P, _.data("$" + N.name + "Controller", P), I.bindingInfo.removeWatches && I.bindingInfo.removeWatches(), I.bindingInfo = xe(g, x, I.instance, R, N))
1589 } else I.instance = I(), _.data("$" + N.name + "Controller", I.instance), I.bindingInfo = xe(g, x, I.instance, R, N)
1591 for (o(E, function(e, t) {
1593 e.bindToController && !Jr(n) && $(n) && d(v[t].instance, ae(t, n, _, v))
1594 }), o(v, function(e) {
1596 if (T(t.$onChanges)) try {
1597 t.$onChanges(e.bindingInfo.initialChanges)
1601 if (T(t.$onInit)) try {
1606 T(t.$doCheck) && (g.$watch(function() {
1608 }), t.$doCheck()), T(t.$onDestroy) && g.$on("$destroy", function() {
1611 }), f = 0, h = c.length; f < h; f++) ke(p = c[f], p.isolateScope ? m : i, _, x, p.require && ae(p.directiveName, p.require, _, v), b);
1613 for (k && (k.template || null === k.templateUrl) && (j = m), e && e(j, a.childNodes, void 0, u), f = l.length - 1; f >= 0; f--) ke(p = l[f], p.isolateScope ? m : i, _, x, p.require && ae(p.directiveName, p.require, _, v), b);
1616 T(t.$postLink) && t.$postLink()
1620 for (var p, m, g, v, b, _ = -Number.MAX_VALUE, w = u.newScopeDirective, E = u.controllerDirectives, k = u.newIsolateScopeDirective, C = u.templateDirective, x = u.nonTlbTranscludeDirective, M = !1, A = !1, D = u.hasElementTranscludeDirective, N = n.$$element = qr(t), I = s, R = i, P = !1, j = !1, H = 0, q = e.length; H < q; H++) {
1621 var U = (p = e[H]).$$start,
1623 if (U && (N = ne(t, U, V)), g = void 0, _ > p.priority) break;
1624 if ((b = p.scope) && (p.templateUrl || ($(b) ? (ge("new/isolated scope", k || w, p, N), k = p) : ge("new/isolated scope", k, p, N)), w = w || p), m = p.name, !P && (p.replace && (p.templateUrl || p.template) || p.transclude && !p.$$tlb)) {
1625 for (var z, B = H + 1; z = e[B++];)
1626 if (z.transclude && !z.$$tlb || z.replace && (z.templateUrl || z.template)) {
1632 if (!p.templateUrl && p.controller && (E = E || be(), ge("'" + m + "' controller", E[m], p, N), E[m] = p), b = p.transclude)
1633 if (M = !0, p.$$tlb || (ge("transclusion", x, p, N), x = p), "element" === b) D = !0, _ = p.priority, g = N, N = n.$$element = qr(W.$$createComment(m, n[m])), t = N[0], we(a, Y(g), t), g[0].$$parentNode = g[0].parentNode, R = ie(j, g, i, _, I && I.name, {
1634 nonTlbTranscludeDirective: x
1642 o(b, function(e, t) {
1643 var n = "?" === e.charAt(0);
1644 e = n ? e.substring(1) : e, Z[e] = t, K[t] = null, X[t] = n
1645 }), o(N.contents(), function(e) {
1646 var t = Z[yt(F(e))];
1647 t ? (X[t] = !0, K[t] = K[t] || [], K[t].push(e)) : g.push(e)
1648 }), o(X, function(e, t) {
1649 if (!e) throw Ki("reqslot", "Required transclusion slot `{0}` was not filled.", t)
1651 for (var Q in K) K[Q] && (K[Q] = ie(j, K[Q], i))
1652 } else g = qr(Ie(t)).contents();
1653 N.empty(), (R = ie(j, g, i, void 0, void 0, {
1654 needsNewScope: p.$$isolateScope || p.$$newScope
1658 if (A = !0, ge("template", C, p, N), C = p, b = T(p.template) ? p.template(N, n) : p.template, b = je(b), p.replace) {
1659 if (I = p, g = Me(b) ? [] : $t(ye(p.templateNamespace, ti(b))), t = g[0], 1 !== g.length || t.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", m, "");
1665 le = e.splice(H + 1, e.length - (H + 1));
1666 (k || w) && ce(oe, k, w), e = e.concat(oe).concat(le), de(n, ee), q = e.length
1668 if (p.templateUrl) A = !0, ge("template", C, p, N), C = p, p.replace && (I = p), h = pe(e.splice(H, e.length - H), N, n, a, M && R, c, l, {
1669 controllerDirectives: E,
1670 newScopeDirective: w !== p && w,
1671 newIsolateScopeDirective: k,
1672 templateDirective: C,
1673 nonTlbTranscludeDirective: x
1675 else if (p.compile) try {
1676 v = p.compile(N, n, R);
1677 var ue = p.$$originalDirective || p;
1678 T(v) ? f(null, G(ue, v), U, V) : v && f(G(ue, v.pre), G(ue, v.post), U, V)
1682 p.terminal && (h.terminal = !0, _ = Math.max(_, p.priority))
1684 return h.scope = w && !0 === w.scope, h.transcludeOnThisElement = M, h.templateOnThisElement = A, h.transclude = R, u.hasElementTranscludeDirective = D, h
1687 function ae(e, t, n, r) {
1691 s = t.substring(a[0].length),
1694 if ("^^" === c ? n = n.parent() : (i = r && r[s], i = i && i.instance), !i) {
1695 var u = "$" + s + "Controller";
1696 i = c ? n.inheritedData(u) : n.data(u)
1698 if (!i && !l) throw Ki("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", s, e)
1701 for (var d = 0, f = t.length; d < f; d++) i[d] = ae(e, t[d], n, r)
1702 } else $(t) && (i = {}, o(t, function(t, o) {
1703 i[o] = ae(e, t, n, r)
1708 function se(e, t, n, r, i, o, a) {
1713 $scope: u === a || u.$$isolateScope ? i : o,
1719 "@" === f && (f = t[u.name]);
1720 var h = c(f, d, !0, u.controllerAs);
1721 s[u.name] = h, e.data("$" + u.name + "Controller", h.instance)
1726 function ce(e, t, n) {
1727 for (var r = 0, i = e.length; r < i; r++) e[r] = p(e[r], {
1733 function le(e, n, r, o, a, s, c) {
1734 if (n === a) return null;
1736 if (u.hasOwnProperty(n))
1737 for (var d, h = t.get(n + f), m = 0, g = h.length; m < g; m++)
1738 if (d = h[m], (y(o) || o > d.priority) && -1 !== d.restrict.indexOf(r)) {
1739 if (s && (d = p(d, {
1742 })), !d.$$bindings) {
1743 var v = d.$$bindings = i(d, d.name);
1744 $(v.isolateScope) && (d.$$isolateBindings = v.isolateScope)
1752 if (u.hasOwnProperty(e))
1753 for (var n = t.get(e + f), r = 0, i = n.length; r < i; r++)
1754 if (n[r].multiElement) return !0;
1761 o(e, function(r, i) {
1762 "$" !== i.charAt(0) && (t[i] && t[i] !== r && (r.length ? r += ("style" === i ? ";" : " ") + t[i] : r = t[i]), e.$set(i, r, !0, n[i]))
1763 }), o(t, function(t, i) {
1764 e.hasOwnProperty(i) || "$" === i.charAt(0) || (e[i] = t, "class" !== i && "style" !== i && (r[i] = n[i]))
1768 function pe(e, t, n, i, s, c, l, u) {
1776 $$originalDirective: g
1778 b = T(g.templateUrl) ? g.templateUrl(t, n) : g.templateUrl,
1779 y = g.templateNamespace;
1780 return t.empty(), a(b).then(function(r) {
1782 if (r = je(r), g.replace) {
1783 if (_ = Me(r) ? [] : $t(ye(y, ti(r))), a = _[0], 1 !== _.length || a.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", g.name, b);
1787 var E = J(a, [], p);
1788 $(g.scope) && ce(E, !0), e = E.concat(e), de(n, p)
1789 } else a = m, t.html(r);
1790 for (e.unshift(v), d = oe(e, a, n, s, t, g, c, l, u), o(i, function(e, n) {
1791 e === a && (i[n] = t[0])
1792 }), f = Z(t[0].childNodes, s); h.length;) {
1798 if (!k.$$destroyed) {
1800 var A = C.className;
1801 u.hasElementTranscludeDirective && g.replace || (M = Ie(a)), we(x, qr(C), M), V(qr(M), A)
1803 w = d.transcludeOnThisElement ? Q(k, d.transclude, T) : T, d(f, k, M, i, w)
1807 }).catch(function(e) {
1810 function(e, t, n, r, i) {
1812 t.$$destroyed || (h ? h.push(t, n, r, o) : (d.transcludeOnThisElement && (o = Q(t, d.transclude, i)), d(f, t, n, r, o)))
1817 var n = t.priority - e.priority;
1818 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
1821 function ge(e, t, n, r) {
1823 return e ? " (module: " + e + ")" : ""
1825 if (t) throw Ki("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, te(r))
1832 compile: function(e) {
1835 return n && W.$$addBindingClass(t),
1838 n || W.$$addBindingClass(i), W.$$addBindingInfo(i, r.expressions), e.$watch(r, function(e) {
1847 switch (t = Hr(t || "html")) {
1850 var r = e.document.createElement("div");
1851 return r.innerHTML = "<" + t + ">" + n + "</" + t + ">", r.childNodes[0].childNodes;
1858 if ("srcdoc" === t) return v.HTML;
1860 if ("src" === t || "ngSrc" === t) {
1861 if (-1 === ["img", "video", "audio", "source", "track"].indexOf(n)) return v.RESOURCE_URL
1862 } else if ("xlinkHref" === t || "form" === n && "action" === t || "link" === n && "href" === t) return v.RESOURCE_URL
1865 function $e(e, t, r, i, o) {
1871 if ("multiple" === i && "select" === F(e)) throw Ki("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", te(e));
1872 if (C.test(i)) throw Ki("nodomevents", "Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");
1875 compile: function() {
1877 pre: function(e, t, o) {
1878 var s = o.$$observers || (o.$$observers = be()),
1880 u !== r && (l = u && n(u, !0, a, c), r = u), l && (o[i] = l(e), (s[i] || (s[i] = [])).$$inter = !0, (o.$$observers && o.$$observers[i].$$scope || e).$watch(l, function(e, t) {
1881 "class" === i && e !== t ? o.$updateClass(e, t) : o.$set(i, e)
1890 function we(t, n, r) {
1895 for (i = 0, o = t.length; i < o; i++)
1898 for (var l = i, u = l + s - 1, d = t.length; l < d; l++, u++) u < d ? t[l] = t[u] : delete t[l];
1899 t.length -= s - 1, t.context === a && (t.context = r);
1902 c && c.replaceChild(r, a);
1903 var f = e.document.createDocumentFragment();
1904 for (i = 0; i < s; i++) f.appendChild(n[i]);
1905 for (qr.hasData(a) && (qr.data(r, qr.data(a)), qr(a).off("$destroy")), qr.cleanData(f.querySelectorAll("*")), i = 1; i < s; i++) delete n[i];
1906 n[0] = r, n.length = 1
1910 return d(function() {
1911 return e.apply(null, arguments)
1915 function ke(e, t, n, i, o, a) {
1924 if (D) throw Ki("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
1927 function xe(e, t, r, i, a) {
1928 function c(t, n, i) {
1929 T(r.$onChanges) && !z(n, i) && (Te || (e.$$postDigest(H), Te = []), u || (u = {}, Te.push(l)), u[t] && (i = u[t].previousValue), u[t] = new bt(i, n))
1933 r.$onChanges(u), u = void 0
1937 return o(i, function(i, o) {
1938 var l, u, h, p, g, v = i.attrName,
1942 b || jr.call(t, v) || (Ce(v, a.name), r[o] = t[v] = void 0), g = t.$observe(v, function(e) {
1945 c(o, e, t), r[o] = e
1947 }), t.$$observers[v].$$scope = e, E(l = t[v]) ? r[o] = n(l)(e) : I(l) && (r[o] = l), f[o] = new bt(Zi, r[o]), d.push(g);
1950 if (!jr.call(t, v)) {
1952 Ce(v, a.name), t[v] = void 0
1954 if (b && !t[v]) break;
1955 u = s(t[v]), p = u.literal ? B : z, h = u.assign || function() {
1956 throw l = r[o] = u(e), Ki("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", t[v], v, a.name)
1958 var y = function(t) {
1959 return p(t, r[o]) || (p(t, l) ? h(e, t = r[o]) : r[o] = t), l = t
1961 y.$stateful = !0, g = i.collection ? e.$watchCollection(t[v], y) : e.$watch(s(t[v], y), null, u.literal), d.push(g);
1964 if (!jr.call(t, v)) {
1966 Ce(v, a.name), t[v] = void 0
1968 if (b && !t[v]) break;
1969 var _ = (u = s(t[v])).literal,
1971 f[o] = new bt(Zi, r[o]), g = e.$watch(u, function(e, t) {
1973 if (t === $ || _ && B(t, $)) return;
1976 c(o, e, t), r[o] = e
1980 if (b || jr.call(t, v) || Ce(v, a.name), (u = t.hasOwnProperty(v) ? s(t[v]) : m) === m && b) break;
1981 r[o] = function(t) {
1987 removeWatches: d.length && function() {
1988 for (var e = 0, t = d.length; e < t; ++e) d[e]()
1993 Se = e.document.createElement("div"),
1999 $addClass: function(e) {
2000 e && e.length > 0 && M.addClass(this.$$element, e)
2002 $removeClass: function(e) {
2003 e && e.length > 0 && M.removeClass(this.$$element, e)
2005 $updateClass: function(e, t) {
2007 n && n.length && M.addClass(this.$$element, n);
2009 r && r.length && M.removeClass(this.$$element, r)
2011 $set: function(e, t, n, i) {
2012 var a, s = Ze(this.$$element[0], e),
2015 if (s ? (this.$$element.prop(e, t), i = s) : c && (this[c] = t, l = c), this[e] = t, i ? this.$attr[e] = i : (i = this.$attr[e]) || (this.$attr[e] = i = fe(e, "-")), "a" === (a = F(this.$$element)) && ("href" === e || "xlinkHref" === e) || "img" === a && "src" === e) this[e] = t = j(t, "src" === e);
2016 else if ("img" === a && "srcset" === e && _(t)) {
2017 for (var u = "", d = ti(t), f = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, h = /\s/.test(d) ? f : /(,)/, p = d.split(h), m = Math.floor(p.length / 2), g = 0; g < m; g++) {
2019 u += j(ti(p[v]), !0), u += " " + ti(p[v + 1])
2021 var b = ti(p[2 * g]).split(/\s/);
2022 u += j(ti(b[0]), !0), 2 === b.length && (u += " " + ti(b[1])), this[e] = t = u
2023 }!1 !== n && (null === t || y(t) ? this.$$element.removeAttr(i) : Ae.test(i) ? this.$$element.attr(i, t) : q(this.$$element[0], i, t));
2024 var $ = this.$$observers;
2025 $ && o($[l], function(e) {
2033 $observe: function(e, t) {
2035 r = n.$$observers || (n.$$observers = be()),
2036 i = r[e] || (r[e] = []);
2037 return i.push(t), l.$evalAsync(function() {
2038 i.$$inter || !n.hasOwnProperty(e) || y(n[e]) || t(n[e])
2045 var Re = n.startSymbol(),
2047 je = "{{" === Re && "}}" === Pe ? g : function(e) {
2048 return e.replace(/\{\{/g, Re).replace(/}}/g, Pe)
2050 He = /^ngAttr[A-Z]/,
2052 return W.$$addBindingInfo = A ? function(e, t) {
2053 var n = e.data("$binding") || [];
2054 Jr(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2055 } : m, W.$$addBindingClass = A ? function(e) {
2057 } : m, W.$$addScopeInfo = A ? function(e, t, n, r) {
2058 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2060 } : m, W.$$addScopeClass = A ? function(e, t) {
2061 V(e, t ? "ng-isolate-scope" : "ng-scope")
2062 } : m, W.$$createComment = function(t, n) {
2064 return A && (r = " " + (t || "") + ": ", n && (r += n + " ")), e.document.createComment(r)
2070 this.previousValue = e, this.currentValue = t
2074 return e.replace(Xi, "").replace(Qi, xe)
2081 e: for (var o = 0; o < r.length; o++) {
2082 for (var a = r[o], s = 0; s < i.length; s++)
2083 if (a === i[s]) continue e;
2084 n += (n.length > 0 ? " " : "") + a
2090 var t = (e = qr(e)).length;
2091 if (t <= 1) return e;
2094 (n.nodeType === fi || n.nodeType === di && "" === n.nodeValue.trim()) && Br.call(e, t, 1)
2100 if (t && E(t)) return t;
2110 this.has = function(t) {
2111 return e.hasOwnProperty(t)
2112 }, this.register = function(t, n) {
2113 me(t, "controller"), $(t) ? d(e, t) : e[t] = n
2114 }, this.allowGlobals = function() {
2116 }, this.$get = ["$injector", "$window", function(n, i) {
2117 function o(e, t, n, i) {
2118 if (!e || !$(e.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, t);
2121 return function(r, a, s, c) {
2123 if (s = !0 === s, c && E(c) && (h = c), E(r)) {
2124 if (!(u = r.match(eo))) throw Ji("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
2125 if (f = u[1], h = h || u[3], !(r = e.hasOwnProperty(f) ? e[f] : ge(a.$scope, f, !0) || (t ? ge(i, f, !0) : void 0))) throw Ji("ctrlreg", "The controller with the name '{0}' is not registered.", f);
2129 var p = (Jr(r) ? r[r.length - 1] : r).prototype;
2130 return l = Object.create(p || null), h && o(a, h, l, f || r.name), d(function() {
2131 var e = n.invoke(r, l, a, f);
2132 return e !== l && ($(e) || T(e)) && (l = e, h && o(a, h, l, f || r.name)), l
2138 return l = n.instantiate(r, a, f), h && o(a, h, l, f || r.name), l
2144 this.$get = ["$window", function(e) {
2145 return qr(e.document)
2150 this.$get = ["$document", "$rootScope", function(e, t) {
2156 return e.on("visibilitychange", n), t.$on("$destroy", function() {
2157 e.off("visibilitychange", n)
2166 this.$get = ["$log", function(e) {
2167 return function(t, n) {
2168 e.error.apply(e, arguments)
2174 return $(e) ? C(e) ? e.toISOString() : Z(e) : e
2178 this.$get = function() {
2179 return function(e) {
2182 return a(e, function(e, n) {
2183 null === e || y(e) || T(e) || (Jr(e) ? o(e, function(e) {
2184 t.push(ae(n) + "=" + ae(Tt(e)))
2185 }) : t.push(ae(n) + "=" + ae(Tt(e))))
2192 this.$get = function() {
2193 return function(e) {
2194 function t(e, r, i) {
2195 null === e || y(e) || (Jr(e) ? o(e, function(e, n) {
2196 t(e, r + "[" + ($(e) ? n : "") + "]")
2197 }) : $(e) && !C(e) ? a(e, function(e, n) {
2198 t(e, r + (i ? "" : "[") + n + (i ? "" : "]"))
2199 }) : n.push(ae(r) + "=" + ae(Tt(e))))
2203 return t(e, "", !0), n.join("&")
2210 var n = e.replace(ao, "").trim();
2212 var r = t("Content-Type"),
2213 i = r && 0 === r.indexOf(no);
2214 if (i || Ot(n)) try {
2218 throw so("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', e, t)
2226 var t = e.match(io);
2227 return t && oo[t[0]].test(e)
2232 e && (r[e] = r[e] ? r[e] + ", " + t : t)
2235 return E(e) ? o(e.split("\n"), function(e) {
2236 n = e.indexOf(":"), t(Hr(ti(e.substr(0, n))), ti(e.substr(n + 1)))
2237 }) : $(e) && o(e, function(e, n) {
2244 return function(n) {
2245 if (t || (t = Dt(e)), n) {
2247 return void 0 === r && (r = null), r
2253 function It(e, t, n, r) {
2254 return T(r) ? r(e, t, n) : (o(r, function(r) {
2260 return 200 <= e && e < 300
2264 var e = this.defaults = {
2265 transformResponse: [St],
2266 transformRequest: [function(e) {
2267 return !$(e) || O(e) || N(e) || D(e) ? e : Z(e)
2271 Accept: "application/json, text/plain, */*"
2277 xsrfCookieName: "XSRF-TOKEN",
2278 xsrfHeaderName: "X-XSRF-TOKEN",
2279 paramSerializer: "$httpParamSerializer",
2280 jsonpCallbackParam: "callback"
2283 this.useApplyAsync = function(e) {
2284 return _(e) ? (t = !!e, this) : t
2286 var n = this.interceptors = [];
2287 this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(i, a, s, c, l, u, f, h) {
2290 for (var n = 0, r = t.length; n < r;) {
2295 return t.length = 0, e
2300 return o(e, function(e, i) {
2301 T(e) ? null != (n = e(t)) && (r[i] = n) : r[i] = e
2307 return t.data = It(e.data, e.headers, e.status, c.transformResponse), Rt(e.status) ? t : u.reject(t)
2309 if (!$(t)) throw r("$http")("badreq", "Http request configuration must be an object. Received: {0}", t);
2310 if (!E(h.valueOf(t.url))) throw r("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object. Received: {0}", t.url);
2313 transformRequest: e.transformRequest,
2314 transformResponse: e.transformResponse,
2315 paramSerializer: e.paramSerializer,
2316 jsonpCallbackParam: e.jsonpCallbackParam
2318 c.headers = function(t) {
2319 var n, r, i, o = e.headers,
2320 s = d({}, t.headers);
2321 o = d({}, o.common, o[Hr(t.method)]);
2325 if (Hr(i) === r) continue e;
2329 }(t), c.method = Lr(c.method), c.paramSerializer = E(c.paramSerializer) ? f.get(c.paramSerializer) : c.paramSerializer, i.$$incOutstandingRequestCount();
2333 return o(k, function(e) {
2334 (e.request || e.requestError) && l.unshift(e.request, e.requestError), (e.response || e.responseError) && p.push(e.response, e.responseError)
2335 }), v = n(v, l), v = v.then(function(t) {
2337 r = It(t.data, Nt(n), void 0, t.transformRequest);
2338 return y(r) && o(n, function(e, t) {
2339 "content-type" === Hr(t) && delete n[t]
2340 }), y(t.withCredentials) && !y(e.withCredentials) && (t.withCredentials = e.withCredentials), g(t, r).then(s, s)
2341 }), v = n(v, p), v = v.finally(function() {
2342 i.$$completeOutstandingRequest(m)
2350 return o(e, function(e, r) {
2351 n[r] = function(n) {
2355 t ? l.$applyAsync(r) : l.$$phase ? r() : l.$apply(r)
2361 function c(e, t, r, i, o) {
2362 (Rt(t = t >= -1 ? t : 0) ? k.resolve : k.reject)({
2373 c(e.data, e.status, $e(e.headers()), e.statusText, e.xhrStatus)
2377 var e = p.pendingRequests.indexOf(n); - 1 !== e && p.pendingRequests.splice(e, 1)
2379 var m, g, k = u.defer(),
2382 T = "jsonp" === Hr(n.method),
2384 if (T ? M = h.getTrustedResourceUrl(M) : E(M) || (M = h.valueOf(M)), M = v(M, n.paramSerializer(n.params)), T && (M = b(M, n.jsonpCallbackParam)), p.pendingRequests.push(n), C.then(f, f), !n.cache && !e.cache || !1 === n.cache || "GET" !== n.method && "JSONP" !== n.method || (m = $(n.cache) ? n.cache : $(e.cache) ? e.cache : w), m && (_(g = m.get(M)) ? R(g) ? g.then(d, d) : Jr(g) ? c(g[1], g[0], $e(g[2]), g[3], g[4]) : c(g, 200, {}, "OK", "complete") : m.put(M, C)), y(g)) {
2385 var A = Fn(n.url) ? s()[n.xsrfCookieName || e.xsrfCookieName] : void 0;
2386 A && (x[n.xsrfHeaderName || e.xsrfHeaderName] = A), a(n.method, M, r, function(e, n, r, i, o) {
2390 m && (Rt(e) ? m.put(M, [e, n, Dt(r), i, o]) : m.remove(M)), t ? l.$applyAsync(a) : (a(), l.$$phase || l.$apply())
2391 }, x, n.timeout, n.withCredentials, n.responseType, i(n.eventHandlers), i(n.uploadEventHandlers))
2397 return t.length > 0 && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
2401 if (/[&?][^=]+=JSON_CALLBACK/.test(e)) throw so("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', e);
2402 if (new RegExp("[&?]" + t + "=").test(e)) throw so("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', t, e);
2403 return e += (-1 === e.indexOf("?") ? "?" : "&") + t + "=JSON_CALLBACK"
2406 e.paramSerializer = E(e.paramSerializer) ? f.get(e.paramSerializer) : e.paramSerializer;
2408 return o(n, function(e) {
2409 k.unshift(E(e) ? f.get(e) : f.invoke(e))
2410 }), p.pendingRequests = [],
2412 o(arguments, function(e) {
2413 p[e] = function(t, n) {
2414 return p(d({}, n || {}, {
2420 }("get", "delete", "head", "jsonp"),
2422 o(arguments, function(e) {
2423 p[e] = function(t, n, r) {
2424 return p(d({}, r || {}, {
2431 }("post", "put", "patch"), p.defaults = e, p
2436 this.$get = function() {
2438 return new e.XMLHttpRequest
2444 this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
2445 return Lt(e, r, e.defer, t, n[0])
2449 function Lt(e, t, n, r, i) {
2450 function a(e, t, n) {
2451 e = e.replace("JSON_CALLBACK", t);
2452 var o = i.createElement("script"),
2454 return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
2455 o.removeEventListener("load", a), o.removeEventListener("error", a), i.body.removeChild(o), o = null;
2458 e && ("load" !== e.type || r.wasCalled(t) || (e = {
2460 }), c = e.type, s = "error" === e.type ? 404 : 200), n && n(s, c)
2461 }, o.addEventListener("load", a), o.addEventListener("error", a), i.body.appendChild(o), a
2463 return function(i, s, c, l, u, d, f, h, p, m) {
2465 $ && $(), w && w.abort()
2468 function v(e, t, r, i, o, a) {
2469 _(E) && n.cancel(E), $ = w = null, e(t, r, i, o, a)
2471 if (s = s || e.url(), "jsonp" === Hr(i)) var b = r.createCallback(s),
2472 $ = a(s, b, function(e, t) {
2473 var n = 200 === e && r.getResponse(b);
2474 v(l, e, n, "", t, "complete"), r.removeCallback(b)
2478 w.open(i, s, !0), o(u, function(e, t) {
2479 _(e) && w.setRequestHeader(t, e)
2480 }), w.onload = function() {
2481 var e = w.statusText || "",
2482 t = "response" in w ? w.response : w.responseText,
2483 n = 1223 === w.status ? 204 : w.status;
2484 0 === n && (n = t ? 200 : "file" === Ln(s).protocol ? 404 : 0), v(l, n, t, w.getAllResponseHeaders(), e, "complete")
2486 if (w.onerror = function() {
2487 v(l, -1, null, null, "", "error")
2488 }, w.onabort = function() {
2489 v(l, -1, null, null, "", "abort")
2490 }, w.ontimeout = function() {
2491 v(l, -1, null, null, "", "timeout")
2492 }, o(p, function(e, t) {
2493 w.addEventListener(t, e)
2494 }), o(m, function(e, t) {
2495 w.upload.addEventListener(t, e)
2496 }), f && (w.withCredentials = !0), h) try {
2499 if ("json" !== h) throw e
2501 w.send(y(c) ? null : c)
2503 if (d > 0) var E = n(g, d);
2504 else R(d) && d.then(g)
2511 this.startSymbol = function(t) {
2512 return t ? (e = t, this) : e
2513 }, this.endSymbol = function(e) {
2514 return e ? (t = e, this) : t
2515 }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
2521 return n.replace(f, e).replace(h, t)
2524 function s(e, t, n, r) {
2525 var i = e.$watch(function(e) {
2531 function c(o, c, f, h) {
2532 if (!o.length || -1 === o.indexOf(e)) {
2534 return c || ((p = v(a(o))).exp = o, p.expressions = [], p.$$watchDelegate = s), p
2537 for (var m, g, b, $ = 0, w = [], E = [], k = o.length, C = [], x = []; $ < k;) {
2538 if (-1 === (m = o.indexOf(e, $)) || -1 === (g = o.indexOf(t, m + l))) {
2539 $ !== k && C.push(a(o.substring($)));
2542 $ !== m && C.push(a(o.substring($, m))), b = o.substring(m + l, g), w.push(b), E.push(n(b, function(e) {
2544 return e = A(e), h && !_(e) ? e : ye(e)
2548 })), $ = g + u, x.push(C.length), C.push("")
2550 if (f && C.length > 1 && co.throwNoconcat(o), !c || w.length) {
2551 var M = function(e) {
2552 for (var t = 0, n = w.length; t < n; t++) {
2553 if (h && y(e[t])) return;
2559 return f ? i.getTrusted(f, e) : i.valueOf(e)
2561 return d(function(e) {
2566 for (; t < n; t++) i[t] = E[t](e);
2574 $$watchDelegate: function(e, t) {
2576 return e.$watchGroup(E, function(r, i) {
2578 T(t) && t.call(this, o, r !== i ? n : o, e), n = o
2586 f = new RegExp(e.replace(/./g, o), "g"),
2587 h = new RegExp(t.replace(/./g, o), "g");
2588 return c.startSymbol = function() {
2590 }, c.endSymbol = function() {
2597 this.$get = ["$rootScope", "$window", "$q", "$$q", "$browser", function(e, t, n, r, i) {
2598 function o(o, s, c, l) {
2600 d ? o.apply(null, f) : o(m)
2602 var d = arguments.length > 4,
2603 f = d ? Y(arguments, 4) : [],
2605 p = t.clearInterval,
2608 v = (g ? r : n).defer(),
2610 return c = _(c) ? c : 0, b.$$intervalId = h(function() {
2611 g ? i.defer(u) : e.$evalAsync(u), v.notify(m++), c > 0 && m >= c && (v.resolve(m), p(b.$$intervalId), delete a[b.$$intervalId]), g || e.$apply()
2612 }, s), a[b.$$intervalId] = v, b
2615 return o.cancel = function(e) {
2616 return !!(e && e.$$intervalId in a) && (xn(a[e.$$intervalId].promise), a[e.$$intervalId].reject("canceled"), t.clearInterval(e.$$intervalId), delete a[e.$$intervalId], !0)
2622 for (var t = e.split("/"), n = t.length; n--;) t[n] = oe(t[n]);
2628 t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = h(n.port) || fo[n.protocol] || null
2632 if (po.test(e)) throw ho("badpath", 'Invalid url "{0}".', e);
2633 var n = "/" !== e.charAt(0);
2636 t.$$path = decodeURIComponent(n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname), t.$$search = re(r.search), t.$$hash = decodeURIComponent(r.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
2640 return e.slice(0, t.length) === t
2644 if (Bt(t, e)) return t.substr(e.length)
2648 var t = e.indexOf("#");
2649 return -1 === t ? e : e.substr(0, t)
2653 return e.replace(/(#.+)|#$/, "$1")
2657 return e.substr(0, Yt(e).lastIndexOf("/") + 1)
2661 return e.substring(0, e.indexOf("/", e.indexOf("//") + 2))
2664 function Xt(e, t, n) {
2665 this.$$html5 = !0, n = n || "", Vt(e, this), this.$$parse = function(e) {
2667 if (!E(n)) throw ho("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, t);
2668 zt(n, this), this.$$path || (this.$$path = "/"), this.$$compose()
2669 }, this.$$compose = function() {
2670 var e = ie(this.$$search),
2671 n = this.$$hash ? "#" + oe(this.$$hash) : "";
2672 this.$$url = Ut(this.$$path) + (e ? "?" + e : "") + n, this.$$absUrl = t + this.$$url.substr(1), this.$$urlUpdatedByLocation = !0
2673 }, this.$$parseLinkUrl = function(r, i) {
2674 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2676 return _(o = Wt(e, r)) ? (a = o, s = n && _(o = Wt(n, o)) ? t + (Wt("/", o) || o) : e + a) : _(o = Wt(t, r)) ? s = t + o : t === r + "/" && (s = t), s && this.$$parse(s), !!s
2680 function Qt(e, t, n) {
2681 Vt(e, this), this.$$parse = function(r) {
2682 var i, o = Wt(e, r) || Wt(t, r);
2683 y(o) || "#" !== o.charAt(0) ? this.$$html5 ? i = o : (i = "", y(o) && (e = r, this.replace())) : y(i = Wt(n, o)) && (i = o), zt(i, this), this.$$path = function(e, t, n) {
2684 var r, i = /^\/[A-Z]:(\/.*)/;
2685 return Bt(t, n) && (t = t.replace(n, "")), i.exec(t) ? e : (r = i.exec(e)) ? r[1] : e
2686 }(this.$$path, i, e), this.$$compose()
2687 }, this.$$compose = function() {
2688 var t = ie(this.$$search),
2689 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2690 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + (this.$$url ? n + this.$$url : ""), this.$$urlUpdatedByLocation = !0
2691 }, this.$$parseLinkUrl = function(t, n) {
2692 return Yt(e) === Yt(t) && (this.$$parse(t), !0)
2696 function Jt(e, t, n) {
2697 this.$$html5 = !0, Qt.apply(this, arguments), this.$$parseLinkUrl = function(r, i) {
2698 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2700 return e === Yt(r) ? o = r : (a = Wt(t, r)) ? o = e + n + a : t === r + "/" && (o = t), o && this.$$parse(o), !!o
2701 }, this.$$compose = function() {
2702 var t = ie(this.$$search),
2703 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2704 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + n + this.$$url, this.$$urlUpdatedByLocation = !0
2715 return function(n) {
2716 return y(n) ? this[e] : (this[e] = t(n), this.$$compose(), this)
2727 this.hashPrefix = function(t) {
2728 return _(t) ? (e = t, this) : e
2729 }, this.html5Mode = function(e) {
2730 return I(e) ? (t.enabled = e, this) : $(e) ? (I(e.enabled) && (t.enabled = e.enabled), I(e.requireBase) && (t.requireBase = e.requireBase), (I(e.rewriteLinks) || E(e.rewriteLinks)) && (t.rewriteLinks = e.rewriteLinks), this) : t
2731 }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, o, a) {
2732 function s(e, t, n) {
2736 r.url(e, t, n), l.$$state = r.state()
2738 throw l.url(i), l.$$state = o, e
2743 n.$broadcast("$locationChangeSuccess", l.absUrl(), e, l.$$state, t)
2745 var l, u, d, f = r.baseHref(),
2748 if (!f && t.requireBase) throw ho("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
2749 d = Zt(h) + (f || "/"), u = i.history ? Xt : Jt
2750 } else d = Yt(h), u = Qt;
2752 (l = new u(d, p, "#" + e)).$$parseLinkUrl(h, h), l.$$state = r.state();
2753 var m = /^\s*(javascript|mailto):/i;
2754 o.on("click", function(e) {
2755 var i = t.rewriteLinks;
2756 if (i && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
2757 for (var s = qr(e.target);
2759 if (s[0] === o[0] || !(s = s.parent())[0]) return;
2760 if (!E(i) || !y(s.attr(i))) {
2761 var c = s.prop("href"),
2762 u = s.attr("href") || s.attr("xlink:href");
2763 $(c) && "[object SVGAnimatedString]" === c.toString() && (c = Ln(c.animVal).href), m.test(c) || !c || s.attr("target") || e.isDefaultPrevented() || l.$$parseLinkUrl(c, u) && (e.preventDefault(), l.absUrl() !== r.url() && (n.$apply(), a.angular["ff-684208-preventDefault"] = !0))
2766 }), Gt(l.absUrl()) !== Gt(h) && r.url(l.absUrl(), !0);
2768 return r.onUrlChange(function(e, t) {
2769 Bt(e, p) ? (n.$evalAsync(function() {
2770 var r, i = l.absUrl(),
2772 e = Gt(e), l.$$parse(e), l.$$state = t, r = n.$broadcast("$locationChangeStart", e, i, t, o).defaultPrevented, l.absUrl() === e && (r ? (l.$$parse(i), l.$$state = o, s(i, !1, o)) : (g = !1, c(i, o)))
2773 }), n.$$phase || n.$digest()) : a.location.href = e
2774 }), n.$watch(function() {
2775 if (g || l.$$urlUpdatedByLocation) {
2776 l.$$urlUpdatedByLocation = !1;
2777 var e = Gt(r.url()),
2781 u = e !== t || l.$$html5 && i.history && o !== l.$$state;
2782 (g || u) && (g = !1, n.$evalAsync(function() {
2784 r = n.$broadcast("$locationChangeStart", t, e, l.$$state, o).defaultPrevented;
2785 l.absUrl() === t && (r ? (l.$$parse(e), l.$$state = o) : (u && s(t, a, o === l.$$state ? null : l.$$state), c(e, o)))
2796 this.debugEnabled = function(t) {
2797 return _(t) ? (e = t, this) : e
2798 }, this.$get = ["$window", function(n) {
2800 return x(e) && (e.stack && a ? e = e.message && -1 === e.stack.indexOf(e.message) ? "Error: " + e.message + "\n" + e.stack : e.stack : e.sourceURL && (e = e.message + "\n" + e.sourceURL + ":" + e.line)), e
2804 var t = n.console || {},
2805 i = t[e] || t.log || m;
2808 return o(arguments, function(t) {
2810 }), Function.prototype.apply.call(i, t, e)
2813 var a = Fr || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
2822 e && n.apply(t, arguments)
2834 return void 0 !== e ? e : t
2838 return void 0 === e ? t : void 0 === t ? e : e + t
2842 return !e(t).$stateful
2847 case $o.MemberExpression:
2848 if (e.computed) return !1;
2850 case $o.UnaryExpression:
2852 case $o.BinaryExpression:
2853 return "+" !== e.operator && wo;
2854 case $o.CallExpression:
2857 return void 0 === t ? Eo : t
2860 function un(e, t, n) {
2861 var r, i, a, s = e.isPure = ln(e, n);
2864 r = !0, o(e.body, function(e) {
2865 un(e.expression, t, s), r = r && e.expression.constant
2869 e.constant = !0, e.toWatch = [];
2871 case $o.UnaryExpression:
2872 un(e.argument, t, s), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
2874 case $o.BinaryExpression:
2875 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
2877 case $o.LogicalExpression:
2878 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
2880 case $o.ConditionalExpression:
2881 un(e.test, t, s), un(e.alternate, t, s), un(e.consequent, t, s), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
2884 e.constant = !1, e.toWatch = [e];
2886 case $o.MemberExpression:
2887 un(e.object, t, s), e.computed && un(e.property, t, s), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
2889 case $o.CallExpression:
2890 a = !!e.filter && cn(t, e.callee.name), r = a, i = [], o(e.arguments, function(e) {
2891 un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2892 }), e.constant = r, e.toWatch = a ? i : [e];
2894 case $o.AssignmentExpression:
2895 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
2897 case $o.ArrayExpression:
2898 r = !0, i = [], o(e.elements, function(e) {
2899 un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2900 }), e.constant = r, e.toWatch = i;
2902 case $o.ObjectExpression:
2903 r = !0, i = [], o(e.properties, function(e) {
2904 un(e.value, t, s), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (un(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
2905 }), e.constant = r, e.toWatch = i;
2907 case $o.ThisExpression:
2908 case $o.LocalsExpression:
2909 e.constant = !1, e.toWatch = []
2914 if (1 === e.length) {
2915 var t = e[0].expression,
2917 return 1 !== n.length ? n : n[0] !== t ? n : void 0
2922 return e.type === $o.Identifier || e.type === $o.MemberExpression
2926 if (1 === e.body.length && fn(e.body[0].expression)) return {
2927 type: $o.AssignmentExpression,
2928 left: e.body[0].expression,
2930 type: $o.NGValueParameter
2937 return 0 === e.body.length || 1 === e.body.length && (e.body[0].expression.type === $o.Literal || e.body[0].expression.type === $o.ArrayExpression || e.body[0].expression.type === $o.ObjectExpression)
2952 function bn(e, t, n) {
2953 this.ast = new $o(e, n), this.astCompiler = n.csp ? new vn(t) : new gn(t)
2957 return T(e.valueOf) ? e.valueOf() : vo.call(e)
2968 this.addLiteral = function(e, t) {
2970 }, this.setIdentifierFns = function(n, r) {
2971 return e = n, t = r, this
2972 }, this.$get = ["$filter", function(i) {
2973 function a(e, t, n) {
2974 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = yn(e)) && !n) && (e === t || e !== e && t !== t)
2977 function s(e, t, n, r, i) {
2978 var o, s = r.inputs;
2979 if (1 === s.length) {
2981 return s = s[0], e.$watch(function(e) {
2983 return a(t, c, s.isPure) || (o = r(e, void 0, void 0, [t]), c = t && yn(t)), o
2986 for (var l = [], u = [], d = 0, f = s.length; d < f; d++) l[d] = a, u[d] = null;
2987 return e.$watch(function(e) {
2988 for (var t = !1, n = 0, i = s.length; n < i; n++) {
2990 (t || (t = !a(c, l[n], s[n].isPure))) && (u[n] = c, l[n] = c && yn(c))
2992 return t && (o = r(e, void 0, void 0, u)), o
2996 function c(e, t, n, r, i) {
2997 function o(e, n, r) {
2998 c = e, T(t) && t(e, n, r), _(e) && r.$$postDigest(function() {
3003 return a = r.inputs ? s(e, o, n, r, i) : e.$watch(function(e) {
3008 function l(e, t, n, r) {
3011 return o(e, function(e) {
3016 return a = e.$watch(function(e) {
3018 }, function(e, n, r) {
3019 s = e, T(t) && t(e, n, r), i(e) && r.$$postDigest(function() {
3025 function u(e, t, n, r) {
3026 var i = e.$watch(function(e) {
3034 var n = e.$$watchDelegate,
3036 i = n !== l && n !== c ? function(n, i, o, a) {
3037 var s = r && a ? a[0] : e(n, i, o, a);
3039 } : function(n, r, i, o) {
3040 var a = e(n, r, i, o),
3044 return r = !e.inputs, n && n !== s ? (i.$$watchDelegate = n, i.inputs = e.inputs) : t.$stateful || (i.$$watchDelegate = s, i.inputs = e.inputs ? e.inputs : [e]), i.inputs && (i.inputs = i.inputs.map(function(e) {
3045 return e.isPure === Eo ? function(t) {
3051 csp: ri().noUnsafeEval,
3053 isIdentifierStart: T(e) && e,
3054 isIdentifierContinue: T(t) && t
3056 return function(e, t) {
3060 return e = e.trim(), a = e, (r = n[a]) || (":" === e.charAt(0) && ":" === e.charAt(1) && (o = !0, e = e.substring(2)), (r = new bn(new _o(f), i, f).parse(e)).constant ? r.$$watchDelegate = u : o ? r.$$watchDelegate = r.literal ? l : c : r.inputs && (r.$$watchDelegate = s), n[a] = r), d(r, t);
3072 this.$get = ["$rootScope", "$exceptionHandler", function(t, n) {
3073 return En(function(e) {
3076 }], this.errorOnUnhandledRejections = function(t) {
3077 return _(t) ? (e = t, this) : e
3083 this.$get = ["$browser", "$exceptionHandler", function(t, n) {
3084 return En(function(e) {
3087 }], this.errorOnUnhandledRejections = function(t) {
3088 return _(t) ? (e = t, this) : e
3092 function En(e, t, n) {
3098 var e = this.promise = new s;
3099 this.resolve = function(t) {
3101 }, this.reject = function(t) {
3103 }, this.notify = function(t) {
3116 o = t.pending, t.processScheduled = !1, t.pending = void 0;
3118 for (var a = 0, s = o.length; a < s; ++a) {
3119 Cn(t), i = o[a][0], r = o[a][t.status];
3121 T(r) ? f(i, r(t.value)) : 1 === t.status ? f(i, t.value) : p(i, t.value)
3127 --k, n && 0 === k && e(l)
3132 for (; !k && C.length;) {
3136 var n = "Possibly unhandled rejection: " + Ee(e.value);
3137 x(e.value) ? t(e.value, n) : t(n)
3143 !n || t.pending || 2 !== t.status || kn(t) || (0 === k && 0 === C.length && e(l), C.push(t)), !t.processScheduled && t.pending && (t.processScheduled = !0, ++k, e(function() {
3149 e.$$state.status || (t === e ? m(e, E("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : h(e, t))
3154 i || (i = !0, m(e, t))
3158 ($(t) || T(t)) && (r = t.then), T(r) ? (e.$$state.status = -1, r.call(t, function(t) {
3159 i || (i = !0, h(e, t))
3162 })) : (e.$$state.value = t, e.$$state.status = 1, u(e.$$state))
3169 e.$$state.status || m(e, t)
3173 e.$$state.value = t, e.$$state.status = 2, u(e.$$state)
3177 var i = n.$$state.pending;
3178 n.$$state.status <= 0 && i && i.length && e(function() {
3179 for (var e, n, o = 0, a = i.length; o < a; o++) {
3180 n = i[o][0], e = i[o][3];
3182 g(n, T(e) ? e(r) : r)
3195 function b(e, t, n) {
3202 return R(r) ? r.then(function() {
3207 function _(e, t, n, r) {
3209 return f(i, e), i.then(t, n, r)
3213 if (!T(e)) throw E("norslvr", "Expected resolverFn, got '{0}'", e);
3215 return e(function(e) {
3221 var E = r("$q", TypeError),
3225 then: function(e, t, n) {
3226 if (y(e) && y(t) && y(n)) return this;
3228 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), this.$$state.status > 0 && u(this.$$state), r
3230 catch: function(e) {
3231 return this.then(null, e)
3233 finally: function(e, t) {
3234 return this.then(function(t) {
3242 return w.prototype = s.prototype, w.defer = i, w.reject = v, w.when = _, w.resolve = M, w.all = function(e) {
3245 r = Jr(e) ? [] : {};
3246 return o(e, function(e, i) {
3247 n++, _(e).then(function(e) {
3248 r[i] = e, --n || f(t, r)
3252 }), 0 === n && f(t, r), t
3253 }, w.race = function(e) {
3255 return o(e, function(e) {
3256 _(e).then(t.resolve, t.reject)
3274 this.$get = ["$window", "$timeout", function(e, t) {
3275 var n = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
3276 r = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
3278 o = i ? function(e) {
3284 var n = t(e, 16.66, !1);
3289 return o.supported = i, o
3296 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = c(), this.$$ChildScope = null
3298 return t.prototype = e, t
3301 n = r("$rootScope"),
3304 this.digestTtl = function(e) {
3305 return arguments.length && (t = e), t
3306 }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(r, l, u) {
3308 e.currentScope.$$destroyed = !0
3312 9 === Fr && (e.$$childHead && f(e.$$childHead), e.$$nextSibling && f(e.$$nextSibling)), e.$parent = e.$$nextSibling = e.$$prevSibling = e.$$childHead = e.$$childTail = e.$root = e.$$watchers = null
3316 this.$id = c(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this.$root = this, this.$$destroyed = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
3320 if (k.$$phase) throw n("inprog", "{0} already in progress", k.$$phase);
3330 e.$$watchersCount += t
3331 } while (e = e.$parent)
3334 function b(e, t, n) {
3336 e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n]
3337 } while (e = e.$parent)
3343 for (; M.length;) try {
3352 null === s && (s = u.defer(function() {
3358 $new: function(t, n) {
3360 return n = n || this, t ? (r = new h).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = e(this)), r = new this.$$ChildScope), r.$parent = n, r.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = r, n.$$childTail = r) : n.$$childHead = n.$$childTail = r, (t || n !== this) && r.$on("$destroy", d), r
3362 $watch: function(e, t, n, r) {
3364 if (i.$$watchDelegate) return i.$$watchDelegate(this, t, n, i, e);
3374 return a = null, T(t) || (c.fn = m), s || ((s = o.$$watchers = []).$$digestWatchIndex = -1), s.unshift(c), s.$$digestWatchIndex++, v(this, 1),
3377 e >= 0 && (v(o, -1), e < s.$$digestWatchIndex && s.$$digestWatchIndex--), a = null
3380 $watchGroup: function(e, t) {
3382 c = !1, l ? (l = !1, t(i, i, s)) : t(i, r, s)
3384 var r = new Array(e.length),
3385 i = new Array(e.length),
3392 return s.$evalAsync(function() {
3399 return 1 === e.length ? this.$watch(e[0], function(e, n, o) {
3400 i[0] = e, r[0] = n, t(i, e === n ? i : r, o)
3401 }) : (o(e, function(e, t) {
3402 var o = s.$watch(e, function(e, o) {
3403 i[t] = e, r[t] = o, c || (c = !0, s.$evalAsync(n))
3407 for (; a.length;) a.shift()()
3410 $watchCollection: function(e, t) {
3416 o !== f && (m = (o = f).length = 0, u++), t = r.length, m !== t && (u++, o.length = m = t);
3417 for (var c = 0; c < t; c++) s = o[c], a = r[c], s !== s && a !== a || s === a || (u++, o[c] = a)
3419 o !== h && (o = h = {}, m = 0, u++), t = 0;
3420 for (n in r) jr.call(r, n) && (t++, a = r[n], s = o[n], n in o ? s !== s && a !== a || s === a || (u++, o[n] = a) : (m++, o[n] = a, u++));
3423 for (n in o) jr.call(r, n) || (m--, delete o[n])
3426 else o !== r && (o = r, u++);
3431 var r, o, a, s = this,
3439 return this.$watch(d, function() {
3440 if (p ? (p = !1, t(r, r, s)) : t(r, a, s), c)
3443 a = new Array(r.length);
3444 for (var e = 0; e < r.length; e++) a[e] = r[e]
3447 for (var n in r) jr.call(r, n) && (a[n] = r[n])
3452 $digest: function() {
3453 var e, i, o, c, l, d, f, h, m, v, b = t,
3456 p("$digest"), u.$$checkUrlChange(), this === k && null !== s && (u.defer.cancel(s), w()), a = null;
3459 for (var E = 0; E < C.length; E++) {
3461 (0, (v = C[E]).fn)(v.scope, v.locals)
3469 if (l = h.$$watchers)
3470 for (l.$$digestWatchIndex = l.length; l.$$digestWatchIndex--;) try {
3471 if (e = l[l.$$digestWatchIndex])
3472 if (c = e.get, (i = c(h)) === (o = e.last) || (e.eq ? B(i, o) : Qr(i) && Qr(o))) {
3477 } else d = !0, a = e, e.last = e.eq ? V(i, null) : i, (0, e.fn)(i, o === _ ? i : o, h), b < 5 && ($[m = 4 - b] || ($[m] = []), $[m].push({
3478 msg: T(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
3485 if (!(f = h.$$watchersCount && h.$$childHead || h !== y && h.$$nextSibling))
3486 for (; h !== y && !(f = h.$$nextSibling);) h = h.$parent
3488 if ((d || C.length) && !b--) throw g(), n("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, $)
3489 } while (d || C.length);
3490 for (g(); A < x.length;) try {
3495 x.length = A = 0, u.$$checkUrlChange()
3497 $destroy: function() {
3498 if (!this.$$destroyed) {
3499 var e = this.$parent;
3500 this.$broadcast("$destroy"), this.$$destroyed = !0, this === k && u.$$applicationDestroyed(), v(this, -this.$$watchersCount);
3501 for (var t in this.$$listenerCount) b(this, this.$$listenerCount[t], t);
3502 e && e.$$childHead === this && (e.$$childHead = this.$$nextSibling), e && e.$$childTail === this && (e.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = m, this.$on = this.$watch = this.$watchGroup = function() {
3504 }, this.$$listeners = {}, this.$$nextSibling = null, f(this)
3507 $eval: function(e, t) {
3508 return l(e)(this, t)
3510 $evalAsync: function(e, t) {
3511 k.$$phase || C.length || u.defer(function() {
3512 C.length && k.$digest()
3519 $$postDigest: function(e) {
3522 $apply: function(e) {
3526 return this.$eval(e)
3540 $applyAsync: function(e) {
3542 e && M.push(function() {
3546 $on: function(e, t) {
3547 var n = this.$$listeners[e];
3548 n || (this.$$listeners[e] = n = []), n.push(t);
3551 r.$$listenerCount[e] || (r.$$listenerCount[e] = 0), r.$$listenerCount[e]++
3552 } while (r = r.$parent);
3555 var r = n.indexOf(t); - 1 !== r && (n[r] = null, b(i, 1, e))
3558 $emit: function(e, t) {
3559 var n, i, o, a = [],
3565 stopPropagation: function() {
3568 preventDefault: function() {
3569 l.defaultPrevented = !0
3571 defaultPrevented: !1
3573 u = W([l], arguments, 1);
3575 for (n = s.$$listeners[e] || a, l.currentScope = s, i = 0, o = n.length; i < o; i++)
3580 } else n.splice(i, 1), i--, o--;
3581 if (c) return l.currentScope = null, l;
3584 return l.currentScope = null, l
3586 $broadcast: function(e, t) {
3593 preventDefault: function() {
3594 a.defaultPrevented = !0
3596 defaultPrevented: !1
3598 if (!n.$$listenerCount[e]) return a;
3599 for (var s, c, l, u = W([a], arguments, 1); i = o;) {
3600 for (a.currentScope = i, c = 0, l = (s = i.$$listeners[e] || []).length; c < l; c++)
3605 } else s.splice(c, 1), c--, l--;
3606 if (!(o = i.$$listenerCount[e] && i.$$childHead || i !== n && i.$$nextSibling))
3607 for (; i !== n && !(o = i.$$nextSibling);) i = i.$parent
3609 return a.currentScope = null, a
3613 C = k.$$asyncQueue = [],
3614 x = k.$$postDigestQueue = [],
3615 M = k.$$applyAsyncQueue = [],
3622 var e = /^\s*(https?|ftp|mailto|tel|file):/,
3623 t = /^\s*((https?|ftp|file|blob):|data:image\/)/;
3624 this.aHrefSanitizationWhitelist = function(t) {
3625 return _(t) ? (e = t, this) : e
3626 }, this.imgSrcSanitizationWhitelist = function(e) {
3627 return _(e) ? (t = e, this) : t
3628 }, this.$get = function() {
3629 return function(n, r) {
3630 var i, o = r ? t : e;
3631 return "" === (i = Ln(n).href) || i.match(o) ? n : "unsafe:" + i
3637 return e.replace(xo, xe)
3641 if ("self" === e) return e;
3643 if (e.indexOf("***") > -1) throw ko("iwcard", "Illegal sequence *** in string matcher. String: {0}", e);
3644 return e = ni(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
3646 if (M(e)) return new RegExp("^" + e.source + "$");
3647 throw ko("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
3652 return _(e) && o(e, function(e) {
3658 this.SCE_CONTEXTS = Co;
3661 this.resourceUrlWhitelist = function(t) {
3662 return arguments.length && (e = Dn(t)), e
3663 }, this.resourceUrlBlacklist = function(e) {
3664 return arguments.length && (t = Dn(e)), t
3665 }, this.$get = ["$injector", function(n) {
3667 return "self" === e ? Fn(t) : !!e.exec(t.href)
3671 var i, o, a = Ln(n.toString()),
3673 for (i = 0, o = e.length; i < o; i++)
3679 for (i = 0, o = t.length; i < o; i++)
3688 var t = function(e) {
3689 this.$$unwrapTrustedValue = function() {
3693 return e && (t.prototype = new e), t.prototype.valueOf = function() {
3694 return this.$$unwrapTrustedValue()
3695 }, t.prototype.toString = function() {
3696 return this.$$unwrapTrustedValue().toString()
3699 var a = function(e) {
3700 throw ko("unsafe", "Attempting to use an unsafe value in a safe context.")
3702 n.has("$sanitize") && (a = n.get("$sanitize"));
3705 return c[Co.HTML] = o(s), c[Co.CSS] = o(s), c[Co.URL] = o(s), c[Co.JS] = o(s), c[Co.RESOURCE_URL] = o(c[Co.URL]), {
3706 trustAs: function(e, t) {
3707 var n = c.hasOwnProperty(e) ? c[e] : null;
3708 if (!n) throw ko("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
3709 if (null === t || y(t) || "" === t) return t;
3710 if ("string" != typeof t) throw ko("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
3713 getTrusted: function(e, t) {
3714 if (null === t || y(t) || "" === t) return t;
3715 var n = c.hasOwnProperty(e) ? c[e] : null;
3716 if (n && t instanceof n) return t.$$unwrapTrustedValue();
3717 if (e === Co.RESOURCE_URL) {
3719 throw ko("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}", t.toString())
3721 if (e === Co.HTML) return a(t);
3722 throw ko("unsafe", "Attempting to use an unsafe value in a safe context.")
3724 valueOf: function(e) {
3725 return e instanceof s ? e.$$unwrapTrustedValue() : e
3733 this.enabled = function(t) {
3734 return arguments.length && (e = !!t), e
3735 }, this.$get = ["$parse", "$sceDelegate", function(t, n) {
3736 if (e && Fr < 8) throw ko("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");
3738 r.isEnabled = function() {
3740 }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, e || (r.trustAs = r.getTrusted = function(e, t) {
3742 }, r.valueOf = g), r.parseAs = function(e, n) {
3744 return i.literal && i.constant ? i : t(n, function(t) {
3745 return r.getTrusted(e, t)
3751 return o(Co, function(e, t) {
3753 r[Sn("parse_as_" + n)] = function(t) {
3755 }, r[Sn("get_trusted_" + n)] = function(t) {
3757 }, r[Sn("trust_as_" + n)] = function(t) {
3765 this.$get = ["$window", "$document", function(e, t) {
3767 r = !(!(e.nw && e.nw.process) && e.chrome && (e.chrome.app && e.chrome.app.runtime || !e.chrome.app && e.chrome.runtime && e.chrome.runtime.id)) && e.history && e.history.pushState,
3768 i = h((/android (\d+)/.exec(Hr((e.navigator || {}).userAgent)) || [])[1]),
3769 o = /Boxee/i.test((e.navigator || {}).userAgent),
3771 s = a.body && a.body.style,
3774 return s && (c = !!("transition" in s || "webkitTransition" in s), l = !!("animation" in s || "webkitAnimation" in s)), {
3775 history: !(!r || i < 4 || o),
3776 hasEvent: function(e) {
3777 if ("input" === e && Fr) return !1;
3779 var t = a.createElement("div");
3780 n[e] = "on" + e in t
3794 this.httpOptions = function(t) {
3795 return t ? (e = t, this) : e
3796 }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(t, n, r, i, o) {
3798 a.totalPendingRequests++, E(s) && !y(n.get(s)) || (s = o.getTrustedResourceUrl(s));
3799 var l = r.defaults && r.defaults.transformResponse;
3800 return Jr(l) ? l = l.filter(function(e) {
3802 }) : l === St && (l = null), r.get(s, d({
3804 transformResponse: l
3805 }, e)).finally(function() {
3806 a.totalPendingRequests--
3807 }).then(function(e) {
3808 return n.put(s, e.data), e.data
3810 return c || (e = To("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", s, e.status, e.statusText), t(e)), i.reject(e)
3813 return a.totalPendingRequests = 0, a
3818 this.$get = ["$rootScope", "$browser", "$location", function(e, t, n) {
3820 return r.findBindings = function(e, t, n) {
3822 return o(e.getElementsByClassName("ng-binding"), function(e) {
3823 var i = Zr.element(e).data("$binding");
3824 i && o(i, function(i) {
3825 n ? new RegExp("(^|\\s)" + ni(t) + "(\\s|\\||$)").test(i) && r.push(e) : -1 !== i.indexOf(t) && r.push(e)
3828 }, r.findModels = function(e, t, n) {
3829 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
3830 var o = n ? "=" : "*=",
3831 a = "[" + r[i] + "model" + o + '"' + t + '"]',
3832 s = e.querySelectorAll(a);
3833 if (s.length) return s
3835 }, r.getLocation = function() {
3837 }, r.setLocation = function(t) {
3838 t !== n.url() && (n.url(t), e.$digest())
3839 }, r.whenStable = function(e) {
3840 t.notifyWhenNoOutstandingRequests(e)
3846 this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(e, t, n, r, i) {
3847 function o(o, s, c) {
3848 T(o) || (c = s, s = o, o = m);
3849 var l, u = Y(arguments, 3),
3851 f = (d ? r : n).defer(),
3853 return l = t.defer(function() {
3855 f.resolve(o.apply(null, u))
3859 delete a[h.$$timeoutId]
3862 }, s), h.$$timeoutId = l, a[l] = f, h
3865 return o.cancel = function(e) {
3866 return !!(e && e.$$timeoutId in a) && (xn(a[e.$$timeoutId].promise), a[e.$$timeoutId].reject("canceled"), delete a[e.$$timeoutId], t.defer.cancel(e.$$timeoutId))
3873 return Fr && (Mo.setAttribute("href", t), t = Mo.href), Mo.setAttribute("href", t), {
3875 protocol: Mo.protocol ? Mo.protocol.replace(/:$/, "") : "",
3877 search: Mo.search ? Mo.search.replace(/^\?/, "") : "",
3878 hash: Mo.hash ? Mo.hash.replace(/^#/, "") : "",
3879 hostname: Mo.hostname,
3881 pathname: "/" === Mo.pathname.charAt(0) ? Mo.pathname : "/" + Mo.pathname
3886 var t = E(e) ? Ln(e) : e;
3887 return t.protocol === Ao.protocol && t.host === Ao.host
3897 return e.cookie || ""
3905 return decodeURIComponent(e)
3914 var e, a, s, c, l, u = t(r);
3916 for (e = (o = u).split("; "), i = {}, s = 0; s < e.length; s++)(c = (a = e[s]).indexOf("=")) > 0 && (l = n(a.substring(0, c)), y(i[l]) && (i[l] = n(a.substring(c + 1))));
3929 return o(r, function(e, n) {
3933 return e.factory(r + n, i)
3936 this.register = t, this.$get = ["$injector", function(e) {
3937 return function(t) {
3940 }], t("currency", Kn), t("date", sr), t("filter", Bn), t("json", cr), t("limitTo", lr), t("lowercase", Po), t("number", Zn), t("orderBy", dr), t("uppercase", jo)
3944 return function(e, t, n, o) {
3946 if (null == e) return e;
3947 throw r("filter")("notarray", "Expected array but received: {0}", e)
3966 return Array.prototype.filter.call(e, a)
3970 function Wn(e, t, n, r) {
3971 var i = $(e) && n in e;
3972 return !0 === t ? t = B : T(t) || (t = function(e, t) {
3973 return !y(e) && (null === e || null === t ? e === t : !($(t) || $(e) && !b(e)) && (e = Hr("" + e), t = Hr("" + t), -1 !== e.indexOf(t)))
3976 return i && !$(o) ? Yn(o, e[n], t, n, !1) : Yn(o, e, t, n, r)
3980 function Yn(e, t, n, r, i, o) {
3983 if ("string" === s && "!" === t.charAt(0)) return !Yn(e, t.substring(1), n, r, i);
3984 if (Jr(e)) return e.some(function(e) {
3985 return Yn(e, t, n, r, i)
3992 if (c.charAt && "$" !== c.charAt(0) && Yn(e[c], t, n, r, !0)) return !0;
3993 return !o && Yn(e, t, n, r, !1)
3995 if ("object" === s) {
3998 if (!T(l) && !y(l)) {
4000 if (!Yn(u ? e : e[c], l, n, r, u, u)) return !1
4014 return null === e ? "null" : typeof e
4018 var t = e.NUMBER_FORMATS;
4019 return function(e, n, r) {
4020 return y(n) && (n = t.CURRENCY_SYM), y(r) && (r = t.PATTERNS[1].maxFrac), null == e ? e : Jn(e, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, r).replace(/\u00A4/g, n)
4025 var t = e.NUMBER_FORMATS;
4026 return function(e, n) {
4027 return null == e ? e : Jn(e, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, n)
4032 var t, n, r, i, o, a = 0;
4033 for ((n = e.indexOf(Oo)) > -1 && (e = e.replace(Oo, "")), (r = e.search(/e/i)) > 0 ? (n < 0 && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : n < 0 && (n = e.length), r = 0; e.charAt(r) === Do; r++);
4034 if (r === (o = e.length)) t = [0], n = 1;
4036 for (o--; e.charAt(o) === Do;) o--;
4037 for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
4039 return n > So && (t = t.splice(0, So - 1), a = n - 1, n = 1), {
4046 function Qn(e, t, n, r) {
4049 a = (t = y(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
4052 i.splice(Math.max(e.i, a));
4053 for (var c = a; c < i.length; c++) i[c] = 0
4055 o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
4056 for (var l = 1; l < a; l++) i[l] = 0
4060 for (var u = 0; u > a; u--) i.unshift(0), e.i++;
4063 for (; o < Math.max(0, t); o++) i.push(0);
4064 var d = i.reduceRight(function(e, t, n, r) {
4065 return t += e, r[n] = t % 10, Math.floor(t / 10)
4067 d && (i.unshift(d), e.i++)
4070 function Jn(e, t, n, r, i) {
4071 if (!E(e) && !k(e) || isNaN(e)) return "";
4072 var o, a = !isFinite(e),
4074 c = Math.abs(e) + "",
4078 Qn(o = Xn(c), i, t.minFrac, t.maxFrac);
4083 for (s = u.reduce(function(e, t) {
4085 }, !0); d < 0;) u.unshift(0), d++;
4086 d > 0 ? h = u.splice(d, u.length) : (h = u, u = [0]);
4088 for (u.length >= t.lgSize && p.unshift(u.splice(-t.lgSize, u.length).join("")); u.length > t.gSize;) p.unshift(u.splice(-t.gSize, u.length).join(""));
4089 u.length && p.unshift(u.join("")), l = p.join(n), h.length && (l += r + h.join("")), f && (l += "e+" + f)
4091 return e < 0 && !s ? t.negPre + l + t.negSuf : t.posPre + l + t.posSuf
4094 function er(e, t, n, r) {
4096 for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = Do + e;
4097 return n && (e = e.substr(e.length - t)), i + e
4100 function tr(e, t, n, r, i) {
4103 var a = o["get" + e]();
4104 return (n > 0 || a > -n) && (a += n), 0 === a && -12 === n && (a = 12), er(a, t, r, i)
4108 function nr(e, t, n) {
4109 return function(r, i) {
4110 var o = r["get" + e]();
4111 return i[Lr((n ? "STANDALONE" : "") + (t ? "SHORT" : "") + e)][o]
4116 var t = new Date(e, 0, 1).getDay();
4117 return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
4121 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + (4 - e.getDay()))
4125 return function(t) {
4126 var n = rr(t.getFullYear()),
4128 return er(1 + Math.round(r / 6048e5), e)
4133 return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
4139 if (t = e.match(n)) {
4140 var r = new Date(0),
4143 a = t[8] ? r.setUTCFullYear : r.setFullYear,
4144 s = t[8] ? r.setUTCHours : r.setHours;
4145 t[9] && (i = h(t[9] + t[10]), o = h(t[9] + t[11])), a.call(r, h(t[1]), h(t[2]) - 1, h(t[3]));
4146 var c = h(t[4] || 0) - i,
4147 l = h(t[5] || 0) - o,
4149 d = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
4150 return s.call(r, c, l, u, d), r
4154 var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
4155 return function(n, r, i) {
4158 if (r = r || "mediumDate", r = e.DATETIME_FORMATS[r] || r, E(n) && (n = Ro.test(n) ? h(n) : t(n)), k(n) && (n = new Date(n)), !C(n) || !isFinite(n.getTime())) return n;
4159 for (; r;)(s = Io.exec(r)) ? r = (l = W(l, s, 1)).pop() : (l.push(r), r = null);
4160 var u = n.getTimezoneOffset();
4161 return i && (u = Q(i, u), n = ee(n, i, !0)), o(l, function(t) {
4162 a = No[t], c += a ? a(n, e.DATETIME_FORMATS, u) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
4168 return function(e, t) {
4169 return y(t) && (t = 2), Z(e, t)
4174 return function(e, t, n) {
4175 return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : h(t), Qr(t) ? e : (k(e) && (e = e.toString()), i(e) ? (n = !n || isNaN(n) ? 0 : h(n), n = n < 0 ? Math.max(0, e.length + n) : n, t >= 0 ? ur(e, n, n + t) : 0 === n ? ur(e, t, e.length) : ur(e, Math.max(0, n + t), n)) : e)
4179 function ur(e, t, n) {
4180 return E(e) ? e.slice(t, n) : zr.call(e, t, n)
4185 return t.map(function(t) {
4189 else if (E(t) && ("+" !== t.charAt(0) && "-" !== t.charAt(0) || (n = "-" === t.charAt(0) ? -1 : 1, t = t.substring(1)), "" !== t && (r = e(t)).constant)) {
4214 return T(e.valueOf) && (e = e.valueOf(), n(e)) ? e : (b(e) && (e = e.toString(), n(e)), e)
4219 return null === e ? (n = "string", e = "null") : "object" === n && (e = o(e)), {
4233 "string" === r ? (o = o.toLowerCase(), a = a.toLowerCase()) : "object" === r && ($(o) && (o = e.index), $(a) && (a = t.index)), o !== a && (n = o < a ? -1 : 1)
4234 } else n = r < i ? -1 : 1;
4237 return function(e, n, o, c) {
4238 if (null == e) return e;
4239 if (!i(e)) throw r("orderBy")("notarray", "Expected array but received: {0}", e);
4240 Jr(n) || (n = [n]), 0 === n.length && (n = ["+"]);
4244 f = Array.prototype.map.call(e, function(e, t) {
4252 predicateValues: l.map(function(n) {
4253 return a(n.get(e), t)
4257 return f.sort(function(e, t) {
4258 for (var n = 0, r = l.length; n < r; n++) {
4259 var i = d(e.predicateValues[n], t.predicateValues[n]);
4260 if (i) return i * l[n].descending * u
4262 return (d(e.tieBreaker, t.tieBreaker) || s(e.tieBreaker, t.tieBreaker)) * u
4263 }), e = f.map(function(e) {
4270 return T(e) && (e = {
4272 }), e.restrict = e.restrict || "AC", v(e)
4275 function hr(e, t, n, r, i) {
4276 this.$$controls = [], this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = i(t.name || t.ngForm || "")(n), this.$dirty = !1, this.$pristine = !0, this.$valid = !0, this.$invalid = !1, this.$submitted = !1, this.$$parentForm = Fo, this.$$element = e, this.$$animate = r, pr(this)
4280 e.$$classCache = {}, e.$$classCache[Ea] = !(e.$$classCache[wa] = e.$$element.hasClass(wa))
4284 function t(e, t, n, r) {
4285 e[t] || (e[t] = {}), a(e[t], n, r)
4288 function n(e, t, n, r) {
4289 e[t] && s(e[t], n, r), gr(e[t]) && (e[t] = void 0)
4292 function r(e, t, n) {
4293 n && !e.$$classCache[t] ? (e.$$animate.addClass(e.$$element, t), e.$$classCache[t] = !0) : !n && e.$$classCache[t] && (e.$$animate.removeClass(e.$$element, t), e.$$classCache[t] = !1)
4296 function i(e, t, n) {
4297 t = t ? "-" + fe(t, "-") : "", r(e, wa + t, !0 === n), r(e, Ea + t, !1 === n)
4302 o.prototype.$setValidity = function(e, o, c) {
4303 y(o) ? t(this, "$pending", e, c) : n(this, "$pending", e, c), I(o) ? o ? (s(this.$error, e, c), a(this.$$success, e, c)) : (a(this.$error, e, c), s(this.$$success, e, c)) : (s(this.$error, e, c), s(this.$$success, e, c)), this.$pending ? (r(this, qo, !0), this.$valid = this.$invalid = void 0, i(this, "", null)) : (r(this, qo, !1), this.$valid = gr(this.$error), this.$invalid = !this.$valid, i(this, "", this.$valid));
4305 i(this, e, l = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, l, this)
4312 if (e.hasOwnProperty(t)) return !1;
4317 e.$formatters.push(function(t) {
4318 return e.$isEmpty(t) ? t : t.toString()
4322 function br(e, t, n, r, i, o) {
4323 var a = Hr(t[0].type);
4326 t.on("compositionstart", function() {
4328 }), t.on("compositionend", function() {
4332 var c, l = function(e) {
4333 if (c && (o.defer.cancel(c), c = null), !s) {
4336 "password" === a || n.ngTrim && "false" === n.ngTrim || (i = ti(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, l)
4339 if (i.hasEvent("input")) t.on("input", l);
4341 var u = function(e, t, n) {
4342 c || (c = o.defer(function() {
4343 c = null, t && t.value === n || l(e)
4346 t.on("keydown", function(e) {
4348 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || u(e, this, this.value)
4349 }), i.hasEvent("paste") && t.on("paste cut", u)
4351 t.on("change", l), ta[a] && r.$$hasNativeValidators && a === n.type && t.on(ea, function(e) {
4356 c = o.defer(function() {
4357 c = null, t.badInput === n && t.typeMismatch === r || l(e)
4360 }), r.$render = function() {
4361 var e = r.$isEmpty(r.$viewValue) ? "" : r.$viewValue;
4362 t.val() !== e && t.val(e)
4367 return function(n, r) {
4371 if ('"' === n.charAt(0) && '"' === n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), Bo.test(n)) return new Date(n);
4372 if (e.lastIndex = 0, i = e.exec(n)) return i.shift(), a = r ? {
4373 yyyy: r.getFullYear(),
4374 MM: r.getMonth() + 1,
4379 sss: r.getMilliseconds() / 1e3
4388 }, o(i, function(e, n) {
4389 n < t.length && (a[t[n]] = +e)
4390 }), new Date(a.yyyy, a.MM - 1, a.dd, a.HH, a.mm, a.ss || 0, 1e3 * a.sss || 0)
4396 function _r(e, t, n, r) {
4397 return function(i, o, a, s, c, l, u) {
4399 return e && !(e.getTime && e.getTime() !== e.getTime())
4403 return _(e) && !C(e) ? n(e) || void 0 : e
4405 $r(i, o, a, s), br(i, o, a, s, c, l);
4406 var h, p = s && s.$options.getOption("timezone");
4407 if (s.$$parserName = e, s.$parsers.push(function(e) {
4408 if (s.$isEmpty(e)) return null;
4411 return p && (r = ee(r, p)), r
4413 }), s.$formatters.push(function(e) {
4414 if (e && !C(e)) throw xa("datefmt", "Expected `{0}` to be a date", e);
4415 return d(e) ? ((h = e) && p && (h = ee(h, p, !0)), u("date")(e, r, p)) : (h = null, "")
4416 }), _(a.min) || a.ngMin) {
4418 s.$validators.min = function(e) {
4419 return !d(e) || y(m) || n(e) >= m
4420 }, a.$observe("min", function(e) {
4421 m = f(e), s.$validate()
4424 if (_(a.max) || a.ngMax) {
4426 s.$validators.max = function(e) {
4427 return !d(e) || y(g) || n(e) <= g
4428 }, a.$observe("max", function(e) {
4429 g = f(e), s.$validate()
4435 function $r(e, t, n, r) {
4437 (r.$$hasNativeValidators = $(i.validity)) && r.$parsers.push(function(e) {
4438 var n = t.prop(Pr) || {};
4439 return n.badInput || n.typeMismatch ? void 0 : e
4444 e.$$parserName = "number", e.$parsers.push(function(t) {
4445 return e.$isEmpty(t) ? null : Go.test(t) ? parseFloat(t) : void 0
4446 }), e.$formatters.push(function(t) {
4447 if (!e.$isEmpty(t)) {
4448 if (!k(t)) throw xa("numfmt", "Expected `{0}` to be a number", t);
4456 return _(e) && !k(e) && (e = parseFloat(e)), Qr(e) ? void 0 : e
4460 return (0 | e) === e
4464 var t = e.toString(),
4467 if (-1 < e && e < 1) {
4468 var r = /e-(\d+)$/.exec(t);
4469 if (r) return Number(r[1])
4473 return t.length - n - 1
4476 function xr(e, t, n) {
4482 var s = i ? Cr(r) : 0,
4485 u = Math.max(s, c, l),
4486 d = Math.pow(10, u);
4487 r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
4489 return (r - t) % n == 0
4492 function Tr(e, t, n, r, i) {
4495 if (!(o = e(r)).constant) throw xa("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
4503 if (!e || !e.length) return [];
4504 if (!t || !t.length) return e;
4506 e: for (var r = 0; r < e.length; r++) {
4507 for (var i = e[r], o = 0; o < t.length; o++)
4508 if (i === t[o]) continue e;
4515 return e && e.split(" ")
4520 return Jr(e) ? t = e.map(i).join(" ") : $(e) && (t = Object.keys(e).filter(function(t) {
4527 if (Jr(e)) t = e.map(a);
4530 t = Object.keys(e).filter(function(t) {
4532 return !n && y(r) && (n = !0), r
4533 }), n && t.push(void 0)
4539 return ["$parse", function(c) {
4542 link: function(l, u, d) {
4544 e = m(r(e), 1), d.$addClass(e)
4548 e = m(r(e), -1), d.$removeClass(e)
4558 d.$addClass(l), d.$removeClass(c)
4563 return o(e, function(e) {
4564 (t > 0 || w[e]) && (w[e] = (w[e] || 0) + t, w[e] === +(t > 0) && n.push(e))
4569 E === t && p(v, e), v = e
4571 var v, b = d[e].trim(),
4572 y = ":" === b.charAt(0) && ":" === b.charAt(1),
4573 _ = c(b, y ? a : i),
4574 $ = y ? function(e) {
4578 w = u.data("$classCounts"),
4580 w || (w = be(), u.data("$classCounts", w)), "ngClass" !== e && (s || (s = c("$index", function(e) {
4582 })), l.$watch(s, function(e) {
4583 e === t ? f(v) : h(v), E = e
4584 })), l.$watch(_, $, y)
4590 function Ar(e, t, n, r, i, o, a, s, c) {
4591 this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = void 0, this.$validators = {}, this.$asyncValidators = {}, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$untouched = !0, this.$touched = !1, this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = c(n.name || "", !1)(e), this.$$parentForm = Fo, this.$options = Ta, this.$$parsedNgModel = i(n.ngModel), this.$$parsedNgModelAssign = this.$$parsedNgModel.assign, this.$$ngModelGet = this.$$parsedNgModel, this.$$ngModelSet = this.$$parsedNgModelAssign, this.$$pendingDebounce = null, this.$$parserValid = void 0, this.$$currentValidationRunId = 0, Object.defineProperty(this, "$$scope", {
4593 }), this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, pr(this), Sr(this)
4597 e.$$scope.$watch(function(t) {
4598 var n = e.$$ngModelGet(t);
4599 if (n !== e.$modelValue && (e.$modelValue === e.$modelValue || n === n)) {
4600 e.$modelValue = e.$$rawModelValue = n, e.$$parserValid = void 0;
4601 for (var r = e.$formatters, i = r.length, o = n; i--;) o = r[i](o);
4602 e.$viewValue !== o && (e.$$updateEmptyClasses(o), e.$viewValue = e.$$lastCommittedViewValue = o, e.$render(), e.$$runValidators(e.$modelValue, e.$viewValue, m))
4613 o(t, function(t, n) {
4614 _(e[n]) || (e[n] = t)
4619 e.prop("selected", t), e.attr("selected", t)
4624 Rr = /^\/(.+)\/([a-z]*)$/,
4626 jr = Object.prototype.hasOwnProperty,
4628 return E(e) ? e.toLowerCase() : e
4631 return E(e) ? e.toUpperCase() : e
4633 "i" !== "I".toLowerCase() && (Hr = function(e) {
4634 return E(e) ? e.replace(/[A-Z]/g, function(e) {
4635 return String.fromCharCode(32 | e.charCodeAt(0))
4637 }, Lr = function(e) {
4638 return E(e) ? e.replace(/[a-z]/g, function(e) {
4639 return String.fromCharCode(-33 & e.charCodeAt(0))
4642 var Fr, qr, Ur, Vr, zr = [].slice,
4645 Yr = Object.prototype.toString,
4646 Gr = Object.getPrototypeOf,
4648 Zr = e.angular || (e.angular = {}),
4650 Fr = e.document.documentMode;
4651 var Qr = Number.isNaN || function(e) {
4654 m.$inject = [], g.$inject = [];
4655 var Jr = Array.isArray,
4656 ei = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,
4658 return E(e) ? e.trim() : e
4661 return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
4665 var t = e.document.querySelector("[ng-csp]") || e.document.querySelector("[data-ng-csp]");
4667 var n = t.getAttribute("ng-csp") || t.getAttribute("data-ng-csp");
4669 noUnsafeEval: !n || -1 !== n.indexOf("no-unsafe-eval"),
4670 noInlineStyle: !n || -1 !== n.indexOf("no-inline-style")
4673 noUnsafeEval: function() {
4675 return new Function(""), !1
4686 if (_(ii.name_)) return ii.name_;
4687 var t, n, r, i, o = ai.length;
4688 for (n = 0; n < o; ++n)
4689 if (r = ai[n], t = e.document.querySelector("[" + r.replace(":", "\\:") + "jq]")) {
4690 i = t.getAttribute(r + "jq");
4696 ai = ["ng-", "data-ng-", "ng:", "x-ng-"],
4698 var n = t.currentScript;
4700 if (!(n instanceof e.HTMLScriptElement || n instanceof e.SVGScriptElement)) return !1;
4701 var r = n.attributes;
4702 return [r.getNamedItem("src"), r.getNamedItem("href"), r.getNamedItem("xlink:href")].every(function(e) {
4704 if (!e.value) return !1;
4705 var n = t.createElement("a");
4706 if (n.href = e.value, t.location.origin === n.origin) return !0;
4707 switch (n.protocol) {
4732 codeName: "interdimensional-cable"
4734 Ne.expando = "ng339";
4735 var gi = Ne.cache = {},
4737 Ne._data = function(e) {
4738 return this.cache[e[this.expando]] || {}
4740 var bi = /-([a-z])/g,
4743 mouseleave: "mouseout",
4744 mouseenter: "mouseover"
4747 wi = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
4750 Ci = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
4752 option: [1, '<select multiple="multiple">', "</select>"],
4753 thead: [1, "<table>", "</table>"],
4754 col: [2, "<table><colgroup>", "</colgroup></table>"],
4755 tr: [2, "<table><tbody>", "</tbody></table>"],
4756 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
4757 _default: [0, "", ""]
4759 xi.optgroup = xi.option, xi.tbody = xi.tfoot = xi.colgroup = xi.caption = xi.thead, xi.th = xi.td;
4760 var Ti = e.Node.prototype.contains || function(e) {
4761 return !!(16 & this.compareDocumentPosition(e))
4763 Mi = Ne.prototype = {
4765 toString: function() {
4767 return o(this, function(t) {
4769 }), "[" + e.join(", ") + "]"
4772 return qr(e >= 0 ? this[e] : this[this.length + e])
4780 o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
4784 o("input,select,option,textarea,button,form,details".split(","), function(e) {
4788 ngMinlength: "minlength",
4789 ngMaxlength: "maxlength",
4792 ngPattern: "pattern",
4798 hasData: function(e) {
4799 for (var t in gi[e.ng339]) return !0;
4802 cleanData: function(e) {
4803 for (var t = 0, n = e.length; t < n; t++) je(e[t])
4810 scope: function(e) {
4811 return qr.data(e, "$scope") || Be(e.parentNode || e, ["$isolateScope", "$scope"])
4813 isolateScope: function(e) {
4814 return qr.data(e, "$isolateScope") || qr.data(e, "$isolateScopeNoTemplate")
4817 injector: function(e) {
4818 return Be(e, "$injector")
4820 removeAttr: function(e, t) {
4821 e.removeAttribute(t)
4824 css: function(e, t, n) {
4825 if (t = Ce(t), !_(n)) return e.style[t];
4828 attr: function(e, t, n) {
4829 var r, i = e.nodeType;
4830 if (i !== di && 2 !== i && i !== fi && e.getAttribute) {
4833 if (!_(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
4834 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
4837 prop: function(e, t, n) {
4838 if (!_(n)) return e[t];
4845 return n === ui || n === di ? e.textContent : ""
4849 return e.$dv = "", e
4851 val: function(e, t) {
4853 if (e.multiple && "select" === F(e)) {
4855 return o(e.options, function(e) {
4856 e.selected && n.push(e.value || e.text)
4863 html: function(e, t) {
4864 if (y(t)) return e.innerHTML;
4865 Re(e, !0), e.innerHTML = t
4869 Ne.prototype[t] = function(t, n) {
4870 var r, i, o = this.length;
4871 if (e !== We && y(2 === e.length && e !== Fe && e !== ze ? t : n)) {
4873 for (r = 0; r < o; r++)
4874 if (e === Le) e(this[r], t);
4876 for (i in t) e(this[r], i, t[i]);
4879 for (var a = e.$dv, s = y(a) ? Math.min(o, 1) : o, c = 0; c < s; c++) {
4880 var l = e(this[c], t, n);
4885 for (r = 0; r < o; r++) e(this[r], t, n);
4890 on: function(e, t, n, r) {
4891 if (_(r)) throw $i("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
4896 a || (a = i.handle = Qe(e, o));
4897 for (var s = t.indexOf(" ") >= 0 ? t.split(" ") : [t], c = s.length, l = function(t, r, i) {
4899 s || ((s = o[t] = []).specialHandlerWrapper = r, "$destroy" === t || i || e.addEventListener(t, a)), s.push(n)
4900 }; c--;) t = s[c], _i[t] ? (l(_i[t], et), l(t, void 0, !0)) : l(t)
4904 one: function(e, t, n) {
4905 (e = qr(e)).on(t, function r() {
4906 e.off(t, n), e.off(t, r)
4909 replaceWith: function(e, t) {
4910 var n, r = e.parentNode;
4911 Re(e), o(new Ne(t), function(t) {
4912 n ? r.insertBefore(t, n.nextSibling) : r.replaceChild(t, e), n = t
4915 children: function(e) {
4917 return o(e.childNodes, function(e) {
4918 e.nodeType === ui && t.push(e)
4921 contents: function(e) {
4922 return e.contentDocument || e.childNodes || []
4924 append: function(e, t) {
4926 if (n === ui || n === pi)
4927 for (var r = 0, i = (t = new Ne(t)).length; r < i; r++) {
4932 prepend: function(e, t) {
4933 if (e.nodeType === ui) {
4934 var n = e.firstChild;
4935 o(new Ne(t), function(t) {
4936 e.insertBefore(t, n)
4940 wrap: function(e, t) {
4941 De(e, qr(t).eq(0).clone()[0])
4944 detach: function(e) {
4947 after: function(e, t) {
4951 for (var i = 0, o = (t = new Ne(t)).length; i < o; i++) {
4953 r.insertBefore(a, n.nextSibling), n = a
4958 toggleClass: function(e, t, n) {
4959 t && o(t.split(" "), function(t) {
4961 y(r) && (r = !Fe(e, t)), (r ? Ue : qe)(e, t)
4964 parent: function(e) {
4965 var t = e.parentNode;
4966 return t && t.nodeType !== pi ? t : null
4969 return e.nextElementSibling
4971 find: function(e, t) {
4972 return e.getElementsByTagName ? e.getElementsByTagName(t) : []
4975 triggerHandler: function(e, t, n) {
4976 var r, i, a, s = t.type || t,
4981 preventDefault: function() {
4982 this.defaultPrevented = !0
4984 isDefaultPrevented: function() {
4985 return !0 === this.defaultPrevented
4987 stopImmediatePropagation: function() {
4988 this.immediatePropagationStopped = !0
4990 isImmediatePropagationStopped: function() {
4991 return !0 === this.immediatePropagationStopped
4996 }, t.type && (r = d(r, t)), i = $e(u), a = n ? [r].concat(n) : [r], o(i, function(t) {
4997 r.isImmediatePropagationStopped() || t.apply(e, a)
5001 Ne.prototype[t] = function(t, n, r) {
5002 for (var i, o = 0, a = this.length; o < a; o++) y(i) ? _(i = e(this[o], t, n, r)) && (i = qr(i)) : Ve(i, e(this[o], t, n, r));
5003 return _(i) ? i : this
5005 }), Ne.prototype.bind = Ne.prototype.on, Ne.prototype.unbind = Ne.prototype.off;
5006 var Di = Object.create(null);
5009 return e === this._lastKey ? this._lastIndex : (this._lastKey = e, this._lastIndex = this._keys.indexOf(e), this._lastIndex)
5011 _transformKey: function(e) {
5012 return Qr(e) ? Di : e
5015 e = this._transformKey(e);
5016 var t = this._idx(e);
5017 if (-1 !== t) return this._values[t]
5019 set: function(e, t) {
5020 e = this._transformKey(e);
5021 var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
5023 delete: function(e) {
5024 e = this._transformKey(e);
5025 var t = this._idx(e);
5026 return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
5031 this.$get = [function() {
5036 Pi = /^[^(]*\(\s*([^)]*)\)/m,
5038 Hi = /^\s*(_?)(\S+?)\1\s*$/,
5039 Li = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
5040 Fi = r("$injector");
5041 st.$$annotate = function(e, t, n) {
5043 if ("function" == typeof e) {
5044 if (!(r = e.$inject)) {
5045 if (r = [], e.length) {
5046 if (t) throw E(n) && n || (n = e.name || at(e)), Fi("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
5047 o(ot(e)[1].split(ji), function(e) {
5048 e.replace(Hi, function(e, t, n) {
5055 } else Jr(e) ? (pe(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : pe(e, "fn", !0);
5058 var qi = r("$animate"),
5066 this.$get = ["$$AnimateRunner", "$rootScope", function(n, r) {
5067 function i(e, t, n) {
5069 return t && o(t = E(t) ? t.split(" ") : Jr(t) ? t : [], function(t) {
5070 t && (r = !0, e[t] = n)
5078 var r = dt(t.attr("class")),
5081 o(n, function(e, t) {
5082 e !== !!r[t] && (e ? i += (i.length ? " " : "") + t : a += (a.length ? " " : "") + t)
5083 }), o(t, function(e) {
5084 i && Ue(e, i), a && qe(e, a)
5090 function s(n, o, s) {
5091 var c = e.get(n) || {},
5094 (l || u) && (e.set(n, c), t.push(n), 1 === t.length && r.$$postDigest(a))
5101 push: function(e, t, r, i) {
5102 i && i(), (r = r || {}).from && e.css(r.from), r.to && e.css(r.to), (r.addClass || r.removeClass) && s(e, r.addClass, r.removeClass);
5104 return o.complete(), o
5109 Bi = ["$provide", function(e) {
5113 this.$$registeredAnimations = Object.create(null), this.register = function(n, r) {
5114 if (n && "." !== n.charAt(0)) throw qi("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
5115 var i = n + "-animation";
5116 t.$$registeredAnimations[n.substr(1)] = i, e.factory(i, r)
5117 }, this.customFilter = function(e) {
5118 return 1 === arguments.length && (r = T(e) ? e : null), r
5119 }, this.classNameFilter = function(e) {
5120 if (1 === arguments.length && (n = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]").test(n.toString())) throw n = null, qi("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', "ng-animate");
5122 }, this.$get = ["$$animateQueue", function(e) {
5123 function t(e, t, n) {
5126 !r || r.parentNode || r.previousElementSibling || (n = null)
5128 n ? n.after(e) : t.prepend(e)
5135 cancel: function(e) {
5138 enter: function(n, r, i, o) {
5139 return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "enter", ft(o))
5141 move: function(n, r, i, o) {
5142 return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "move", ft(o))
5144 leave: function(t, n) {
5145 return e.push(t, "leave", ft(n), function() {
5149 addClass: function(t, n, r) {
5150 return r = ft(r), r.addClass = lt(r.addclass, n), e.push(t, "addClass", r)
5152 removeClass: function(t, n, r) {
5153 return r = ft(r), r.removeClass = lt(r.removeClass, n), e.push(t, "removeClass", r)
5155 setClass: function(t, n, r, i) {
5156 return i = ft(i), i.addClass = lt(i.addClass, n), i.removeClass = lt(i.removeClass, r), e.push(t, "setClass", i)
5158 animate: function(t, n, r, i, o) {
5159 return o = ft(o), o.from = o.from ? d(o.from, n) : n, o.to = o.to ? d(o.to, r) : r, i = i || "ng-inline-animate", o.tempClasses = lt(o.tempClasses, i), e.push(t, "animate", o)
5165 this.$get = ["$$rAF", function(e) {
5167 n.push(t), n.length > 1 || e(function() {
5168 for (var e = 0; e < n.length; e++) n[e]();
5175 return t(function() {
5185 this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(e, t, n, r, i) {
5192 this._doneCallbacks = [], this._tick = function(e) {
5196 return a.chain = function(e, t) {
5198 r !== e.length ? e[r](function(e) {
5199 !1 !== e ? (r++, n()) : t(!1)
5204 }, a.all = function(e, t) {
5206 i = i && n, ++r === e.length && t(i)
5214 setHost: function(e) {
5218 2 === this._state ? e() : this._doneCallbacks.push(e)
5221 getPromise: function() {
5222 if (!this.promise) {
5224 this.promise = e(function(e, n) {
5225 t.done(function(t) {
5226 !1 === t ? n() : e()
5232 then: function(e, t) {
5233 return this.getPromise().then(e, t)
5235 catch: function(e) {
5236 return this.getPromise().catch(e)
5238 finally: function(e) {
5239 return this.getPromise().finally(e)
5242 this.host.pause && this.host.pause()
5244 resume: function() {
5245 this.host.resume && this.host.resume()
5248 this.host.end && this.host.end(), this._resolve(!0)
5250 cancel: function() {
5251 this.host.cancel && this.host.cancel(), this._resolve(!1)
5253 complete: function(e) {
5255 0 === t._state && (t._state = 1, t._tick(function() {
5259 _resolve: function(e) {
5260 2 !== this._state && (o(this._doneCallbacks, function(t) {
5262 }), this._doneCallbacks.length = 0, this._state = 2)
5268 this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(e, t, n) {
5269 return function(t, r) {
5271 return e(function() {
5272 o(), s || c.complete(), s = !0
5277 a.addClass && (t.addClass(a.addClass), a.addClass = null), a.removeClass && (t.removeClass(a.removeClass), a.removeClass = null), a.to && (t.css(a.to), a.to = null)
5280 a.$$prepared || (a = V(a)), a.cleanupStyles && (a.from = a.to = null), a.from && (t.css(a.from), a.from = null);
5290 Zi = new function() {};
5291 vt.$inject = ["$provide", "$$sanitizeUriProvider"], bt.prototype.isFirstChange = function() {
5292 return this.previousValue === Zi
5294 var Xi = /^((?:x|data)[:\-_])/i,
5296 Ji = r("$controller"),
5297 eo = /^(\S+)(\s+as\s+([\w$]+))?$/,
5299 this.$get = ["$document", function(e) {
5300 return function(t) {
5301 return t ? !t.nodeType && t instanceof qr && (t = t[0]) : t = e[0].body, t.offsetWidth + 1
5305 no = "application/json",
5307 "Content-Type": no + ";charset=utf-8"
5309 io = /^\[|^\{(?!\{)/,
5316 co = Zr.$interpolateMinErr = r("$interpolate");
5317 co.throwNoconcat = function(e) {
5318 throw co("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce", e)
5319 }, co.interr = function(e, t) {
5320 return co("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
5322 var lo = function() {
5323 this.$get = function() {
5325 var t = function(e) {
5326 t.data = e, t.called = !0
5330 var t = Zr.callbacks,
5333 createCallback: function(r) {
5334 var i = "_" + (t.$$counter++).toString(36),
5335 o = "angular.callbacks." + i,
5337 return n[o] = t[i] = a, o
5339 wasCalled: function(e) {
5342 getResponse: function(e) {
5345 removeCallback: function(e) {
5347 delete t[r.id], delete n[e]
5352 uo = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
5358 ho = r("$location"),
5359 po = /^\s*[\\/]{2,}/,
5364 absUrl: en("$$absUrl"),
5366 if (y(e)) return this.$$url;
5368 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
5370 protocol: en("$$protocol"),
5373 path: tn("$$path", function(e) {
5374 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
5376 search: function(e, t) {
5377 switch (arguments.length) {
5379 return this.$$search;
5381 if (E(e) || k(e)) e = e.toString(), this.$$search = re(e);
5383 if (!$(e)) throw ho("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
5384 o(e = V(e, {}), function(t, n) {
5385 null == t && delete e[n]
5386 }), this.$$search = e
5390 y(t) || null === t ? delete this.$$search[e] : this.$$search[e] = t
5392 return this.$$compose(), this
5394 hash: tn("$$hash", function(e) {
5395 return null !== e ? e.toString() : ""
5397 replace: function() {
5398 return this.$$replace = !0, this
5401 o([Jt, Qt, Xt], function(e) {
5402 e.prototype = Object.create(mo), e.prototype.state = function(t) {
5403 if (!arguments.length) return this.$$state;
5404 if (e !== Xt || !this.$$html5) throw ho("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
5405 return this.$$state = y(t) ? null : t, this.$$urlUpdatedByLocation = !0, this
5408 var go = r("$parse"),
5409 vo = {}.constructor.prototype.valueOf,
5411 o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
5429 for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
5430 var t = this.text.charAt(this.index);
5431 if ('"' === t || "'" === t) this.readString(t);
5432 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
5433 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
5434 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
5438 else if (this.isWhitespace(t)) this.index++;
5440 var n = t + this.peek(),
5441 r = n + this.peek(2),
5446 var s = a ? r : o ? n : t;
5451 }), this.index += s.length
5452 } else this.throwError("Unexpected next character ", this.index, this.index + 1)
5457 is: function(e, t) {
5458 return -1 !== t.indexOf(e)
5462 return this.index + t < this.text.length && this.text.charAt(this.index + t)
5464 isNumber: function(e) {
5465 return "0" <= e && e <= "9" && "string" == typeof e
5467 isWhitespace: function(e) {
5468 return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
5470 isIdentifierStart: function(e) {
5471 return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
5473 isValidIdentifierStart: function(e) {
5474 return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
5476 isIdentifierContinue: function(e) {
5477 return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
5479 isValidIdentifierContinue: function(e, t) {
5480 return this.isValidIdentifierStart(e, t) || this.isNumber(e)
5482 codePointAt: function(e) {
5483 return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
5485 peekMultichar: function() {
5486 var e = this.text.charAt(this.index),
5489 var n = e.charCodeAt(0),
5490 r = t.charCodeAt(0);
5491 return n >= 55296 && n <= 56319 && r >= 56320 && r <= 57343 ? e + t : e
5493 isExpOperator: function(e) {
5494 return "-" === e || "+" === e || this.isNumber(e)
5496 throwError: function(e, t, n) {
5497 n = n || this.index;
5498 var r = _(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
5499 throw go("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
5501 readNumber: function() {
5502 for (var e = "", t = this.index; this.index < this.text.length;) {
5503 var n = Hr(this.text.charAt(this.index));
5504 if ("." === n || this.isNumber(n)) e += n;
5506 var r = this.peek();
5507 if ("e" === n && this.isExpOperator(r)) e += n;
5508 else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
5510 if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
5511 this.throwError("Invalid exponent")
5523 readIdent: function() {
5525 for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
5526 var t = this.peekMultichar();
5527 if (!this.isIdentifierContinue(t)) break;
5528 this.index += t.length
5532 text: this.text.slice(e, this.index),
5536 readString: function(e) {
5539 for (var n = "", r = e, i = !1; this.index < this.text.length;) {
5540 var o = this.text.charAt(this.index);
5543 var a = this.text.substring(this.index + 1, this.index + 5);
5544 a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
5545 } else n += yo[o] || o;
5547 } else if ("\\" === o) i = !0;
5549 if (o === e) return this.index++, void this.tokens.push({
5559 this.throwError("Unterminated quote", t)
5562 var $o = function(e, t) {
5563 this.lexer = e, this.options = t
5565 $o.Program = "Program", $o.ExpressionStatement = "ExpressionStatement", $o.AssignmentExpression = "AssignmentExpression", $o.ConditionalExpression = "ConditionalExpression", $o.LogicalExpression = "LogicalExpression", $o.BinaryExpression = "BinaryExpression", $o.UnaryExpression = "UnaryExpression", $o.CallExpression = "CallExpression", $o.MemberExpression = "MemberExpression", $o.Identifier = "Identifier", $o.Literal = "Literal", $o.ArrayExpression = "ArrayExpression", $o.Property = "Property", $o.ObjectExpression = "ObjectExpression", $o.ThisExpression = "ThisExpression", $o.LocalsExpression = "LocalsExpression", $o.NGValueParameter = "NGValueParameter", $o.prototype = {
5567 this.text = e, this.tokens = this.lexer.lex(e);
5568 var t = this.program();
5569 return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
5571 program: function() {
5573 if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
5578 expressionStatement: function() {
5580 type: $o.ExpressionStatement,
5581 expression: this.filterChain()
5584 filterChain: function() {
5585 for (var e = this.expression(); this.expect("|");) e = this.filter(e);
5588 expression: function() {
5589 return this.assignment()
5591 assignment: function() {
5592 var e = this.ternary();
5593 if (this.expect("=")) {
5594 if (!fn(e)) throw go("lval", "Trying to assign a value to a non l-value");
5596 type: $o.AssignmentExpression,
5598 right: this.assignment(),
5604 ternary: function() {
5605 var e, t, n = this.logicalOR();
5606 return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
5607 type: $o.ConditionalExpression,
5613 logicalOR: function() {
5614 for (var e = this.logicalAND(); this.expect("||");) e = {
5615 type: $o.LogicalExpression,
5618 right: this.logicalAND()
5622 logicalAND: function() {
5623 for (var e = this.equality(); this.expect("&&");) e = {
5624 type: $o.LogicalExpression,
5627 right: this.equality()
5631 equality: function() {
5632 for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
5633 type: $o.BinaryExpression,
5636 right: this.relational()
5640 relational: function() {
5641 for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
5642 type: $o.BinaryExpression,
5645 right: this.additive()
5649 additive: function() {
5650 for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
5651 type: $o.BinaryExpression,
5654 right: this.multiplicative()
5658 multiplicative: function() {
5659 for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
5660 type: $o.BinaryExpression,
5669 return (e = this.expect("+", "-", "!")) ? {
5670 type: $o.UnaryExpression,
5673 argument: this.unary()
5676 primary: function() {
5678 this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? e = V(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? e = {
5680 value: this.options.literals[this.consume().text]
5681 } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek());
5682 for (var t; t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
5683 type: $o.CallExpression,
5685 arguments: this.parseArguments()
5686 }, this.consume(")")) : "[" === t.text ? (e = {
5687 type: $o.MemberExpression,
5689 property: this.expression(),
5691 }, this.consume("]")) : "." === t.text ? e = {
5692 type: $o.MemberExpression,
5694 property: this.identifier(),
5696 } : this.throwError("IMPOSSIBLE");
5699 filter: function(e) {
5700 for (var t = [e], n = {
5701 type: $o.CallExpression,
5702 callee: this.identifier(),
5705 }; this.expect(":");) t.push(this.expression());
5708 parseArguments: function() {
5710 if (")" !== this.peekToken().text)
5712 e.push(this.filterChain())
5713 } while (this.expect(","));
5716 identifier: function() {
5717 var e = this.consume();
5718 return e.identifier || this.throwError("is not a valid identifier", e), {
5719 type: $o.Identifier,
5723 constant: function() {
5726 value: this.consume().value
5729 arrayDeclaration: function() {
5731 if ("]" !== this.peekToken().text)
5733 if (this.peek("]")) break;
5734 e.push(this.expression())
5735 } while (this.expect(","));
5736 return this.consume("]"), {
5737 type: $o.ArrayExpression,
5741 object: function() {
5743 if ("}" !== this.peekToken().text)
5745 if (this.peek("}")) break;
5749 }, this.peek().constant ? (e.key = this.constant(), e.computed = !1, this.consume(":"), e.value = this.expression()) : this.peek().identifier ? (e.key = this.identifier(), e.computed = !1, this.peek(":") ? (this.consume(":"), e.value = this.expression()) : e.value = e.key) : this.peek("[") ? (this.consume("["), e.key = this.expression(), this.consume("]"), e.computed = !0, this.consume(":"), e.value = this.expression()) : this.throwError("invalid key", this.peek()), t.push(e)
5750 } while (this.expect(","));
5751 return this.consume("}"), {
5752 type: $o.ObjectExpression,
5756 throwError: function(e, t) {
5757 throw go("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, e, t.index + 1, this.text, this.text.substring(t.index))
5759 consume: function(e) {
5760 if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5761 var t = this.expect(e);
5762 return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
5764 peekToken: function() {
5765 if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5766 return this.tokens[0]
5768 peek: function(e, t, n, r) {
5769 return this.peekAhead(0, e, t, n, r)
5771 peekAhead: function(e, t, n, r, i) {
5772 if (this.tokens.length > e) {
5773 var o = this.tokens[e],
5775 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
5779 expect: function(e, t, n, r) {
5780 var i = this.peek(e, t, n, r);
5781 return !!i && (this.tokens.shift(), i)
5785 type: $o.ThisExpression
5788 type: $o.LocalsExpression
5795 compile: function(e) {
5811 }, un(e, t.$filter);
5813 if (this.stage = "assign", n = hn(e)) {
5814 this.state.computing = "assign";
5815 var i = this.nextId();
5816 this.recurse(n, i), this.return_(i), r = "fn.assign=" + this.generateFunction("assign", "s,v,l")
5819 t.stage = "inputs", o(a, function(e, n) {
5825 }, t.state.computing = r;
5827 t.recurse(e, i), t.return_(i), t.state.inputs.push({
5831 }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
5832 var s = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + r + this.watchFns() + "return fn;",
5833 c = new Function("$filter", "getStringValue", "ifDefined", "plus", s)(this.$filter, on, an, sn);
5834 return this.state = this.stage = void 0, c
5838 watchFns: function() {
5840 t = this.state.inputs,
5842 return o(t, function(t) {
5843 e.push("var " + t.name + "=" + n.generateFunction(t.name, "s")), t.isPure && e.push(t.name, ".isPure=" + JSON.stringify(t.isPure) + ";")
5844 }), t.length && e.push("fn.inputs=[" + t.map(function(e) {
5846 }).join(",") + "];"), e.join("")
5848 generateFunction: function(e, t) {
5849 return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
5851 filterPrefix: function() {
5854 return o(this.state.filters, function(n, r) {
5855 e.push(n + "=$filter(" + t.escape(r) + ")")
5856 }), e.length ? "var " + e.join(",") + ";" : ""
5858 varsPrefix: function(e) {
5859 return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
5862 return this.state[e].body.join("")
5864 recurse: function(e, t, n, r, i, a) {
5865 var s, c, l, u, d, f = this;
5866 if (r = r || m, !a && _(e.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", e.watchId)), this.lazyRecurse(e, t, n, r, i, !0));
5869 o(e.body, function(t, n) {
5870 f.recurse(t.expression, void 0, void 0, function(e) {
5872 }), n !== e.body.length - 1 ? f.current().body.push(c, ";") : f.return_(c)
5876 u = this.escape(e.value), this.assign(t, u), r(t || u);
5878 case $o.UnaryExpression:
5879 this.recurse(e.argument, void 0, void 0, function(e) {
5881 }), u = e.operator + "(" + this.ifDefined(c, 0) + ")", this.assign(t, u), r(u);
5883 case $o.BinaryExpression:
5884 this.recurse(e.left, void 0, void 0, function(e) {
5886 }), this.recurse(e.right, void 0, void 0, function(e) {
5888 }), u = "+" === e.operator ? this.plus(s, c) : "-" === e.operator ? this.ifDefined(s, 0) + e.operator + this.ifDefined(c, 0) : "(" + s + ")" + e.operator + "(" + c + ")", this.assign(t, u), r(u);
5890 case $o.LogicalExpression:
5891 t = t || this.nextId(), f.recurse(e.left, t), f.if_("&&" === e.operator ? t : f.not(t), f.lazyRecurse(e.right, t)), r(t);
5893 case $o.ConditionalExpression:
5894 t = t || this.nextId(), f.recurse(e.test, t), f.if_(t, f.lazyRecurse(e.alternate, t), f.lazyRecurse(e.consequent, t)), r(t);
5897 t = t || this.nextId(), n && (n.context = "inputs" === f.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", e.name) + "?l:s"), n.computed = !1, n.name = e.name), f.if_("inputs" === f.stage || f.not(f.getHasOwnProperty("l", e.name)), function() {
5898 f.if_("inputs" === f.stage || "s", function() {
5899 i && 1 !== i && f.if_(f.isNull(f.nonComputedMember("s", e.name)), f.lazyAssign(f.nonComputedMember("s", e.name), "{}")), f.assign(t, f.nonComputedMember("s", e.name))
5901 }, t && f.lazyAssign(t, f.nonComputedMember("l", e.name))), r(t);
5903 case $o.MemberExpression:
5904 s = n && (n.context = this.nextId()) || this.nextId(), t = t || this.nextId(), f.recurse(e.object, s, void 0, function() {
5905 f.if_(f.notNull(s), function() {
5906 e.computed ? (c = f.nextId(), f.recurse(e.property, c), f.getStringValue(c), i && 1 !== i && f.if_(f.not(f.computedMember(s, c)), f.lazyAssign(f.computedMember(s, c), "{}")), u = f.computedMember(s, c), f.assign(t, u), n && (n.computed = !0, n.name = c)) : (i && 1 !== i && f.if_(f.isNull(f.nonComputedMember(s, e.property.name)), f.lazyAssign(f.nonComputedMember(s, e.property.name), "{}")), u = f.nonComputedMember(s, e.property.name), f.assign(t, u), n && (n.computed = !1, n.name = e.property.name))
5908 f.assign(t, "undefined")
5912 case $o.CallExpression:
5913 t = t || this.nextId(), e.filter ? (c = f.filter(e.callee.name), l = [], o(e.arguments, function(e) {
5915 f.recurse(e, t), l.push(t)
5916 }), u = c + "(" + l.join(",") + ")", f.assign(t, u), r(t)) : (c = f.nextId(), s = {}, l = [], f.recurse(e.callee, c, s, function() {
5917 f.if_(f.notNull(c), function() {
5918 o(e.arguments, function(t) {
5919 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5922 }), u = s.name ? f.member(s.context, s.name, s.computed) + "(" + l.join(",") + ")" : c + "(" + l.join(",") + ")", f.assign(t, u)
5924 f.assign(t, "undefined")
5928 case $o.AssignmentExpression:
5929 c = this.nextId(), s = {}, this.recurse(e.left, void 0, s, function() {
5930 f.if_(f.notNull(s.context), function() {
5931 f.recurse(e.right, c), u = f.member(s.context, s.name, s.computed) + e.operator + c, f.assign(t, u), r(t || u)
5935 case $o.ArrayExpression:
5936 l = [], o(e.elements, function(t) {
5937 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5940 }), u = "[" + l.join(",") + "]", this.assign(t, u), r(t || u);
5942 case $o.ObjectExpression:
5943 l = [], d = !1, o(e.properties, function(e) {
5944 e.computed && (d = !0)
5945 }), d ? (t = t || this.nextId(), this.assign(t, "{}"), o(e.properties, function(e) {
5946 e.computed ? (s = f.nextId(), f.recurse(e.key, s)) : s = e.key.type === $o.Identifier ? e.key.name : "" + e.key.value, c = f.nextId(), f.recurse(e.value, c), f.assign(f.member(t, s, e.computed), c)
5947 })) : (o(e.properties, function(t) {
5948 f.recurse(t.value, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5949 l.push(f.escape(t.key.type === $o.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
5951 }), u = "{" + l.join(",") + "}", this.assign(t, u)), r(t || u);
5953 case $o.ThisExpression:
5954 this.assign(t, "s"), r(t || "s");
5956 case $o.LocalsExpression:
5957 this.assign(t, "l"), r(t || "l");
5959 case $o.NGValueParameter:
5960 this.assign(t, "v"), r(t || "v")
5963 getHasOwnProperty: function(e, t) {
5964 var n = e + "." + t,
5965 r = this.current().own;
5966 return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
5968 assign: function(e, t) {
5969 if (e) return this.current().body.push(e, "=", t, ";"), e
5971 filter: function(e) {
5972 return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
5974 ifDefined: function(e, t) {
5975 return "ifDefined(" + e + "," + this.escape(t) + ")"
5977 plus: function(e, t) {
5978 return "plus(" + e + "," + t + ")"
5980 return_: function(e) {
5981 this.current().body.push("return ", e, ";")
5983 if_: function(e, t, n) {
5986 var r = this.current().body;
5987 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
5991 return "!(" + e + ")"
5993 isNull: function(e) {
5996 notNull: function(e) {
5999 nonComputedMember: function(e, t) {
6000 var n = /[^$_a-zA-Z0-9]/g;
6001 return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(n, this.stringEscapeFn) + '"]'
6003 computedMember: function(e, t) {
6004 return e + "[" + t + "]"
6006 member: function(e, t, n) {
6007 return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
6009 getStringValue: function(e) {
6010 this.assign(e, "getStringValue(" + e + ")")
6012 lazyRecurse: function(e, t, n, r, i, o) {
6015 a.recurse(e, t, n, r, i, o)
6018 lazyAssign: function(e, t) {
6024 stringEscapeRegex: /[^ a-zA-Z0-9]/g,
6025 stringEscapeFn: function(e) {
6026 return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
6028 escape: function(e) {
6029 if (E(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
6030 if (k(e)) return e.toString();
6031 if (!0 === e) return "true";
6032 if (!1 === e) return "false";
6033 if (null === e) return "null";
6034 if (void 0 === e) return "undefined";
6035 throw go("esc", "IMPOSSIBLE")
6037 nextId: function(e, t) {
6038 var n = "v" + this.state.nextId++;
6039 return e || this.current().vars.push(n + (t ? "=" + t : "")), n
6041 current: function() {
6042 return this.state[this.state.computing]
6045 compile: function(e) {
6049 (n = hn(e)) && (r = this.recurse(n));
6050 var i, a = dn(e.body);
6051 a && (i = [], o(a, function(e, n) {
6052 var r = t.recurse(e);
6053 r.isPure = e.isPure, e.input = r, i.push(r), e.watchId = n
6056 o(e.body, function(e) {
6057 s.push(t.recurse(e.expression))
6059 var c = 0 === e.body.length ? m : 1 === e.body.length ? s[0] : function(e, t) {
6061 return o(s, function(r) {
6065 return r && (c.assign = function(e, t, n) {
6067 }), i && (c.inputs = i), c
6069 recurse: function(e, t, n) {
6070 var r, i, a, s = this;
6071 if (e.input) return this.inputs(e.input, e.watchId);
6074 return this.value(e.value, t);
6075 case $o.UnaryExpression:
6076 return i = this.recurse(e.argument), this["unary" + e.operator](i, t);
6077 case $o.BinaryExpression:
6078 case $o.LogicalExpression:
6079 return r = this.recurse(e.left), i = this.recurse(e.right), this["binary" + e.operator](r, i, t);
6080 case $o.ConditionalExpression:
6081 return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), t);
6083 return s.identifier(e.name, t, n);
6084 case $o.MemberExpression:
6085 return r = this.recurse(e.object, !1, !!n), e.computed || (i = e.property.name), e.computed && (i = this.recurse(e.property)), e.computed ? this.computedMember(r, i, t, n) : this.nonComputedMember(r, i, t, n);
6086 case $o.CallExpression:
6087 return a = [], o(e.arguments, function(e) {
6088 a.push(s.recurse(e))
6089 }), e.filter && (i = this.$filter(e.callee.name)), e.filter || (i = this.recurse(e.callee, !0)), e.filter ? function(e, n, r, o) {
6090 for (var s = [], c = 0; c < a.length; ++c) s.push(a[c](e, n, r, o));
6091 var l = i.apply(void 0, s, o);
6097 } : function(e, n, r, o) {
6098 var s, c = i(e, n, r, o);
6099 if (null != c.value) {
6100 for (var l = [], u = 0; u < a.length; ++u) l.push(a[u](e, n, r, o));
6101 s = c.value.apply(c.context, l)
6107 case $o.AssignmentExpression:
6108 return r = this.recurse(e.left, !0, 1), i = this.recurse(e.right),
6109 function(e, n, o, a) {
6110 var s = r(e, n, o, a),
6112 return s.context[s.name] = c, t ? {
6116 case $o.ArrayExpression:
6117 return a = [], o(e.elements, function(e) {
6118 a.push(s.recurse(e))
6120 function(e, n, r, i) {
6121 for (var o = [], s = 0; s < a.length; ++s) o.push(a[s](e, n, r, i));
6126 case $o.ObjectExpression:
6127 return a = [], o(e.properties, function(e) {
6128 e.computed ? a.push({
6129 key: s.recurse(e.key),
6131 value: s.recurse(e.value)
6133 key: e.key.type === $o.Identifier ? e.key.name : "" + e.key.value,
6135 value: s.recurse(e.value)
6138 function(e, n, r, i) {
6139 for (var o = {}, s = 0; s < a.length; ++s) a[s].computed ? o[a[s].key(e, n, r, i)] = a[s].value(e, n, r, i) : o[a[s].key] = a[s].value(e, n, r, i);
6144 case $o.ThisExpression:
6145 return function(e) {
6150 case $o.LocalsExpression:
6151 return function(e, n) {
6156 case $o.NGValueParameter:
6157 return function(e, n, r) {
6164 "unary+": function(e, t) {
6165 return function(n, r, i, o) {
6166 var a = e(n, r, i, o);
6167 return a = _(a) ? +a : 0, t ? {
6172 "unary-": function(e, t) {
6173 return function(n, r, i, o) {
6174 var a = e(n, r, i, o);
6175 return a = _(a) ? -a : -0, t ? {
6180 "unary!": function(e, t) {
6181 return function(n, r, i, o) {
6182 var a = !e(n, r, i, o);
6188 "binary+": function(e, t, n) {
6189 return function(r, i, o, a) {
6190 var s = sn(e(r, i, o, a), t(r, i, o, a));
6196 "binary-": function(e, t, n) {
6197 return function(r, i, o, a) {
6198 var s = e(r, i, o, a),
6200 l = (_(s) ? s : 0) - (_(c) ? c : 0);
6206 "binary*": function(e, t, n) {
6207 return function(r, i, o, a) {
6208 var s = e(r, i, o, a) * t(r, i, o, a);
6214 "binary/": function(e, t, n) {
6215 return function(r, i, o, a) {
6216 var s = e(r, i, o, a) / t(r, i, o, a);
6222 "binary%": function(e, t, n) {
6223 return function(r, i, o, a) {
6224 var s = e(r, i, o, a) % t(r, i, o, a);
6230 "binary===": function(e, t, n) {
6231 return function(r, i, o, a) {
6232 var s = e(r, i, o, a) === t(r, i, o, a);
6238 "binary!==": function(e, t, n) {
6239 return function(r, i, o, a) {
6240 var s = e(r, i, o, a) !== t(r, i, o, a);
6246 "binary==": function(e, t, n) {
6247 return function(r, i, o, a) {
6248 var s = e(r, i, o, a) == t(r, i, o, a);
6254 "binary!=": function(e, t, n) {
6255 return function(r, i, o, a) {
6256 var s = e(r, i, o, a) != t(r, i, o, a);
6262 "binary<": function(e, t, n) {
6263 return function(r, i, o, a) {
6264 var s = e(r, i, o, a) < t(r, i, o, a);
6270 "binary>": function(e, t, n) {
6271 return function(r, i, o, a) {
6272 var s = e(r, i, o, a) > t(r, i, o, a);
6278 "binary<=": function(e, t, n) {
6279 return function(r, i, o, a) {
6280 var s = e(r, i, o, a) <= t(r, i, o, a);
6286 "binary>=": function(e, t, n) {
6287 return function(r, i, o, a) {
6288 var s = e(r, i, o, a) >= t(r, i, o, a);
6294 "binary&&": function(e, t, n) {
6295 return function(r, i, o, a) {
6296 var s = e(r, i, o, a) && t(r, i, o, a);
6302 "binary||": function(e, t, n) {
6303 return function(r, i, o, a) {
6304 var s = e(r, i, o, a) || t(r, i, o, a);
6310 "ternary?:": function(e, t, n, r) {
6311 return function(i, o, a, s) {
6312 var c = e(i, o, a, s) ? t(i, o, a, s) : n(i, o, a, s);
6318 value: function(e, t) {
6327 identifier: function(e, t, n) {
6328 return function(r, i, o, a) {
6329 var s = i && e in i ? i : r;
6330 n && 1 !== n && s && null == s[e] && (s[e] = {});
6331 var c = s ? s[e] : void 0;
6339 computedMember: function(e, t, n, r) {
6340 return function(i, o, a, s) {
6341 var c, l, u = e(i, o, a, s);
6342 return null != u && (c = on(c = t(i, o, a, s)), r && 1 !== r && u && !u[c] && (u[c] = {}), l = u[c]), n ? {
6349 nonComputedMember: function(e, t, n, r) {
6350 return function(i, o, a, s) {
6351 var c = e(i, o, a, s);
6352 r && 1 !== r && c && null == c[t] && (c[t] = {});
6353 var l = null != c ? c[t] : void 0;
6361 inputs: function(e, t) {
6362 return function(n, r, i, o) {
6363 return o ? o[t] : e(n, r, i)
6368 parse: function(e) {
6369 var t = this.ast.ast(e),
6370 n = this.astCompiler.compile(t);
6371 return n.literal = pn(t), n.constant = mn(t), n
6379 RESOURCE_URL: "resourceUrl",
6384 Mo = e.document.createElement("a"),
6385 Ao = Ln(e.location.href);
6386 Un.$inject = ["$document"], zn.$inject = ["$provide"];
6390 Kn.$inject = ["$locale"], Zn.$inject = ["$locale"];
6392 yyyy: tr("FullYear", 4, 0, !1, !0),
6393 yy: tr("FullYear", 2, 0, !0, !0),
6394 y: tr("FullYear", 1, 0, !1, !0),
6396 MMM: nr("Month", !0),
6397 MM: tr("Month", 2, 1),
6398 M: tr("Month", 1, 1),
6399 LLLL: nr("Month", !1, !0),
6404 hh: tr("Hours", 2, -12),
6405 h: tr("Hours", 1, -12),
6406 mm: tr("Minutes", 2),
6407 m: tr("Minutes", 1),
6408 ss: tr("Seconds", 2),
6409 s: tr("Seconds", 1),
6410 sss: tr("Milliseconds", 3),
6414 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
6416 Z: function(e, t, n) {
6418 i = r >= 0 ? "+" : "";
6419 return i += er(Math[r > 0 ? "floor" : "ceil"](r / 60), 2) + er(Math.abs(r % 60), 2)
6426 GGGG: function(e, t) {
6427 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
6430 Io = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
6432 sr.$inject = ["$locale"];
6435 dr.$inject = ["$parse"];
6438 compile: function(e, t) {
6439 if (!t.href && !t.xlinkHref) return function(e, t) {
6440 if ("a" === t[0].nodeName.toLowerCase()) {
6441 var n = "[object SVGAnimatedString]" === Yr.call(t.prop("href")) ? "xlink:href" : "href";
6442 t.on("click", function(e) {
6443 t.attr(n) || e.preventDefault()
6450 o(Ai, function(e, t) {
6451 function n(e, n, i) {
6452 e.$watch(i[r], function(e) {
6456 if ("multiple" !== e) {
6457 var r = yt("ng-" + t),
6459 "checked" === e && (i = function(e, t, i) {
6460 i.ngModel !== i[r] && n(e, 0, i)
6461 }), Lo[r] = function() {
6469 }), o(Oi, function(e, t) {
6470 Lo[t] = function() {
6473 link: function(e, n, r) {
6474 if ("ngPattern" === t && "/" === r.ngPattern.charAt(0)) {
6475 var i = r.ngPattern.match(Rr);
6476 if (i) return void r.$set("ngPattern", new RegExp(i[1], i[2]))
6478 e.$watch(r[t], function(e) {
6484 }), o(["src", "srcset", "href"], function(e) {
6485 var t = yt("ng-" + e);
6486 Lo[t] = function() {
6489 link: function(n, r, i) {
6492 "href" === e && "[object SVGAnimatedString]" === Yr.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(t, function(t) {
6493 t ? (i.$set(a, t), Fr && o && r.prop(o, i[a])) : "href" === e && i.$set(a, null)
6501 $$renameControl: function(e, t) {
6511 hr.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], hr.prototype = {
6512 $rollbackViewValue: function() {
6513 o(this.$$controls, function(e) {
6514 e.$rollbackViewValue()
6517 $commitViewValue: function() {
6518 o(this.$$controls, function(e) {
6519 e.$commitViewValue()
6522 $addControl: function(e) {
6523 me(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6525 $$renameControl: function(e, t) {
6527 this[n] === e && delete this[n], this[t] = e, e.$name = t
6529 $removeControl: function(e) {
6530 e.$name && this[e.$name] === e && delete this[e.$name], o(this.$pending, function(t, n) {
6531 this.$setValidity(n, null, e)
6532 }, this), o(this.$error, function(t, n) {
6533 this.$setValidity(n, null, e)
6534 }, this), o(this.$$success, function(t, n) {
6535 this.$setValidity(n, null, e)
6536 }, this), U(this.$$controls, e), e.$$parentForm = Fo
6538 $setDirty: function() {
6539 this.$$animate.removeClass(this.$$element, ka), this.$$animate.addClass(this.$$element, Ca), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6541 $setPristine: function() {
6542 this.$$animate.setClass(this.$$element, ka, Ca + " ng-submitted"), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, o(this.$$controls, function(e) {
6546 $setUntouched: function() {
6547 o(this.$$controls, function(e) {
6551 $setSubmitted: function() {
6552 this.$$animate.addClass(this.$$element, "ng-submitted"), this.$submitted = !0, this.$$parentForm.$setSubmitted()
6556 set: function(e, t, n) {
6558 r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6560 unset: function(e, t, n) {
6562 r && (U(r, n), 0 === r.length && delete e[t])
6565 var Uo = function(e) {
6566 return ["$timeout", "$parse", function(t, n) {
6568 return "" === e ? n('this[""]').assign : n(e).assign || m
6572 restrict: e ? "EAC" : "E",
6573 require: ["form", "^^?form"],
6575 compile: function(n, i) {
6576 n.addClass(ka).addClass(wa);
6577 var o = i.name ? "name" : !(!e || !i.ngForm) && "ngForm";
6579 pre: function(e, n, i, a) {
6581 if (!("action" in i)) {
6582 var c = function(t) {
6583 e.$apply(function() {
6584 s.$commitViewValue(), s.$setSubmitted()
6585 }), t.preventDefault()
6587 n[0].addEventListener("submit", c), n.on("$destroy", function() {
6589 n[0].removeEventListener("submit", c)
6592 }(a[1] || s.$$parentForm).$addControl(s);
6593 var l = o ? r(s.$name) : m;
6594 o && (l(e, s), i.$observe(o, function(t) {
6595 s.$name !== t && (l(e, void 0), s.$$parentForm.$$renameControl(s, t), (l = r(s.$name))(e, s))
6596 })), n.on("$destroy", function() {
6597 s.$$parentForm.$removeControl(s), l(e, void 0), d(s, Fo)
6607 Bo = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6608 Wo = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6609 Yo = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,
6610 Go = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6611 Ko = /^(\d{4,})-(\d{2})-(\d{2})$/,
6612 Zo = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6613 Xo = /^(\d{4,})-W(\d\d)$/,
6614 Qo = /^(\d{4,})-(\d\d)$/,
6615 Jo = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6616 ea = "keydown wheel mousedown",
6618 o("date,datetime-local,month,time,week".split(","), function(e) {
6622 text: function(e, t, n, r, i, o) {
6623 br(e, t, n, r, i, o), vr(r)
6625 date: _r("date", Ko, yr(Ko, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6626 "datetime-local": _r("datetimelocal", Zo, yr(Zo, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6627 time: _r("time", Jo, yr(Jo, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6628 week: _r("week", Xo, function(e, t) {
6642 return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), c = t.getMilliseconds()), new Date(r, 0, l.getDate() + u, o, a, s, c)
6647 month: _r("month", Qo, yr(Qo, ["yyyy", "MM"]), "yyyy-MM"),
6648 number: function(e, t, n, r, i, o) {
6649 $r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6651 if ((_(n.min) || n.ngMin) && (r.$validators.min = function(e) {
6652 return r.$isEmpty(e) || y(a) || e >= a
6653 }, n.$observe("min", function(e) {
6654 a = Er(e), r.$validate()
6655 })), (_(n.max) || n.ngMax) && (r.$validators.max = function(e) {
6656 return r.$isEmpty(e) || y(s) || e <= s
6657 }, n.$observe("max", function(e) {
6658 s = Er(e), r.$validate()
6659 })), _(n.step) || n.ngStep) {
6661 r.$validators.step = function(e, t) {
6662 return r.$isEmpty(t) || y(c) || xr(t, a || 0, c)
6663 }, n.$observe("step", function(e) {
6664 c = Er(e), r.$validate()
6668 url: function(e, t, n, r, i, o) {
6669 br(e, t, n, r, i, o), vr(r), r.$$parserName = "url", r.$validators.url = function(e, t) {
6671 return r.$isEmpty(n) || Wo.test(n)
6674 email: function(e, t, n, r, i, o) {
6675 br(e, t, n, r, i, o), vr(r), r.$$parserName = "email", r.$validators.email = function(e, t) {
6677 return r.$isEmpty(n) || Yo.test(n)
6680 radio: function(e, t, n, r) {
6681 var i = !n.ngTrim || "false" !== ti(n.ngTrim);
6682 y(n.name) && t.attr("name", c());
6683 t.on("click", function(e) {
6685 t[0].checked && (o = n.value, i && (o = ti(o)), r.$setViewValue(o, e && e.type))
6686 }), r.$render = function() {
6688 i && (e = ti(e)), t[0].checked = e === r.$viewValue
6689 }, n.$observe("value", r.$render)
6691 range: function(e, t, n, r, i, o) {
6693 t.attr(e, n[e]), n.$observe(e, r)
6695 $r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6696 var s = r.$$hasNativeValidators && "range" === t[0].type,
6698 l = s ? 100 : void 0,
6705 r.$render = s && _(d.rangeUnderflow) && _(d.rangeOverflow) ? function() {
6706 m(), r.$setViewValue(t.val())
6707 } : m, f && (r.$validators.min = s ? function() {
6709 } : function(e, t) {
6710 return r.$isEmpty(t) || y(c) || t >= c
6711 }, a("min", function(e) {
6712 if (c = Er(e), !Qr(r.$modelValue))
6715 c > n && (n = c, t.val(n)), r.$setViewValue(n)
6716 } else r.$validate()
6717 })), h && (r.$validators.max = s ? function() {
6719 } : function(e, t) {
6720 return r.$isEmpty(t) || y(l) || t <= l
6721 }, a("max", function(e) {
6722 if (l = Er(e), !Qr(r.$modelValue))
6725 l < n && (t.val(l), n = l < c ? c : l), r.$setViewValue(n)
6726 } else r.$validate()
6727 })), p && (r.$validators.step = s ? function() {
6728 return !d.stepMismatch
6729 } : function(e, t) {
6730 return r.$isEmpty(t) || y(u) || xr(t, c || 0, u)
6731 }, a("step", function(e) {
6732 u = Er(e), Qr(r.$modelValue) || (s && r.$viewValue !== t.val() ? r.$setViewValue(t.val()) : r.$validate())
6735 checkbox: function(e, t, n, r, i, o, a, s) {
6736 var c = Tr(s, e, "ngTrueValue", n.ngTrueValue, !0),
6737 l = Tr(s, e, "ngFalseValue", n.ngFalseValue, !1);
6738 t.on("click", function(e) {
6739 r.$setViewValue(t[0].checked, e && e.type)
6740 }), r.$render = function() {
6741 t[0].checked = r.$viewValue
6742 }, r.$isEmpty = function(e) {
6744 }, r.$formatters.push(function(e) {
6746 }), r.$parsers.push(function(e) {
6756 ra = ["$browser", "$sniffer", "$filter", "$parse", function(e, t, n, r) {
6759 require: ["?ngModel"],
6761 pre: function(i, o, a, s) {
6762 s[0] && (na[Hr(a.type)] || na.text)(i, o, a, s[0], t, e, n, r)
6767 ia = /^(true|false|\d+)$/,
6769 function e(e, t, n) {
6770 var r = _(n) ? n : 9 === Fr ? "" : null;
6771 e.prop("value", r), t.$set("value", n)
6776 compile: function(t, n) {
6777 return ia.test(n.ngValue) ? function(t, n, r) {
6778 e(n, r, t.$eval(r.ngValue))
6779 } : function(t, n, r) {
6780 t.$watch(r.ngValue, function(t) {
6787 aa = ["$compile", function(e) {
6790 compile: function(t) {
6791 return e.$$addBindingClass(t),
6793 e.$$addBindingInfo(n, r.ngBind), n = n[0], t.$watch(r.ngBind, function(e) {
6794 n.textContent = ye(e)
6800 sa = ["$interpolate", "$compile", function(e, t) {
6802 compile: function(n) {
6803 return t.$$addBindingClass(n),
6805 var o = e(r.attr(i.$attr.ngBindTemplate));
6806 t.$$addBindingInfo(r, o.expressions), r = r[0], i.$observe("ngBindTemplate", function(e) {
6807 r.textContent = y(e) ? "" : e
6813 ca = ["$sce", "$parse", "$compile", function(e, t, n) {
6816 compile: function(r, i) {
6817 var o = t(i.ngBindHtml),
6818 a = t(i.ngBindHtml, function(t) {
6821 return n.$$addBindingClass(r),
6823 n.$$addBindingInfo(r, i.ngBindHtml), t.$watch(a, function() {
6825 r.html(e.getTrustedHtml(n) || "")
6834 link: function(e, t, n, r) {
6835 r.$viewChangeListeners.push(function() {
6844 compile: function(e, t) {
6845 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6861 o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(e) {
6862 var t = yt("ng-" + e);
6863 ma[t] = ["$parse", "$rootScope", function(n, r) {
6866 compile: function(i, o) {
6868 return function(t, n) {
6869 n.on(e, function(n) {
6870 var i = function() {
6875 ga[e] && r.$$phase ? t.$evalAsync(i) : t.$apply(i)
6882 var va = ["$animate", "$compile", function(e, t) {
6885 transclude: "element",
6890 link: function(n, r, i, o, a) {
6892 n.$watch(i.ngIf, function(n) {
6893 n ? c || a(function(n, o) {
6894 c = o, n[n.length++] = t.$$createComment("end ngIf", i.ngIf), s = {
6896 }, e.enter(n, r.parent(), r)
6897 }) : (l && (l.remove(), l = null), c && (c.$destroy(), c = null), s && (l = ve(s.clone), e.leave(l).done(function(e) {
6898 !1 !== e && (l = null)
6904 ba = ["$templateRequest", "$anchorScroll", "$animate", function(e, t, n) {
6909 transclude: "element",
6910 controller: Zr.noop,
6911 compile: function(r, i) {
6912 var o = i.ngInclude || i.src,
6915 return function(r, i, c, l, u) {
6918 f && (f.remove(), f = null), d && (d.$destroy(), d = null), h && (n.leave(h).done(function(e) {
6919 !1 !== e && (f = null)
6920 }), f = h, h = null)
6922 r.$watch(o, function(o) {
6923 var c = function(e) {
6924 !1 === e || !_(s) || s && !r.$eval(s) || t()
6927 o ? (e(o, !0).then(function(e) {
6928 if (!r.$$destroyed && f === p) {
6931 var s = u(t, function(e) {
6932 m(), n.enter(e, null, i).done(c)
6934 h = s, (d = t).$emit("$includeContentLoaded", o), r.$eval(a)
6937 r.$$destroyed || f === p && (m(), r.$emit("$includeContentError", o))
6938 }), r.$emit("$includeContentRequested", o)) : (m(), l.template = null)
6944 ya = ["$compile", function(t) {
6948 require: "ngInclude",
6949 link: function(n, r, i, o) {
6950 if (Yr.call(r[0]).match(/SVG/)) return r.empty(), void t(Se(o.template, e.document).childNodes)(n, function(e) {
6953 futureParentElement: r
6955 r.html(o.template), t(r.contents())(n)
6961 compile: function() {
6963 pre: function(e, t, n) {
6974 link: function(e, t, n, r) {
6975 var i = n.ngList || ", ",
6976 a = "false" !== n.ngTrim,
6978 r.$parsers.push(function(e) {
6981 return e && o(e.split(s), function(e) {
6982 e && t.push(a ? ti(e) : e)
6985 }), r.$formatters.push(function(e) {
6986 if (Jr(e)) return e.join(i)
6987 }), r.$isEmpty = function(e) {
6988 return !e || !e.length
6998 Ar.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], Ar.prototype = {
6999 $$initGetterSetters: function() {
7000 if (this.$options.getOption("getterSetter")) {
7001 var e = this.$$parse(this.$$attr.ngModel + "()"),
7002 t = this.$$parse(this.$$attr.ngModel + "($$$p)");
7003 this.$$ngModelGet = function(t) {
7004 var n = this.$$parsedNgModel(t);
7005 return T(n) && (n = e(t)), n
7006 }, this.$$ngModelSet = function(e, n) {
7007 T(this.$$parsedNgModel(e)) ? t(e, {
7009 }) : this.$$parsedNgModelAssign(e, n)
7011 } else if (!this.$$parsedNgModel.assign) throw xa("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, te(this.$$element))
7014 $isEmpty: function(e) {
7015 return y(e) || "" === e || null === e || e !== e
7017 $$updateEmptyClasses: function(e) {
7018 this.$isEmpty(e) ? (this.$$animate.removeClass(this.$$element, "ng-not-empty"), this.$$animate.addClass(this.$$element, "ng-empty")) : (this.$$animate.removeClass(this.$$element, "ng-empty"), this.$$animate.addClass(this.$$element, "ng-not-empty"))
7020 $setPristine: function() {
7021 this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, ka)
7023 $setDirty: function() {
7024 this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, ka), this.$$animate.addClass(this.$$element, Ca), this.$$parentForm.$setDirty()
7026 $setUntouched: function() {
7027 this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched")
7029 $setTouched: function() {
7030 this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched")
7032 $rollbackViewValue: function() {
7033 this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
7035 $validate: function() {
7036 if (!Qr(this.$modelValue)) {
7037 var e = this.$$lastCommittedViewValue,
7038 t = this.$$rawModelValue,
7040 r = this.$modelValue,
7041 i = this.$options.getOption("allowInvalid"),
7043 this.$$runValidators(t, e, function(e) {
7044 i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7048 $$runValidators: function(e, t, n) {
7050 a === s.$$currentValidationRunId && s.$setValidity(e, t)
7054 a === s.$$currentValidationRunId && n(e)
7056 var a = ++this.$$currentValidationRunId,
7059 var e = s.$$parserName || "parse";
7060 return y(s.$$parserValid) ? (r(e, null), !0) : (s.$$parserValid || (o(s.$validators, function(e, t) {
7062 }), o(s.$asyncValidators, function(e, t) {
7064 })), r(e, s.$$parserValid), s.$$parserValid)
7065 }() ? i(!1): function() {
7067 return o(s.$validators, function(i, o) {
7068 var a = Boolean(i(e, t));
7070 }), !!n || (o(s.$asyncValidators, function(e, t) {
7076 o(s.$asyncValidators, function(i, o) {
7078 if (!R(s)) throw xa("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
7079 r(o, void 0), n.push(s.then(function() {
7084 }), n.length ? s.$$q.all(n).then(function() {
7089 $commitViewValue: function() {
7090 var e = this.$viewValue;
7091 this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7093 $$parseAndValidate: function() {
7095 n.$modelValue !== i && n.$$writeModelToScope()
7097 var t = this.$$lastCommittedViewValue,
7099 if (this.$$parserValid = !y(t) || void 0, this.$$parserValid)
7100 for (var r = 0; r < this.$parsers.length; r++)
7101 if (t = this.$parsers[r](t), y(t)) {
7102 this.$$parserValid = !1;
7105 Qr(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7106 var i = this.$modelValue,
7107 o = this.$options.getOption("allowInvalid");
7108 this.$$rawModelValue = t, o && (this.$modelValue = t, e()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(r) {
7109 o || (n.$modelValue = r ? t : void 0, e())
7112 $$writeModelToScope: function() {
7113 this.$$ngModelSet(this.$$scope, this.$modelValue), o(this.$viewChangeListeners, function(e) {
7117 this.$$exceptionHandler(e)
7121 $setViewValue: function(e, t) {
7122 this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7124 $$debounceViewValueCommit: function(e) {
7125 var t = this.$options.getOption("debounce");
7126 k(t[e]) ? t = t[e] : k(t.default) && (t = t.default), this.$$timeout.cancel(this.$$pendingDebounce);
7128 t > 0 ? this.$$pendingDebounce = this.$$timeout(function() {
7129 n.$commitViewValue()
7130 }, t) : this.$$scope.$root.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7131 n.$commitViewValue()
7134 $overrideModelOptions: function(e) {
7135 this.$options = this.$options.createChild(e)
7139 set: function(e, t) {
7142 unset: function(e, t) {
7146 var Ta, Ma = ["$rootScope", function(e) {
7149 require: ["ngModel", "^?form", "^?ngModelOptions"],
7152 compile: function(t) {
7153 return t.addClass(ka).addClass("ng-untouched").addClass(wa), {
7154 pre: function(e, t, n, r) {
7156 o = r[1] || i.$$parentForm,
7158 a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7159 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7160 }), e.$on("$destroy", function() {
7161 i.$$parentForm.$removeControl(i)
7164 post: function(t, n, r, i) {
7169 a.$options.getOption("updateOn") && n.on(a.$options.getOption("updateOn"), function(e) {
7170 a.$$debounceViewValueCommit(e && e.type)
7171 }), n.on("blur", function() {
7172 a.$touched || (e.$$phase ? t.$evalAsync(o) : t.$apply(o))
7179 Aa = /(\s+|^)default(\s+|$)/;
7181 getOption: function(e) {
7182 return this.$$options[e]
7184 createChild: function(e) {
7186 return e = d({}, e), o(e, function(n, r) {
7187 "$inherit" === n ? "*" === r ? t = !0 : (e[r] = this.$$options[r], "updateOn" === r && (e.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === r && (e.updateOnDefault = !1, e[r] = ti(n.replace(Aa, function() {
7188 return e.updateOnDefault = !0, " "
7190 }, this), t && (delete e["*"], Dr(e, this.$$options)), Dr(e, Ta.$$options), new Or(e)
7194 updateOnDefault: !0,
7200 var Sa = function() {
7202 this.$$attrs = e, this.$$scope = t
7204 return e.$inject = ["$attrs", "$scope"], e.prototype = {
7205 $onInit: function() {
7206 var e = this.parentCtrl ? this.parentCtrl.$options : Ta,
7207 t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7208 this.$options = e.createChild(t)
7214 parentCtrl: "?^^ngModelOptions"
7216 bindToController: !0,
7224 Da = r("ngOptions"),
7225 Na = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
7226 Ia = ["$compile", "$document", "$parse", function(t, n, r) {
7227 function a(e, t, n) {
7228 function o(e, t, n, r, i) {
7229 this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7234 if (!l && i(e)) t = e;
7237 for (var n in e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n)
7241 var s = e.match(Na);
7242 if (!s) throw Da("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, te(t));
7243 var c = s[5] || s[7],
7245 u = / as /.test(s[0]) && s[1],
7247 f = r(s[2] ? s[1] : c),
7250 m = d ? function(e, t) {
7255 g = function(e, t) {
7256 return m(e, w(e, t))
7258 v = r(s[2] || s[1]),
7263 w = l ? function(e, t) {
7264 return $[l] = t, $[c] = e, $
7271 getWatchables: r(_, function(e) {
7272 for (var t = [], r = a(e = e || []), i = r.length, o = 0; o < i; o++) {
7273 var c = e === r ? o : r[o],
7277 if (t.push(d), s[2] || s[1]) {
7288 getOptions: function() {
7289 for (var e = [], t = {}, r = _(n) || [], i = a(r), s = i.length, c = 0; c < s; c++) {
7290 var l = r === i ? c : i[c],
7294 $ = new o(p, f, v(n, u), b(n, u), y(n, u));
7300 getOptionFromViewValue: function(e) {
7303 getViewValueFromOption: function(e) {
7304 return d ? V(e.viewValue) : e.viewValue
7310 var s = e.document.createElement("option"),
7311 c = e.document.createElement("optgroup");
7315 require: ["select", "ngModel"],
7317 pre: function(e, t, n, r) {
7318 r[0].registerOption = m
7320 post: function(e, r, i, l) {
7322 var n = s.cloneNode(!1);
7323 t.appendChild(n), f(e, n)
7327 var t = $.getOptionFromViewValue(e),
7329 return n && !n.selected && (n.selected = !0), t
7333 e.element = t, t.disabled = e.disabled, e.label !== t.label && (t.label = e.label, t.textContent = e.label), t.value = e.selectValue
7335 for (var h = l[0], p = l[1], m = i.multiple, g = 0, v = r.children(), b = v.length; g < b; g++)
7336 if ("" === v[g].value) {
7337 h.hasEmptyOption = !0, h.emptyOption = v.eq(g);
7341 var y = !!h.emptyOption;
7342 qr(s.cloneNode(!1)).val("?");
7343 var $, w = a(i.ngOptions, r, e),
7344 E = n[0].createDocumentFragment();
7345 h.generateUnknownOptionValue = function(e) {
7347 }, m ? (h.writeValue = function(e) {
7349 var t = e && e.map(d) || [];
7350 $.items.forEach(function(e) {
7351 e.element.selected && !q(t, e) && (e.element.selected = !1)
7354 }, h.readValue = function() {
7356 return o(r.val() || [], function(t) {
7357 var n = $.selectValueMap[t];
7358 n && !n.disabled && e.push($.getViewValueFromOption(n))
7360 }, w.trackBy && e.$watchCollection(function() {
7361 if (Jr(p.$viewValue)) return p.$viewValue.map(function(e) {
7362 return w.getTrackByValue(e)
7366 })) : (h.writeValue = function(e) {
7368 var t = r[0].options[r[0].selectedIndex],
7369 n = $.getOptionFromViewValue(e);
7370 t && t.removeAttribute("selected"), n ? (r[0].value !== n.selectValue && (h.removeUnknownOption(), r[0].value = n.selectValue, n.element.selected = !0), n.element.setAttribute("selected", "selected")) : h.selectUnknownOrEmptyOption(e)
7372 }, h.readValue = function() {
7373 var e = $.selectValueMap[r.val()];
7374 return e && !e.disabled ? (h.unselectEmptyOption(), h.removeUnknownOption(), $.getViewValueFromOption(e)) : null
7375 }, w.trackBy && e.$watch(function() {
7376 return w.getTrackByValue(p.$viewValue)
7379 })), y && (t(h.emptyOption)(e), r.prepend(h.emptyOption), h.emptyOption[0].nodeType === fi ? (h.hasEmptyOption = !1, h.registerOption = function(e, t) {
7380 "" === t.val() && (h.hasEmptyOption = !0, h.emptyOption = t, h.emptyOption.removeClass("ng-scope"), p.$render(), t.on("$destroy", function() {
7381 var e = h.$isEmptyOptionSelected();
7382 h.hasEmptyOption = !1, h.emptyOption = void 0, e && p.$render()
7384 }) : h.emptyOption.removeClass("ng-scope")), e.$watchCollection(w.getWatchables, function() {
7385 var e = $ && h.readValue();
7387 for (var t = $.items.length - 1; t >= 0; t--) {
7389 Ye(_(n.group) ? n.element.parentNode : n.element)
7392 if (($ = w.getOptions()).items.forEach(function(e) {
7394 _(e.group) ? ((t = i[e.group]) || (t = c.cloneNode(!1), E.appendChild(t), t.label = null === e.group ? "null" : e.group, i[e.group] = t), u(e, t)) : u(e, E)
7395 }), r[0].appendChild(E), p.$render(), !p.$isEmpty(e)) {
7396 var o = h.readValue();
7397 (w.trackBy || m ? B(e, o) : e === o) || (p.$setViewValue(o), p.$render())
7404 Ra = ["$locale", "$interpolate", "$log", function(e, t, n) {
7406 i = /^when(Minus)?(.+)$/;
7408 link: function(a, s, c) {
7413 f = c.$attr.when && s.attr(c.$attr.when),
7415 p = a.$eval(f) || {},
7417 v = t.startSymbol(),
7419 _ = v + d + "-" + h + b,
7421 o(c, function(e, t) {
7424 var r = (n[1] ? "-" : "") + Hr(n[2]);
7425 p[r] = s.attr(c.$attr[t])
7427 }), o(p, function(e, n) {
7428 g[n] = t(e.replace(r, _))
7429 }), a.$watch(d, function(t) {
7430 var r = parseFloat(t),
7432 if (i || r in p || (r = e.pluralCat(r - h)), !(r === u || i && Qr(u))) {
7435 y(o) ? (null != t && n.debug("ngPluralize: no rule defined for '" + r + "' in " + f), $ = m, l()) : $ = a.$watch(o, l), u = r
7441 Pa = ["$parse", "$animate", "$compile", function(e, t, n) {
7442 var a = r("ngRepeat"),
7443 s = function(e, t, n, r, i, o, a) {
7444 e[n] = r, i && (e[i] = o), e.$index = t, e.$first = 0 === t, e.$last = t === a - 1, e.$middle = !(e.$first || e.$last), e.$odd = !(e.$even = 0 == (1 & t))
7450 return e.clone[e.clone.length - 1]
7455 transclude: "element",
7459 compile: function(r, u) {
7461 f = n.$$createComment("end ngRepeat", d),
7462 h = d.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7463 if (!h) throw a("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", d);
7468 if (!(h = p.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/))) throw a("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", p);
7469 var b = h[3] || h[1],
7471 if (g && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(g) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(g))) throw a("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", g);
7472 var _, $, w, E, k = {
7475 return v ? _ = e(v) : (w = function(e, t) {
7477 }, E = function(e) {
7480 function(e, n, r, u, h) {
7481 _ && ($ = function(t, n, r) {
7482 return y && (k[y] = t), k[b] = n, k.$index = r, _(e, k)
7485 e.$watchCollection(m, function(r) {
7486 var u, m, v, _, k, C, x, T, M, A, S, O, D = n[0],
7488 if (g && (e[g] = r), i(r)) M = r, T = $ || w;
7491 for (var I in r) jr.call(r, I) && "$" !== I.charAt(0) && M.push(I)
7493 for (_ = M.length, S = new Array(_), u = 0; u < _; u++)
7494 if (k = r === M ? u : M[u], C = r[k], x = T(k, C, u), p[x]) A = p[x], delete p[x], N[x] = A, S[u] = A;
7496 if (N[x]) throw o(S, function(e) {
7497 e && e.scope && (p[e.id] = e)
7498 }), a("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", d, x, C);
7506 if (A = p[R], O = ve(A.clone), t.leave(O), O[0].parentNode)
7507 for (u = 0, m = O.length; u < m; u++) O[u].$$NG_REMOVED = !0;
7510 for (u = 0; u < _; u++)
7511 if (k = r === M ? u : M[u], C = r[k], (A = S[u]).scope) {
7515 } while (v && v.$$NG_REMOVED);
7516 c(A) !== v && t.move(ve(A.clone), null, D), D = l(A), s(A.scope, u, b, C, y, k, _)
7517 } else h(function(e, n) {
7519 var r = f.cloneNode(!1);
7520 e[e.length++] = r, t.enter(e, null, D), D = r, A.clone = e, N[A.id] = A, s(A.scope, u, b, C, y, k, _)
7528 ja = ["$animate", function(e) {
7532 link: function(t, n, r) {
7533 t.$watch(r.ngShow, function(t) {
7534 e[t ? "removeClass" : "addClass"](n, "ng-hide", {
7535 tempClasses: "ng-hide-animate"
7541 Ha = ["$animate", function(e) {
7545 link: function(t, n, r) {
7546 t.$watch(r.ngHide, function(t) {
7547 e[t ? "addClass" : "removeClass"](n, "ng-hide", {
7548 tempClasses: "ng-hide-animate"
7554 La = fr(function(e, t, n) {
7555 e.$watch(n.ngStyle, function(e, n) {
7556 n && e !== n && o(n, function(e, n) {
7561 Fa = ["$animate", "$compile", function(e, t) {
7563 require: "ngSwitch",
7564 controller: ["$scope", function() {
7567 link: function(n, r, i, a) {
7568 var s = i.ngSwitch || i.on,
7573 f = function(e, t) {
7574 return function(n) {
7575 !1 !== n && e.splice(t, 1)
7578 n.$watch(s, function(n) {
7579 for (var r, i; u.length;) e.cancel(u.pop());
7580 for (r = 0, i = d.length; r < i; ++r) {
7581 var s = ve(l[r].clone);
7582 d[r].$destroy(), (u[r] = e.leave(s)).done(f(u, r))
7584 l.length = 0, d.length = 0, (c = a.cases["!" + n] || a.cases["?"]) && o(c, function(n) {
7585 n.transclude(function(r, i) {
7588 r[r.length++] = t.$$createComment("end ngSwitchWhen");
7592 l.push(a), e.enter(r, o.parent(), o)
7600 transclude: "element",
7602 require: "^ngSwitch",
7604 link: function(e, t, n, r, i) {
7605 o(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7606 return n[t - 1] !== e
7608 r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7616 transclude: "element",
7618 require: "^ngSwitch",
7620 link: function(e, t, n, r, i) {
7621 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7627 Va = r("ngTransclude"),
7628 za = ["$compile", function(e) {
7632 compile: function(t) {
7633 var n = e(t.contents());
7635 function(e, t, r, i, o) {
7643 for (var t = 0, n = e.length; t < n; t++) {
7645 if (r.nodeType !== di || r.nodeValue.trim()) return !0
7648 if (!o) throw Va("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", te(t));
7649 r.ngTransclude === r.$attr.ngTransclude && (r.ngTransclude = "");
7650 var c = r.ngTransclude || r.ngTranscludeSlot;
7652 e.length && s(e) ? t.append(e) : (a(), n.$destroy())
7653 }, null, c), c && !o.isSlotFilled(c) && a()
7658 Ba = ["$templateCache", function(e) {
7662 compile: function(t, n) {
7663 if ("text/ng-template" === n.type) {
7675 Ya = ["$element", "$scope", function(t, n) {
7677 s || (s = !0, n.$$postDigest(function() {
7678 s = !1, o.ngModelCtrl.$render()
7683 c || (c = !0, n.$$postDigest(function() {
7684 n.$$destroyed || (c = !1, o.ngModelCtrl.$setViewValue(o.readValue()), e && o.ngModelCtrl.$render())
7689 o.selectValueMap = {}, o.ngModelCtrl = Wa, o.multiple = !1, o.unknownOption = qr(e.document.createElement("option")), o.hasEmptyOption = !1, o.emptyOption = void 0, o.renderUnknownOption = function(e) {
7690 var n = o.generateUnknownOptionValue(e);
7691 o.unknownOption.val(n), t.prepend(o.unknownOption), Nr(o.unknownOption, !0), t.val(n)
7692 }, o.updateUnknownOption = function(e) {
7693 var n = o.generateUnknownOptionValue(e);
7694 o.unknownOption.val(n), Nr(o.unknownOption, !0), t.val(n)
7695 }, o.generateUnknownOptionValue = function(e) {
7696 return "? " + nt(e) + " ?"
7697 }, o.removeUnknownOption = function() {
7698 o.unknownOption.parent() && o.unknownOption.remove()
7699 }, o.selectEmptyOption = function() {
7700 o.emptyOption && (t.val(""), Nr(o.emptyOption, !0))
7701 }, o.unselectEmptyOption = function() {
7702 o.hasEmptyOption && Nr(o.emptyOption, !1)
7703 }, n.$on("$destroy", function() {
7704 o.renderUnknownOption = m
7705 }), o.readValue = function() {
7707 n = e in o.selectValueMap ? o.selectValueMap[e] : e;
7708 return o.hasOption(n) ? n : null
7709 }, o.writeValue = function(e) {
7710 var n = t[0].options[t[0].selectedIndex];
7711 if (n && Nr(qr(n), !1), o.hasOption(e)) {
7712 o.removeUnknownOption();
7714 t.val(r in o.selectValueMap ? r : e);
7715 var i = t[0].options[t[0].selectedIndex];
7717 } else o.selectUnknownOrEmptyOption(e)
7718 }, o.addOption = function(e, t) {
7719 if (t[0].nodeType !== fi) {
7720 me(e, '"option value"'), "" === e && (o.hasEmptyOption = !0, o.emptyOption = t);
7721 var n = a.get(e) || 0;
7722 a.set(e, n + 1), r()
7724 }, o.removeOption = function(e) {
7726 t && (1 === t ? (a.delete(e), "" === e && (o.hasEmptyOption = !1, o.emptyOption = void 0)) : a.set(e, t - 1))
7727 }, o.hasOption = function(e) {
7729 }, o.$hasEmptyOption = function() {
7730 return o.hasEmptyOption
7731 }, o.$isUnknownOptionSelected = function() {
7732 return t[0].options[0] === o.unknownOption[0]
7733 }, o.$isEmptyOptionSelected = function() {
7734 return o.hasEmptyOption && t[0].options[t[0].selectedIndex] === o.emptyOption[0]
7735 }, o.selectUnknownOrEmptyOption = function(e) {
7736 null == e && o.emptyOption ? (o.removeUnknownOption(), o.selectEmptyOption()) : o.unknownOption.parent().length ? o.updateUnknownOption(e) : o.renderUnknownOption(e)
7740 o.registerOption = function(e, t, n, a, s) {
7741 if (n.$attr.ngValue) {
7743 n.$observe("value", function(e) {
7744 var n, r = t.prop("selected");
7745 _(l) && (o.removeOption(c), delete o.selectValueMap[l], n = !0), l = nt(e), c = e, o.selectValueMap[l] = e, o.addOption(e, t), t.attr("value", l), n && r && i()
7747 } else a ? n.$observe("value", function(e) {
7749 var n, r = t.prop("selected");
7750 _(c) && (o.removeOption(c), n = !0), c = e, o.addOption(e, t), n && r && i()
7751 }) : s ? e.$watch(s, function(e, r) {
7753 var a = t.prop("selected");
7754 r !== e && o.removeOption(r), o.addOption(e, t), r && a && i()
7755 }) : o.addOption(n.value, t);
7756 n.$observe("disabled", function(e) {
7757 ("true" === e || e && t.prop("selected")) && (o.multiple ? i(!0) : (o.ngModelCtrl.$setViewValue(null), o.ngModelCtrl.$render()))
7758 }), t.on("$destroy", function() {
7759 var e = o.readValue(),
7761 o.removeOption(t), r(), (o.multiple && e && -1 !== e.indexOf(t) || e === t) && i(!0)
7768 require: ["select", "?ngModel"],
7772 pre: function(e, t, n, r) {
7776 if (i.ngModelCtrl = a, t.on("change", function() {
7777 i.removeUnknownOption(), e.$apply(function() {
7778 a.$setViewValue(i.readValue())
7781 i.multiple = !0, i.readValue = function() {
7783 return o(t.find("option"), function(t) {
7784 if (t.selected && !t.disabled) {
7786 e.push(n in i.selectValueMap ? i.selectValueMap[n] : n)
7789 }, i.writeValue = function(e) {
7790 o(t.find("option"), function(t) {
7791 var n = !!e && (q(e, t.value) || q(e, i.selectValueMap[t.value]));
7792 n !== t.selected && Nr(qr(t), n)
7796 e.$watch(function() {
7797 c !== a.$viewValue || B(s, a.$viewValue) || (s = $e(a.$viewValue), a.$render()), c = a.$viewValue
7798 }), a.$isEmpty = function(e) {
7799 return !e || 0 === e.length
7802 } else i.registerOption = m
7804 post: function(e, t, n, r) {
7808 i.$render = function() {
7809 o.writeValue(i.$viewValue)
7816 Ka = ["$interpolate", function(e) {
7820 compile: function(t, n) {
7822 return _(n.ngValue) || (_(n.value) ? r = e(n.value, !0) : (i = e(t.text(), !0)) || n.$set("value", t.text())),
7825 a = o.data("$selectController") || o.parent().data("$selectController");
7826 a && a.registerOption(e, t, n, r, i)
7834 require: "?ngModel",
7835 link: function(e, t, n, r) {
7836 r && (n.required = !0, r.$validators.required = function(e, t) {
7837 return !n.required || !r.$isEmpty(t)
7838 }, n.$observe("required", function() {
7847 require: "?ngModel",
7848 link: function(e, t, n, i) {
7850 var o, a = n.ngPattern || n.pattern;
7851 n.$observe("pattern", function(e) {
7852 if (E(e) && e.length > 0 && (e = new RegExp("^" + e + "$")), e && !e.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", a, e, te(t));
7853 o = e || void 0, i.$validate()
7854 }), i.$validators.pattern = function(e, t) {
7855 return i.$isEmpty(t) || y(o) || o.test(t)
7864 require: "?ngModel",
7865 link: function(e, t, n, r) {
7868 n.$observe("maxlength", function(e) {
7870 i = Qr(t) ? -1 : t, r.$validate()
7871 }), r.$validators.maxlength = function(e, t) {
7872 return i < 0 || r.$isEmpty(t) || t.length <= i
7881 require: "?ngModel",
7882 link: function(e, t, n, r) {
7885 n.$observe("minlength", function(e) {
7886 i = h(e) || 0, r.$validate()
7887 }), r.$validators.minlength = function(e, t) {
7888 return r.$isEmpty(t) || t.length >= i
7894 e.angular.bootstrap ? e.console && console.log("WARNING: Tried to load angular more than once.") : (! function() {
7898 (Ur = y(n) ? e.jQuery : n ? e[n] : void 0) && Ur.fn.on ? (qr = Ur, d(Ur.fn, {
7900 isolateScope: Mi.isolateScope,
7901 controller: Mi.controller,
7902 injector: Mi.injector,
7903 inheritedData: Mi.inheritedData
7904 }), t = Ur.cleanData, Ur.cleanData = function(e) {
7905 for (var n, r, i = 0; null != (r = e[i]); i++)(n = Ur._data(r, "events")) && n.$destroy && Ur(r).triggerHandler("$destroy");
7907 }) : qr = Ne, Zr.element = qr, li = !0
7911 errorHandlingConfig: t,
7941 reloadWithDebugInfo: ue,
7944 $$encodeUriSegment: oe,
7945 $$encodeUriQuery: ae,
7947 }), (Vr = _e(e))("ng", ["ngLocale"], ["$provide", function(e) {
7950 }), e.provider("$compile", vt).directive({
7978 ngSwitchDefault: Ua,
7996 }).directive(Lo).directive(ma), e.provider({
8002 $$AnimateRunner: Yi,
8003 $$animateAsyncRun: Wi,
8008 $$isDocumentHidden: Ct,
8009 $exceptionHandler: xt,
8015 $httpParamSerializer: Mt,
8016 $httpParamSerializerJQLike: At,
8019 $jsonpCallbacks: lo,
8030 $templateRequest: Pn,
8040 angularVersion: "1.6.6"
8042 }(Zr), Zr.module("ngLocale", [], ["$provide", function(e) {
8044 var t = (e += "").indexOf(".");
8045 return -1 == t ? 0 : e.length - t - 1
8050 void 0 === r && (r = Math.min(t(e), 3));
8051 var i = Math.pow(10, r);
8065 e.value("$locale", {
8067 AMPMS: ["AM", "PM"],
8068 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8069 ERANAMES: ["Before Christ", "Anno Domini"],
8072 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8073 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8074 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8075 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8076 WEEKENDRANGE: [5, 6],
8077 fullDate: "EEEE, MMMM d, y",
8078 longDate: "MMMM d, y",
8079 medium: "MMM d, y h:mm:ss a",
8080 mediumDate: "MMM d, y",
8081 mediumTime: "h:mm:ss a",
8082 short: "M/d/yy h:mm a",
8083 shortDate: "M/d/yy",
8114 pluralCat: function(e, t) {
8117 return 1 == i && 0 == o.v ? r.ONE : r.OTHER
8120 }]), qr(function() {
8123 }(window), !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),
8125 "object" == typeof exports && "undefined" != typeof module ? t(exports, require("angular")) : "function" == typeof define && define.amd ? define(["exports", "angular"], t) : t(e["@uirouter/angularjs"] = {}, e.angular)
8126 }(this, function(e, t) {
8131 return n.length >= r ? e.apply(null, n) : function() {
8132 return t(n.concat([].slice.apply(arguments)))
8135 var n = [].slice.apply(arguments, [1]),
8144 for (var n = t, r = e[t].apply(this, arguments); n--;) r = e[n].call(this, r);
8150 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8151 return r.apply(null, [].slice.call(arguments).reverse())
8156 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
8157 return e.apply(null, n) && t.apply(null, n)
8163 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
8164 return e.apply(null, n) || t.apply(null, n)
8169 return function(n) {
8170 return n[e].apply(n, t)
8175 return function(t) {
8176 for (var n = 0; n < e.length; n++)
8177 if (e[n][0](t)) return e[n][1](t)
8182 if (et(e) && e.length) {
8183 var t = e.slice(0, -1),
8185 return !(t.filter(Pe(Qe)).length || n.filter(Pe(Ze)).length)
8196 function f(e, t, n, r, i) {
8197 void 0 === i && (i = !1);
8198 var o = function(t) {
8199 return e()[t].bind(n())
8203 return t[e] = o(e), t[e].apply(null, arguments)
8206 return (r = r || Object.keys(e())).reduce(function(e, t) {
8207 return e[t] = i ? a(t) : o(t), e
8212 return -1 !== e.indexOf(t)
8216 var n = e.indexOf(t);
8217 return n >= 0 && e.splice(n, 1), e
8225 for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
8226 var r = t.concat({}).reverse(),
8227 i = ft.apply(null, r);
8228 return ft({}, i, b(e || {}, Object.keys(i)))
8233 for (var r in e.path) {
8234 if (e.path[r] !== t.path[r]) break;
8242 for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
8247 return Object.keys(e).filter(Pe(mt(t))).reduce(function(t, n) {
8248 return t[n] = e[n], t
8259 i = n ? function(e) {
8261 } : function(e, t) {
8264 return dt(e, function(e, n) {
8271 return dt(e, function(e, r) {
8272 n || t(e, r) && (n = e)
8277 var n = et(e) ? [] : {};
8278 return dt(e, function(e, r) {
8279 return n[r] = t(e, r)
8288 return void 0 === t && (t = "assert failure"),
8291 if (!r) throw new Error(Ze(t) ? t(n) : t);
8297 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8298 if (0 === e.length) return [];
8299 var n, r = e.reduce(function(e, t) {
8300 return Math.min(t.length, e)
8301 }, 9007199254740991),
8303 for (n = 0; n < r; n++) switch (e.length) {
8308 i.push([e[0][n], e[1][n]]);
8311 i.push([e[0][n], e[1][n], e[2][n]]);
8314 i.push([e[0][n], e[1][n], e[2][n], e[3][n]]);
8317 i.push(e.map(function(e) {
8326 if (et(t) && (n = t[0], r = t[1]), !Qe(n)) throw new Error("invalid parameters to applyPairs");
8331 return e.length && e[e.length - 1] || void 0
8335 return t && Object.keys(t).forEach(function(e) {
8337 }), t || (t = {}), ft(t, e)
8341 for (var t = 1; t < arguments.length; t++) {
8342 var n = arguments[t];
8344 for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
8350 if (e === t) return !0;
8351 if (null === e || null === t) return !1;
8352 if (e !== e && t !== t) return !0;
8354 if (n !== typeof t || "object" !== n) return !1;
8356 if (je(et)(r)) return D(e, t);
8357 if (je(tt)(r)) return e.getTime() === t.getTime();
8358 if (je(nt)(r)) return e.toString() === t.toString();
8359 if (je(Ze)(r)) return !0;
8360 if ([Ze, et, tt, nt].map(He).reduce(function(e, t) {
8365 if (!O(e[i], t[i])) return !1;
8369 if (!o[i]) return !1;
8374 return e.length === t.length && x(e, t).reduce(function(e, t) {
8375 return e && O(t[0], t[1])
8380 if (!e) return "ui-view (defunct)";
8381 var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
8382 return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
8386 return Xe(t) ? e.Category[t] : e.Category[e.Category[t]]
8390 var n = Qe(t) ? [t] : t;
8391 return !!(Ze(n) ? n : function(e) {
8392 for (var t = n, r = 0; r < t.length; r++) {
8393 var i = new Ue(t[r]);
8394 if (i && i.matches(e.name) || !i && t[r] === e.name) return !0
8400 function P(e, t, n) {
8401 function r(e, r, a) {
8402 void 0 === a && (a = {});
8403 var s = new Gt(t, n, r, e, o, a);
8404 return i.push(s), s.deregister.bind(s)
8406 var i = (e._registeredHooks = e._registeredHooks || {})[n.name] = [],
8408 return e[n.name] = r, r
8412 return void 0 === e && (e = !1),
8415 i = (t.node.state.path.length - n.node.state.path.length) * r;
8416 return 0 !== i ? i : n.hook.priority - t.hook.priority
8422 return et(e) ? e : Ye(e) ? [e] : []
8430 return "auto" === t ? e[0] : e;
8437 return function(i) {
8438 if (et(i) && 0 === i.length) return i;
8440 return !0 === t ? 0 === $(o, function(e) {
8447 return function(t, r) {
8450 if (i.length !== o.length) return !1;
8451 for (var a = 0; a < i.length; a++)
8452 if (!e(i[a], o[a])) return !1;
8457 ["encode", "decode", "equals", "$normalize"].forEach(function(t) {
8458 var n = e[t].bind(e),
8459 r = "equals" === t ? o : i;
8466 is: i(e.is.bind(e), !0),
8475 return e = Qt(e) && {
8477 } || e, t.__cacheable = !0, ft(e, {
8478 $$fn: l(e.value) ? e.value : t
8482 function F(t, n, r, i, o) {
8483 if (t.type && n && "string" !== n.name) throw new Error("Param '" + i + "' has two type configurations.");
8484 if (t.type && n && "string" === n.name && o.type(t.type)) return o.type(t.type);
8487 var a = r === e.DefType.CONFIG ? "any" : r === e.DefType.PATH ? "path" : r === e.DefType.SEARCH ? "query" : "string";
8490 return t.type instanceof Zt ? t.type : o.type(t.type)
8493 function q(e, t, n) {
8495 if (!t || !1 === r) return !1;
8496 if (!Ye(r) || null == r) return n;
8497 if (!0 === r || Qe(r)) return r;
8498 throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
8501 function U(e, t, n, r) {
8504 to: n || t ? void 0 : ""
8507 to: n || t ? void 0 : ""
8509 return i = et(e.replace) ? e.replace : [], Qe(r) && i.push({
8512 }), o = E(i, Ne("from")), $(a, function(e) {
8513 return -1 === o.indexOf(e.from)
8518 return t.length <= e ? t : t.substr(0, e - 3) + "..."
8522 for (; t.length < e;) t += " ";
8527 return e.replace(/^([A-Z])/, function(e) {
8528 return e.toLowerCase()
8529 }).replace(/([A-Z])/g, function(e) {
8530 return "-" + e.toLowerCase()
8536 n = t.match(/^(function [^ ]+\([^)]*\))/),
8539 return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
8543 var t = et(e) ? e.slice(-1)[0] : e;
8544 return t && t.toString() || "undefined"
8550 if (-1 !== n.indexOf(e)) return "[circular ref]";
8556 return JSON.stringify(e, function(e, n) {
8558 }).replace(/\\"/g, '"')
8562 var t = new RegExp("(" + e + ")", "g");
8563 return function(e) {
8564 return e.split(t).filter(u)
8569 return Qe(M(e)) && Qe(t) ? e.slice(0, -1).concat(M(e) + t) : k(e, t)
8577 return e.self.$$state = function() {
8583 return e.parent && e.parent.data && (e.data = e.self.data = pt(e.parent.data, e.data)), e.data
8587 return e.parent ? e.parent.path.concat(e) : [e]
8591 var t = e.parent ? ft({}, e.parent.includes) : {};
8592 return t[e.name] = !0, t
8596 var t = function(e) {
8597 var t = at.$injector;
8598 return e.$inject || t && t.annotate(e, t.strictDi) || "deferred"
8601 return e.provide || e.token
8604 [Ne("resolveFn"), function(e) {
8605 return new rn(n(e), e.resolveFn, e.deps, e.policy)
8607 [Ne("useFactory"), function(e) {
8608 return new rn(n(e), e.useFactory, e.deps || e.dependencies, e.policy)
8610 [Ne("useClass"), function(e) {
8611 return new rn(n(e), function() {
8612 return new e.useClass
8615 [Ne("useValue"), function(e) {
8616 return new rn(n(e), function() {
8618 }, [], e.policy, e.useValue)
8620 [Ne("useExisting"), function(e) {
8621 return new rn(n(e), u, [e.useExisting], e.policy)
8625 [i(Ne("val"), Qe), function(e) {
8626 return new rn(e.token, u, [e.val], e.policy)
8628 [i(Ne("val"), et), function(e) {
8629 return new rn(e.token, M(e.val), e.val.slice(0, -1), e.policy)
8631 [i(Ne("val"), Ze), function(e) {
8632 return new rn(e.token, e.val, t(e.val), e.policy)
8636 [Le(rn), function(e) {
8640 return !(!e.token || !e.resolveFn)
8643 return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
8646 return !!(e && e.val && (Qe(e.val) || et(e.val) || Ze(e.val)))
8648 [qe(!0), function(e) {
8649 throw new Error("Invalid resolve value: " + G(e))
8653 return (et(s) ? s : function(e, t) {
8654 return Object.keys(e || {}).map(function(n) {
8662 }(s, e.resolvePolicy || {})).map(a)
8667 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
8671 n = ["(", ")" + (t.isOptional ? "?" : "")];
8674 r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
8677 n = ["(" + t.squash + "|", ")?"]
8679 return r + n[0] + t.type.pattern.source + n[1]
8682 function ie(e, t, n, r) {
8683 return "/" === r ? e : t ? bn(r) + e : n ? r.slice(1) + e : e
8687 if (!(Ze(e) || Qe(e) || Le(Bt)(e) || Bt.isDef(e))) throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");
8688 return Ze(e) ? e : qe(e)
8695 resolveFn: function() {
8699 }, ""), e.addResolvable({
8702 resolveFn: function() {
8706 }, ""), e.addResolvable({
8707 token: "$transition$",
8709 resolveFn: function() {
8713 }, ""), e.addResolvable({
8714 token: "$stateParams",
8716 resolveFn: function() {
8720 }, ""), e.entering().forEach(function(t) {
8724 resolveFn: function() {
8733 return function(t, n) {
8734 return (0, n.$$state()[e])(t, n)
8739 var n = t.$$state().lazyLoad,
8742 r = n._promise = at.$q.when(n(e, t)).then(function(t) {
8743 return t && Array.isArray(t.states) && t.states.forEach(function(t) {
8744 return e.router.stateRegistry.register(t)
8746 }).then(function(e) {
8747 return delete t.lazyLoad, delete t.$$state().lazyLoad, delete n._promise, e
8749 return delete n._promise, at.$q.reject(e)
8756 var t = e._ignoredReason();
8758 zt.traceTransitionIgnored(e);
8759 var n = e.router.globals.transition;
8760 return "SameAsCurrent" === t && n && n.abort(), Pt.ignored().toPromise()
8765 if (!e.valid()) throw new Error(e.error())
8769 var t = function(e) {
8784 function fe(e, t, n, r) {
8785 return function(i) {
8786 var o = i.locationService = new n(i),
8787 a = i.locationConfig = new r(i, t);
8792 dispose: function(e) {
8793 e.dispose(o), e.dispose(a)
8800 return at.$injector = Rr, at.$q = Or, {
8801 name: "vanilla.services",
8804 dispose: function() {
8812 return function(t, n) {
8813 return e = e || at.$injector.get("$templateFactory"), [new ti(t, n, e)]
8818 if (!e.parent) return {};
8819 var t = ["controller", "controllerProvider", "controllerAs", "resolveAs"],
8820 n = ["component", "bindings", "componentProvider"],
8821 r = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(t),
8823 if (Ye(e.views) && Jr(i, e)) throw new Error("State '" + e.name + "' has a 'views' object. It cannot also have \"view properties\" at the state level. Move the following properties into a view (in the 'views' object): " + i.filter(function(t) {
8830 return dt(a, function(t, i) {
8831 if (i = i || "$default", Qe(t) && (t = {
8833 }), t = ft({}, t), Jr(n, t) && Jr(r, t)) throw new Error("Cannot combine: " + n.join("|") + " with: " + r.join("|") + " in stateview: '" + i + "@" + e.name + "'");
8834 t.resolveAs = t.resolveAs || "$resolve", t.$type = "ng1", t.$context = e, t.$name = i;
8835 var a = Bn.normalizeUIViewTarget(t.$context, t.$name);
8836 t.$uiViewName = a.uiViewName, t.$uiViewContextAnchor = a.uiViewContextAnchor, o[i] = t
8841 var t = at.$injector.get(e + "Directive");
8842 if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
8843 return t.map(ri).reduce(kt, [])
8847 function t(e, t, r, i, o, a) {
8848 return n._runtimeServices(i, e, r, t), delete pi.router, delete pi.$get, pi
8849 }(pi = this.router = new tr).stateProvider = new oi(pi.stateRegistry, pi.stateService), pi.stateRegistry.decorator("views", me), pi.stateRegistry.decorator("onExit", ai("onExit")), pi.stateRegistry.decorator("onRetain", ai("onRetain")), pi.stateRegistry.decorator("onEnter", ai("onEnter")), pi.viewService._pluginapi._viewConfigFactory("ng1", pe());
8850 var n = pi.locationService = pi.locationConfig = new si(e);
8851 return si.monkeyPatchPathParameterType(pi), pi.router = pi, pi.$get = t, t.$inject = ["$location", "$browser", "$sniffer", "$rootScope", "$http", "$templateCache"], pi
8854 function be(e, t, n) {
8855 at.$injector = e, at.$q = t, n.stateRegistry.get().map(function(e) {
8856 return e.$$state().resolvables
8857 }).reduce(kt, []).filter(function(e) {
8858 return "deferred" === e.deps
8859 }).forEach(function(t) {
8860 return t.deps = e.annotate(t.resolveFn, e.strictDi)
8865 e.$watch(function() {
8866 zt.approximateDigests++
8871 var t, n = e.match(/^\s*({[^}]*})\s*$/);
8872 if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
8874 state: t[1] || null,
8875 paramExpr: t[3] || null
8880 var t = e.parent().inheritedData("$uiView"),
8881 n = Re("$cfg.path")(t);
8882 return n ? M(n).state.name : void 0
8885 function we(e, t, n) {
8886 var r = n.uiState || e.current.name,
8887 i = ft(Ce(t, e), n.uiStateOpts || {}),
8888 o = e.href(r, n.uiStateParams, i);
8891 uiStateParams: n.uiStateParams,
8898 var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
8899 n = "FORM" === e[0].nodeName;
8901 attr: n ? "action" : t ? "xlink:href" : "href",
8902 isAnchor: "A" === e.prop("tagName").toUpperCase(),
8907 function ke(e, t, n, r, i) {
8908 return function(o) {
8909 var a = o.which || o.button,
8911 if (!(a > 1 || o.ctrlKey || o.metaKey || o.shiftKey || e.attr("target"))) {
8912 var c = n(function() {
8913 t.go(s.uiState, s.uiStateParams, s.uiStateOpts)
8916 var l = r.isAnchor && !s.href ? 1 : 0;
8917 o.preventDefault = function() {
8918 l-- <= 0 && n.cancel(c)
8926 relative: $e(e) || t.$current,
8932 function xe(e, t, n, r) {
8934 r && (i = r.events), et(i) || (i = ["click"]);
8935 for (var o = e.on ? "on" : "bind", a = 0, s = i; a < s.length; a++) {
8939 t.$on("$destroy", function() {
8940 for (var t = e.off ? "off" : "unbind", r = 0, o = i; r < o.length; r++) {
8948 var t = function(t, n, r) {
8949 return e.is(t, n, r)
8951 return t.$stateful = !0, t
8955 var t = function(t, n, r) {
8956 return e.includes(t, n, r)
8958 return t.$stateful = !0, t
8961 function Ae(e, t, n, r, i, o) {
8962 var a = Re("viewDecl.controllerAs"),
8963 s = Re("viewDecl.resolveAs");
8967 compile: function(r) {
8971 var l = c.data("$uiView");
8972 if (!l) return c.html(o), void e(c.contents())(r);
8977 f = u.path && new un(u.path);
8978 c.html(u.getTemplate(c, f) || o), zt.traceUIViewFill(l.$uiView, c.html());
8979 var h = e(c.contents()),
8985 var b = t(p, ft({}, v, {
8989 m && (r[m] = b, r[m][g] = v), c.data("$ngControllerController", b), c.children().data("$ngControllerController", b), Se(i, n, b, r, u)
8991 if (Qe(u.viewDecl.component)) var y = u.viewDecl.component,
8993 $ = new RegExp("^(x-|data-)?" + _ + "$", "i"),
8994 w = r.$watch(function() {
8995 var e = [].slice.call(c[0].children).filter(function(e) {
8996 return e && e.tagName && $.exec(e.tagName)
8998 return e && De.element(e).data("$" + y + "Controller")
9000 e && (Se(i, n, e, r, u), w())
9008 function Se(e, t, n, r, i) {
9009 !Ze(n.$onInit) || i.viewDecl.component && $i || n.$onInit();
9010 var o = M(i.path).state.self,
9014 if (Ze(n.uiOnParamsChanged)) {
9015 var s = new un(i.path).getResolvable("$transition$").data;
9016 r.$on("$destroy", t.onSuccess({}, function(e) {
9017 if (e !== s && -1 === e.exiting().indexOf(o)) {
9018 var t = e.params("to"),
9019 r = e.params("from"),
9020 i = e.treeChanges().to.map(function(e) {
9021 return e.paramSchema
9023 a = e.treeChanges().from.map(function(e) {
9024 return e.paramSchema
9026 c = i.filter(function(e) {
9027 var n = a.indexOf(e);
9028 return -1 === n || !a[n].type.equals(t[e.id], r[e.id])
9031 var l = c.map(function(e) {
9034 u = $(t, function(e, t) {
9035 return -1 !== l.indexOf(t)
9037 n.uiOnParamsChanged(u, e)
9042 if (Ze(n.uiCanExit)) {
9045 return !!e && (e._uiCanExitIds && !0 === e._uiCanExitIds[c] || l(e.redirectedFrom()))
9050 r.$on("$destroy", t.onBefore(u, function(t) {
9051 var r, i = t._uiCanExitIds = t._uiCanExitIds || {};
9052 return l(t) || (r = e.when(n.uiCanExit(t))).then(function(e) {
9053 return i[c] = !1 !== e
9058 me.$inject = ["state"];
9060 De = t && t.module ? t : Oe,
9062 return function(t) {
9066 Ie = n(function(e, t, n) {
9067 return n && n[e] === t
9070 return i.apply(null, e.split(".").map(Ne))
9074 for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
9075 return !e.apply(null, t)
9079 return function(t) {
9080 return t.reduce(function(t, n) {
9086 return function(t) {
9087 return t.reduce(function(t, n) {
9093 return function(t) {
9094 return null != t && t.constructor === e || t instanceof e
9098 return function(t) {
9109 this.text = e, this.glob = e.split(".");
9110 var t = this.text.split(".").map(function(e) {
9111 return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
9113 this.regexp = new RegExp("^" + t + "$")
9115 return e.prototype.matches = function(e) {
9116 return this.regexp.test("." + e)
9117 }, e.is = function(e) {
9118 return !!/[!,*]+/.exec(e)
9119 }, e.fromString = function(t) {
9120 return e.is(t) ? new e(t) : null
9125 return e.create(t || {})
9127 return e.create = function(t) {
9128 t = e.isStateClass(t) ? new t : t;
9129 var n = pt(pt(t, e.prototype));
9130 return t.$$state = function() {
9132 }, n.self = t, n.__stateObjectCache = {
9133 nameGlob: Ue.fromString(n.name)
9135 }, e.prototype.is = function(e) {
9136 return this === e || this.self === e || this.fqn() === e
9137 }, e.prototype.fqn = function() {
9138 if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
9139 var e = this.parent.fqn();
9140 return e ? e + "." + this.name : this.name
9141 }, e.prototype.root = function() {
9142 return this.parent && this.parent.root() || this
9143 }, e.prototype.parameters = function(e) {
9147 })).inherit && this.parent && this.parent.parameters() || []).concat($t(this.params)).filter(function(t) {
9148 return !e.matchingKeys || e.matchingKeys.hasOwnProperty(t.id)
9150 }, e.prototype.parameter = function(e, t) {
9151 return void 0 === t && (t = {}), this.url && this.url.parameter(e, t) || w($t(this.params), Ie("id", e)) || t.inherit && this.parent && this.parent.parameter(e)
9152 }, e.prototype.toString = function() {
9154 }, e.isStateClass = function(e) {
9155 return Ze(e) && !0 === e.__uiRouterState
9156 }, e.isState = function(e) {
9157 return Je(e.__stateObjectCache)
9160 ze = Object.prototype.toString,
9162 return function(t) {
9163 return typeof t === e
9166 We = Be("undefined"),
9172 Ze = Be("function"),
9176 return null !== e && "object" == typeof e
9180 return "[object Date]" === ze.call(e)
9183 return "[object RegExp]" === ze.call(e)
9186 it = o(Je, i(Ne("then"), Ze)),
9189 throw new Error(e + "(): No coreservices implementation for UI-Router is loaded.")
9196 st = "object" == typeof self && self.self === self && self || "object" == typeof global && global.global === global && global || void 0,
9197 ct = st.angular || {},
9198 lt = ct.fromJson || JSON.parse.bind(JSON),
9199 ut = ct.toJson || JSON.stringify.bind(JSON),
9200 dt = ct.forEach || function(e, t, n) {
9201 if (et(e)) return e.forEach(t, n);
9202 Object.keys(e).forEach(function(n) {
9206 ft = Object.assign || S,
9207 ht = ct.equals || O,
9208 pt = function(e, t) {
9209 return ft(Object.create(e), t)
9215 return e.slice().forEach(function(t) {
9216 "function" == typeof t && t(), gt(e, t)
9219 yt = function(e, t) {
9224 return Object.keys(e).map(function(t) {
9228 wt = function(e, t) {
9231 Et = function(e, t) {
9234 kt = function(e, t) {
9237 Ct = function(e, t) {
9238 return et(t) ? e.concat(t.reduce(Ct, [])) : k(e, t)
9240 xt = function(e, t) {
9241 return mt(e, t) ? e : k(e, t)
9244 return e.reduce(kt, [])
9247 return e.reduce(Ct, [])
9252 return Object.keys(e).map(function(t) {
9257 return e.catch(function(e) {
9262 return Dt(at.$q.reject(e))
9266 void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t
9268 return e.prototype.enqueue = function(e) {
9269 var t = this._items;
9270 return t.push(e), this._limit && t.length > this._limit && t.shift(), e
9271 }, e.prototype.dequeue = function() {
9272 if (this.size()) return this._items.splice(0, 1)[0]
9273 }, e.prototype.clear = function() {
9274 var e = this._items;
9275 return this._items = [], e
9276 }, e.prototype.size = function() {
9277 return this._items.length
9278 }, e.prototype.remove = function(e) {
9279 var t = this._items.indexOf(e);
9280 return t > -1 && this._items.splice(t, 1)[0]
9281 }, e.prototype.peekTail = function() {
9282 return this._items[this._items.length - 1]
9283 }, e.prototype.peekHead = function() {
9284 if (this.size()) return this._items[0]
9288 e[e.SUPERSEDED = 2] = "SUPERSEDED", e[e.ABORTED = 3] = "ABORTED", e[e.INVALID = 4] = "INVALID", e[e.IGNORED = 5] = "IGNORED", e[e.ERROR = 6] = "ERROR"
9289 }(e.RejectType || (e.RejectType = {}));
9292 function t(e, t, n) {
9293 this.$id = Rt++, this.type = e, this.message = t, this.detail = n
9295 return t.prototype.toString = function() {
9296 var e = function(e) {
9297 return e && e.toString !== Object.prototype.toString ? e.toString() : G(e)
9300 return "Transition Rejection($id: " + t.$id + " type: " + t.type + ", message: " + t.message + ", detail: " + e + ")"
9301 }, t.prototype.toPromise = function() {
9302 return ft(Nt(this), {
9303 _transitionRejection: this
9305 }, t.isRejectionPromise = function(e) {
9306 return e && "function" == typeof e.then && Le(t)(e._transitionRejection)
9307 }, t.superseded = function(n, r) {
9308 var i = new t(e.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", n);
9309 return r && r.redirected && (i.redirected = !0), i
9310 }, t.redirected = function(e) {
9311 return t.superseded(e, {
9314 }, t.invalid = function(n) {
9315 return new t(e.RejectType.INVALID, "This transition is invalid", n)
9316 }, t.ignored = function(n) {
9317 return new t(e.RejectType.IGNORED, "The transition was ignored", n)
9318 }, t.aborted = function(n) {
9319 return new t(e.RejectType.ABORTED, "The transition has been aborted", n)
9320 }, t.errored = function(n) {
9321 return new t(e.RejectType.ERROR, "The transition errored", n)
9322 }, t.normalize = function(e) {
9323 return Le(t)(e) ? e : t.errored(e)
9328 n = t.$context.name || "(root)";
9329 return "[View#" + e.$id + " from '" + n + "' state]: target ui-view: '" + t.$uiViewName + "@" + t.$uiViewContextAnchor + "'"
9331 Ht = Function.prototype.bind.call(console.log, console),
9332 Lt = Ze(console.table) ? console.table.bind(console) : Ht.bind(console);
9334 e[e.RESOLVE = 0] = "RESOLVE", e[e.TRANSITION = 1] = "TRANSITION", e[e.HOOK = 2] = "HOOK", e[e.UIVIEW = 3] = "UIVIEW", e[e.VIEWCONFIG = 4] = "VIEWCONFIG"
9335 }(e.Category || (e.Category = {}));
9337 qt = Re("router.$id"),
9339 return "Transition #" + Ft(e) + "-" + qt(e)
9343 this._enabled = {}, this.approximateDigests = 0
9345 return t.prototype._set = function(t, n) {
9347 n.length || (n = Object.keys(e.Category).map(function(e) {
9348 return parseInt(e, 10)
9349 }).filter(function(e) {
9351 }).map(function(t) {
9352 return e.Category[t]
9353 })), n.map(I).forEach(function(e) {
9354 return r._enabled[e] = t
9356 }, t.prototype.enable = function() {
9357 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
9359 }, t.prototype.disable = function() {
9360 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
9362 }, t.prototype.enabled = function(e) {
9363 return !!this._enabled[I(e)]
9364 }, t.prototype.traceTransitionStart = function(t) {
9365 this.enabled(e.Category.TRANSITION) && console.log(Ut(t) + ": Started -> " + G(t))
9366 }, t.prototype.traceTransitionIgnored = function(t) {
9367 this.enabled(e.Category.TRANSITION) && console.log(Ut(t) + ": Ignored <> " + G(t))
9368 }, t.prototype.traceHookInvocation = function(t, n, r) {
9369 if (this.enabled(e.Category.HOOK)) {
9370 var i = Re("traceData.hookType")(r) || "internal",
9371 o = Re("traceData.context.state.name")(r) || Re("traceData.context")(r) || "unknown",
9372 a = W(t.registeredHook.callback);
9373 console.log(Ut(n) + ": Hook -> " + i + " context: " + o + ", " + V(200, a))
9375 }, t.prototype.traceHookResult = function(t, n, r) {
9376 this.enabled(e.Category.HOOK) && console.log(Ut(n) + ": <- Hook returned: " + V(200, G(t)))
9377 }, t.prototype.traceResolvePath = function(t, n, r) {
9378 this.enabled(e.Category.RESOLVE) && console.log(Ut(r) + ": Resolving " + t + " (" + n + ")")
9379 }, t.prototype.traceResolvableResolved = function(t, n) {
9380 this.enabled(e.Category.RESOLVE) && console.log(Ut(n) + ": <- Resolved " + t + " to: " + V(200, G(t.data)))
9381 }, t.prototype.traceError = function(t, n) {
9382 this.enabled(e.Category.TRANSITION) && console.log(Ut(n) + ": <- Rejected " + G(n) + ", reason: " + t)
9383 }, t.prototype.traceSuccess = function(t, n) {
9384 this.enabled(e.Category.TRANSITION) && console.log(Ut(n) + ": <- Success " + G(n) + ", final state: " + t.name)
9385 }, t.prototype.traceUIViewEvent = function(t, n, r) {
9386 void 0 === r && (r = ""), this.enabled(e.Category.UIVIEW) && console.log("ui-view: " + z(30, t) + " " + N(n) + r)
9387 }, t.prototype.traceUIViewConfigUpdated = function(t, n) {
9388 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Updating", t, " with ViewConfig from context='" + n + "'")
9389 }, t.prototype.traceUIViewFill = function(t, n) {
9390 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Fill", t, " with: " + V(200, n))
9391 }, t.prototype.traceViewSync = function(t) {
9392 if (this.enabled(e.Category.VIEWCONFIG)) {
9393 var n = t.map(function(e) {
9397 "ui-view fqn": t.$type + ":" + t.fqn,
9398 "state: view name": n && n.viewDecl.$context.name + ": " + n.viewDecl.$name + " (" + n.viewDecl.$type + ")"
9400 }).sort(function(e, t) {
9401 return e["ui-view fqn"].localeCompare(t["ui-view fqn"])
9405 }, t.prototype.traceViewServiceEvent = function(t, n) {
9406 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + jt(n))
9407 }, t.prototype.traceViewServiceUIViewEvent = function(t, n) {
9408 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + N(n))
9413 e[e.CREATE = 0] = "CREATE", e[e.BEFORE = 1] = "BEFORE", e[e.RUN = 2] = "RUN", e[e.SUCCESS = 3] = "SUCCESS", e[e.ERROR = 4] = "ERROR"
9414 }(e.TransitionHookPhase || (e.TransitionHookPhase = {})),
9416 e[e.TRANSITION = 0] = "TRANSITION", e[e.STATE = 1] = "STATE"
9417 }(e.TransitionHookScope || (e.TransitionHookScope = {}));
9418 var Bt = function() {
9419 function e(e, t, n, r) {
9420 this._stateRegistry = e, this._identifier = t, this._identifier = t, this._params = ft({}, n || {}), this._options = ft({}, r || {}), this._definition = e.matcher.find(t, this._options.relative)
9422 return e.prototype.name = function() {
9423 return this._definition && this._definition.name || this._identifier
9424 }, e.prototype.identifier = function() {
9425 return this._identifier
9426 }, e.prototype.params = function() {
9428 }, e.prototype.$state = function() {
9429 return this._definition
9430 }, e.prototype.state = function() {
9431 return this._definition && this._definition.self
9432 }, e.prototype.options = function() {
9433 return this._options
9434 }, e.prototype.exists = function() {
9435 return !(!this._definition || !this._definition.self)
9436 }, e.prototype.valid = function() {
9437 return !this.error()
9438 }, e.prototype.error = function() {
9439 var e = this.options().relative;
9440 if (!this._definition && e) {
9441 var t = e.name ? e.name : e;
9442 return "Could not resolve '" + this.name() + "' from state '" + t + "'"
9444 return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'"
9445 }, e.prototype.toString = function() {
9446 return "'" + this.name() + "'" + G(this.params())
9447 }, e.prototype.withState = function(t) {
9448 return new e(this._stateRegistry, t, this._params, this._options)
9449 }, e.prototype.withParams = function(t, n) {
9450 void 0 === n && (n = !1);
9451 var r = n ? t : ft({}, this._params, t);
9452 return new e(this._stateRegistry, this._identifier, r, this._options)
9453 }, e.prototype.withOptions = function(t, n) {
9454 void 0 === n && (n = !1);
9455 var r = n ? t : ft({}, this._options, t);
9456 return new e(this._stateRegistry, this._identifier, this._params, r)
9457 }, e.isDef = function(e) {
9458 return e && e.state && (Qe(e.state) || Qe(e.state.name))
9468 function t(t, n, r, i) {
9470 this.transition = t, this.stateContext = n, this.registeredHook = r, this.options = i, this.isSuperseded = function() {
9471 return o.type.hookPhase === e.TransitionHookPhase.RUN && !o.options.transition.isActive()
9472 }, this.options = g(i, Wt), this.type = r.eventType
9474 return t.prototype.logError = function(e) {
9475 this.transition.router.stateService.defaultErrorHandler()(e)
9476 }, t.prototype.invokeHook = function() {
9478 t = this.registeredHook;
9479 if (!t._deregistered) {
9480 var n = this.getNotCurrentRejection();
9482 var r = this.options;
9483 zt.traceHookInvocation(this, this.transition, r);
9484 var i = function(n) {
9485 return t.eventType.getErrorHandler(e)(n)
9488 return t.eventType.getResultHandler(e)(n)
9491 var a = t.callback.call(r.bind, e.transition, e.stateContext);
9492 return !this.type.synchronous && it(a) ? a.catch(function(e) {
9493 return Pt.normalize(e).toPromise()
9494 }).then(o, i) : o(a)
9496 return i(Pt.normalize(e))
9498 t.invokeLimit && ++t.invokeCount >= t.invokeLimit && t.deregister()
9501 }, t.prototype.handleHookResult = function(e) {
9503 n = this.getNotCurrentRejection();
9504 return n || (it(e) ? e.then(function(e) {
9505 return t.handleHookResult(e)
9506 }) : (zt.traceHookResult(e, this.transition, this.options), !1 === e ? Pt.aborted("Hook aborted transition").toPromise() : Le(Bt)(e) ? Pt.redirected(e).toPromise() : void 0))
9507 }, t.prototype.getNotCurrentRejection = function() {
9508 var e = this.transition.router;
9509 return e._disposed ? Pt.aborted("UIRouter instance #" + e.$id + " has been stopped (disposed)").toPromise() : this.transition._aborted ? Pt.aborted().toPromise() : this.isSuperseded() ? Pt.superseded(this.options.current()).toPromise() : void 0
9510 }, t.prototype.toString = function() {
9513 n = e.registeredHook;
9514 return (Re("traceData.hookType")(t) || "internal") + " context: " + (Re("traceData.context.state.name")(t) || Re("traceData.context")(t) || "unknown") + ", " + V(200, Y(n.callback))
9515 }, t.chain = function(e, t) {
9516 return e.reduce(function(e, t) {
9517 return e.then(function() {
9518 return t.invokeHook()
9520 }, t || at.$q.when())
9521 }, t.invokeHooks = function(e, n) {
9522 for (var r = 0; r < e.length; r++) {
9523 var i = e[r].invokeHook();
9525 var o = e.slice(r + 1);
9526 return t.chain(o, i).then(n)
9530 }, t.runAllHooks = function(e) {
9531 e.forEach(function(e) {
9532 return e.invokeHook()
9534 }, t.HANDLE_RESULT = function(e) {
9535 return function(t) {
9536 return e.handleHookResult(t)
9538 }, t.LOG_REJECTED_RESULT = function(e) {
9539 return function(t) {
9540 it(t) && t.catch(function(t) {
9541 return e.logError(Pt.normalize(t))
9544 }, t.LOG_ERROR = function(e) {
9545 return function(t) {
9546 return e.logError(t)
9548 }, t.REJECT_ERROR = function(e) {
9549 return function(e) {
9552 }, t.THROW_ERROR = function(e) {
9553 return function(e) {
9559 function t(e, t, n, r, i, o) {
9560 void 0 === o && (o = {}), this.tranSvc = e, this.eventType = t, this.callback = n, this.matchCriteria = r, this.removeHookFromRegistry = i, this.invokeCount = 0, this._deregistered = !1, this.priority = o.priority || 0, this.bind = o.bind || null, this.invokeLimit = o.invokeLimit
9562 return t.prototype._matchingNodes = function(e, t) {
9563 if (!0 === t) return e;
9564 var n = e.filter(function(e) {
9565 return R(e.state, t)
9567 return n.length ? n : null
9568 }, t.prototype._getDefaultMatchCriteria = function() {
9569 return E(this.tranSvc._pluginapi._getPathTypes(), function() {
9572 }, t.prototype._getMatchingNodes = function(t) {
9574 r = ft(this._getDefaultMatchCriteria(), this.matchCriteria);
9575 return $t(this.tranSvc._pluginapi._getPathTypes()).reduce(function(i, o) {
9576 var a = o.scope === e.TransitionHookScope.STATE,
9577 s = t[o.name] || [],
9579 return i[o.name] = n._matchingNodes(c, r[o.name]), i
9581 }, t.prototype.matches = function(e) {
9582 var t = this._getMatchingNodes(e);
9583 return $t(t).every(u) ? t : null
9584 }, t.prototype.deregister = function() {
9585 this.removeHookFromRegistry(this), this._deregistered = !0
9592 return t.prototype.buildHooksForPhase = function(e) {
9594 return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
9595 return t.buildHooks(e)
9596 }).reduce(kt, []).filter(u)
9597 }, t.prototype.buildHooks = function(t) {
9598 var n = this.transition,
9599 r = n.treeChanges(),
9600 i = this.getMatchingHooks(t, r);
9604 current: n.options().current
9606 return i.map(function(i) {
9607 return i.matches(r)[t.criteriaMatchPath.name].map(function(r) {
9615 s = t.criteriaMatchPath.scope === e.TransitionHookScope.STATE ? r.state.self : null,
9616 c = new Yt(n, s, i, a);
9623 }).reduce(kt, []).sort(j(t.reverseSort)).map(function(e) {
9624 return e.transitionHook
9626 }, t.prototype.getMatchingHooks = function(t, n) {
9627 var r = t.hookPhase === e.TransitionHookPhase.CREATE,
9628 i = this.transition.router.transitionService;
9629 return (r ? [i] : [this.transition, i]).map(function(e) {
9630 return e.getHooks(t.name)
9631 }).filter(At(et, "broken event named: " + t.name)).reduce(kt, []).filter(function(e) {
9638 this.pattern = /.*/, this.inherit = !0, ft(this, e)
9640 return e.prototype.is = function(e, t) {
9642 }, e.prototype.encode = function(e, t) {
9644 }, e.prototype.decode = function(e, t) {
9646 }, e.prototype.equals = function(e, t) {
9648 }, e.prototype.$subPattern = function() {
9649 var e = this.pattern.toString();
9650 return e.substr(1, e.length - 2)
9651 }, e.prototype.toString = function() {
9652 return "{ParamType:" + this.name + "}"
9653 }, e.prototype.$normalize = function(e) {
9654 return this.is(e) ? e : this.decode(e)
9655 }, e.prototype.$asArray = function(e, t) {
9656 if (!e) return this;
9657 if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
9658 return new H(this, e)
9661 Xt = Object.prototype.hasOwnProperty,
9663 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(Xt.bind(e || {})).length
9666 e[e.PATH = 0] = "PATH", e[e.SEARCH = 1] = "SEARCH", e[e.CONFIG = 2] = "CONFIG"
9667 }(e.DefType || (e.DefType = {}));
9668 var Jt = function() {
9669 function t(t, n, r, i, o) {
9670 n = F(r = L(r), n, i, t, o.paramTypes);
9671 var a = function() {
9673 array: i === e.DefType.SEARCH && "auto"
9675 o = t.match(/\[\]$/) ? {
9678 return ft(n, o, r).array
9680 n = a ? n.$asArray(a, i === e.DefType.SEARCH) : n;
9681 var s = void 0 !== r.value || i === e.DefType.SEARCH,
9682 c = Ye(r.dynamic) ? !!r.dynamic : !!n.dynamic,
9683 l = Ye(r.raw) ? !!r.raw : !!n.raw,
9684 u = q(r, s, o.defaultSquashPolicy()),
9686 f = Ye(r.inherit) ? !!r.inherit : !!n.inherit;
9701 return t.prototype.isDefaultValue = function(e) {
9702 return this.isOptional && this.type.equals(this.value(), e)
9703 }, t.prototype.value = function(e) {
9705 return e = function(e) {
9706 for (var n = 0, r = t.replace; n < r.length; n++) {
9708 if (i.from === e) return i.to
9711 }(e), We(e) ? function() {
9712 if (t._defaultValueCache) return t._defaultValueCache.defaultValue;
9713 if (!at.$injector) throw new Error("Injectable functions cannot be called at configuration time");
9714 var e = at.$injector.invoke(t.config.$$fn);
9715 if (null !== e && void 0 !== e && !t.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + t.id + "' is not an instance of ParamType (" + t.type.name + ")");
9716 return t.config.$$fn.__cacheable && (t._defaultValueCache = {
9719 }() : this.type.$normalize(e)
9720 }, t.prototype.isSearch = function() {
9721 return this.location === e.DefType.SEARCH
9722 }, t.prototype.validates = function(e) {
9723 if ((We(e) || null === e) && this.isOptional) return !0;
9724 var t = this.type.$normalize(e);
9725 if (!this.type.is(t)) return !1;
9726 var n = this.type.encode(t);
9727 return !(Qe(n) && !this.type.pattern.exec(n))
9728 }, t.prototype.toString = function() {
9729 return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
9730 }, t.values = function(e, t) {
9731 void 0 === t && (t = {});
9732 for (var n = {}, r = 0, i = e; r < i.length; r++) {
9734 n[o.id] = o.value(t[o.id])
9737 }, t.changed = function(e, t, n) {
9738 return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
9739 return !e.type.equals(t[e.id], n[e.id])
9741 }, t.equals = function(e, n, r) {
9742 return void 0 === n && (n = {}), void 0 === r && (r = {}), 0 === t.changed(e, n, r).length
9743 }, t.validates = function(e, t) {
9744 return void 0 === t && (t = {}), e.map(function(e) {
9745 return e.validates(t[e.id])
9751 if (t instanceof e) {
9753 this.state = n.state, this.paramSchema = n.paramSchema.slice(), this.paramValues = ft({}, n.paramValues), this.resolvables = n.resolvables.slice(), this.views = n.views && n.views.slice()
9756 this.state = r, this.paramSchema = r.parameters({
9758 }), this.paramValues = {}, this.resolvables = r.resolvables.map(function(e) {
9763 return e.prototype.applyRawParams = function(e) {
9764 var t = function(t) {
9765 return [t.id, t.value(e[t.id])]
9767 return this.paramValues = this.paramSchema.reduce(function(e, n) {
9770 }, e.prototype.parameter = function(e) {
9771 return w(this.paramSchema, Ie("id", e))
9772 }, e.prototype.equals = function(e, t) {
9773 var n = this.diff(e, t);
9774 return n && 0 === n.length
9775 }, e.prototype.diff = function(e, t) {
9776 if (this.state !== e.state) return !1;
9777 var n = t ? t(this) : this.paramSchema;
9778 return Jt.changed(n, this.paramValues, e.paramValues)
9779 }, e.clone = function(t) {
9785 return e.makeTargetState = function(e, t) {
9787 return new Bt(e, n, t.map(Ne("paramValues")).reduce(yt, {}), {})
9788 }, e.buildPath = function(e) {
9790 return e.$state().path.map(function(e) {
9791 return new en(e).applyRawParams(t)
9793 }, e.buildToPath = function(t, n) {
9794 var r = e.buildPath(n);
9795 return n.options().inherit ? e.inheritParams(t, r, Object.keys(n.params())) : r
9796 }, e.applyViewConfigs = function(t, n, r) {
9797 n.filter(function(e) {
9798 return mt(r, e.state)
9799 }).forEach(function(r) {
9800 var i = $t(r.state.views || {}),
9801 o = e.subPath(n, function(e) {
9804 a = i.map(function(e) {
9805 return t.createViewConfig(o, e)
9807 r.views = a.reduce(kt, [])
9809 }, e.inheritParams = function(e, t, n) {
9811 var n = w(e, Ie("state", t));
9812 return ft({}, n && n.paramValues)
9814 void 0 === n && (n = []);
9815 var i = e.map(function(e) {
9816 return e.paramSchema
9817 }).reduce(kt, []).filter(function(e) {
9820 return t.map(function(t) {
9821 var o = ft({}, t && t.paramValues),
9824 var s = y(r(e, t.state) || {}, i),
9826 return new en(t.state).applyRawParams(c)
9828 }, e.treeChanges = function(t, n, r) {
9829 for (var i = 0, o = Math.min(t.length, n.length); i < o && t[i].state !== r && function(t, n) {
9830 return t.equals(n, e.nonDynamicParams)
9831 }(t[i], n[i]);) i++;
9833 s = (a = t).slice(0, i), c = a.slice(i);
9834 var d = s.map(function(e, t) {
9835 var r = en.clone(e);
9836 return r.paramValues = n[t].paramValues, r
9838 return l = n.slice(i), u = d.concat(l), {
9845 }, e.matching = function(e, t, n) {
9847 return x(e, t).reduce(function(e, t) {
9850 return (r = r || !i.equals(o, n)) ? e : e.concat(i)
9852 }, e.equals = function(t, n, r) {
9853 return t.length === n.length && e.matching(t, n, r).length === t.length
9854 }, e.subPath = function(e, t) {
9857 return -1 === r ? void 0 : e.slice(0, r + 1)
9858 }, e.nonDynamicParams = function(e) {
9859 return e.state.parameters({
9861 }).filter(function(e) {
9864 }, e.paramValues = function(e) {
9865 return e.reduce(function(e, t) {
9866 return ft(e, t.paramValues)
9875 function e(t, n, r, i, o) {
9876 if (this.resolved = !1, this.promise = void 0, t instanceof e) ft(this, t);
9878 if (Ke(t)) throw new Error("new Resolvable(): token argument is required");
9879 if (!Ze(n)) throw new Error("new Resolvable(): resolveFn argument must be a function");
9880 this.token = t, this.policy = i, this.resolveFn = n, this.deps = r || [], this.data = o, this.resolved = void 0 !== o, this.promise = this.resolved ? at.$q.when(this.data) : void 0
9881 } else if (Je(t) && t.token && Ze(t.resolveFn)) {
9883 return new e(a.token, a.resolveFn, a.deps, a.policy, a.data)
9886 return e.prototype.getPolicy = function(e) {
9887 var t = this.policy || {},
9888 n = e && e.resolvePolicy || {};
9890 when: t.when || n.when || nn.when,
9891 async: t.async || n.async || nn.async
9893 }, e.prototype.resolve = function(e, t) {
9896 i = e.findNode(this),
9898 a = "RXWAIT" === this.getPolicy(o).async ? function(e) {
9900 return t.take(1).toPromise().then(function() {
9904 return this.promise = r.when().then(function() {
9905 return r.all(e.getDependencies(n).map(function(n) {
9908 }).then(function(e) {
9909 return n.resolveFn.apply(null, e)
9910 }).then(a).then(function(e) {
9911 return n.data = e, n.resolved = !0, zt.traceResolvableResolved(n, t), n.data
9913 }, e.prototype.get = function(e, t) {
9914 return this.promise || this.resolve(e, t)
9915 }, e.prototype.toString = function() {
9916 return "Resolvable(token: " + G(this.token) + ", requires: [" + this.deps.map(G) + "])"
9917 }, e.prototype.clone = function() {
9919 }, e.fromData = function(t, n) {
9920 return new e(t, function() {
9937 sn = [an.EAGER, an.LAZY],
9939 ln = "Native Injector",
9944 return e.prototype.getTokens = function() {
9945 return this._path.reduce(function(e, t) {
9946 return e.concat(t.resolvables.map(function(e) {
9949 }, []).reduce(xt, [])
9950 }, e.prototype.getResolvable = function(e) {
9951 return M(this._path.map(function(e) {
9952 return e.resolvables
9953 }).reduce(kt, []).filter(function(t) {
9954 return t.token === e
9956 }, e.prototype.getPolicy = function(e) {
9957 var t = this.findNode(e);
9958 return e.getPolicy(t.state)
9959 }, e.prototype.subContext = function(t) {
9960 return new e(tn.subPath(this._path, function(e) {
9961 return e.state === t
9963 }, e.prototype.addResolvables = function(e, t) {
9964 var n = w(this._path, Ie("state", t)),
9965 r = e.map(function(e) {
9968 n.resolvables = n.resolvables.filter(function(e) {
9969 return -1 === r.indexOf(e.token)
9971 }, e.prototype.resolvePath = function(e, t) {
9973 void 0 === e && (e = "LAZY");
9974 var r = (mt(sn, e) ? e : "LAZY") === on.when.EAGER ? cn : sn;
9975 zt.traceResolvePath(this._path, e, t);
9976 var i = function(e, t) {
9977 return function(r) {
9978 return mt(e, n.getPolicy(r)[t])
9981 o = this._path.reduce(function(e, o) {
9982 var a = o.resolvables.filter(i(r, "when")),
9983 s = a.filter(i(["NOWAIT"], "async")),
9984 c = a.filter(Pe(i(["NOWAIT"], "async"))),
9985 l = n.subContext(o.state),
9987 return e.get(l, t).then(function(t) {
9994 return s.forEach(u), e.concat(c.map(u))
9997 }, e.prototype.injector = function() {
9998 return this._injector || (this._injector = new dn(this))
9999 }, e.prototype.findNode = function(e) {
10000 return w(this._path, function(t) {
10001 return mt(t.resolvables, e)
10003 }, e.prototype.getDependencies = function(e) {
10005 n = this.findNode(e),
10006 r = (tn.subPath(this._path, function(e) {
10008 }) || this._path).reduce(function(e, t) {
10009 return e.concat(t.resolvables)
10010 }, []).filter(function(t) {
10013 return e.deps.map(function(e) {
10014 var n = r.filter(function(t) {
10015 return t.token === e
10017 if (n.length) return M(n);
10018 var i = t.injector().getNative(e);
10019 if (We(i)) throw new Error("Could not find Dependency Injection token: " + G(e));
10020 return new rn(e, function() {
10028 this.context = e, this.native = this.get(ln) || at.$injector
10030 return e.prototype.get = function(e) {
10031 var t = this.context.getResolvable(e);
10033 if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
10034 if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + G(t.token));
10037 return this.getNative(e)
10038 }, e.prototype.getAsync = function(e) {
10039 var t = this.context.getResolvable(e);
10040 return t ? t.get(this.context) : at.$q.when(this.native.get(e))
10041 }, e.prototype.getNative = function(e) {
10042 return this.native && this.native.get(e)
10047 function t(t, n, r) {
10049 if (this._deferred = at.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Kt(this), this.isActive = function() {
10050 return i.router.globals.transition === i
10051 }, this.router = r, this._targetState = n, !n.valid()) throw new Error(n.error());
10052 this._options = ft({
10054 }, n.options()), this.$id = r.transitionService._transitionCount++;
10055 var o = tn.buildToPath(t, n);
10056 this._treeChanges = tn.treeChanges(t, o, this._options.reloadState), this.createTransitionHookRegFns();
10057 var a = this._hookBuilder.buildHooksForPhase(e.TransitionHookPhase.CREATE);
10058 Yt.invokeHooks(a, function() {
10060 }), this.applyViewConfigs(r)
10062 return t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.createTransitionHookRegFns = function() {
10064 this.router.transitionService._pluginapi._getEvents().filter(function(t) {
10065 return t.hookPhase !== e.TransitionHookPhase.CREATE
10066 }).forEach(function(e) {
10067 return P(t, t.router.transitionService, e)
10069 }, t.prototype.getHooks = function(e) {
10070 return this._registeredHooks[e]
10071 }, t.prototype.applyViewConfigs = function(e) {
10072 var t = this._treeChanges.entering.map(function(e) {
10075 tn.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
10076 }, t.prototype.$from = function() {
10077 return M(this._treeChanges.from).state
10078 }, t.prototype.$to = function() {
10079 return M(this._treeChanges.to).state
10080 }, t.prototype.from = function() {
10081 return this.$from().self
10082 }, t.prototype.to = function() {
10083 return this.$to().self
10084 }, t.prototype.targetState = function() {
10085 return this._targetState
10086 }, t.prototype.is = function(e) {
10087 return e instanceof t ? this.is({
10089 from: e.$from().name
10090 }) : !(e.to && !R(this.$to(), e.to) || e.from && !R(this.$from(), e.from))
10091 }, t.prototype.params = function(e) {
10092 return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(Ne("paramValues")).reduce(yt, {}))
10093 }, t.prototype.injector = function(e, t) {
10094 void 0 === t && (t = "to");
10095 var n = this._treeChanges[t];
10096 return e && (n = tn.subPath(n, function(t) {
10097 return t.state === e || t.state.name === e
10098 })), new un(n).injector()
10099 }, t.prototype.getResolveTokens = function(e) {
10100 return void 0 === e && (e = "to"), new un(this._treeChanges[e]).getTokens()
10101 }, t.prototype.addResolvable = function(e, t) {
10102 void 0 === t && (t = ""), e = Le(rn)(e) ? e : new rn(e);
10103 var n = "string" == typeof t ? t : t.name,
10104 r = this._treeChanges.to,
10105 i = w(r, function(e) {
10106 return e.state.name === n
10108 new un(r).addResolvables([e], i.state)
10109 }, t.prototype.redirectedFrom = function() {
10110 return this._options.redirectedFrom || null
10111 }, t.prototype.originalTransition = function() {
10112 var e = this.redirectedFrom();
10113 return e && e.originalTransition() || this
10114 }, t.prototype.options = function() {
10115 return this._options
10116 }, t.prototype.entering = function() {
10117 return E(this._treeChanges.entering, Ne("state")).map(fn)
10118 }, t.prototype.exiting = function() {
10119 return E(this._treeChanges.exiting, Ne("state")).map(fn).reverse()
10120 }, t.prototype.retained = function() {
10121 return E(this._treeChanges.retained, Ne("state")).map(fn)
10122 }, t.prototype.views = function(e, t) {
10123 void 0 === e && (e = "entering");
10124 var n = this._treeChanges[e];
10125 return (n = t ? n.filter(Ie("state", t)) : n).map(Ne("views")).filter(u).reduce(kt, [])
10126 }, t.prototype.treeChanges = function(e) {
10127 return e ? this._treeChanges[e] : this._treeChanges
10128 }, t.prototype.redirect = function(e) {
10129 for (var t = 1, n = this; null != (n = n.redirectedFrom());)
10130 if (++t > 20) throw new Error("Too many consecutive Transition redirects (20+)");
10132 redirectedFrom: this,
10135 "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
10136 var i = ft({}, this.options(), e.options(), r);
10137 e = e.withOptions(i, !0);
10138 var o = this.router.transitionService.create(this._treeChanges.from, e),
10139 a = this._treeChanges.entering,
10140 s = o._treeChanges.entering;
10141 return tn.matching(s, a, tn.nonDynamicParams).filter(Pe(function(e) {
10142 return function(t) {
10143 return e && t.state.includes[e.name]
10145 }(e.options().reloadState))).forEach(function(e, t) {
10146 e.resolvables = a[t].resolvables
10148 }, t.prototype._changedParams = function() {
10149 var e = this._treeChanges;
10150 if (!(this._options.reload || e.exiting.length || e.entering.length || e.to.length !== e.from.length || x(e.to, e.from).map(function(e) {
10151 return e[0].state !== e[1].state
10152 }).reduce(Et, !1))) {
10153 var t = e.to.map(function(e) {
10154 return e.paramSchema
10156 n = [e.to, e.from].map(function(e) {
10157 return e.map(function(e) {
10158 return e.paramValues
10161 return x(t, n[0], n[1]).map(function(e) {
10165 return Jt.changed(t, n, r)
10168 }, t.prototype.dynamic = function() {
10169 var e = this._changedParams();
10170 return !!e && e.map(function(e) {
10173 }, t.prototype.ignored = function() {
10174 return !!this._ignoredReason()
10175 }, t.prototype._ignoredReason = function() {
10176 var e = this.router.globals.transition,
10177 t = this._options.reloadState,
10178 n = function(e, n) {
10179 if (e.length !== n.length) return !1;
10180 var r = tn.matching(e, n);
10181 return e.length === r.filter(function(e) {
10182 return !t || !e.state.includes[t.name]
10185 r = this.treeChanges(),
10186 i = e && e.treeChanges();
10187 return i && n(i.to, r.to) && n(i.exiting, r.exiting) ? "SameAsPending" : 0 === r.exiting.length && 0 === r.entering.length && n(r.from, r.to) ? "SameAsCurrent" : void 0
10188 }, t.prototype.run = function() {
10190 n = Yt.runAllHooks,
10192 return t._hookBuilder.buildHooksForPhase(e)
10194 i = r(e.TransitionHookPhase.BEFORE);
10195 return Yt.invokeHooks(i, function() {
10196 var e = t.router.globals;
10197 return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), zt.traceTransitionStart(t), at.$q.when(void 0)
10198 }).then(function() {
10199 var t = r(e.TransitionHookPhase.RUN);
10200 return Yt.invokeHooks(t, function() {
10201 return at.$q.when(void 0)
10203 }).then(function() {
10204 zt.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(e.TransitionHookPhase.SUCCESS))
10206 zt.traceError(i, t), t.success = !1, t._deferred.reject(i), t._error = i, n(r(e.TransitionHookPhase.ERROR))
10208 }, t.prototype.valid = function() {
10209 return !this.error() || void 0 !== this.success
10210 }, t.prototype.abort = function() {
10211 We(this.success) && (this._aborted = !0)
10212 }, t.prototype.error = function() {
10213 var e = this.$to();
10214 if (e.self.abstract) return "Cannot transition to abstract state '" + e.name + "'";
10215 var t = e.parameters(),
10217 r = t.filter(function(e) {
10218 return !e.validates(n[e.id])
10220 return r.length ? "Param values not valid for state '" + e.name + "'. Invalid params: [ " + r.map(function(e) {
10222 }).join(", ") + " ]" : !1 === this.success ? this._error : void 0
10223 }, t.prototype.toString = function() {
10224 var e = this.from(),
10227 return null !== e["#"] && void 0 !== e["#"] ? e : y(e, ["#"])
10229 return "Transition#" + this.$id + "( '" + (Je(e) ? e.name : e) + "'" + G(n(this._treeChanges.from.map(Ne("paramValues")).reduce(yt, {}))) + " -> " + (this.valid() ? "" : "(X) ") + "'" + (Je(t) ? t.name : t) + "'" + G(n(this.params())) + " )"
10230 }, t.diToken = t, t
10234 var t = Pt.isRejectionPromise;
10235 return (pn = pn || c([
10236 [Pe(Ye), qe("undefined")],
10238 [it, qe("[Promise]")],
10240 return e._transitionRejection.toString()
10242 [Le(Pt), s("toString")],
10243 [Le(hn), s("toString")],
10244 [Le(rn), s("toString")],
10250 return function(t) {
10251 if (!t) return ["", ""];
10252 var n = t.indexOf(e);
10253 return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
10256 vn = new RegExp("^(?:[a-z]+:)?//[^/]+/"),
10258 return e.replace(/\/[^/]*$/, "")
10264 return e ? e.replace(/^#/, "") : ""
10268 this.enqueue = !0, this.typeQueue = [], this.defaultTypes = b(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
10269 this.types = pt(E(this.defaultTypes, function(e, t) {
10275 return e.prototype.dispose = function() {
10277 }, e.prototype.type = function(e, t, n) {
10278 if (!Ye(t)) return this.types[e];
10279 if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
10280 return this.types[e] = new Zt(ft({
10282 }, t)), n && (this.typeQueue.push({
10285 }), this.enqueue || this._flushTypeQueue()), this
10286 }, e.prototype._flushTypeQueue = function() {
10287 for (; this.typeQueue.length;) {
10288 var e = this.typeQueue.shift();
10289 if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
10290 ft(this.types[e.name], at.$injector.invoke(e.def))
10295 var e = function(e) {
10296 var t = function(e) {
10297 return null != e ? e.toString() : e
10304 equals: function(e, t) {
10308 return ft({}, n, e)
10320 decode: function(e) {
10321 return parseInt(e, 10)
10324 return !Ke(e) && this.decode(e.toString()) === e
10329 encode: function(e) {
10332 decode: function(e) {
10333 return 0 !== parseInt(e, 10)
10339 encode: function(e) {
10340 return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
10342 decode: function(e) {
10343 if (this.is(e)) return e;
10344 var t = this.capture.exec(e);
10345 return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
10348 return e instanceof Date && !isNaN(e.valueOf())
10350 equals: function(e, t) {
10351 return ["getFullYear", "getMonth", "getDate"].reduce(function(n, r) {
10352 return n && e[r]() === t[r]()
10355 pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
10356 capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
10375 var kn, Cn = function() {
10377 void 0 === e && (e = {}), ft(this, e)
10379 return e.prototype.$inherit = function(e, t, n) {
10380 var r, i = v(t, n),
10384 if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
10385 for (var c in r) a.indexOf(r[c]) >= 0 || (a.push(r[c]), o[r[c]] = this[r[c]]);
10386 return ft({}, o, e)
10390 if (!Qe(e)) return !1;
10391 var t = "^" === e.charAt(0);
10393 val: t ? e.substring(1) : e,
10397 Tn = function(e, t) {
10398 return function(n) {
10400 r && r.url && r.name && r.name.match(/\.\*\*$/) && (r.url += "{remainder:any}");
10403 a = i ? e.compile(i.val, {
10404 params: n.params || {},
10405 paramMap: function(e, t) {
10406 return !1 === r.reloadOnSearch && t && (e = ft(e || {}, {
10411 if (!a) return null;
10412 if (!e.isMatcher(a)) throw new Error("Invalid url '" + a + "' in state '" + n + "'");
10413 return i && i.root ? a : (o && o.navigable || t()).url.append(a)
10417 return function(t) {
10418 return !e(t) && t.url ? t : t.parent ? t.parent.navigable : null
10422 return function(t) {
10423 var n = t.url && t.url.parameters({
10426 r = $t(_t(y(t.params || {}, n.map(Ne("id"))), function(t, n) {
10427 return e.fromConfig(n, null, t)
10429 return n.concat(r).map(function(e) {
10442 return "" === e.name
10447 parent: [function(t) {
10448 return i(t) ? null : e.find(n.parentName(t)) || r()
10452 navigable: [Mn(i)],
10453 params: [An(t.paramFactory)],
10460 return e.prototype.builder = function(e, t) {
10461 var n = this.builders,
10463 return Qe(e) && !Ye(t) ? r.length > 1 ? r : r[0] : Qe(e) && Ze(t) ? (n[e] = r, n[e].push(t), function() {
10464 return n[e].splice(n[e].indexOf(t, 1)) && null
10466 }, e.prototype.build = function(e) {
10470 i = this.parentName(e);
10471 if (i && !n.find(i, void 0, !1)) return null;
10473 if (r.hasOwnProperty(o)) {
10474 var a = r[o].reduce(function(e, t) {
10475 return function(n) {
10482 }, e.prototype.parentName = function(e) {
10483 var t = e.name || "",
10485 if ("**" === n.pop() && n.pop(), n.length) {
10486 if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
10489 return e.parent ? Qe(e.parent) ? e.parent : e.parent.name : ""
10490 }, e.prototype.name = function(e) {
10492 if (-1 !== t.indexOf(".") || !e.parent) return t;
10493 var n = Qe(e.parent) ? e.parent : e.parent.name;
10494 return n ? n + "." + t : t
10501 return e.prototype.isRelative = function(e) {
10502 return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
10503 }, e.prototype.find = function(e, t, n) {
10504 if (void 0 === n && (n = !0), e || "" === e) {
10506 i = r ? e : e.name;
10507 this.isRelative(i) && (i = this.resolvePath(i, t));
10508 var o = this._states[i];
10509 if (o && (r || !(r || o !== e && o.self !== e))) return o;
10511 var a = $t(this._states).filter(function(e) {
10512 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
10514 return a.length > 1 && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
10519 }, e.prototype.resolvePath = function(e, t) {
10520 if (!t) throw new Error("No reference point given for path '" + e + "'");
10521 for (var n = this.find(t), r = e.split("."), i = 0, o = r.length, a = n; i < o; i++)
10522 if ("" !== r[i] || 0 !== i) {
10523 if ("^" !== r[i]) break;
10524 if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
10527 var s = r.slice(i).join(".");
10528 return a.name + (a.name && s ? "." : "") + s
10532 function e(e, t, n, r, i) {
10533 this.$registry = e, this.$urlRouter = t, this.states = n, this.builder = r, this.listeners = i, this.queue = [], this.matcher = e.matcher
10535 return e.prototype.dispose = function() {
10537 }, e.prototype.register = function(e) {
10538 var t = this.queue,
10541 if (!Qe(r)) throw new Error("State must have a valid name");
10542 if (this.states.hasOwnProperty(r) || mt(t.map(Ne("name")), r)) throw new Error("State '" + r + "' is already defined");
10543 return t.push(n), this.flush(), n
10544 }, e.prototype.flush = function() {
10545 for (var e = this, t = this, n = t.queue, r = t.states, i = t.builder, o = [], a = [], s = {}, c = function(t) {
10546 return e.states.hasOwnProperty(t) && e.states[t]
10547 }; n.length > 0;) {
10554 if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
10555 var p = c(u + ".**");
10556 p && this.$registry.deregister(p), r[u] = l, this.attachRoute(l), f >= 0 && a.splice(f, 1), o.push(l)
10559 if (s[u] = n.length, f >= 0 && m === n.length) return n.push(l), r;
10560 f < 0 && a.push(l), n.push(l)
10563 return o.length && this.listeners.forEach(function(e) {
10564 return e("registered", o.map(function(e) {
10568 }, e.prototype.attachRoute = function(e) {
10569 !e.abstract && e.url && this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(e))
10574 this._router = e, this.states = {}, this.listeners = [], this.matcher = new On(this.states), this.builder = new Sn(this.matcher, e.urlMatcherFactory), this.stateQueue = new Dn(this, e.urlRouter, this.states, this.builder, this.listeners), this._registerRoot()
10576 return e.prototype._registerRoot = function() {
10590 (this._root = this.stateQueue.register(e)).navigable = null
10591 }, e.prototype.dispose = function() {
10593 this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(t) {
10594 return e.get(t) && e.deregister(t)
10596 }, e.prototype.onStatesChanged = function(e) {
10597 return this.listeners.push(e),
10599 gt(this.listeners)(e)
10601 }, e.prototype.root = function() {
10603 }, e.prototype.register = function(e) {
10604 return this.stateQueue.register(e)
10605 }, e.prototype._deregisterTree = function(e) {
10607 n = this.get().map(function(e) {
10611 var t = n.filter(function(t) {
10612 return -1 !== e.indexOf(t.parent)
10614 return 0 === t.length ? t : t.concat(r(t))
10617 o = [e].concat(i).reverse();
10618 return o.forEach(function(e) {
10619 var n = t._router.urlRouter;
10620 n.rules().filter(Ie("state", e)).forEach(n.removeRule.bind(n)), delete t.states[e.name]
10622 }, e.prototype.deregister = function(e) {
10623 var t = this.get(e);
10624 if (!t) throw new Error("Can't deregister state; not found: " + e);
10625 var n = this._deregisterTree(t.$$state());
10626 return this.listeners.forEach(function(e) {
10627 return e("deregistered", n.map(function(e) {
10631 }, e.prototype.get = function(e, t) {
10633 if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
10634 return n.states[e].self
10636 var r = this.matcher.find(e, t);
10637 return r && r.self || null
10638 }, e.prototype.decorator = function(e, t) {
10639 return this.builder.builder(e, t)
10642 In = function(e, t, n) {
10643 return e[t] = e[t] || n()
10647 function t(e, n, r, i) {
10649 this.config = i, this._cache = {
10651 }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.pattern = e, this.config = g(this.config, {
10654 caseInsensitive: !1,
10657 for (var a, s, c, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, d = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, f = 0, h = [], p = function(n) {
10658 if (!t.nameValidator.test(n)) throw new Error("Invalid parameter name '" + n + "' in pattern '" + e + "'");
10659 if (w(o._params, Ie("id", n))) throw new Error("Duplicate parameter name '" + n + "' in pattern '" + e + "'")
10660 }, m = function(t, r) {
10661 var i = t[2] || t[3],
10662 a = r ? t[4] : t[4] || ("*" === t[1] ? "[\\s\\S]*" : null);
10666 cfg: o.config.params[i],
10667 segment: e.substring(f, t.index),
10668 type: a ? n.type(a) || function(e) {
10669 return pt(n.type(r ? "query" : "path"), {
10670 pattern: new RegExp(e, o.config.caseInsensitive ? "i" : void 0)
10675 (a = l.exec(e)) && !((s = m(a, !1)).segment.indexOf("?") >= 0);) p(s.id), this._params.push(r.fromPath(s.id, s.type, this.config.paramMap(s.cfg, !1))), this._segments.push(s.segment), h.push([s.segment, M(this._params)]), f = l.lastIndex;
10676 var v = (c = e.substring(f)).indexOf("?");
10678 var b = c.substring(v);
10679 if (c = c.substring(0, v), b.length > 0)
10680 for (f = 0; a = d.exec(b);) p((s = m(a, !0)).id), this._params.push(r.fromSearch(s.id, s.type, this.config.paramMap(s.cfg, !0))), f = l.lastIndex
10682 this._segments.push(c), this._compiled = h.map(function(e) {
10683 return re.apply(null, e)
10686 return t.prototype.append = function(e) {
10687 return this._children.push(e), e._cache = {
10688 path: this._cache.path.concat(e),
10692 }, t.prototype.isRoot = function() {
10693 return this._cache.path[0] === this
10694 }, t.prototype.toString = function() {
10695 return this.pattern
10696 }, t.prototype.exec = function(e, t, n, r) {
10698 void 0 === t && (t = {}), void 0 === r && (r = {});
10699 var o = In(this._cache, "pattern", function() {
10700 return new RegExp(["^", Tt(i._cache.path.map(Ne("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
10702 if (!o) return null;
10703 var a = this.parameters(),
10704 s = a.filter(function(e) {
10705 return !e.isSearch()
10707 c = a.filter(function(e) {
10708 return e.isSearch()
10710 l = this._cache.path.map(function(e) {
10711 return e._segments.length - 1
10712 }).reduce(function(e, t) {
10716 if (l !== o.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
10717 for (var d = 0; d < l; d++) {
10718 for (var f = s[d], h = o[d + 1], p = 0; p < f.replace.length; p++) f.replace[p].from === h && (h = f.replace[p].to);
10719 h && !0 === f.array && (h = function(e) {
10720 var t = function(e) {
10721 return e.split("").reverse().join("")
10723 return E(E(t(e).split(/-(?!\\)/), t), function(e) {
10724 return e.replace(/\\-/g, "-")
10726 }(h)), Ye(h) && (h = f.type.decode(h)), u[f.id] = f.value(h)
10728 return c.forEach(function(e) {
10729 for (var n = t[e.id], r = 0; r < e.replace.length; r++) e.replace[r].from === n && (n = e.replace[r].to);
10730 Ye(n) && (n = e.type.decode(n)), u[e.id] = e.value(n)
10731 }), n && (u["#"] = n), u
10732 }, t.prototype.parameters = function(e) {
10733 return void 0 === e && (e = {}), !1 === e.inherit ? this._params : Tt(this._cache.path.map(function(e) {
10736 }, t.prototype.parameter = function(e, t) {
10738 void 0 === t && (t = {});
10739 var r = this._cache.parent;
10740 return function() {
10741 for (var t = 0, r = n._params; t < r.length; t++) {
10743 if (i.id === e) return i
10745 }() || !1 !== t.inherit && r && r.parameter(e, t) || null
10746 }, t.prototype.validates = function(e) {
10747 var t = function(e, t) {
10748 return !e || e.validates(t)
10750 return e = e || {}, this.parameters().filter(function(t) {
10751 return e.hasOwnProperty(t.id)
10752 }).map(function(n) {
10753 return t(n, e[n.id])
10755 }, t.prototype.format = function(e) {
10757 var n = t.value(e[t.id]),
10758 r = t.validates(n),
10759 i = t.isDefaultValue(n);
10765 squash: !!i && t.squash,
10766 encoded: t.type.encode(n)
10769 void 0 === e && (e = {});
10770 var r = this._cache.path,
10771 i = r.map(t.pathSegmentsAndParams).reduce(kt, []).map(function(e) {
10772 return Qe(e) ? e : n(e)
10774 o = r.map(t.queryParams).reduce(kt, []).map(n);
10775 if (i.concat(o).filter(function(e) {
10776 return !1 === e.isValid
10777 }).length) return null;
10778 var a = i.reduce(function(e, n) {
10779 if (Qe(n)) return e + n;
10783 return !0 === r ? e.match(/\/$/) ? e.slice(0, -1) : e : Qe(r) ? e + r : !1 !== r ? e : null == i ? e : et(i) ? e + E(i, t.encodeDashes).join("-") : o.raw ? e + i : e + encodeURIComponent(i)
10785 s = o.map(function(e) {
10789 i = e.isDefaultValue;
10790 if (!(null == r || i && !1 !== n) && (et(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = E(r, encodeURIComponent)), r.map(function(e) {
10791 return t.id + "=" + e
10793 }).filter(u).reduce(kt, []).join("&");
10794 return a + (s ? "?" + s : "") + (e["#"] ? "#" + e["#"] : "")
10795 }, t.encodeDashes = function(e) {
10796 return encodeURIComponent(e).replace(/-/g, function(e) {
10797 return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
10799 }, t.pathSegmentsAndParams = function(t) {
10800 return x(t._segments, t._params.filter(function(t) {
10801 return t.location === e.DefType.PATH
10802 }).concat(void 0)).reduce(kt, []).filter(function(e) {
10803 return "" !== e && Ye(e)
10805 }, t.queryParams = function(t) {
10806 return t._params.filter(function(t) {
10807 return t.location === e.DefType.SEARCH
10809 }, t.compare = function(e, n) {
10810 var r = function(e) {
10811 return e._cache.segments = e._cache.segments || e._cache.path.map(t.pathSegmentsAndParams).reduce(kt, []).reduce(Z, []).map(function(e) {
10812 return Qe(e) ? Rn(e) : e
10816 return e._cache.weights = e._cache.weights || r(e).map(function(e) {
10817 return "/" === e ? 1 : Qe(e) ? 2 : e instanceof Jt ? 3 : void 0
10822 ! function(e, t, n) {
10823 for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
10824 for (; t.length < r;) t.push(n)
10826 var s, c, l = x(o, a);
10827 for (c = 0; c < l.length; c++)
10828 if (0 != (s = l[c][0] - l[c][1])) return s;
10830 }, t.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, t
10835 this.paramTypes = new En, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this._getConfig = function(e) {
10837 strict: t._isStrictMode,
10838 caseInsensitive: t._isCaseInsensitive
10840 }, this.paramFactory = {
10841 fromConfig: function(n, r, i) {
10842 return new Jt(n, r, i, e.DefType.CONFIG, t)
10844 fromPath: function(n, r, i) {
10845 return new Jt(n, r, i, e.DefType.PATH, t)
10847 fromSearch: function(n, r, i) {
10848 return new Jt(n, r, i, e.DefType.SEARCH, t)
10855 return t.prototype.caseInsensitive = function(e) {
10856 return this._isCaseInsensitive = Ye(e) ? e : this._isCaseInsensitive
10857 }, t.prototype.strictMode = function(e) {
10858 return this._isStrictMode = Ye(e) ? e : this._isStrictMode
10859 }, t.prototype.defaultSquashPolicy = function(e) {
10860 if (Ye(e) && !0 !== e && !1 !== e && !Qe(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
10861 return this._defaultSquashPolicy = Ye(e) ? e : this._defaultSquashPolicy
10862 }, t.prototype.compile = function(e, t) {
10863 return new Pn(e, this.paramTypes, this.paramFactory, this._getConfig(t))
10864 }, t.prototype.isMatcher = function(e) {
10865 if (!Je(e)) return !1;
10867 return dt(Pn.prototype, function(n, r) {
10868 Ze(n) && (t = t && Ye(e[r]) && Ze(e[r]))
10870 }, t.prototype.type = function(e, t, n) {
10871 var r = this.paramTypes.type(e, t, n);
10872 return Ye(t) ? this : r
10873 }, t.prototype.$get = function() {
10874 return this.paramTypes.enqueue = !1, this.paramTypes._flushTypeQueue(), this
10875 }, t.prototype.dispose = function() {
10876 this.paramTypes.dispose()
10883 return e.prototype.compile = function(e) {
10884 return this.router.urlMatcherFactory.compile(e)
10885 }, e.prototype.create = function(e, t) {
10889 return r(n.compile(e))
10891 [Le(Pn), function(e) {
10892 return n.fromUrlMatcher(e, t)
10895 return n.fromState(e, n.router)
10897 [Le(RegExp), function(e) {
10898 return n.fromRegExp(e, t)
10901 return new Ln(e, t)
10905 if (!i) throw new Error("invalid 'what' in when()");
10907 }, e.prototype.fromUrlMatcher = function(e, t) {
10909 Qe(t) && (t = this.router.urlMatcherFactory.compile(t)), Le(Pn)(t) && (n = function(e) {
10914 matchPriority: function(t) {
10915 var n = e.parameters().filter(function(e) {
10916 return e.isOptional
10918 return n.length ? n.filter(function(e) {
10920 }).length / n.length : 1e-6
10924 return ft(new Ln(function(t) {
10925 var n = e.exec(t.path, t.search, t.hash);
10926 return e.validates(n) && n
10928 }, e.prototype.fromState = function(e, t) {
10933 return ft(this.fromUrlMatcher(e.url, function(n) {
10934 var r = t.stateService,
10936 r.href(e, n) !== r.href(i.current, i.params) && r.transitionTo(e, n, {
10941 }, e.prototype.fromRegExp = function(e, t) {
10942 if (e.global || e.sticky) throw new Error("Rule RegExp must not be global or sticky");
10943 var n = Qe(t) ? function(e) {
10944 return t.replace(/\$(\$|\d{1,2})/, function(t, n) {
10945 return e["$" === n ? 0 : Number(n)]
10952 return ft(new Ln(function(t) {
10953 return e.exec(t.path)
10955 }, e.isUrlRule = function(e) {
10956 return e && ["type", "match", "handler"].every(function(t) {
10962 return function(e, t) {
10964 this.match = e, this.type = "RAW", this.matchPriority = function(e) {
10966 }, this.handler = t || u
10969 Fn = function(e, t) {
10970 return (t.priority || 0) - (e.priority || 0)
10972 qn = function(e, t) {
10980 return (n[e.type] || 0) - (n[t.type] || 0)
10982 Un = function(e, t) {
10983 return e.urlMatcher && t.urlMatcher ? Pn.compare(e.urlMatcher, t.urlMatcher) : 0
10985 Vn = function(e, t) {
10990 return n[e.type] && n[t.type] ? 0 : (e.$id || 0) - (t.$id || 0)
10992 kn = function(e, t) {
10994 return 0 !== n ? n : 0 !== (n = qn(e, t)) ? n : 0 !== (n = Un(e, t)) ? n : Vn(e, t)
10996 var zn = function() {
10998 this._sortFn = kn, this._rules = [], this.interceptDeferred = !1, this._id = 0, this._sorted = !1, this._router = t, this.urlRuleFactory = new Hn(t), f(qe(e.prototype), this, qe(this))
11000 return e.prototype.dispose = function() {
11001 this.listen(!1), this._rules = [], delete this._otherwiseFn
11002 }, e.prototype.sort = function(e) {
11003 this._rules = this.stableSort(this._rules, this._sortFn = e || this._sortFn), this._sorted = !0
11004 }, e.prototype.ensureSorted = function() {
11005 this._sorted || this.sort()
11006 }, e.prototype.stableSort = function(e, t) {
11007 var n = e.map(function(e, t) {
11013 return n.sort(function(e, n) {
11014 var r = t(e.elem, n.elem);
11015 return 0 === r ? e.idx - n.idx : r
11016 }), n.map(function(e) {
11019 }, e.prototype.match = function(e) {
11021 this.ensureSorted(), e = ft({
11026 var n = this.rules();
11027 this._otherwiseFn && n.push(this._otherwiseFn);
11028 for (var r, i = 0; i < n.length && (!r || 0 === this._sortFn(n[i], r.rule)); i++) {
11029 var o = function(n) {
11030 var r = n.match(e, t._router);
11034 weight: n.matchPriority(r)
11037 r = !r || o && o.weight > r.weight ? o : r
11040 }, e.prototype.sync = function(e) {
11041 if (!e || !e.defaultPrevented) {
11042 var t = this._router,
11044 r = t.stateService,
11047 search: n.search(),
11053 return n.url(e, !0)
11055 [Bt.isDef, function(e) {
11056 return r.go(e.state, e.params, e.options)
11058 [Le(Bt), function(e) {
11059 return r.go(e.state(), e.params(), e.options())
11061 ])(o && o.rule.handler(o.match, i, t))
11063 }, e.prototype.listen = function(e) {
11065 if (!1 !== e) return this._stopFn = this._stopFn || this._router.urlService.onChange(function(e) {
11068 this._stopFn && this._stopFn(), delete this._stopFn
11069 }, e.prototype.update = function(e) {
11070 var t = this._router.locationService;
11071 e ? this.location = t.path() : t.path() !== this.location && t.url(this.location, !0)
11072 }, e.prototype.push = function(e, t, n) {
11073 var r = n && !!n.replace;
11074 this._router.urlService.url(e.format(t || {}), r)
11075 }, e.prototype.href = function(e, t, n) {
11076 var r = e.format(t);
11077 if (null == r) return null;
11081 var i = this._router.urlService.config,
11083 if (o || null === r || (r = "#" + i.hashPrefix() + r), r = ie(r, o, n.absolute, i.baseHref()), !n.absolute || !r) return r;
11084 var a = !o && r ? "/" : "",
11086 return s = 80 === s || 443 === s ? "" : ":" + s, [i.protocol(), "://", i.host(), s, a, r].join("")
11087 }, e.prototype.rule = function(e) {
11089 if (!Hn.isUrlRule(e)) throw new Error("invalid rule");
11090 return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
11092 return t.removeRule(e)
11094 }, e.prototype.removeRule = function(e) {
11096 }, e.prototype.rules = function() {
11097 return this.ensureSorted(), this._rules.slice()
11098 }, e.prototype.otherwise = function(e) {
11100 this._otherwiseFn = this.urlRuleFactory.create(qe(!0), t), this._sorted = !1
11101 }, e.prototype.initial = function(e) {
11103 this.rule(this.urlRuleFactory.create(function(e, t) {
11104 return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
11106 }, e.prototype.when = function(e, t, n) {
11107 var r = this.urlRuleFactory.create(e, t);
11108 return Ye(n && n.priority) && (r.priority = n.priority), this.rule(r), r
11109 }, e.prototype.deferIntercept = function(e) {
11110 void 0 === e && (e = !0), this.interceptDeferred = e
11116 this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._pluginapi = {
11117 _rootViewContext: this._rootViewContext.bind(this),
11118 _viewConfigFactory: this._viewConfigFactory.bind(this),
11119 _registeredUIViews: function() {
11122 _activeViewConfigs: function() {
11123 return e._viewConfigs
11127 return e.prototype._rootViewContext = function(e) {
11128 return this._rootContext = e || this._rootContext
11129 }, e.prototype._viewConfigFactory = function(e, t) {
11130 this._viewConfigFactories[e] = t
11131 }, e.prototype.createViewConfig = function(e, t) {
11132 var n = this._viewConfigFactories[t.$type];
11133 if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
11135 return et(r) ? r : [r]
11136 }, e.prototype.deactivateViewConfig = function(e) {
11137 zt.traceViewServiceEvent("<- Removing", e), gt(this._viewConfigs, e)
11138 }, e.prototype.activateViewConfig = function(e) {
11139 zt.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
11140 }, e.prototype.sync = function() {
11142 for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
11146 i = this._uiViews.map(function(e) {
11149 o = n(function(e, t, n, r) {
11150 return t * (e(n) - e(r))
11152 a = this._uiViews.sort(o(function(e) {
11153 var t = function(e) {
11154 return e && e.parent ? t(e.parent) + 1 : 1
11156 return 1e4 * e.fqn.split(".").length + t(e.creationContext)
11157 }, 1)).map(function(n) {
11158 var a = r._viewConfigs.filter(e.matches(i, n));
11159 return a.length > 1 && a.sort(o(t, -1)), [n, a[0]]
11161 zt.traceViewSync(a), a.forEach(function(e) {
11163 n = e[1]; - 1 !== r._uiViews.indexOf(t) && t.configUpdated(n)
11165 }, e.prototype.registerUIView = function(e) {
11166 zt.traceViewServiceUIViewEvent("-> Registering", e);
11167 var t = this._uiViews;
11168 return t.filter(function(t) {
11169 return t.fqn === e.fqn && t.$type === e.$type
11170 }).length && zt.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", e), t.push(e), this.sync(),
11172 -1 !== t.indexOf(e) ? (zt.traceViewServiceUIViewEvent("<- Deregistering", e), gt(t)(e)) : zt.traceViewServiceUIViewEvent("Tried removing non-registered uiView", e)
11174 }, e.prototype.available = function() {
11175 return this._uiViews.map(Ne("fqn"))
11176 }, e.prototype.active = function() {
11177 return this._uiViews.filter(Ne("$config")).map(Ne("name"))
11178 }, e.normalizeUIViewTarget = function(e, t) {
11179 void 0 === t && (t = "");
11180 var n = t.split("@"),
11181 r = n[0] || "$default",
11182 i = Qe(n[1]) ? n[1] : "^",
11183 o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
11184 return o && (i = o[1], r = o[2]), "!" === r.charAt(0) && (r = r.substr(1), i = ""), /^(\^(?:\.\^)*)$/.exec(i) ? i = i.split(".").reduce(function(e, t) {
11186 }, e).name : "." === i && (i = e.name), {
11188 uiViewContextAnchor: i
11190 }, e.matches = function(e, t) {
11191 return function(n) {
11192 if (t.$type !== n.viewDecl.$type) return !1;
11193 var r = n.viewDecl,
11194 i = r.$uiViewName.split("."),
11195 o = t.fqn.split(".");
11196 if (!ht(i, o.slice(0 - i.length))) return !1;
11197 var a = 1 - i.length || void 0,
11198 s = o.slice(0, a).join("."),
11199 c = e[s].creationContext;
11200 return r.$uiViewContextAnchor === (c && c.name)
11206 this.params = new Cn, this.lastStartedTransitionId = -1, this.transitionHistory = new It([], 1), this.successfulTransitions = new It([], 1)
11208 return e.prototype.dispose = function() {
11209 this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
11213 return e.reduce(function(e, t) {
11214 return e[t] = ot(t), e
11219 Gn = ["url", "path", "search", "hash", "onChange"],
11220 Kn = ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"],
11221 Zn = ["type", "caseInsensitive", "strictMode", "defaultSquashPolicy"],
11222 Xn = ["sort", "when", "initial", "otherwise", "rules", "rule", "removeRule"],
11223 Qn = ["deferIntercept", "listen", "sync", "match"],
11226 void 0 === t && (t = !0), this.router = e, this.rules = {}, this.config = {};
11227 var n = function() {
11228 return e.locationService
11230 f(n, this, n, Gn, t);
11231 var r = function() {
11232 return e.locationConfig
11234 f(r, this.config, r, Kn, t);
11235 var i = function() {
11236 return e.urlMatcherFactory
11238 f(i, this.config, i, Zn);
11239 var o = function() {
11242 f(o, this.rules, o, Xn), f(o, this, o, Qn)
11244 return e.prototype.url = function(e, t, n) {}, e.prototype.path = function() {}, e.prototype.search = function() {}, e.prototype.hash = function() {}, e.prototype.onChange = function(e) {}, e.prototype.parts = function() {
11247 search: this.search(),
11250 }, e.prototype.dispose = function() {}, e.prototype.sync = function(e) {}, e.prototype.listen = function(e) {}, e.prototype.deferIntercept = function(e) {}, e.prototype.match = function(e) {}, e.locationServiceStub = Yn(Gn), e.locationConfigStub = Yn(Kn), e
11255 void 0 === e && (e = Jn.locationServiceStub), void 0 === t && (t = Jn.locationConfigStub), this.locationService = e, this.locationConfig = t, this.$id = er++, this._disposed = !1, this._disposables = [], this.trace = zt, this.viewService = new Bn, this.transitionService = new Ar(this), this.globals = new Wn, this.urlMatcherFactory = new jn, this.urlRouter = new zn(this), this.stateRegistry = new Nn(this), this.stateService = new Sr(this), this.urlService = new Jn(this), this._plugins = {}, this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()), this.globals.$current = this.stateRegistry.root(), this.globals.current = this.globals.$current.self, this.disposable(this.globals), this.disposable(this.stateService), this.disposable(this.stateRegistry), this.disposable(this.transitionService), this.disposable(this.urlRouter), this.disposable(e), this.disposable(t)
11257 return e.prototype.disposable = function(e) {
11258 this._disposables.push(e)
11259 }, e.prototype.dispose = function(e) {
11261 e && Ze(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
11263 "function" == typeof e.dispose && e.dispose(t), gt(t._disposables, e)
11266 }, e.prototype.plugin = function(e, t) {
11267 void 0 === t && (t = {});
11268 var n = new e(this, t);
11269 if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
11270 return this._disposables.push(n), this._plugins[n.name] = n
11271 }, e.prototype.getPlugin = function(e) {
11272 return e ? this._plugins[e] : $t(this._plugins)
11276 return e.onCreate({}, ae)
11280 if (t) return t instanceof Bt ? t : Qe(t) ? r.target(t, e.params(), e.options()) : t.state || t.params ? r.target(t.state || e.to(), t.params || e.params(), e.options()) : void 0
11282 var n = e.to().redirectTo;
11284 var r = e.router.stateService;
11285 return Ze(n) ? at.$q.when(n(e)).then(t) : t(n)
11291 return !!e.redirectTo
11298 exiting: function(e) {
11303 sr = se("onRetain"),
11305 return e.onRetain({
11306 retained: function(e) {
11307 return !!e.onRetain
11311 lr = se("onEnter"),
11314 entering: function(e) {
11320 return new un(e.treeChanges().to).resolvePath("EAGER", e).then(d)
11323 return e.onStart({}, dr, {
11327 hr = function(e, t) {
11328 return new un(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(d)
11339 n = e.views("entering");
11340 if (n.length) return t.all(n.map(function(e) {
11341 return t.when(e.load())
11345 return e.onFinish({}, mr)
11348 var t = e.views("entering"),
11349 n = e.views("exiting");
11350 if (t.length || n.length) {
11351 var r = e.router.viewService;
11352 n.forEach(function(e) {
11353 return r.deactivateViewConfig(e)
11354 }), t.forEach(function(e) {
11355 return r.activateViewConfig(e)
11360 return e.onSuccess({}, vr)
11363 var t = e.router.globals,
11365 t.transition === e && (t.transition = null)
11367 e.onSuccess({}, function() {
11368 t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, A(e.params(), t.params)
11371 }), e.promise.then(n, n)
11374 return e.onCreate({}, yr)
11377 var t = e.options(),
11378 n = e.router.stateService,
11379 r = e.router.urlRouter;
11380 if ("url" !== t.source && t.location && n.$current.navigable) {
11382 replace: "replace" === t.location
11384 r.push(n.$current.navigable.url, n.params, i)
11389 return e.onSuccess({}, $r, {
11395 n = e.entering().filter(function(e) {
11396 return !!e.$$state().lazyLoad
11397 }).map(function(t) {
11400 return at.$q.all(n).then(function() {
11401 if ("url" !== e.originalTransition().options().source) {
11402 var n = e.targetState();
11403 return t.stateService.target(n.identifier(), n.params(), n.options())
11405 var r = t.urlService,
11406 i = r.match(r.parts()),
11408 if (o && "STATE" === o.type) {
11411 return t.stateService.target(a, s, e.options())
11413 t.urlService.sync()
11417 return e.onBefore({
11418 entering: function(e) {
11419 return !!e.lazyLoad
11424 return function(e, t, n, r, i, o, a, s) {
11425 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1), this.name = e, this.hookPhase = t, this.hookOrder = n, this.criteriaMatchPath = r, this.reverseSort = i, this.getResultHandler = o, this.getErrorHandler = a, this.synchronous = s
11429 return e.onBefore({}, le, {
11434 return e.onBefore({}, ue, {
11445 current: function() {
11452 this._transitionCount = 0, this._eventTypes = [], this._registeredHooks = {}, this._criteriaPaths = {}, this._router = e, this.$view = e.viewService, this._deregisterHookFns = {}, this._pluginapi = f(qe(this), {}, qe(this), ["_definePathType", "_defineEvent", "_getPathTypes", "_getEvents", "getHooks"]), this._defineCorePaths(), this._defineCoreEvents(), this._registerCoreTransitionHooks()
11454 return t.prototype.onCreate = function(e, t, n) {}, t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.dispose = function(e) {
11455 $t(this._registeredHooks).forEach(function(e) {
11456 return e.forEach(function(t) {
11457 t._deregistered = !0, gt(e, t)
11460 }, t.prototype.create = function(e, t) {
11461 return new hn(e, t, this._router)
11462 }, t.prototype._defineCoreEvents = function() {
11463 var t = e.TransitionHookPhase,
11465 r = this._criteriaPaths;
11466 this._defineEvent("onCreate", t.CREATE, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.THROW_ERROR, !0), this._defineEvent("onBefore", t.BEFORE, 0, r.to), this._defineEvent("onStart", t.RUN, 0, r.to), this._defineEvent("onExit", t.RUN, 100, r.exiting, !0), this._defineEvent("onRetain", t.RUN, 200, r.retained), this._defineEvent("onEnter", t.RUN, 300, r.entering), this._defineEvent("onFinish", t.RUN, 400, r.to), this._defineEvent("onSuccess", t.SUCCESS, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0), this._defineEvent("onError", t.ERROR, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0)
11467 }, t.prototype._defineCorePaths = function() {
11468 var t = e.TransitionHookScope.STATE,
11469 n = e.TransitionHookScope.TRANSITION;
11470 this._definePathType("to", n), this._definePathType("from", n), this._definePathType("exiting", t), this._definePathType("retained", t), this._definePathType("entering", t)
11471 }, t.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
11472 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1);
11473 var c = new Cr(e, t, n, r, i, o, a, s);
11474 this._eventTypes.push(c), P(this, this, c)
11475 }, t.prototype._getEvents = function(e) {
11476 return (Ye(e) ? this._eventTypes.filter(function(t) {
11477 return t.hookPhase === e
11478 }) : this._eventTypes.slice()).sort(function(e, t) {
11479 var n = e.hookPhase - t.hookPhase;
11480 return 0 === n ? e.hookOrder - t.hookOrder : n
11482 }, t.prototype._definePathType = function(e, t) {
11483 this._criteriaPaths[e] = {
11487 }, t.prototype._getPathTypes = function() {
11488 return this._criteriaPaths
11489 }, t.prototype.getHooks = function(e) {
11490 return this._registeredHooks[e]
11491 }, t.prototype._registerCoreTransitionHooks = function() {
11492 var e = this._deregisterHookFns;
11493 e.addCoreResolves = nr(this), e.ignored = xr(this), e.invalid = Tr(this), e.redirectTo = ir(this), e.onExit = ar(this), e.onRetain = cr(this), e.onEnter = ur(this), e.eagerResolve = fr(this), e.lazyResolve = pr(this), e.loadViews = gr(this), e.activateViews = br(this), e.updateGlobals = _r(this), e.updateUrl = wr(this), e.lazyLoad = kr(this)
11498 this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
11499 e instanceof Error && e.stack ? (console.error(e), console.error(e.stack)) : e instanceof Pt ? (console.error(e.toString()), e.detail && e.detail.stack && console.error(e.detail.stack)) : console.error(e)
11501 var n = ["current", "$current", "params", "transition"],
11502 r = Object.keys(t.prototype).filter(Pe(mt(n)));
11503 f(qe(t.prototype), this, qe(this), r)
11505 return Object.defineProperty(t.prototype, "transition", {
11507 return this.router.globals.transition
11511 }), Object.defineProperty(t.prototype, "params", {
11513 return this.router.globals.params
11517 }), Object.defineProperty(t.prototype, "current", {
11519 return this.router.globals.current
11523 }), Object.defineProperty(t.prototype, "$current", {
11525 return this.router.globals.$current
11529 }), t.prototype.dispose = function() {
11530 this.defaultErrorHandler(d), this.invalidCallbacks = []
11531 }, t.prototype._handleInvalidTargetState = function(e, t) {
11533 var e = c.dequeue();
11534 return void 0 === e ? Pt.invalid(t.error()).toPromise() : at.$q.when(e(t, i, l)).then(u).then(function(e) {
11539 i = tn.makeTargetState(this.router.stateRegistry, e),
11540 o = this.router.globals,
11542 return o.transitionHistory.peekTail()
11545 c = new It(this.invalidCallbacks.slice()),
11546 l = new un(e).injector(),
11548 if (e instanceof Bt) {
11550 return (t = r.target(t.identifier(), t.params(), t.options())).valid() ? a() !== s ? Pt.superseded().toPromise() : r.transitionTo(t.identifier(), t.params(), t.options()) : Pt.invalid(t.error()).toPromise()
11554 }, t.prototype.onInvalid = function(e) {
11555 return this.invalidCallbacks.push(e),
11557 gt(this.invalidCallbacks)(e)
11559 }, t.prototype.reload = function(e) {
11560 return this.transitionTo(this.current, this.params, {
11561 reload: !Ye(e) || e,
11565 }, t.prototype.go = function(e, t, n) {
11567 relative: this.$current,
11570 return this.transitionTo(e, t, r)
11571 }, t.prototype.target = function(e, t, n) {
11572 if (void 0 === n && (n = {}), Je(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
11573 var r = this.router.stateRegistry;
11574 if (n.reloadState = !0 === n.reload ? r.root() : r.matcher.find(n.reload, n.relative), n.reload && !n.reloadState) throw new Error("No such reload state '" + (Qe(n.reload) ? n.reload : n.reload.name) + "'");
11575 return new Bt(this.router.stateRegistry, e, t, n)
11576 }, t.prototype.getCurrentPath = function() {
11578 t = this.router.globals.successfulTransitions.peekTail();
11579 return t ? t.treeChanges().to : [new en(e.router.stateRegistry.root())]
11580 }, t.prototype.transitionTo = function(t, n, r) {
11582 void 0 === n && (n = {}), void 0 === r && (r = {});
11583 var o = this.router,
11587 current: function() {
11588 return a.transition
11591 var s = this.target(t, n, r),
11592 c = this.getCurrentPath();
11593 if (!s.exists()) return this._handleInvalidTargetState(c, s);
11594 if (!s.valid()) return Nt(s.error());
11595 var l = function(t) {
11596 return function(n) {
11597 if (n instanceof Pt) {
11598 var r = o.globals.lastStartedTransitionId === t.$id;
11599 if (n.type === e.RejectType.IGNORED) return r && o.urlRouter.update(), at.$q.when(a.current);
11601 if (n.type === e.RejectType.SUPERSEDED && n.redirected && s instanceof Bt) {
11602 var c = t.redirect(s);
11603 return c.run().catch(l(c))
11605 if (n.type === e.RejectType.ABORTED) return r && o.urlRouter.update(), at.$q.reject(n)
11607 return i.defaultErrorHandler()(n), at.$q.reject(n)
11610 u = this.router.transitionService.create(c, s),
11611 d = u.run().catch(l(u));
11612 return Dt(d), ft(d, {
11615 }, t.prototype.is = function(e, t, n) {
11617 relative: this.$current
11619 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11621 if (this.$current !== r) return !1;
11623 var i = r.parameters({
11627 return Jt.equals(i, Jt.values(i, t), this.params)
11629 }, t.prototype.includes = function(e, t, n) {
11631 relative: this.$current
11633 var r = Qe(e) && Ue.fromString(e);
11635 if (!r.matches(this.$current.name)) return !1;
11636 e = this.$current.name
11638 var i = this.router.stateRegistry.matcher.find(e, n.relative),
11639 o = this.$current.includes;
11641 if (!Ye(o[i.name])) return !1;
11643 var a = i.parameters({
11647 return Jt.equals(a, Jt.values(a, t), this.params)
11649 }, t.prototype.href = function(e, t, n) {
11654 relative: this.$current
11656 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11657 if (!Ye(r)) return null;
11658 n.inherit && (t = this.params.$inherit(t, this.$current, r));
11659 var i = r && n.lossy ? r.navigable : r;
11660 return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
11661 absolute: n.absolute
11663 }, t.prototype.defaultErrorHandler = function(e) {
11664 return this._defaultErrorHandler = e || this._defaultErrorHandler
11665 }, t.prototype.get = function(e, t) {
11666 var n = this.router.stateRegistry;
11667 return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
11668 }, t.prototype.lazyLoad = function(e, t) {
11669 var n = this.get(e);
11670 if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
11671 var r = this.getCurrentPath(),
11672 i = tn.makeTargetState(this.router.stateRegistry, r);
11673 return t = t || this.router.transitionService.create(r, i), ce(t, n)
11677 when: function(e) {
11678 return new Promise(function(t, n) {
11682 reject: function(e) {
11683 return new Promise(function(t, n) {
11687 defer: function() {
11689 return e.promise = new Promise(function(t, n) {
11690 e.resolve = t, e.reject = n
11694 if (et(e)) return Promise.all(e);
11696 var t = Object.keys(e).map(function(t) {
11697 return e[t].then(function(e) {
11704 return Or.all(t).then(function(e) {
11705 return e.reduce(function(e, t) {
11706 return e[t.key] = t.val, e
11713 Nr = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
11720 return null != Rr.get(e)
11722 invoke: function(e, t, n) {
11723 var r = ft({}, Dr, n || {}),
11724 i = Rr.annotate(e),
11725 o = At(function(e) {
11726 return r.hasOwnProperty(e)
11728 return "DI can't find injectable: '" + e + "'"
11730 a = i.filter(o).map(function(e) {
11733 return Ze(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
11735 annotate: function(e) {
11736 if (!l(e)) throw new Error("Not an injectable function: " + e);
11737 if (e && e.$inject) return e.$inject;
11738 if (et(e)) return e.slice(0, -1);
11739 var t = e.toString().replace(Nr, "");
11740 return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(Ir) || []
11743 Pr = function(e, t) {
11746 return e.hasOwnProperty(n) ? et(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
11749 return e.split("&").filter(u).map($n).reduce(Pr, {})
11755 i = Object.keys(n).map(function(e) {
11757 return (et(t) ? t : [t]).map(function(t) {
11760 }).reduce(kt, []).join("&");
11761 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
11766 this.fireAfterUpdate = t, this._listener = function(e) {
11767 return n._listeners.forEach(function(t) {
11770 }, this._listeners = [], this.hash = function() {
11771 return de(n._get()).hash
11772 }, this.path = function() {
11773 return de(n._get()).path
11774 }, this.search = function() {
11775 return jr(de(n._get()).search)
11776 }, this._location = st.location, this._history = st.history
11778 return e.prototype.url = function(e, t) {
11779 return void 0 === t && (t = !0), Ye(e) && e !== this._get() && (this._set(null, null, e, t), this.fireAfterUpdate && this._listeners.forEach(function(t) {
11784 }, e.prototype.onChange = function(e) {
11786 return this._listeners.push(e),
11788 return gt(t._listeners, e)
11790 }, e.prototype.dispose = function(e) {
11791 bt(this._listeners)
11795 var e = Object.setPrototypeOf || {
11798 instanceof Array && function(e, t) {
11800 } || function(e, t) {
11801 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11803 return function(t, n) {
11805 this.constructor = t
11807 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11812 var n = e.call(this, t, !1) || this;
11813 return st.addEventListener("hashchange", n._listener, !1), n
11815 return Fr(t, e), t.prototype._get = function() {
11816 return wn(this._location.hash)
11817 }, t.prototype._set = function(e, t, n, r) {
11818 this._location.hash = n
11819 }, t.prototype.dispose = function(t) {
11820 e.prototype.dispose.call(this, t), st.removeEventListener("hashchange", this._listener)
11824 var e = Object.setPrototypeOf || {
11827 instanceof Array && function(e, t) {
11829 } || function(e, t) {
11830 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11832 return function(t, n) {
11834 this.constructor = t
11836 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11841 return e.call(this, t, !0) || this
11843 return Ur(t, e), t.prototype._get = function() {
11845 }, t.prototype._set = function(e, t, n, r) {
11850 var e = Object.setPrototypeOf || {
11853 instanceof Array && function(e, t) {
11855 } || function(e, t) {
11856 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11858 return function(t, n) {
11860 this.constructor = t
11862 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
11867 var n = e.call(this, t, !0) || this;
11868 return n._config = t.urlService.config, st.addEventListener("popstate", n._listener, !1), n
11870 return zr(t, e), t.prototype._getBasePrefix = function() {
11871 return bn(this._config.baseHref())
11872 }, t.prototype._get = function() {
11873 var e = this._location,
11877 r = _n(r)[1], n = yn(n)[1];
11878 var i = this._getBasePrefix(),
11879 o = t === this._config.baseHref(),
11880 a = t.startsWith(i);
11881 return (t = o ? "/" : a ? t.substring(i.length) : t) + (r ? "?" + r : "") + (n ? "#" + n : "")
11882 }, t.prototype._set = function(e, t, n, r) {
11883 var i = this._getBasePrefix() + n;
11884 r ? this._history.replaceState(e, t, i) : this._history.pushState(e, t, i)
11885 }, t.prototype.dispose = function(t) {
11886 e.prototype.dispose.call(this, t), st.removeEventListener("popstate", this._listener)
11890 return function() {
11892 this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
11894 }, this.protocol = function() {
11896 }, this.host = function() {
11898 }, this.baseHref = function() {
11900 }, this.html5Mode = function() {
11902 }, this.hashPrefix = function(t) {
11903 return Ye(t) ? e._hashPrefix = t : e._hashPrefix
11904 }, this.dispose = d
11909 void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
11911 return e.prototype.port = function() {
11912 return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
11913 }, e.prototype.protocol = function() {
11914 return location.protocol.replace(/:/g, "")
11915 }, e.prototype.host = function() {
11916 return location.hostname
11917 }, e.prototype.html5Mode = function() {
11918 return this._isHtml5
11919 }, e.prototype.hashPrefix = function(e) {
11920 return Ye(e) ? this._hashPrefix = e : this._hashPrefix
11921 }, e.prototype.baseHref = function(e) {
11922 return Ye(e) ? this._baseHref = e : Ye(this._baseHref) ? this._baseHref : this.applyDocumentBaseHref()
11923 }, e.prototype.applyDocumentBaseHref = function() {
11924 var e = document.getElementsByTagName("base")[0];
11925 return this._baseHref = e ? e.href.substr(location.origin.length) : ""
11926 }, e.prototype.dispose = function() {}, e
11928 Gr = fe("vanilla.hashBangLocation", !1, qr, Yr),
11929 Kr = fe("vanilla.pushStateLocation", !0, Br, Yr),
11930 Zr = fe("vanilla.memoryLocation", !1, Vr, Wr),
11933 return e.prototype.dispose = function(e) {}, e
11935 Qr = Object.freeze({
11944 createProxyFunctions: f,
11972 assertPredicate: At,
11981 silenceUncaughtInPromise: Dt,
11982 silentRejection: Nt,
11983 notImplemented: ot,
12005 isNullOrUndefined: Ke,
12020 functionToString: W,
12023 beforeAfterSubstr: gn,
12046 resolvePolicies: on,
12047 defaultResolvePolicy: nn,
12049 NATIVE_INJECTOR_TOKEN: ln,
12050 ResolveContext: un,
12051 resolvablesBuilder: ne,
12055 StateQueueManager: Dn,
12059 get TransitionHookPhase() {
12060 return e.TransitionHookPhase
12062 get TransitionHookScope() {
12063 return e.TransitionHookScope
12067 RegisteredHook: Gt,
12070 return e.RejectType
12074 TransitionHook: Yt,
12075 TransitionEventType: Cr,
12076 defaultTransOpts: Mr,
12077 TransitionService: Ar,
12079 UrlMatcherFactory: jn,
12081 UrlRuleFactory: Hn,
12085 UIRouterGlobals: Wn,
12089 BaseLocationServices: Lr,
12090 HashLocationService: qr,
12091 MemoryLocationService: Vr,
12092 PushStateLocationService: Br,
12093 MemoryLocationConfig: Wr,
12094 BrowserLocationConfig: Yr,
12095 keyValsToObjectR: Pr,
12099 locationPluginFactory: fe,
12100 servicesPlugin: he,
12101 hashLocationPlugin: Gr,
12102 pushStateLocationPlugin: Kr,
12103 memoryLocationPlugin: Zr,
12104 UIRouterPluginBase: Xr
12106 Jr = function(e, t) {
12107 return e.reduce(function(e, n) {
12108 return e || Ye(t[n])
12113 function e(e, t, n) {
12115 this.path = e, this.viewDecl = t, this.factory = n, this.$id = ei++, this.loaded = !1, this.getTemplate = function(e, t) {
12116 return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
12119 return e.prototype.load = function() {
12122 n = new un(this.path),
12123 r = this.path.reduce(function(e, t) {
12124 return ft(e, t.paramValues)
12127 template: t.when(this.factory.fromConfig(this.viewDecl, r, n)),
12128 controller: t.when(this.getController(n))
12130 return t.all(i).then(function(t) {
12131 return zt.traceViewServiceEvent("Loaded", e), e.controller = t.controller, ft(e, t.template), e
12133 }, e.prototype.getController = function(e) {
12134 var t = this.viewDecl.controllerProvider;
12135 if (!l(t)) return this.viewDecl.controller;
12136 var n = at.$injector.annotate(t),
12137 r = et(t) ? M(t) : t;
12138 return new rn("", r, n).get(e)
12144 this._useHttp = De.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(t, n, r) {
12145 return e.$templateRequest = r.has && r.has("$templateRequest") && r.get("$templateRequest"), e.$http = t, e.$templateCache = n, e
12148 return e.prototype.useHttpService = function(e) {
12150 }, e.prototype.fromConfig = function(e, t, n) {
12151 var r = function(e) {
12152 return at.$q.when(e).then(function(e) {
12159 return at.$q.when(e).then(function(e) {
12165 return Ye(e.template) ? r(this.fromString(e.template, t)) : Ye(e.templateUrl) ? r(this.fromUrl(e.templateUrl, t)) : Ye(e.templateProvider) ? r(this.fromProvider(e.templateProvider, t, n)) : Ye(e.component) ? i(e.component) : Ye(e.componentProvider) ? i(this.fromComponentProvider(e.componentProvider, t, n)) : r("<ui-view></ui-view>")
12166 }, e.prototype.fromString = function(e, t) {
12167 return Ze(e) ? e(t) : e
12168 }, e.prototype.fromUrl = function(e, t) {
12169 return Ze(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
12170 cache: this.$templateCache,
12172 Accept: "text/html"
12174 }).then(function(e) {
12176 }) : this.$templateRequest(e)
12177 }, e.prototype.fromProvider = function(e, t, n) {
12178 var r = at.$injector.annotate(e),
12179 i = et(e) ? M(e) : e;
12180 return new rn("", i, r).get(n)
12181 }, e.prototype.fromComponentProvider = function(e, t, n) {
12182 var r = at.$injector.annotate(e),
12183 i = et(e) ? M(e) : e;
12184 return new rn("", i, r).get(n)
12185 }, e.prototype.makeComponentTemplate = function(e, t, n, r) {
12187 var i = De.version.minor >= 3 ? "::" : "",
12190 return /^(x|data)-/.exec(t) ? "x-" + t : t
12192 a = ge(n).map(function(n) {
12196 if (e.attr(c) && !r[a]) return c + "='" + e.attr(c) + "'";
12198 if ("@" === s) return c + "='{{" + i + "$resolve." + l + "}}'";
12200 var u = t.getResolvable(l),
12202 f = d && at.$injector.annotate(d) || [];
12203 return c + "='$resolve." + l + (et(d) ? "[" + (d.length - 1) + "]" : "") + "(" + f.join(",") + ")'"
12205 return c + "='" + i + "$resolve." + l + "'"
12208 return "<" + s + " " + a + "></" + s + ">"
12212 return ii(Je(e.bindToController) ? e.bindToController : e.scope)
12215 return Object.keys(e || {}).map(function(t) {
12216 return [t, /^([=<@&])[?]?(.*)/.exec(e[t])]
12217 }).filter(function(e) {
12218 return Ye(e) && et(e[1])
12219 }).map(function(e) {
12221 name: e[1][2] || e[0],
12228 this.stateRegistry = t, this.stateService = n, f(qe(e.prototype), this, qe(this))
12230 return e.prototype.decorator = function(e, t) {
12231 return this.stateRegistry.decorator(e, t) || this
12232 }, e.prototype.state = function(e, t) {
12233 return Je(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
12234 }, e.prototype.onInvalid = function(e) {
12235 return this.stateService.onInvalid(e)
12239 return function(t, n) {
12241 i = "onExit" === e ? "from" : "to";
12242 return r ? function(e, t) {
12243 var n = new un(e.treeChanges(i)),
12248 return at.$injector.invoke(r, this, o)
12254 this._urlListeners = [], this.$locationProvider = e;
12256 f(t, this, t, ["hashPrefix"])
12258 return e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
12260 return this._urlListeners.push(e),
12262 return gt(t._urlListeners)(e)
12264 }, e.prototype.html5Mode = function() {
12265 var e = this.$locationProvider.html5Mode();
12266 return (e = Je(e) ? e.enabled : e) && this.$sniffer.history
12267 }, e.prototype.url = function(e, t, n) {
12268 return void 0 === t && (t = !1), e && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
12269 }, e.prototype._runtimeServices = function(e, t, n, r) {
12271 this.$location = t, this.$sniffer = n, e.$on("$locationChangeSuccess", function(e) {
12272 return i._urlListeners.forEach(function(t) {
12278 f(o, this, o, ["replace", "path", "search", "hash"]), f(o, this, o, ["port", "protocol", "host"]), f(a, this, a, ["baseHref"])
12279 }, e.monkeyPatchPathParameterType = function(e) {
12280 var t = e.urlMatcherFactory.type("path");
12281 t.encode = function(e) {
12282 return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
12288 }, t.decode = function(e) {
12289 return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
12300 this._router = e, this._urlRouter = e.urlRouter
12302 return e.prototype.$get = function() {
12303 var e = this._urlRouter;
12304 return e.update(!0), e.interceptDeferred || e.listen(), e
12305 }, e.prototype.rule = function(e) {
12307 if (!Ze(e)) throw new Error("'rule' must be a function");
12308 var n = new Ln(function() {
12309 return e(at.$injector, t._router.locationService)
12311 return this._urlRouter.rule(n), this
12312 }, e.prototype.otherwise = function(e) {
12314 n = this._urlRouter;
12315 if (Qe(e)) n.otherwise(e);
12317 if (!Ze(e)) throw new Error("'rule' must be a string or function");
12318 n.otherwise(function() {
12319 return e(at.$injector, t._router.locationService)
12323 }, e.prototype.when = function(t, n) {
12324 return (et(n) || Ze(n)) && (n = e.injectableHandler(this._router, n)), this._urlRouter.when(t, n), this
12325 }, e.injectableHandler = function(e, t) {
12326 return function(n) {
12327 return at.$injector.invoke(t, null, {
12329 $stateParams: e.globals.params
12332 }, e.prototype.deferIntercept = function(e) {
12333 this._urlRouter.deferIntercept(e)
12336 De.module("ui.router.angular1", []);
12337 var li = De.module("ui.router.init", []),
12338 ui = De.module("ui.router.util", ["ng", "ui.router.init"]),
12339 di = De.module("ui.router.router", ["ui.router.util"]),
12340 fi = De.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
12341 hi = De.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
12342 pi = (De.module("ui.router.compat", ["ui.router"]), null);
12343 ve.$inject = ["$locationProvider"];
12344 var mi = function(e) {
12345 return ["$uiRouterProvider", function(t) {
12346 var n = t.router[e];
12347 return n.$get = function() {
12352 be.$inject = ["$injector", "$q", "$uiRouter"];
12353 ye.$inject = ["$rootScope"], li.provider("$uiRouter", ve), di.provider("$urlRouter", ["$uiRouterProvider", function(e) {
12354 return e.urlRouterProvider = new ci(e)
12355 }]), ui.provider("$urlService", mi("urlService")), ui.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
12356 return pi.urlMatcherFactory
12357 }]), ui.provider("$templateFactory", function() {
12359 }), fi.provider("$stateRegistry", mi("stateRegistry")), fi.provider("$uiRouterGlobals", mi("globals")), fi.provider("$transitions", mi("transitionService")), fi.provider("$state", ["$uiRouterProvider", function() {
12360 return ft(pi.stateProvider, {
12362 return pi.stateService
12365 }]), fi.factory("$stateParams", ["$uiRouter", function(e) {
12366 return e.globals.params
12367 }]), hi.factory("$view", function() {
12368 return pi.viewService
12369 }), hi.service("$trace", function() {
12371 }), hi.run(ye), ui.run(["$urlMatcherFactory", function(e) {}]), fi.run(["$state", function(e) {}]), di.run(["$urlRouter", function(e) {}]), li.run(be);
12372 var gi, vi = function(e) {
12373 return e.getTokens().filter(Qe).map(function(t) {
12374 var n = e.getResolvable(t);
12375 return [t, "NOWAIT" === e.getPolicy(n).async ? n.promise : n.data]
12378 gi = ["$uiRouter", "$timeout", function(e, t) {
12379 var n = e.stateService;
12382 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12383 link: function(r, i, o, a) {
12386 d && d(), u && (d = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
12396 f.uiState = p.state, f.uiStateOpts = o.uiSrefOpts ? r.$eval(o.uiSrefOpts) : {}, p.paramExpr && (r.$watch(p.paramExpr, function(e) {
12397 f.uiStateParams = ft({}, e), s()
12398 }, !0), f.uiStateParams = ft({}, r.$eval(p.paramExpr))), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = ke(i, n, t, l, h), xe(i, r, c, f.uiStateOpts))
12403 bi = ["$uiRouter", "$timeout", function(e, t) {
12404 var n = e.stateService;
12407 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12408 link: function(r, i, o, a) {
12411 f && f(), u && (f = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
12420 m = ["uiState", "uiStateParams", "uiStateOpts"],
12421 g = m.reduce(function(e, t) {
12424 m.forEach(function(e) {
12425 h[e] = o[e] ? r.$eval(o[e]) : null, o.$observe(e, function(t) {
12426 g[e](), g[e] = r.$watch(t, function(t) {
12430 }), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = ke(i, n, t, l, p), xe(i, r, c, h.uiStateOpts))
12435 yi = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(e, t, n, r) {
12438 controller: ["$scope", "$element", "$attrs", function(t, i, o) {
12440 e.promise.then(c, d)
12443 function s(t, n, r) {
12445 state: e.get(t, $e(i)) || {
12458 var n = function(e) {
12459 return e.split(/\s/).filter(u)
12462 return e.map(function(e) {
12463 return e.activeClass
12464 }).map(n).reduce(kt, [])
12466 o = r(h).concat(n(l)).reduce(xt, []),
12467 a = r(h.filter(function(t) {
12468 return e.includes(t.state.name, t.params)
12470 s = !!h.filter(function(t) {
12471 return e.is(t.state.name, t.params)
12472 }).length ? n(l) : [],
12473 c = a.concat(s).reduce(xt, []),
12474 d = o.filter(function(e) {
12477 t.$evalAsync(function() {
12478 c.forEach(function(e) {
12479 return i.addClass(e)
12480 }), d.forEach(function(e) {
12481 return i.removeClass(e)
12486 l = n(o.uiSrefActiveEq || "", !1)(t);
12488 f = t.$eval(o.uiSrefActive)
12490 f = f || n(o.uiSrefActive || "", !1)(t), Je(f) && dt(f, function(e, n) {
12493 s(r.state, t.$eval(r.paramExpr), n)
12495 }), this.$$addStateInfo = function(e, t) {
12496 if (!(Je(f) && h.length > 0)) {
12497 var n = s(e, t, f);
12500 }, t.$on("$stateChangeSuccess", c), t.$on("$destroy", r.transitionService.onStart({}, a)), r.globals.transition && a(r.globals.transition), c()
12503 }], De.module("ui.router.state").directive("uiSref", gi).directive("uiSrefActive", yi).directive("uiSrefActiveEq", yi).directive("uiState", bi), Te.$inject = ["$state"], Me.$inject = ["$state"], De.module("ui.router.state").filter("isState", Te).filter("includedByState", Me);
12505 _i = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(e, t, n, r, i) {
12508 enter: function(e, n, r) {
12509 De.version.minor > 2 ? t.enter(e, null, n).then(r) : t.enter(e, null, n, r)
12511 leave: function(e, n) {
12512 De.version.minor > 2 ? t.leave(e).then(n) : t.leave(e, n)
12523 $context: e._pluginapi._rootViewContext()
12533 transclude: "element",
12534 compile: function(t, l, u) {
12535 return function(t, l, d) {
12537 if (p && (zt.traceUIViewEvent("Removing (previous) el", p.data("$uiView")), p.remove(), p = null), g && (zt.traceUIViewEvent("Destroying scope", k), g.$destroy(), g = null), m) {
12538 var e = m.data("$uiViewAnim");
12539 zt.traceUIViewEvent("Animate out", e), _.leave(m, function() {
12540 e.$$animLeave.resolve(), p = null
12541 }), p = m, m = null
12554 $animEnter: o.promise,
12555 $animLeave: a.promise,
12558 r.$emit("$viewContentLoading", E);
12559 var d = u(r, function(e) {
12560 e.data("$uiViewAnim", c), e.data("$uiView", s), _.enter(e, l, function() {
12561 o.resolve(), g && g.$emit("$viewContentAnimationEnded"), (Ye(y) && !y || t.$eval(y)) && n(e)
12564 m = d, (g = r).$emit("$viewContentLoaded", e || $), g.$eval(b)
12566 var p, m, g, v, b = d.onload || "",
12570 w = l.inheritedData("$uiView") || s,
12571 E = r(d.uiView || d.name || "")(t) || "$default",
12576 fqn: w.$uiView.fqn ? w.$uiView.fqn + "." + E : E,
12578 configUpdated: function(e) {
12579 (!e || e instanceof ti) && (a($, e) || (zt.traceUIViewConfigUpdated(k, e && e.viewDecl && e.viewDecl.$context), $ = e, h(e)))
12581 get creationContext() {
12582 var e = Re("$cfg.viewDecl.$context")(w),
12583 t = Re("$uiView.creationContext")(w);
12587 zt.traceUIViewEvent("Linking", k), l.data("$uiView", {
12589 }), h(), v = e.registerUIView(k), t.$on("$destroy", function() {
12590 zt.traceUIViewEvent("Destroying/Unregistering", k), v()
12596 }], Ae.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
12597 var $i = "function" == typeof De.module("ui.router").component,
12599 De.module("ui.router.state").directive("uiView", _i), De.module("ui.router.state").directive("uiView", Ae), De.module("ui.router.state").provider("$uiViewScroll", function() {
12601 this.useAnchorScroll = function() {
12603 }, this.$get = ["$anchorScroll", "$timeout", function(t, n) {
12604 return e ? t : function(e) {
12605 return n(function() {
12606 e[0].scrollIntoView()
12611 e.default = "ui.router", e.core = Qr, e.watchDigests = ye, e.getLocals = vi, e.getNg1ViewConfigFactory = pe, e.ng1ViewsBuilder = me, e.Ng1ViewConfig = ti, e.StateProvider = oi, e.UrlRouterProvider = ci, e.root = st, e.fromJson = lt, e.toJson = ut, e.forEach = dt, e.extend = ft, e.equals = ht, e.identity = u, e.noop = d, e.createProxyFunctions = f, e.inherit = pt, e.inArray = mt, e._inArray = h, e.removeFrom = gt, e._removeFrom = p, e.pushTo = vt, e._pushTo = m, e.deregAll = bt, e.defaults = g, e.mergeR = yt, e.ancestors = v, e.pick = b, e.omit = y, e.pluck = _, e.filter = $, e.find = w, e.mapObj = _t, e.map = E, e.values = $t, e.allTrueR = wt, e.anyTrueR = Et, e.unnestR = kt, e.flattenR = Ct, e.pushR = k, e.uniqR = xt, e.unnest = Tt, e.flatten = Mt, e.assertPredicate = At, e.assertMap = St, e.assertFn = C, e.pairs = Ot, e.arrayTuples = x, e.applyPairs = T, e.tail = M, e.copy = A, e._extend = S, e.silenceUncaughtInPromise = Dt, e.silentRejection = Nt, e.notImplemented = ot, e.services = at, e.Glob = Ue, e.curry = n, e.compose = r, e.pipe = i, e.prop = Ne, e.propEq = Ie, e.parse = Re, e.not = Pe, e.and = o, e.or = a, e.all = je, e.any = He, e.is = Le, e.eq = Fe, e.val = qe, e.invoke = s, e.pattern = c, e.isUndefined = We, e.isDefined = Ye, e.isNull = Ge, e.isNullOrUndefined = Ke, e.isFunction = Ze, e.isNumber = Xe, e.isString = Qe, e.isObject = Je, e.isArray = et, e.isDate = tt, e.isRegExp = nt, e.isState = rt, e.isInjectable = l, e.isPromise = it, e.Queue = It, e.maxLength = V, e.padString = z, e.kebobString = B, e.functionToString = W, e.fnToString = Y, e.stringify = G, e.beforeAfterSubstr = gn, e.hostRegex = vn, e.stripFile = bn, e.splitHash = yn, e.splitQuery = _n, e.splitEqual = $n, e.trimHashVal = wn, e.splitOnDelim = K, e.joinNeighborsR = Z, e.Trace = Vt, e.trace = zt, e.Param = Jt, e.ParamTypes = En, e.StateParams = Cn, e.ParamType = Zt, e.PathNode = en, e.PathUtils = tn, e.resolvePolicies = on, e.defaultResolvePolicy = nn, e.Resolvable = rn, e.NATIVE_INJECTOR_TOKEN = ln, e.ResolveContext = un, e.resolvablesBuilder = ne, e.StateBuilder = Sn, e.StateObject = Ve, e.StateMatcher = On, e.StateQueueManager = Dn, e.StateRegistry = Nn, e.StateService = Sr, e.TargetState = Bt, e.HookBuilder = Kt, e.matchState = R, e.RegisteredHook = Gt, e.makeEvent = P, e.Rejection = Pt, e.Transition = hn, e.TransitionHook = Yt, e.TransitionEventType = Cr, e.defaultTransOpts = Mr, e.TransitionService = Ar, e.UrlMatcher = Pn, e.UrlMatcherFactory = jn, e.UrlRouter = zn, e.UrlRuleFactory = Hn, e.BaseUrlRule = Ln, e.UrlService = Jn, e.ViewService = Bn, e.UIRouterGlobals = Wn, e.UIRouter = tr, e.$q = Or, e.$injector = Rr, e.BaseLocationServices = Lr, e.HashLocationService = qr, e.MemoryLocationService = Vr, e.PushStateLocationService = Br, e.MemoryLocationConfig = Wr, e.BrowserLocationConfig = Yr, e.keyValsToObjectR = Pr, e.getParams = jr, e.parseUrl = de, e.buildUrl = Hr, e.locationPluginFactory = fe, e.servicesPlugin = he, e.hashLocationPlugin = Gr, e.pushStateLocationPlugin = Kr, e.memoryLocationPlugin = Zr, e.UIRouterPluginBase = Xr, Object.defineProperty(e, "__esModule", {
12617 return e.set(t[0], t[1]), e
12624 function n(e, t, n) {
12625 switch (n.length) {
12629 return e.call(t, n[0]);
12631 return e.call(t, n[0], n[1]);
12633 return e.call(t, n[0], n[1], n[2])
12635 return e.apply(t, n)
12638 function r(e, t, n, r) {
12639 for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
12647 for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
12652 for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
12657 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12658 if (!t(e[n], n, e)) return !1;
12663 for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
12665 t(a, n, e) && (o[i++] = a)
12671 return !!(null == e ? 0 : e.length) && y(e, t, 0) > -1
12674 function l(e, t, n) {
12675 for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
12676 if (n(t, e[r])) return !0;
12681 for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
12686 for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
12690 function f(e, t, n, r) {
12692 o = null == e ? 0 : e.length;
12693 for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
12697 function h(e, t, n, r) {
12698 var i = null == e ? 0 : e.length;
12699 for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
12704 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12705 if (t(e[n], n, e)) return !0;
12714 return e.match(Rt) || []
12717 function v(e, t, n) {
12719 return n(e, function(e, n, i) {
12720 if (t(e, n, i)) return r = n, !1
12724 function b(e, t, n, r) {
12725 for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
12726 if (t(e[o], o, e)) return o;
12730 function y(e, t, n) {
12731 return t === t ? W(e, t, n) : b(e, $, n)
12734 function _(e, t, n, r) {
12735 for (var i = n - 1, o = e.length; ++i < o;)
12736 if (r(e[i], t)) return i;
12745 var n = null == e ? 0 : e.length;
12746 return n ? T(e, t) / n : Se
12750 return function(t) {
12751 return null == t ? J : t[e]
12756 return function(t) {
12757 return null == e ? J : e[t]
12761 function C(e, t, n, r, i) {
12762 return i(e, function(e, i, o) {
12763 n = r ? (r = !1, e) : t(n, e, i, o)
12769 for (e.sort(t); n--;) e[n] = e[n].value;
12774 for (var n, r = -1, i = e.length; ++r < i;) {
12776 o !== J && (n = n === J ? o : n + o)
12782 for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
12787 return u(t, function(t) {
12793 return function(t) {
12799 return u(t, function(t) {
12809 for (var n = -1, r = e.length; ++n < r && y(t, e[n], 0) > -1;);
12814 for (var n = e.length; n-- && y(t, e[n], 0) > -1;);
12819 for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
12824 return "\\" + wn[e]
12828 return null == e ? J : e[t]
12840 for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
12847 return e.forEach(function(e, r) {
12853 return function(n) {
12859 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
12861 a !== t && a !== oe || (e[n] = oe, o[i++] = n)
12869 return e.forEach(function(e) {
12877 return e.forEach(function(e) {
12882 function W(e, t, n) {
12883 for (var r = n - 1, i = e.length; ++r < i;)
12884 if (e[r] === t) return r;
12888 function Y(e, t, n) {
12889 for (var r = n + 1; r--;)
12890 if (e[r] === t) return r;
12895 return H(e) ? Z(e) : Ln(e)
12899 return H(e) ? X(e) : m(e)
12903 for (var t = dn.lastIndex = 0; dn.test(e);) ++t;
12908 return e.match(dn) || []
12912 return e.match(fn) || []
12915 te = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",
12916 ne = "Expected a function",
12917 re = "__lodash_hash_undefined__",
12919 oe = "__lodash_placeholder__",
12942 Me = 9007199254740991,
12943 Ae = 1.7976931348623157e308,
12953 ["curryRight", me],
12956 ["partialRight", ve],
12959 Re = "[object Arguments]",
12960 Pe = "[object Array]",
12961 je = "[object AsyncFunction]",
12962 He = "[object Boolean]",
12963 Le = "[object Date]",
12964 Fe = "[object DOMException]",
12965 qe = "[object Error]",
12966 Ue = "[object Function]",
12967 Ve = "[object GeneratorFunction]",
12968 ze = "[object Map]",
12969 Be = "[object Number]",
12970 We = "[object Null]",
12971 Ye = "[object Object]",
12972 Ge = "[object Proxy]",
12973 Ke = "[object RegExp]",
12974 Ze = "[object Set]",
12975 Xe = "[object String]",
12976 Qe = "[object Symbol]",
12977 Je = "[object Undefined]",
12978 et = "[object WeakMap]",
12979 tt = "[object WeakSet]",
12980 nt = "[object ArrayBuffer]",
12981 rt = "[object DataView]",
12982 it = "[object Float32Array]",
12983 ot = "[object Float64Array]",
12984 at = "[object Int8Array]",
12985 st = "[object Int16Array]",
12986 ct = "[object Int32Array]",
12987 lt = "[object Uint8Array]",
12988 ut = "[object Uint8ClampedArray]",
12989 dt = "[object Uint16Array]",
12990 ft = "[object Uint32Array]",
12991 ht = /\b__p \+= '';/g,
12992 pt = /\b(__p \+=) '' \+/g,
12993 mt = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
12994 gt = /&(?:amp|lt|gt|quot|#39);/g,
12996 bt = RegExp(gt.source),
12997 yt = RegExp(vt.source),
12998 _t = /<%-([\s\S]+?)%>/g,
12999 $t = /<%([\s\S]+?)%>/g,
13000 wt = /<%=([\s\S]+?)%>/g,
13001 Et = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
13004 xt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
13005 Tt = /[\\^$.*+?()[\]{}|]/g,
13006 Mt = RegExp(Tt.source),
13010 Dt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
13011 Nt = /\{\n\/\* \[wrapped with (.+)\] \*/,
13013 Rt = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
13015 jt = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
13017 Lt = /^[-+]0x[0-9a-f]+$/i,
13019 qt = /^\[object .+?Constructor\]$/,
13020 Ut = /^0o[0-7]+$/i,
13021 Vt = /^(?:0|[1-9]\d*)$/,
13022 zt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
13024 Wt = /['\n\r\u2028\u2029\\]/g,
13025 Yt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
13026 Gt = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
13027 Kt = "[" + Gt + "]",
13028 Zt = "[" + Yt + "]",
13029 Xt = "[a-z\\xdf-\\xf6\\xf8-\\xff]",
13030 Qt = "[^\\ud800-\\udfff" + Gt + "\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",
13031 Jt = "\\ud83c[\\udffb-\\udfff]",
13032 en = "(?:\\ud83c[\\udde6-\\uddff]){2}",
13033 tn = "[\\ud800-\\udbff][\\udc00-\\udfff]",
13034 nn = "[A-Z\\xc0-\\xd6\\xd8-\\xde]",
13035 rn = "(?:" + Xt + "|" + Qt + ")",
13036 on = "(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",
13037 an = "[\\ufe0e\\ufe0f]?" + on + ("(?:\\u200d(?:" + ["[^\\ud800-\\udfff]", en, tn].join("|") + ")[\\ufe0e\\ufe0f]?" + on + ")*"),
13038 sn = "(?:" + ["[\\u2700-\\u27bf]", en, tn].join("|") + ")" + an,
13039 cn = "(?:" + ["[^\\ud800-\\udfff]" + Zt + "?", Zt, en, tn, "[\\ud800-\\udfff]"].join("|") + ")",
13040 ln = RegExp("['’]", "g"),
13041 un = RegExp(Zt, "g"),
13042 dn = RegExp(Jt + "(?=" + Jt + ")|" + cn + an, "g"),
13043 fn = RegExp([nn + "?" + Xt + "+(?:['’](?:d|ll|m|re|s|t|ve))?(?=" + [Kt, nn, "$"].join("|") + ")", "(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=" + [Kt, nn + rn, "$"].join("|") + ")", nn + "?" + rn + "+(?:['’](?:d|ll|m|re|s|t|ve))?", nn + "+(?:['’](?:D|LL|M|RE|S|T|VE))?", "\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)", "\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)", "\\d+", sn].join("|"), "g"),
13044 hn = RegExp("[\\u200d\\ud800-\\udfff" + Yt + "\\ufe0e\\ufe0f]"),
13045 pn = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
13046 mn = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
13049 vn[it] = vn[ot] = vn[at] = vn[st] = vn[ct] = vn[lt] = vn[ut] = vn[dt] = vn[ft] = !0, vn[Re] = vn[Pe] = vn[nt] = vn[He] = vn[rt] = vn[Le] = vn[qe] = vn[Ue] = vn[ze] = vn[Be] = vn[Ye] = vn[Ke] = vn[Ze] = vn[Xe] = vn[et] = !1;
13051 bn[Re] = bn[Pe] = bn[nt] = bn[rt] = bn[He] = bn[Le] = bn[it] = bn[ot] = bn[at] = bn[st] = bn[ct] = bn[ze] = bn[Be] = bn[Ye] = bn[Ke] = bn[Ze] = bn[Xe] = bn[Qe] = bn[lt] = bn[ut] = bn[dt] = bn[ft] = !0, bn[qe] = bn[Ue] = bn[et] = !1;
13268 Cn = "object" == typeof global && global && global.Object === Object && global,
13269 xn = "object" == typeof self && self && self.Object === Object && self,
13270 Tn = Cn || xn || Function("return this")(),
13271 Mn = "object" == typeof exports && exports && !exports.nodeType && exports,
13272 An = Mn && "object" == typeof module && module && !module.nodeType && module,
13273 Sn = An && An.exports === Mn,
13274 On = Sn && Cn.process,
13277 return On && On.binding && On.binding("util")
13280 Nn = Dn && Dn.isArrayBuffer,
13281 In = Dn && Dn.isDate,
13282 Rn = Dn && Dn.isMap,
13283 Pn = Dn && Dn.isRegExp,
13284 jn = Dn && Dn.isSet,
13285 Hn = Dn && Dn.isTypedArray,
13290 Vn = function m(k) {
13292 if (ta(e) && !zc(e) && !(e instanceof Rt)) {
13293 if (e instanceof X) return e;
13294 if (za.call(e, "__wrapped__")) return Co(e)
13302 this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = J
13306 this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Oe, this.__views__ = []
13311 n = null == e ? 0 : e.length;
13312 for (this.clear(); ++t < n;) {
13314 this.set(r[0], r[1])
13320 n = null == e ? 0 : e.length;
13321 for (this.clear(); ++t < n;) {
13323 this.set(r[0], r[1])
13329 n = null == e ? 0 : e.length;
13330 for (this.clear(); ++t < n;) {
13332 this.set(r[0], r[1])
13338 n = null == e ? 0 : e.length;
13339 for (this.__data__ = new Kt; ++t < n;) this.add(e[t])
13343 var t = this.__data__ = new Gt(e);
13347 function Qt(e, t) {
13350 i = !n && !r && Wc(e),
13351 o = !n && !r && !i && Xc(e),
13352 a = n || r || i || o,
13353 s = a ? M(e.length, ja) : [],
13355 for (var l in e) !t && !za.call(e, l) || a && ("length" == l || i && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || ro(l, c)) || s.push(l);
13361 return t ? e[wr(0, t - 1)] : J
13364 function en(e, t) {
13365 return $o(ai(e), hn(t, 0, e.length))
13372 function nn(e, t, n) {
13373 (n === J || Yo(e[t], n)) && (n !== J || t in e) || dn(e, t, n)
13376 function rn(e, t, n) {
13378 za.call(e, t) && Yo(r, n) && (n !== J || t in e) || dn(e, t, n)
13381 function on(e, t) {
13382 for (var n = e.length; n--;)
13383 if (Yo(e[n][0], t)) return n;
13387 function an(e, t, n, r) {
13388 return Us(e, function(e, i, o) {
13393 function sn(e, t) {
13394 return e && si(t, ma(t), e)
13397 function cn(e, t) {
13398 return e && si(t, ga(t), e)
13401 function dn(e, t, n) {
13402 "__proto__" == t && cs ? cs(e, t, {
13410 function fn(e, t) {
13411 for (var n = -1, r = t.length, i = Sa(r), o = null == e; ++n < r;) i[n] = o ? J : ha(e, t[n]);
13415 function hn(e, t, n) {
13416 return e === e && (n !== J && (e = e <= n ? e : n), t !== J && (e = e >= t ? e : t)), e
13419 function pn(e, t, n, r, o, a) {
13423 if (n && (s = o ? n(e, r, o, a) : n(e)), s !== J) return s;
13424 if (!ea(e)) return e;
13427 if (s = Qi(e), !c) return ai(e, s)
13430 h = f == Ue || f == Ve;
13431 if (Wc(e)) return Gr(e, c);
13432 if (f == Ye || f == Re || h && !o) {
13433 if (s = l || h ? {} : Ji(e), !c) return l ? li(e, cn(s, e)) : ci(e, sn(s, e))
13435 if (!bn[f]) return o ? e : {};
13436 s = eo(e, f, pn, c)
13443 var m = u ? l ? qi : Fi : l ? ga : ma,
13445 return i(g || e, function(r, i) {
13446 g && (r = e[i = r]), rn(s, i, pn(r, t, n, i, e, a))
13452 return function(n) {
13457 function _n(e, t, n) {
13459 if (null == e) return !r;
13460 for (e = Ra(e); r--;) {
13464 if (a === J && !(i in e) || !o(a)) return !1
13469 function $n(e, t, n) {
13470 if ("function" != typeof e) throw new Ha(ne);
13471 return rc(function() {
13476 function wn(e, t, n, r) {
13484 n && (t = u(t, S(n))), r ? (o = l, a = !1) : t.length >= ee && (o = D, a = !1, t = new Zt(t));
13485 e: for (; ++i < s;) {
13487 p = null == n ? h : n(h);
13488 if (h = r || 0 !== h ? h : 0, a && p === p) {
13489 for (var m = f; m--;)
13490 if (t[m] === p) continue e;
13492 } else o(t, p, r) || d.push(h)
13497 function Cn(e, t) {
13499 return Us(e, function(e, r, i) {
13500 return n = !!t(e, r, i)
13504 function xn(e, t, n) {
13505 for (var r = -1, i = e.length; ++r < i;) {
13508 if (null != a && (s === J ? a === a && !oa(a) : n(a, s))) var s = a,
13514 function Mn(e, t, n, r) {
13516 for ((n = ca(n)) < 0 && (n = -n > i ? 0 : i + n), (r = r === J || r > i ? i : ca(r)) < 0 && (r += i), r = n > r ? 0 : la(r); n < r;) e[n++] = t;
13520 function An(e, t) {
13522 return Us(e, function(e, r, i) {
13523 t(e, r, i) && n.push(e)
13527 function On(e, t, n, r, i) {
13530 for (n || (n = no), i || (i = []); ++o < a;) {
13532 t > 0 && n(s) ? t > 1 ? On(s, t - 1, n, r, i) : d(i, s) : r || (i[i.length] = s)
13537 function Dn(e, t) {
13538 return e && zs(e, t, ma)
13541 function Ln(e, t) {
13542 return e && Bs(e, t, ma)
13545 function zn(e, t) {
13546 return s(t, function(t) {
13551 function Bn(e, t) {
13552 for (var n = 0, r = (t = Wr(t, e)).length; null != e && n < r;) e = e[wo(t[n++])];
13553 return n && n == r ? e : J
13556 function Wn(e, t, n) {
13558 return zc(e) ? r : d(r, n(e))
13562 return null == e ? e === J ? Je : We : ss && ss in Ra(e) ? Gi(e) : mo(e)
13565 function Gn(e, t) {
13569 function Kn(e, t) {
13570 return null != e && za.call(e, t)
13573 function Zn(e, t) {
13574 return null != e && t in Ra(e)
13577 function Xn(e, t, n) {
13578 return e >= _s(t, n) && e < ys(t, n)
13581 function Qn(e, t, n) {
13582 for (var r = n ? l : c, i = e[0].length, o = e.length, a = o, s = Sa(o), d = 1 / 0, f = []; a--;) {
13584 a && t && (h = u(h, S(t))), d = _s(h.length, d), s[a] = !n && (t || i >= 120 && h.length >= 120) ? new Zt(a && h) : J
13589 e: for (; ++p < i && f.length < d;) {
13592 if (g = n || 0 !== g ? g : 0, !(m ? D(m, v) : r(f, v, n))) {
13593 for (a = o; --a;) {
13595 if (!(b ? D(b, v) : r(e[a], v, n))) continue e
13597 m && m.push(v), f.push(g)
13603 function Jn(e, t, n, r) {
13604 return Dn(e, function(e, i, o) {
13609 function er(e, t, r) {
13610 var i = null == (e = vo(e, t = Wr(t, e))) ? e : e[wo(So(t))];
13611 return null == i ? J : n(i, e, r)
13615 return ta(e) && Yn(e) == Re
13618 function nr(e, t, n, r, i) {
13619 return e === t || (null == e || null == t || !ta(e) && !ta(t) ? e !== e && t !== t : rr(e, t, n, r, nr, i))
13622 function rr(e, t, n, r, i, o) {
13625 c = a ? Pe : ec(e),
13626 l = s ? Pe : ec(t),
13627 u = (c = c == Re ? Ye : c) == Ye,
13628 d = (l = l == Re ? Ye : l) == Ye,
13631 if (!Wc(t)) return !1;
13634 if (f && !u) return o || (o = new Xt), a || Xc(e) ? Pi(e, t, n, r, i, o) : ji(e, t, c, n, r, i, o);
13636 var h = u && za.call(e, "__wrapped__"),
13637 p = d && za.call(t, "__wrapped__");
13639 var m = h ? e.value() : e,
13640 g = p ? t.value() : t;
13641 return o || (o = new Xt), i(m, g, n, r, o)
13644 return !!f && (o || (o = new Xt), Hi(e, t, n, r, i, o))
13647 function ir(e, t, n, r) {
13651 if (null == e) return !o;
13652 for (e = Ra(e); i--;) {
13654 if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
13657 var c = (s = n[i])[0],
13661 if (l === J && !(c in e)) return !1
13664 if (r) var f = r(l, u, c, e, t, d);
13665 if (!(f === J ? nr(u, l, le | ue, r, d) : f)) return !1
13672 return !(!ea(e) || co(e)) && (Xo(e) ? Za : qt).test(Eo(e))
13676 return "function" == typeof e ? e : null == e ? Ea : "object" == typeof e ? zc(e) ? fr(e[0], e[1]) : dr(e) : Ta(e)
13680 if (!lo(e)) return bs(e);
13682 for (var n in Ra(e)) za.call(e, n) && "constructor" != n && t.push(n);
13687 if (!ea(e)) return po(e);
13690 for (var r in e)("constructor" != r || !t && za.call(e, r)) && n.push(r);
13694 function lr(e, t) {
13698 function ur(e, t) {
13700 r = Go(e) ? Sa(e.length) : [];
13701 return Us(e, function(e, i, o) {
13702 r[++n] = t(e, i, o)
13708 return 1 == t.length && t[0][2] ? fo(t[0][0], t[0][1]) : function(n) {
13709 return n === e || ir(n, e, t)
13713 function fr(e, t) {
13714 return oo(e) && uo(t) ? fo(wo(e), t) : function(n) {
13716 return r === J && r === t ? pa(n, e) : nr(t, r, le | ue)
13720 function hr(e, t, n, r, i) {
13721 e !== t && zs(t, function(o, a) {
13722 if (ea(o)) i || (i = new Xt), pr(e, t, a, n, hr, r, i);
13724 var s = r ? r(e[a], o, a + "", e, t, i) : J;
13725 s === J && (s = o), nn(e, a, s)
13730 function pr(e, t, n, r, i, o, a) {
13734 if (l) nn(e, n, l);
13736 var u = o ? o(s, c, n + "", e, t, a) : J,
13741 p = !f && !h && Xc(c);
13742 u = c, f || h || p ? zc(s) ? u = s : Ko(s) ? u = ai(s) : h ? (d = !1, u = Gr(c, !0)) : p ? (d = !1, u = ti(c, !0)) : u = [] : ra(c) || Vc(c) ? (u = s, Vc(s) ? u = da(s) : (!ea(s) || r && Xo(s)) && (u = Ji(c))) : d = !1
13744 d && (a.set(c, u), i(u, c, r, o, a), a.delete(c)), nn(e, n, u)
13748 function mr(e, t) {
13750 if (n) return t += t < 0 ? n : 0, ro(t, n) ? e[t] : J
13753 function gr(e, t, n) {
13755 return t = u(t.length ? t : [Ea], S(zi())), x(ur(e, function(e, n, i) {
13757 criteria: u(t, function(t) {
13763 }), function(e, t) {
13768 function vr(e, t) {
13769 return br(e, t, function(t, n) {
13774 function br(e, t, n) {
13775 for (var r = -1, i = t.length, o = {}; ++r < i;) {
13778 n(s, a) && Mr(o, Wr(a, e), s)
13784 return function(t) {
13789 function _r(e, t, n, r) {
13794 for (e === t && (t = ai(t)), n && (s = u(e, S(n))); ++o < a;)
13795 for (var c = 0, l = t[o], d = n ? n(l) : l;
13796 (c = i(s, d, c, r)) > -1;) s !== e && is.call(s, c, 1), is.call(e, c, 1);
13800 function $r(e, t) {
13801 for (var n = e ? t.length : 0, r = n - 1; n--;) {
13803 if (n == r || i !== o) {
13805 ro(i) ? is.call(e, i, 1) : Hr(e, i)
13811 function wr(e, t) {
13812 return e + hs(Es() * (t - e + 1))
13815 function Er(e, t, n, r) {
13816 for (var i = -1, o = ys(fs((t - e) / (n || 1)), 0), a = Sa(o); o--;) a[r ? o : ++i] = e, e += n;
13820 function kr(e, t) {
13822 if (!e || t < 1 || t > Me) return n;
13824 t % 2 && (n += e), (t = hs(t / 2)) && (e += e)
13829 function Cr(e, t) {
13830 return ic(go(e, t, Ea), e + "")
13837 function Tr(e, t) {
13839 return $o(n, hn(t, 0, n.length))
13842 function Mr(e, t, n, r) {
13843 if (!ea(e)) return e;
13844 for (var i = -1, o = (t = Wr(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
13849 (l = r ? r(u, c, s) : J) === J && (l = ea(u) ? u : ro(t[i + 1]) ? [] : {})
13851 rn(s, c, l), s = s[c]
13860 function Sr(e, t, n) {
13863 t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
13864 for (var o = Sa(i); ++r < i;) o[r] = e[r + t];
13868 function Or(e, t) {
13870 return Us(e, function(e, r, i) {
13871 return !(n = t(e, r, i))
13875 function Dr(e, t, n) {
13877 i = null == e ? r : e.length;
13878 if ("number" == typeof t && t === t && i <= Ne) {
13880 var o = r + i >>> 1,
13882 null !== a && !oa(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
13886 return Nr(e, t, Ea, n)
13889 function Nr(e, t, n, r) {
13891 for (var i = 0, o = null == e ? 0 : e.length, a = t !== t, s = null === t, c = oa(t), l = t === J; i < o;) {
13892 var u = hs((i + o) / 2),
13898 if (a) var g = r || p;
13899 else g = l ? p && (r || f) : s ? p && f && (r || !h) : c ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
13900 g ? i = u + 1 : o = u
13905 function Ir(e, t) {
13906 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
13909 if (!n || !Yo(s, c)) {
13911 o[i++] = 0 === a ? 0 : a
13918 return "number" == typeof e ? e : oa(e) ? Se : +e
13922 if ("string" == typeof e) return e;
13923 if (zc(e)) return u(e, Pr) + "";
13924 if (oa(e)) return Fs ? Fs.call(e) : "";
13926 return "0" == t && 1 / e == -Te ? "-0" : t
13929 function jr(e, t, n) {
13936 if (n) a = !1, i = l;
13937 else if (o >= ee) {
13938 var d = t ? null : Zs(e);
13939 if (d) return z(d);
13940 a = !1, i = D, u = new Zt
13941 } else u = t ? [] : s;
13942 e: for (; ++r < o;) {
13945 if (f = n || 0 !== f ? f : 0, a && h === h) {
13946 for (var p = u.length; p--;)
13947 if (u[p] === h) continue e;
13948 t && u.push(h), s.push(f)
13949 } else i(u, h, n) || (u !== s && u.push(h), s.push(f))
13954 function Hr(e, t) {
13955 return t = Wr(t, e), null == (e = vo(e, t)) || delete e[wo(So(t))]
13958 function Lr(e, t, n, r) {
13959 return Mr(e, t, n(Bn(e, t)), r)
13962 function Fr(e, t, n, r) {
13963 for (var i = e.length, o = r ? i : -1;
13964 (r ? o-- : ++o < i) && t(e[o], o, e););
13965 return n ? Sr(e, r ? 0 : o, r ? o + 1 : i) : Sr(e, r ? o + 1 : 0, r ? i : o)
13968 function qr(e, t) {
13970 return n instanceof Rt && (n = n.value()), f(t, function(e, t) {
13971 return t.func.apply(t.thisArg, d([e], t.args))
13975 function Ur(e, t, n) {
13977 if (r < 2) return r ? jr(e[0]) : [];
13978 for (var i = -1, o = Sa(r); ++i < r;)
13979 for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = wn(o[i] || a, e[s], t, n));
13980 return jr(On(o, 1), t, n)
13983 function Vr(e, t, n) {
13984 for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
13985 var s = r < o ? t[r] : J;
13992 return Ko(e) ? e : []
13996 return "function" == typeof e ? e : Ea
13999 function Wr(e, t) {
14000 return zc(e) ? e : oo(e, t) ? [e] : oc(fa(e))
14003 function Yr(e, t, n) {
14005 return n = n === J ? r : n, !t && n >= r ? e : Sr(e, t, n)
14008 function Gr(e, t) {
14009 if (t) return e.slice();
14011 r = es ? es(n) : new e.constructor(n);
14012 return e.copy(r), r
14016 var t = new e.constructor(e.byteLength);
14017 return new Ja(t).set(new Ja(e)), t
14020 function Zr(e, t) {
14021 var n = t ? Kr(e.buffer) : e.buffer;
14022 return new e.constructor(n, e.byteOffset, e.byteLength)
14025 function Xr(t, n, r) {
14026 return f(n ? r(q(t), ae) : q(t), e, new t.constructor)
14030 var t = new e.constructor(e.source, Ht.exec(e));
14031 return t.lastIndex = e.lastIndex, t
14034 function Jr(e, n, r) {
14035 return f(n ? r(z(e), ae) : z(e), t, new e.constructor)
14039 return Ls ? Ra(Ls.call(e)) : {}
14042 function ti(e, t) {
14043 var n = t ? Kr(e.buffer) : e.buffer;
14044 return new e.constructor(n, e.byteOffset, e.length)
14047 function ni(e, t) {
14057 if (!s && !l && !o && e > t || o && a && c && !s && !l || r && a && c || !n && c || !i) return 1;
14058 if (!r && !o && !l && e < t || l && n && i && !r && !o || s && n && i || !a && i || !c) return -1
14063 function ri(e, t, n) {
14064 for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
14065 var c = ni(i[r], o[r]);
14066 if (c) return r >= s ? c : c * ("desc" == n[r] ? -1 : 1)
14068 return e.index - t.index
14071 function ii(e, t, n, r) {
14072 for (var i = -1, o = e.length, a = n.length, s = -1, c = t.length, l = ys(o - a, 0), u = Sa(c + l), d = !r; ++s < c;) u[s] = t[s];
14073 for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
14074 for (; l--;) u[s++] = e[i++];
14078 function oi(e, t, n, r) {
14079 for (var i = -1, o = e.length, a = -1, s = n.length, c = -1, l = t.length, u = ys(o - s, 0), d = Sa(u + l), f = !r; ++i < u;) d[i] = e[i];
14080 for (var h = i; ++c < l;) d[h + c] = t[c];
14081 for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
14085 function ai(e, t) {
14088 for (t || (t = Sa(r)); ++n < r;) t[n] = e[n];
14092 function si(e, t, n, r) {
14095 for (var o = -1, a = t.length; ++o < a;) {
14097 c = r ? r(n[s], e[s], s, n, e) : J;
14098 c === J && (c = e[s]), i ? dn(n, s, c) : rn(n, s, c)
14103 function ci(e, t) {
14104 return si(e, Qs(e), t)
14107 function li(e, t) {
14108 return si(e, Js(e), t)
14111 function ui(e, t) {
14112 return function(n, i) {
14113 var o = zc(n) ? r : an,
14115 return o(n, e, zi(i, 2), a)
14120 return Cr(function(t, n) {
14123 o = i > 1 ? n[i - 1] : J,
14124 a = i > 2 ? n[2] : J;
14125 for (o = e.length > 3 && "function" == typeof o ? (i--, o) : J, a && io(n[0], n[1], a) && (o = i < 3 ? J : o, i = 1), t = Ra(t); ++r < i;) {
14133 function fi(e, t) {
14134 return function(n, r) {
14135 if (null == n) return n;
14136 if (!Go(n)) return e(n, r);
14137 for (var i = n.length, o = t ? i : -1, a = Ra(n);
14138 (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
14144 return function(t, n, r) {
14145 for (var i = -1, o = Ra(t), a = r(t), s = a.length; s--;) {
14146 var c = a[e ? s : ++i];
14147 if (!1 === n(o[c], c, o)) break
14153 function pi(e, t, n) {
14155 return (this && this !== Tn && this instanceof r ? o : e).apply(i ? n : this, arguments)
14163 return function(t) {
14164 var n = H(t = fa(t)) ? K(t) : J,
14165 r = n ? n[0] : t.charAt(0),
14166 i = n ? Yr(n, 1).join("") : t.slice(1);
14172 return function(t) {
14173 return f($a(_a(t).replace(ln, "")), e, "")
14178 return function() {
14180 switch (t.length) {
14184 return new e(t[0]);
14186 return new e(t[0], t[1]);
14188 return new e(t[0], t[1], t[2]);
14190 return new e(t[0], t[1], t[2], t[3]);
14192 return new e(t[0], t[1], t[2], t[3], t[4]);
14194 return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
14196 return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
14198 var n = qs(e.prototype),
14200 return ea(r) ? r : n
14204 function bi(e, t, r) {
14206 for (var a = arguments.length, s = Sa(a), c = a, l = Vi(i); c--;) s[c] = arguments[c];
14207 var u = a < 3 && s[0] !== l && s[a - 1] !== l ? [] : V(s, l);
14208 return (a -= u.length) < r ? Ai(e, t, $i, i.placeholder, J, s, u, J, J, r - a) : n(this && this !== Tn && this instanceof i ? o : e, this, s)
14215 return function(t, n, r) {
14219 t = ma(t), n = function(e) {
14220 return o(i[e], e, i)
14223 var a = e(t, n, r);
14224 return a > -1 ? i[o ? t[a] : a] : J
14229 return Li(function(t) {
14232 i = X.prototype.thru;
14233 for (e && t.reverse(); r--;) {
14235 if ("function" != typeof o) throw new Ha(ne);
14236 if (i && !a && "wrapper" == Ui(o)) var a = new X([], !0)
14238 for (r = a ? r : n; ++r < n;) {
14239 var s = Ui(o = t[r]),
14240 c = "wrapper" == s ? Xs(o) : J;
14241 a = c && so(c[0]) && c[1] == (be | pe | ge | ye) && !c[4].length && 1 == c[9] ? a[Ui(c[0])].apply(a, c[3]) : 1 == o.length && so(o) ? a[s]() : a.thru(o)
14243 return function() {
14246 if (a && 1 == e.length && zc(r)) return a.plant(r).value();
14247 for (var i = 0, o = n ? t[i].apply(this, e) : r; ++i < n;) o = t[i].call(this, o);
14253 function $i(e, t, n, r, i, o, a, s, c, l) {
14255 for (var v = arguments.length, b = Sa(v), y = v; y--;) b[y] = arguments[y];
14256 if (p) var _ = Vi(u),
14258 if (r && (b = ii(b, r, i, p)), o && (b = oi(b, o, a, p)), v -= $, p && v < l) {
14260 return Ai(e, t, $i, u.placeholder, n, b, w, s, c, l - v)
14262 var E = f ? n : this,
14264 return v = b.length, s ? b = bo(b, s) : m && v > 1 && b.reverse(), d && c < v && (b.length = c), this && this !== Tn && this instanceof u && (k = g || vi(k)), k.apply(E, b)
14275 function wi(e, t) {
14276 return function(n, r) {
14277 return Jn(n, e, t(r), {})
14281 function Ei(e, t) {
14282 return function(n, r) {
14284 if (n === J && r === J) return t;
14285 if (n !== J && (i = n), r !== J) {
14286 if (i === J) return r;
14287 "string" == typeof n || "string" == typeof r ? (n = Pr(n), r = Pr(r)) : (n = Rr(n), r = Rr(r)), i = e(n, r)
14294 return Li(function(t) {
14295 return t = u(t, S(zi())), Cr(function(r) {
14297 return e(t, function(e) {
14304 function Ci(e, t) {
14305 var n = (t = t === J ? " " : Pr(t)).length;
14306 if (n < 2) return n ? kr(t, e) : t;
14307 var r = kr(t, fs(e / G(t)));
14308 return H(t) ? Yr(K(r), 0, e).join("") : r.slice(0, e)
14311 function xi(e, t, r, i) {
14313 for (var t = -1, c = arguments.length, l = -1, u = i.length, d = Sa(u + c), f = this && this !== Tn && this instanceof o ? s : e; ++l < u;) d[l] = i[l];
14314 for (; c--;) d[l++] = arguments[++t];
14315 return n(f, a ? r : this, d)
14323 return function(t, n, r) {
14324 return r && "number" != typeof r && io(t, n, r) && (n = r = J), t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), r = r === J ? t < n ? 1 : -1 : sa(r), Er(t, n, r, e)
14329 return function(t, n) {
14330 return "string" == typeof t && "string" == typeof n || (t = ua(t), n = ua(n)), e(t, n)
14334 function Ai(e, t, n, r, i, o, a, s, c, l) {
14340 t |= u ? ge : ve, (t &= ~(u ? ve : ge)) & he || (t &= ~(de | fe));
14341 var m = [e, t, i, h, d, p, f, s, c, l],
14343 return so(e) && nc(g, m), g.placeholder = r, yo(g, e, t)
14348 return function(e, n) {
14349 if (e = ua(e), n = null == n ? 0 : _s(ca(n), 292)) {
14350 var r = (fa(e) + "e").split("e");
14351 return +((r = (fa(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
14358 return function(t) {
14360 return n == ze ? q(t) : n == Ze ? B(t) : A(t, e(t))
14364 function Di(e, t, n, r, i, o, a, s) {
14366 if (!c && "function" != typeof e) throw new Ha(ne);
14367 var l = r ? r.length : 0;
14368 if (l || (t &= ~(ge | ve), r = i = J), a = a === J ? a : ys(ca(a), 0), s = s === J ? s : ca(s), l -= i ? i.length : 0, t & ve) {
14373 var f = c ? J : Xs(e),
14374 h = [e, t, n, r, i, u, d, o, a, s];
14375 if (f && ho(h, f), e = h[0], t = h[1], n = h[2], r = h[3], i = h[4], !(s = h[9] = h[9] === J ? c ? 0 : e.length : ys(h[9] - l, 0)) && t & (pe | me) && (t &= ~(pe | me)), t && t != de) p = t == pe || t == me ? bi(e, t, s) : t != ge && t != (de | ge) || i.length ? $i.apply(J, h) : xi(e, t, n, r);
14376 else var p = pi(e, t, n);
14377 return yo((f ? Ws : nc)(p, h), e, t)
14380 function Ni(e, t, n, r) {
14381 return e === J || Yo(e, qa[n]) && !za.call(r, n) ? t : e
14384 function Ii(e, t, n, r, i, o) {
14385 return ea(e) && ea(t) && (o.set(t, e), hr(e, t, J, Ii, o), o.delete(t)), e
14389 return ra(e) ? J : e
14392 function Pi(e, t, n, r, i, o) {
14396 if (s != c && !(a && c > s)) return !1;
14398 if (l && o.get(t)) return l == t;
14401 f = n & ue ? new Zt : J;
14402 for (o.set(e, t), o.set(t, e); ++u < s;) {
14405 if (r) var g = a ? r(m, h, u, t, e, o) : r(h, m, u, e, t, o);
14412 if (!p(t, function(e, t) {
14413 if (!D(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
14418 } else if (h !== m && !i(h, m, n, r, o)) {
14423 return o.delete(e), o.delete(t), d
14426 function ji(e, t, n, r, i, o, a) {
14429 if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
14430 e = e.buffer, t = t.buffer;
14432 return !(e.byteLength != t.byteLength || !o(new Ja(e), new Ja(t)));
14438 return e.name == t.name && e.message == t.message;
14441 return e == t + "";
14446 if (s || (s = z), e.size != t.size && !c) return !1;
14448 if (l) return l == t;
14449 r |= ue, a.set(e, t);
14450 var u = Pi(s(e), s(t), r, i, o, a);
14451 return a.delete(e), u;
14453 if (Ls) return Ls.call(e) == Ls.call(t)
14458 function Hi(e, t, n, r, i, o) {
14462 if (c != Fi(t).length && !a) return !1;
14463 for (var l = c; l--;) {
14465 if (!(a ? u in t : za.call(t, u))) return !1
14468 if (d && o.get(t)) return d == t;
14470 o.set(e, t), o.set(t, e);
14471 for (var h = a; ++l < c;) {
14472 var p = e[u = s[l]],
14474 if (r) var g = a ? r(m, p, u, t, e, o) : r(p, m, u, e, t, o);
14475 if (!(g === J ? p === m || i(p, m, n, r, o) : g)) {
14479 h || (h = "constructor" == u)
14482 var v = e.constructor,
14484 v != b && "constructor" in e && "constructor" in t && !("function" == typeof v && v instanceof v && "function" == typeof b && b instanceof b) && (f = !1)
14486 return o.delete(e), o.delete(t), f
14490 return ic(go(e, J, Mo), e + "")
14494 return Wn(e, ma, Qs)
14498 return Wn(e, ga, Js)
14502 for (var t = e.name + "", n = Ds[t], r = za.call(Ds, t) ? n.length : 0; r--;) {
14505 if (null == o || o == e) return i.name
14511 return (za.call(W, "placeholder") ? W : e).placeholder
14515 var e = W.iteratee || ka;
14516 return e = e === ka ? ar : e, arguments.length ? e(arguments[0], arguments[1]) : e
14519 function Bi(e, t) {
14520 var n = e.__data__;
14521 return ao(t) ? n["string" == typeof t ? "string" : "hash"] : n.map
14525 for (var t = ma(e), n = t.length; n--;) {
14528 t[n] = [r, i, uo(i)]
14533 function Yi(e, t) {
14535 return or(n) ? n : J
14539 var t = za.call(e, ss),
14545 var i = Ya.call(e);
14546 return r && (t ? e[ss] = n : delete e[ss]), i
14549 function Ki(e, t, n) {
14550 for (var r = -1, i = n.length; ++r < i;) {
14574 var t = e.match(Nt);
14575 return t ? t[1].split(It) : []
14578 function Xi(e, t, n) {
14579 for (var r = -1, i = (t = Wr(t, e)).length, o = !1; ++r < i;) {
14581 if (!(o = null != e && n(e, a))) break;
14584 return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Jo(i) && ro(a, i) && (zc(e) || Vc(e))
14589 n = e.constructor(t);
14590 return t && "string" == typeof e[0] && za.call(e, "index") && (n.index = e.index, n.input = e.input), n
14594 return "function" != typeof e.constructor || lo(e) ? {} : qs(ts(e))
14597 function eo(e, t, n, r) {
14598 var i = e.constructor;
14618 return Xr(e, r, n);
14625 return Jr(e, r, n);
14631 function to(e, t) {
14635 return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Dt, "{\n/* [wrapped with " + t + "] */\n")
14639 return zc(e) || Vc(e) || !!(os && e && e[os])
14642 function ro(e, t) {
14643 return !!(t = null == t ? Me : t) && ("number" == typeof e || Vt.test(e)) && e > -1 && e % 1 == 0 && e < t
14646 function io(e, t, n) {
14647 if (!ea(n)) return !1;
14649 return !!("number" == r ? Go(n) && ro(t, n.length) : "string" == r && t in n) && Yo(n[t], e)
14652 function oo(e, t) {
14653 if (zc(e)) return !1;
14655 return !("number" != n && "symbol" != n && "boolean" != n && null != e && !oa(e)) || kt.test(e) || !Et.test(e) || null != t && e in Ra(t)
14660 return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e
14666 if ("function" != typeof n || !(t in Rt.prototype)) return !1;
14667 if (e === n) return !0;
14669 return !!r && e === r[0]
14673 return !!Wa && Wa in e
14677 var t = e && e.constructor;
14678 return e === ("function" == typeof t && t.prototype || qa)
14682 return e === e && !ea(e)
14685 function fo(e, t) {
14686 return function(n) {
14687 return null != n && n[e] === t && (t !== J || e in Ra(n))
14691 function ho(e, t) {
14695 o = i < (de | fe | be),
14696 a = r == be && n == pe || r == be && n == ye && e[7].length <= t[8] || r == (be | ye) && t[7].length <= t[8] && n == pe;
14697 if (!o && !a) return e;
14698 r & de && (e[2] = t[2], i |= n & de ? 0 : he);
14702 e[3] = c ? ii(c, s, t[4]) : s, e[4] = c ? V(e[3], oe) : t[4]
14704 return (s = t[5]) && (c = e[5], e[5] = c ? oi(c, s, t[6]) : s, e[6] = c ? V(e[5], oe) : t[6]), (s = t[7]) && (e[7] = s), r & be && (e[8] = null == e[8] ? t[8] : _s(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i, e
14710 for (var n in Ra(e)) t.push(n);
14718 function go(e, t, r) {
14719 return t = ys(t === J ? e.length - 1 : t, 0),
14721 for (var i = arguments, o = -1, a = ys(i.length - t, 0), s = Sa(a); ++o < a;) s[o] = i[t + o];
14723 for (var c = Sa(t + 1); ++o < t;) c[o] = i[o];
14724 return c[t] = r(s), n(e, this, c)
14728 function vo(e, t) {
14729 return t.length < 2 ? e : Bn(e, Sr(t, 0, -1))
14732 function bo(e, t) {
14733 for (var n = e.length, r = _s(t.length, n), i = ai(e); r--;) {
14735 e[r] = ro(o, n) ? i[o] : J
14740 function yo(e, t, n) {
14742 return ic(e, to(r, ko(Zi(r), n)))
14748 return function() {
14751 if (n = r, i > 0) {
14752 if (++t >= Ee) return arguments[0]
14754 return e.apply(J, arguments)
14758 function $o(e, t) {
14762 for (t = t === J ? r : t; ++n < t;) {
14765 e[o] = e[n], e[n] = a
14767 return e.length = t, e
14771 if ("string" == typeof e || oa(e)) return e;
14773 return "0" == t && 1 / e == -Te ? "-0" : t
14788 function ko(e, t) {
14789 return i(Ie, function(n) {
14790 var r = "_." + n[0];
14791 t & n[1] && !c(e, r) && e.push(r)
14796 if (e instanceof Rt) return e.clone();
14797 var t = new X(e.__wrapped__, e.__chain__);
14798 return t.__actions__ = ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
14801 function xo(e, t, n) {
14802 var r = null == e ? 0 : e.length;
14804 var i = null == n ? 0 : ca(n);
14805 return i < 0 && (i = ys(r + i, 0)), b(e, zi(t, 3), i)
14808 function To(e, t, n) {
14809 var r = null == e ? 0 : e.length;
14812 return n !== J && (i = ca(n), i = n < 0 ? ys(r + i, 0) : _s(i, r - 1)), b(e, zi(t, 3), i, !0)
14816 return (null == e ? 0 : e.length) ? On(e, 1) : []
14820 return e && e.length ? e[0] : J
14824 var t = null == e ? 0 : e.length;
14825 return t ? e[t - 1] : J
14828 function Oo(e, t) {
14829 return e && e.length && t && t.length ? _r(e, t) : e
14833 return null == e ? e : ks.call(e)
14837 if (!e || !e.length) return [];
14839 return e = s(e, function(e) {
14840 if (Ko(e)) return t = ys(e.length, t), !0
14841 }), M(t, function(t) {
14846 function Io(e, t) {
14847 if (!e || !e.length) return [];
14849 return null == t ? r : u(r, function(e) {
14856 return t.__chain__ = !0, t
14859 function Po(e, t) {
14863 function jo(e, t) {
14864 return (zc(e) ? i : Us)(e, zi(t, 3))
14867 function Ho(e, t) {
14868 return (zc(e) ? o : Vs)(e, zi(t, 3))
14871 function Lo(e, t) {
14872 return (zc(e) ? u : ur)(e, zi(t, 3))
14875 function Fo(e, t, n) {
14876 return t = n ? J : t, t = e && null == t ? e.length : t, Di(e, be, J, J, J, J, t)
14879 function qo(e, t) {
14881 if ("function" != typeof t) throw new Ha(ne);
14884 return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = J), n
14888 function Uo(e, t, n) {
14889 var r = Di(e, pe, J, J, J, J, J, t = n ? J : t);
14890 return r.placeholder = Uo.placeholder, r
14893 function Vo(e, t, n) {
14894 var r = Di(e, me, J, J, J, J, J, t = n ? J : t);
14895 return r.placeholder = Vo.placeholder, r
14898 function zo(e, t, n) {
14902 return u = d = J, g = t, h = e.apply(r, n)
14906 return g = e, p = rc(s, t), v ? r(e) : h
14912 return b ? _s(r, f - n) : r
14918 return m === J || n >= t || n < 0 || b && r >= f
14923 if (a(e)) return c(e);
14928 return p = J, y && u ? r(e) : (u = d = J, h)
14934 if (u = arguments, d = this, m = e, n) {
14935 if (p === J) return i(m);
14936 if (b) return p = rc(s, t), r(m)
14938 return p === J && (p = rc(s, t)), h
14940 var u, d, f, h, p, m, g = 0,
14944 if ("function" != typeof e) throw new Ha(ne);
14945 return t = ua(t) || 0, ea(n) && (v = !!n.leading, f = (b = "maxWait" in n) ? ys(ua(n.maxWait) || 0, t) : f, y = "trailing" in n ? !!n.trailing : y), l.cancel = function() {
14946 p !== J && Ks(p), g = 0, u = m = d = p = J
14947 }, l.flush = function() {
14948 return p === J ? h : c(Dc())
14952 function Bo(e, t) {
14953 if ("function" != typeof e || null != t && "function" != typeof t) throw new Ha(ne);
14954 var n = function() {
14956 i = t ? t.apply(this, r) : r[0],
14958 if (o.has(i)) return o.get(i);
14959 var a = e.apply(this, r);
14960 return n.cache = o.set(i, a) || o, a
14962 return n.cache = new(Bo.Cache || Kt), n
14966 if ("function" != typeof e) throw new Ha(ne);
14967 return function() {
14969 switch (t.length) {
14971 return !e.call(this);
14973 return !e.call(this, t[0]);
14975 return !e.call(this, t[0], t[1]);
14977 return !e.call(this, t[0], t[1], t[2])
14979 return !e.apply(this, t)
14983 function Yo(e, t) {
14984 return e === t || e !== e && t !== t
14988 return null != e && Jo(e.length) && !Xo(e)
14992 return ta(e) && Go(e)
14996 if (!ta(e)) return !1;
14998 return t == qe || t == Fe || "string" == typeof e.message && "string" == typeof e.name && !ra(e)
15002 if (!ea(e)) return !1;
15004 return t == Ue || t == Ve || t == je || t == Ge
15008 return "number" == typeof e && e == ca(e)
15012 return "number" == typeof e && e > -1 && e % 1 == 0 && e <= Me
15017 return null != e && ("object" == t || "function" == t)
15021 return null != e && "object" == typeof e
15025 return "number" == typeof e || ta(e) && Yn(e) == Be
15029 if (!ta(e) || Yn(e) != Ye) return !1;
15031 if (null === t) return !0;
15032 var n = za.call(t, "constructor") && t.constructor;
15033 return "function" == typeof n && n instanceof n && Va.call(n) == Ga
15037 return "string" == typeof e || !zc(e) && ta(e) && Yn(e) == Xe
15041 return "symbol" == typeof e || ta(e) && Yn(e) == Qe
15046 if (Go(e)) return ia(e) ? K(e) : ai(e);
15047 if (as && e[as]) return F(e[as]());
15049 return (t == ze ? q : t == Ze ? z : ba)(e)
15053 return e ? (e = ua(e)) === Te || e === -Te ? (e < 0 ? -1 : 1) * Ae : e === e ? e : 0 : 0 === e ? e : 0
15059 return t === t ? n ? t - n : t : 0
15063 return e ? hn(ca(e), 0, Oe) : 0
15067 if ("number" == typeof e) return e;
15068 if (oa(e)) return Se;
15070 var t = "function" == typeof e.valueOf ? e.valueOf() : e;
15071 e = ea(t) ? t + "" : t
15073 if ("string" != typeof e) return 0 === e ? e : +e;
15074 e = e.replace(At, "");
15075 var n = Ft.test(e);
15076 return n || Ut.test(e) ? kn(e.slice(2), n ? 2 : 8) : Lt.test(e) ? Se : +e
15080 return si(e, ga(e))
15084 return null == e ? "" : Pr(e)
15087 function ha(e, t, n) {
15088 var r = null == e ? J : Bn(e, t);
15089 return r === J ? n : r
15092 function pa(e, t) {
15093 return null != e && Xi(e, t, Zn)
15097 return Go(e) ? Qt(e) : sr(e)
15101 return Go(e) ? Qt(e, !0) : cr(e)
15104 function va(e, t) {
15105 if (null == e) return {};
15106 var n = u(qi(e), function(e) {
15109 return t = zi(t), br(e, n, function(e, n) {
15115 return null == e ? [] : O(e, ma(e))
15119 return El(fa(e).toLowerCase())
15123 return (e = fa(e)) && e.replace(zt, Fn).replace(un, "")
15126 function $a(e, t, n) {
15127 return e = fa(e), (t = n ? J : t) === J ? L(e) ? Q(e) : g(e) : e.match(t) || []
15131 return function() {
15141 return ar("function" == typeof e ? e : pn(e, ae))
15144 function Ca(e, t, n) {
15147 null != n || ea(t) && (o.length || !r.length) || (n = t, t = e, e = this, o = zn(t, ma(t)));
15148 var a = !(ea(n) && "chain" in n && !n.chain),
15150 return i(o, function(n) {
15152 e[n] = r, s && (e.prototype[n] = function() {
15153 var t = this.__chain__;
15155 var n = e(this.__wrapped__);
15156 return (n.__actions__ = ai(this.__actions__)).push({
15160 }), n.__chain__ = t, n
15162 return r.apply(e, d([this.value()], arguments))
15170 return oo(e) ? E(wo(e)) : yr(e)
15180 var Sa = (k = null == k ? Tn : Vn.defaults(Tn.Object(), k, Vn.pick(Tn, mn))).Array,
15192 Ua = k["__core-js_shared__"],
15194 za = qa.hasOwnProperty,
15197 var e = /[^.]+$/.exec(Ua && Ua.keys && Ua.keys.IE_PROTO || "");
15198 return e ? "Symbol(src)_1." + e : ""
15203 Za = Pa("^" + Va.call(za).replace(Tt, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
15204 Xa = Sn ? k.Buffer : J,
15207 es = Xa ? Xa.allocUnsafe : J,
15208 ts = U(Ra.getPrototypeOf, Ra),
15210 rs = qa.propertyIsEnumerable,
15212 os = Qa ? Qa.isConcatSpreadable : J,
15213 as = Qa ? Qa.iterator : J,
15214 ss = Qa ? Qa.toStringTag : J,
15217 var e = Yi(Ra, "defineProperty");
15218 return e({}, "", {}), e
15221 ls = k.clearTimeout !== Tn.clearTimeout && k.clearTimeout,
15222 us = Oa && Oa.now !== Tn.Date.now && Oa.now,
15223 ds = k.setTimeout !== Tn.setTimeout && k.setTimeout,
15226 ps = Ra.getOwnPropertySymbols,
15227 ms = Xa ? Xa.isBuffer : J,
15230 bs = U(Ra.keys, Ra),
15237 Cs = Yi(k, "DataView"),
15239 Ts = Yi(k, "Promise"),
15241 As = Yi(k, "WeakMap"),
15242 Ss = Yi(Ra, "create"),
15250 Hs = Qa ? Qa.prototype : J,
15251 Ls = Hs ? Hs.valueOf : J,
15252 Fs = Hs ? Hs.toString : J,
15255 return function(t) {
15256 if (!ea(t)) return {};
15257 if (ns) return ns(t);
15260 return e.prototype = J, n
15263 W.templateSettings = {
15271 }, W.prototype = Z.prototype, W.prototype.constructor = W, X.prototype = qs(Z.prototype), X.prototype.constructor = X, Rt.prototype = qs(Z.prototype), Rt.prototype.constructor = Rt, Yt.prototype.clear = function() {
15272 this.__data__ = Ss ? Ss(null) : {}, this.size = 0
15273 }, Yt.prototype.delete = function(e) {
15274 var t = this.has(e) && delete this.__data__[e];
15275 return this.size -= t ? 1 : 0, t
15276 }, Yt.prototype.get = function(e) {
15277 var t = this.__data__;
15280 return n === re ? J : n
15282 return za.call(t, e) ? t[e] : J
15283 }, Yt.prototype.has = function(e) {
15284 var t = this.__data__;
15285 return Ss ? t[e] !== J : za.call(t, e)
15286 }, Yt.prototype.set = function(e, t) {
15287 var n = this.__data__;
15288 return this.size += this.has(e) ? 0 : 1, n[e] = Ss && t === J ? re : t, this
15289 }, Gt.prototype.clear = function() {
15290 this.__data__ = [], this.size = 0
15291 }, Gt.prototype.delete = function(e) {
15292 var t = this.__data__,
15294 return !(n < 0 || (n == t.length - 1 ? t.pop() : is.call(t, n, 1), --this.size, 0))
15295 }, Gt.prototype.get = function(e) {
15296 var t = this.__data__,
15298 return n < 0 ? J : t[n][1]
15299 }, Gt.prototype.has = function(e) {
15300 return on(this.__data__, e) > -1
15301 }, Gt.prototype.set = function(e, t) {
15302 var n = this.__data__,
15304 return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
15305 }, Kt.prototype.clear = function() {
15306 this.size = 0, this.__data__ = {
15308 map: new(xs || Gt),
15311 }, Kt.prototype.delete = function(e) {
15312 var t = Bi(this, e).delete(e);
15313 return this.size -= t ? 1 : 0, t
15314 }, Kt.prototype.get = function(e) {
15315 return Bi(this, e).get(e)
15316 }, Kt.prototype.has = function(e) {
15317 return Bi(this, e).has(e)
15318 }, Kt.prototype.set = function(e, t) {
15319 var n = Bi(this, e),
15321 return n.set(e, t), this.size += n.size == r ? 0 : 1, this
15322 }, Zt.prototype.add = Zt.prototype.push = function(e) {
15323 return this.__data__.set(e, re), this
15324 }, Zt.prototype.has = function(e) {
15325 return this.__data__.has(e)
15326 }, Xt.prototype.clear = function() {
15327 this.__data__ = new Gt, this.size = 0
15328 }, Xt.prototype.delete = function(e) {
15329 var t = this.__data__,
15331 return this.size = t.size, n
15332 }, Xt.prototype.get = function(e) {
15333 return this.__data__.get(e)
15334 }, Xt.prototype.has = function(e) {
15335 return this.__data__.has(e)
15336 }, Xt.prototype.set = function(e, t) {
15337 var n = this.__data__;
15338 if (n instanceof Gt) {
15339 var r = n.__data__;
15340 if (!xs || r.length < ee - 1) return r.push([e, t]), this.size = ++n.size, this;
15341 n = this.__data__ = new Kt(r)
15343 return n.set(e, t), this.size = n.size, this
15349 Ws = Os ? function(e, t) {
15350 return Os.set(e, t), e
15352 Ys = cs ? function(e, t) {
15353 return cs(e, "toString", {
15361 Ks = ls || function(e) {
15362 return Tn.clearTimeout(e)
15364 Zs = Ms && 1 / z(new Ms([, -0]))[1] == Te ? function(e) {
15367 Xs = Os ? function(e) {
15370 Qs = ps ? function(e) {
15371 return null == e ? [] : (e = Ra(e), s(ps(e), function(t) {
15372 return rs.call(e, t)
15375 Js = ps ? function(e) {
15376 for (var t = []; e;) d(t, Qs(e)), e = ts(e);
15380 (Cs && ec(new Cs(new ArrayBuffer(1))) != rt || xs && ec(new xs) != ze || Ts && "[object Promise]" != ec(Ts.resolve()) || Ms && ec(new Ms) != Ze || As && ec(new As) != et) && (ec = function(e) {
15382 n = t == Ye ? e.constructor : J,
15383 r = n ? Eo(n) : "";
15384 if (r) switch (r) {
15390 return "[object Promise]";
15398 var tc = Ua ? Xo : Aa,
15400 rc = ds || function(e, t) {
15401 return Tn.setTimeout(e, t)
15405 var t = Bo(e, function(e) {
15406 return n.size === ie && n.clear(), e
15412 return Ct.test(e) && t.push(""), e.replace(xt, function(e, n, r, i) {
15413 t.push(r ? i.replace(Pt, "$1") : n || e)
15416 ac = Cr(function(e, t) {
15417 return Ko(e) ? wn(e, On(t, 1, Ko, !0)) : []
15419 sc = Cr(function(e, t) {
15421 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), zi(n, 2)) : []
15423 cc = Cr(function(e, t) {
15425 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), J, n) : []
15427 lc = Cr(function(e) {
15429 return t.length && t[0] === e[0] ? Qn(t) : []
15431 uc = Cr(function(e) {
15434 return t === So(n) ? t = J : n.pop(), n.length && n[0] === e[0] ? Qn(n, zi(t, 2)) : []
15436 dc = Cr(function(e) {
15439 return (t = "function" == typeof t ? t : J) && n.pop(), n.length && n[0] === e[0] ? Qn(n, J, t) : []
15442 hc = Li(function(e, t) {
15443 var n = null == e ? 0 : e.length,
15445 return $r(e, u(t, function(e) {
15446 return ro(e, n) ? +e : e
15449 pc = Cr(function(e) {
15450 return jr(On(e, 1, Ko, !0))
15452 mc = Cr(function(e) {
15454 return Ko(t) && (t = J), jr(On(e, 1, Ko, !0), zi(t, 2))
15456 gc = Cr(function(e) {
15458 return t = "function" == typeof t ? t : J, jr(On(e, 1, Ko, !0), J, t)
15460 vc = Cr(function(e, t) {
15461 return Ko(e) ? wn(e, t) : []
15463 bc = Cr(function(e) {
15464 return Ur(s(e, Ko))
15466 yc = Cr(function(e) {
15468 return Ko(t) && (t = J), Ur(s(e, Ko), zi(t, 2))
15470 _c = Cr(function(e) {
15472 return t = "function" == typeof t ? t : J, Ur(s(e, Ko), J, t)
15475 wc = Cr(function(e) {
15477 n = t > 1 ? e[t - 1] : J;
15478 return n = "function" == typeof n ? (e.pop(), n) : J, Io(e, n)
15480 Ec = Li(function(e) {
15483 r = this.__wrapped__,
15487 return !(t > 1 || this.__actions__.length) && r instanceof Rt && ro(n) ? ((r = r.slice(n, +n + (t ? 1 : 0))).__actions__.push({
15491 }), new X(r, this.__chain__).thru(function(e) {
15492 return t && !e.length && e.push(J), e
15495 kc = ui(function(e, t, n) {
15496 za.call(e, n) ? ++e[n] : dn(e, n, 1)
15500 Tc = ui(function(e, t, n) {
15501 za.call(e, n) ? e[n].push(t) : dn(e, n, [t])
15503 Mc = Cr(function(e, t, r) {
15505 o = "function" == typeof t,
15506 a = Go(e) ? Sa(e.length) : [];
15507 return Us(e, function(e) {
15508 a[++i] = o ? n(t, e, r) : er(e, t, r)
15511 Ac = ui(function(e, t, n) {
15514 Sc = ui(function(e, t, n) {
15515 e[n ? 0 : 1].push(t)
15522 Oc = Cr(function(e, t) {
15523 if (null == e) return [];
15525 return n > 1 && io(e, t[0], t[1]) ? t = [] : n > 2 && io(t[0], t[1], t[2]) && (t = [t[0]]), gr(e, On(t, 1), [])
15527 Dc = us || function() {
15528 return Tn.Date.now()
15530 Nc = Cr(function(e, t, n) {
15533 var i = V(n, Vi(Nc));
15536 return Di(e, r, t, n, i)
15538 Ic = Cr(function(e, t, n) {
15541 var i = V(n, Vi(Ic));
15544 return Di(t, r, e, n, i)
15546 Rc = Cr(function(e, t) {
15549 Pc = Cr(function(e, t, n) {
15550 return $n(e, ua(t) || 0, n)
15553 var jc = Gs(function(e, t) {
15554 var r = (t = 1 == t.length && zc(t[0]) ? u(t[0], S(zi())) : u(On(t, 1), S(zi()))).length;
15555 return Cr(function(i) {
15556 for (var o = -1, a = _s(i.length, r); ++o < a;) i[o] = t[o].call(this, i[o]);
15557 return n(e, this, i)
15560 Hc = Cr(function(e, t) {
15561 var n = V(t, Vi(Hc));
15562 return Di(e, ge, J, t, n)
15564 Lc = Cr(function(e, t) {
15565 var n = V(t, Vi(Lc));
15566 return Di(e, ve, J, t, n)
15568 Fc = Li(function(e, t) {
15569 return Di(e, ye, J, J, J, t)
15572 Uc = Mi(function(e, t) {
15575 Vc = tr(function() {
15577 }()) ? tr : function(e) {
15578 return ta(e) && za.call(e, "callee") && !rs.call(e, "callee")
15581 Bc = Nn ? S(Nn) : function(e) {
15582 return ta(e) && Yn(e) == nt
15585 Yc = In ? S(In) : function(e) {
15586 return ta(e) && Yn(e) == Le
15588 Gc = Rn ? S(Rn) : function(e) {
15589 return ta(e) && ec(e) == ze
15591 Kc = Pn ? S(Pn) : function(e) {
15592 return ta(e) && Yn(e) == Ke
15594 Zc = jn ? S(jn) : function(e) {
15595 return ta(e) && ec(e) == Ze
15597 Xc = Hn ? S(Hn) : function(e) {
15598 return ta(e) && Jo(e.length) && !!vn[Yn(e)]
15601 Jc = Mi(function(e, t) {
15604 el = di(function(e, t) {
15605 if (lo(t) || Go(t)) si(t, ma(t), e);
15607 for (var n in t) za.call(t, n) && rn(e, n, t[n])
15609 tl = di(function(e, t) {
15612 nl = di(function(e, t, n, r) {
15615 rl = di(function(e, t, n, r) {
15619 ol = Cr(function(e) {
15620 return e.push(J, Ni), n(nl, J, e)
15622 al = Cr(function(e) {
15623 return e.push(J, Ii), n(dl, J, e)
15625 sl = wi(function(e, t, n) {
15628 cl = wi(function(e, t, n) {
15629 za.call(e, t) ? e[t].push(n) : e[t] = [n]
15632 ul = di(function(e, t, n) {
15635 dl = di(function(e, t, n, r) {
15638 fl = Li(function(e, t) {
15640 if (null == e) return n;
15642 t = u(t, function(t) {
15643 return t = Wr(t, e), r || (r = t.length > 1), t
15644 }), si(e, qi(e), n), r && (n = pn(n, ae | se | ce, Ri));
15645 for (var i = t.length; i--;) Hr(n, t[i]);
15648 hl = Li(function(e, t) {
15649 return null == e ? {} : vr(e, t)
15653 gl = gi(function(e, t, n) {
15654 return t = t.toLowerCase(), e + (n ? ya(t) : t)
15656 vl = gi(function(e, t, n) {
15657 return e + (n ? "-" : "") + t.toLowerCase()
15659 bl = gi(function(e, t, n) {
15660 return e + (n ? " " : "") + t.toLowerCase()
15662 yl = mi("toLowerCase"),
15663 _l = gi(function(e, t, n) {
15664 return e + (n ? "_" : "") + t.toLowerCase()
15666 $l = gi(function(e, t, n) {
15667 return e + (n ? " " : "") + El(t)
15669 wl = gi(function(e, t, n) {
15670 return e + (n ? " " : "") + t.toUpperCase()
15672 El = mi("toUpperCase"),
15673 kl = Cr(function(e, t) {
15677 return Zo(e) ? e : new Da(e)
15680 Cl = Li(function(e, t) {
15681 return i(t, function(t) {
15682 t = wo(t), dn(e, t, Nc(e[t], e))
15687 Ml = Cr(function(e, t) {
15688 return function(n) {
15692 Al = Cr(function(e, t) {
15693 return function(n) {
15702 Rl = Ei(function(e, t) {
15706 jl = Ei(function(e, t) {
15710 Ll = Ei(function(e, t) {
15714 ql = Ei(function(e, t) {
15717 return W.after = function(e, t) {
15718 if ("function" != typeof t) throw new Ha(ne);
15721 if (--e < 1) return t.apply(this, arguments)
15723 }, W.ary = Fo, W.assign = el, W.assignIn = tl, W.assignInWith = nl, W.assignWith = rl, W.at = il, W.before = qo, W.bind = Nc, W.bindAll = Cl, W.bindKey = Ic, W.castArray = function() {
15724 if (!arguments.length) return [];
15725 var e = arguments[0];
15726 return zc(e) ? e : [e]
15727 }, W.chain = Ro, W.chunk = function(e, t, n) {
15728 t = (n ? io(e, t, n) : t === J) ? 1 : ys(ca(t), 0);
15729 var r = null == e ? 0 : e.length;
15730 if (!r || t < 1) return [];
15731 for (var i = 0, o = 0, a = Sa(fs(r / t)); i < r;) a[o++] = Sr(e, i, i += t);
15733 }, W.compact = function(e) {
15734 for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
15739 }, W.concat = function() {
15740 var e = arguments.length;
15742 for (var t = Sa(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
15743 return d(zc(n) ? ai(n) : [n], On(t, 1))
15744 }, W.cond = function(e) {
15745 var t = null == e ? 0 : e.length,
15747 return e = t ? u(e, function(e) {
15748 if ("function" != typeof e[1]) throw new Ha(ne);
15749 return [r(e[0]), e[1]]
15750 }) : [], Cr(function(r) {
15751 for (var i = -1; ++i < t;) {
15753 if (n(o[0], this, r)) return n(o[1], this, r)
15756 }, W.conforms = function(e) {
15757 return yn(pn(e, ae))
15758 }, W.constant = wa, W.countBy = kc, W.create = function(e, t) {
15760 return null == t ? n : sn(n, t)
15761 }, W.curry = Uo, W.curryRight = Vo, W.debounce = zo, W.defaults = ol, W.defaultsDeep = al, W.defer = Rc, W.delay = Pc, W.difference = ac, W.differenceBy = sc, W.differenceWith = cc, W.drop = function(e, t, n) {
15762 var r = null == e ? 0 : e.length;
15763 return r ? (t = n || t === J ? 1 : ca(t), Sr(e, t < 0 ? 0 : t, r)) : []
15764 }, W.dropRight = function(e, t, n) {
15765 var r = null == e ? 0 : e.length;
15766 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Sr(e, 0, t < 0 ? 0 : t)) : []
15767 }, W.dropRightWhile = function(e, t) {
15768 return e && e.length ? Fr(e, zi(t, 3), !0, !0) : []
15769 }, W.dropWhile = function(e, t) {
15770 return e && e.length ? Fr(e, zi(t, 3), !0) : []
15771 }, W.fill = function(e, t, n, r) {
15772 var i = null == e ? 0 : e.length;
15773 return i ? (n && "number" != typeof n && io(e, t, n) && (n = 0, r = i), Mn(e, t, n, r)) : []
15774 }, W.filter = function(e, t) {
15775 return (zc(e) ? s : An)(e, zi(t, 3))
15776 }, W.flatMap = function(e, t) {
15777 return On(Lo(e, t), 1)
15778 }, W.flatMapDeep = function(e, t) {
15779 return On(Lo(e, t), Te)
15780 }, W.flatMapDepth = function(e, t, n) {
15781 return n = n === J ? 1 : ca(n), On(Lo(e, t), n)
15782 }, W.flatten = Mo, W.flattenDeep = function(e) {
15783 return (null == e ? 0 : e.length) ? On(e, Te) : []
15784 }, W.flattenDepth = function(e, t) {
15785 return (null == e ? 0 : e.length) ? (t = t === J ? 1 : ca(t), On(e, t)) : []
15786 }, W.flip = function(e) {
15788 }, W.flow = xl, W.flowRight = Tl, W.fromPairs = function(e) {
15789 for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
15794 }, W.functions = function(e) {
15795 return null == e ? [] : zn(e, ma(e))
15796 }, W.functionsIn = function(e) {
15797 return null == e ? [] : zn(e, ga(e))
15798 }, W.groupBy = Tc, W.initial = function(e) {
15799 return (null == e ? 0 : e.length) ? Sr(e, 0, -1) : []
15800 }, W.intersection = lc, W.intersectionBy = uc, W.intersectionWith = dc, W.invert = sl, W.invertBy = cl, W.invokeMap = Mc, W.iteratee = ka, W.keyBy = Ac, W.keys = ma, W.keysIn = ga, W.map = Lo, W.mapKeys = function(e, t) {
15802 return t = zi(t, 3), Dn(e, function(e, r, i) {
15803 dn(n, t(e, r, i), e)
15805 }, W.mapValues = function(e, t) {
15807 return t = zi(t, 3), Dn(e, function(e, r, i) {
15808 dn(n, r, t(e, r, i))
15810 }, W.matches = function(e) {
15811 return dr(pn(e, ae))
15812 }, W.matchesProperty = function(e, t) {
15813 return fr(e, pn(t, ae))
15814 }, W.memoize = Bo, W.merge = ul, W.mergeWith = dl, W.method = Ml, W.methodOf = Al, W.mixin = Ca, W.negate = Wo, W.nthArg = function(e) {
15815 return e = ca(e), Cr(function(t) {
15818 }, W.omit = fl, W.omitBy = function(e, t) {
15819 return va(e, Wo(zi(t)))
15820 }, W.once = function(e) {
15822 }, W.orderBy = function(e, t, n, r) {
15823 return null == e ? [] : (zc(t) || (t = null == t ? [] : [t]), n = r ? J : n, zc(n) || (n = null == n ? [] : [n]), gr(e, t, n))
15824 }, W.over = Sl, W.overArgs = jc, W.overEvery = Ol, W.overSome = Dl, W.partial = Hc, W.partialRight = Lc, W.partition = Sc, W.pick = hl, W.pickBy = va, W.property = Ta, W.propertyOf = function(e) {
15825 return function(t) {
15826 return null == e ? J : Bn(e, t)
15828 }, W.pull = fc, W.pullAll = Oo, W.pullAllBy = function(e, t, n) {
15829 return e && e.length && t && t.length ? _r(e, t, zi(n, 2)) : e
15830 }, W.pullAllWith = function(e, t, n) {
15831 return e && e.length && t && t.length ? _r(e, t, J, n) : e
15832 }, W.pullAt = hc, W.range = Nl, W.rangeRight = Il, W.rearg = Fc, W.reject = function(e, t) {
15833 return (zc(e) ? s : An)(e, Wo(zi(t, 3)))
15834 }, W.remove = function(e, t) {
15836 if (!e || !e.length) return n;
15840 for (t = zi(t, 3); ++r < o;) {
15842 t(a, r, e) && (n.push(a), i.push(r))
15845 }, W.rest = function(e, t) {
15846 if ("function" != typeof e) throw new Ha(ne);
15847 return t = t === J ? t : ca(t), Cr(e, t)
15848 }, W.reverse = Do, W.sampleSize = function(e, t, n) {
15849 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), (zc(e) ? en : Tr)(e, t)
15850 }, W.set = function(e, t, n) {
15851 return null == e ? e : Mr(e, t, n)
15852 }, W.setWith = function(e, t, n, r) {
15853 return r = "function" == typeof r ? r : J, null == e ? e : Mr(e, t, n, r)
15854 }, W.shuffle = function(e) {
15855 return (zc(e) ? tn : Ar)(e)
15856 }, W.slice = function(e, t, n) {
15857 var r = null == e ? 0 : e.length;
15858 return r ? (n && "number" != typeof n && io(e, t, n) ? (t = 0, n = r) : (t = null == t ? 0 : ca(t), n = n === J ? r : ca(n)), Sr(e, t, n)) : []
15859 }, W.sortBy = Oc, W.sortedUniq = function(e) {
15860 return e && e.length ? Ir(e) : []
15861 }, W.sortedUniqBy = function(e, t) {
15862 return e && e.length ? Ir(e, zi(t, 2)) : []
15863 }, W.split = function(e, t, n) {
15864 return n && "number" != typeof n && io(e, t, n) && (t = n = J), (n = n === J ? Oe : n >>> 0) ? (e = fa(e)) && ("string" == typeof t || null != t && !Kc(t)) && !(t = Pr(t)) && H(e) ? Yr(K(e), 0, n) : e.split(t, n) : []
15865 }, W.spread = function(e, t) {
15866 if ("function" != typeof e) throw new Ha(ne);
15867 return t = null == t ? 0 : ys(ca(t), 0), Cr(function(r) {
15870 return i && d(o, i), n(e, this, o)
15872 }, W.tail = function(e) {
15873 var t = null == e ? 0 : e.length;
15874 return t ? Sr(e, 1, t) : []
15875 }, W.take = function(e, t, n) {
15876 return e && e.length ? (t = n || t === J ? 1 : ca(t), Sr(e, 0, t < 0 ? 0 : t)) : []
15877 }, W.takeRight = function(e, t, n) {
15878 var r = null == e ? 0 : e.length;
15879 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Sr(e, t < 0 ? 0 : t, r)) : []
15880 }, W.takeRightWhile = function(e, t) {
15881 return e && e.length ? Fr(e, zi(t, 3), !1, !0) : []
15882 }, W.takeWhile = function(e, t) {
15883 return e && e.length ? Fr(e, zi(t, 3)) : []
15884 }, W.tap = function(e, t) {
15886 }, W.throttle = function(e, t, n) {
15889 if ("function" != typeof e) throw new Ha(ne);
15890 return ea(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), zo(e, t, {
15895 }, W.thru = Po, W.toArray = aa, W.toPairs = pl, W.toPairsIn = ml, W.toPath = function(e) {
15896 return zc(e) ? u(e, wo) : oa(e) ? [e] : ai(oc(fa(e)))
15897 }, W.toPlainObject = da, W.transform = function(e, t, n) {
15899 o = r || Wc(e) || Xc(e);
15900 if (t = zi(t, 4), null == n) {
15901 var a = e && e.constructor;
15902 n = o ? r ? new a : [] : ea(e) && Xo(a) ? qs(ts(e)) : {}
15904 return (o ? i : Dn)(e, function(e, r, i) {
15905 return t(n, e, r, i)
15907 }, W.unary = function(e) {
15909 }, W.union = pc, W.unionBy = mc, W.unionWith = gc, W.uniq = function(e) {
15910 return e && e.length ? jr(e) : []
15911 }, W.uniqBy = function(e, t) {
15912 return e && e.length ? jr(e, zi(t, 2)) : []
15913 }, W.uniqWith = function(e, t) {
15914 return t = "function" == typeof t ? t : J, e && e.length ? jr(e, J, t) : []
15915 }, W.unset = function(e, t) {
15916 return null == e || Hr(e, t)
15917 }, W.unzip = No, W.unzipWith = Io, W.update = function(e, t, n) {
15918 return null == e ? e : Lr(e, t, Br(n))
15919 }, W.updateWith = function(e, t, n, r) {
15920 return r = "function" == typeof r ? r : J, null == e ? e : Lr(e, t, Br(n), r)
15921 }, W.values = ba, W.valuesIn = function(e) {
15922 return null == e ? [] : O(e, ga(e))
15923 }, W.without = vc, W.words = $a, W.wrap = function(e, t) {
15924 return Hc(Br(t), e)
15925 }, W.xor = bc, W.xorBy = yc, W.xorWith = _c, W.zip = $c, W.zipObject = function(e, t) {
15926 return Vr(e || [], t || [], rn)
15927 }, W.zipObjectDeep = function(e, t) {
15928 return Vr(e || [], t || [], Mr)
15929 }, W.zipWith = wc, W.entries = pl, W.entriesIn = ml, W.extend = tl, W.extendWith = nl, Ca(W, W), W.add = Rl, W.attempt = kl, W.camelCase = gl, W.capitalize = ya, W.ceil = Pl, W.clamp = function(e, t, n) {
15930 return n === J && (n = t, t = J), n !== J && (n = (n = ua(n)) === n ? n : 0), t !== J && (t = (t = ua(t)) === t ? t : 0), hn(ua(e), t, n)
15931 }, W.clone = function(e) {
15933 }, W.cloneDeep = function(e) {
15934 return pn(e, ae | ce)
15935 }, W.cloneDeepWith = function(e, t) {
15936 return t = "function" == typeof t ? t : J, pn(e, ae | ce, t)
15937 }, W.cloneWith = function(e, t) {
15938 return t = "function" == typeof t ? t : J, pn(e, ce, t)
15939 }, W.conformsTo = function(e, t) {
15940 return null == t || _n(e, t, ma(t))
15941 }, W.deburr = _a, W.defaultTo = function(e, t) {
15942 return null == e || e !== e ? t : e
15943 }, W.divide = jl, W.endsWith = function(e, t, n) {
15944 e = fa(e), t = Pr(t);
15946 i = n = n === J ? r : hn(ca(n), 0, r);
15947 return (n -= t.length) >= 0 && e.slice(n, i) == t
15948 }, W.eq = Yo, W.escape = function(e) {
15949 return (e = fa(e)) && yt.test(e) ? e.replace(vt, qn) : e
15950 }, W.escapeRegExp = function(e) {
15951 return (e = fa(e)) && Mt.test(e) ? e.replace(Tt, "\\$&") : e
15952 }, W.every = function(e, t, n) {
15953 var r = zc(e) ? a : Cn;
15954 return n && io(e, t, n) && (t = J), r(e, zi(t, 3))
15955 }, W.find = Cc, W.findIndex = xo, W.findKey = function(e, t) {
15956 return v(e, zi(t, 3), Dn)
15957 }, W.findLast = xc, W.findLastIndex = To, W.findLastKey = function(e, t) {
15958 return v(e, zi(t, 3), Ln)
15959 }, W.floor = Hl, W.forEach = jo, W.forEachRight = Ho, W.forIn = function(e, t) {
15960 return null == e ? e : zs(e, zi(t, 3), ga)
15961 }, W.forInRight = function(e, t) {
15962 return null == e ? e : Bs(e, zi(t, 3), ga)
15963 }, W.forOwn = function(e, t) {
15964 return e && Dn(e, zi(t, 3))
15965 }, W.forOwnRight = function(e, t) {
15966 return e && Ln(e, zi(t, 3))
15967 }, W.get = ha, W.gt = qc, W.gte = Uc, W.has = function(e, t) {
15968 return null != e && Xi(e, t, Kn)
15969 }, W.hasIn = pa, W.head = Ao, W.identity = Ea, W.includes = function(e, t, n, r) {
15970 e = Go(e) ? e : ba(e), n = n && !r ? ca(n) : 0;
15972 return n < 0 && (n = ys(i + n, 0)), ia(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && y(e, t, n) > -1
15973 }, W.indexOf = function(e, t, n) {
15974 var r = null == e ? 0 : e.length;
15976 var i = null == n ? 0 : ca(n);
15977 return i < 0 && (i = ys(r + i, 0)), y(e, t, i)
15978 }, W.inRange = function(e, t, n) {
15979 return t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), e = ua(e), Xn(e, t, n)
15980 }, W.invoke = ll, W.isArguments = Vc, W.isArray = zc, W.isArrayBuffer = Bc, W.isArrayLike = Go, W.isArrayLikeObject = Ko, W.isBoolean = function(e) {
15981 return !0 === e || !1 === e || ta(e) && Yn(e) == He
15982 }, W.isBuffer = Wc, W.isDate = Yc, W.isElement = function(e) {
15983 return ta(e) && 1 === e.nodeType && !ra(e)
15984 }, W.isEmpty = function(e) {
15985 if (null == e) return !0;
15986 if (Go(e) && (zc(e) || "string" == typeof e || "function" == typeof e.splice || Wc(e) || Xc(e) || Vc(e))) return !e.length;
15988 if (t == ze || t == Ze) return !e.size;
15989 if (lo(e)) return !sr(e).length;
15991 if (za.call(e, n)) return !1;
15993 }, W.isEqual = function(e, t) {
15995 }, W.isEqualWith = function(e, t, n) {
15996 var r = (n = "function" == typeof n ? n : J) ? n(e, t) : J;
15997 return r === J ? nr(e, t, J, n) : !!r
15998 }, W.isError = Zo, W.isFinite = function(e) {
15999 return "number" == typeof e && gs(e)
16000 }, W.isFunction = Xo, W.isInteger = Qo, W.isLength = Jo, W.isMap = Gc, W.isMatch = function(e, t) {
16001 return e === t || ir(e, t, Wi(t))
16002 }, W.isMatchWith = function(e, t, n) {
16003 return n = "function" == typeof n ? n : J, ir(e, t, Wi(t), n)
16004 }, W.isNaN = function(e) {
16005 return na(e) && e != +e
16006 }, W.isNative = function(e) {
16007 if (tc(e)) throw new Da(te);
16009 }, W.isNil = function(e) {
16011 }, W.isNull = function(e) {
16013 }, W.isNumber = na, W.isObject = ea, W.isObjectLike = ta, W.isPlainObject = ra, W.isRegExp = Kc, W.isSafeInteger = function(e) {
16014 return Qo(e) && e >= -Me && e <= Me
16015 }, W.isSet = Zc, W.isString = ia, W.isSymbol = oa, W.isTypedArray = Xc, W.isUndefined = function(e) {
16017 }, W.isWeakMap = function(e) {
16018 return ta(e) && ec(e) == et
16019 }, W.isWeakSet = function(e) {
16020 return ta(e) && Yn(e) == tt
16021 }, W.join = function(e, t) {
16022 return null == e ? "" : vs.call(e, t)
16023 }, W.kebabCase = vl, W.last = So, W.lastIndexOf = function(e, t, n) {
16024 var r = null == e ? 0 : e.length;
16027 return n !== J && (i = (i = ca(n)) < 0 ? ys(r + i, 0) : _s(i, r - 1)), t === t ? Y(e, t, i) : b(e, $, i, !0)
16028 }, W.lowerCase = bl, W.lowerFirst = yl, W.lt = Qc, W.lte = Jc, W.max = function(e) {
16029 return e && e.length ? xn(e, Ea, Gn) : J
16030 }, W.maxBy = function(e, t) {
16031 return e && e.length ? xn(e, zi(t, 2), Gn) : J
16032 }, W.mean = function(e) {
16034 }, W.meanBy = function(e, t) {
16035 return w(e, zi(t, 2))
16036 }, W.min = function(e) {
16037 return e && e.length ? xn(e, Ea, lr) : J
16038 }, W.minBy = function(e, t) {
16039 return e && e.length ? xn(e, zi(t, 2), lr) : J
16040 }, W.stubArray = Ma, W.stubFalse = Aa, W.stubObject = function() {
16042 }, W.stubString = function() {
16044 }, W.stubTrue = function() {
16046 }, W.multiply = Ll, W.nth = function(e, t) {
16047 return e && e.length ? mr(e, ca(t)) : J
16048 }, W.noConflict = function() {
16049 return Tn._ === this && (Tn._ = Ka), this
16050 }, W.noop = xa, W.now = Dc, W.pad = function(e, t, n) {
16052 var r = (t = ca(t)) ? G(e) : 0;
16053 if (!t || r >= t) return e;
16054 var i = (t - r) / 2;
16055 return Ci(hs(i), n) + e + Ci(fs(i), n)
16056 }, W.padEnd = function(e, t, n) {
16058 var r = (t = ca(t)) ? G(e) : 0;
16059 return t && r < t ? e + Ci(t - r, n) : e
16060 }, W.padStart = function(e, t, n) {
16062 var r = (t = ca(t)) ? G(e) : 0;
16063 return t && r < t ? Ci(t - r, n) + e : e
16064 }, W.parseInt = function(e, t, n) {
16065 return n || null == t ? t = 0 : t && (t = +t), ws(fa(e).replace(St, ""), t || 0)
16066 }, W.random = function(e, t, n) {
16067 if (n && "boolean" != typeof n && io(e, t, n) && (t = n = J), n === J && ("boolean" == typeof t ? (n = t, t = J) : "boolean" == typeof e && (n = e, e = J)), e === J && t === J ? (e = 0, t = 1) : (e = sa(e), t === J ? (t = e, e = 0) : t = sa(t)), e > t) {
16071 if (n || e % 1 || t % 1) {
16073 return _s(e + i * (t - e + En("1e-" + ((i + "").length - 1))), t)
16076 }, W.reduce = function(e, t, n) {
16077 var r = zc(e) ? f : C,
16078 i = arguments.length < 3;
16079 return r(e, zi(t, 4), n, i, Us)
16080 }, W.reduceRight = function(e, t, n) {
16081 var r = zc(e) ? h : C,
16082 i = arguments.length < 3;
16083 return r(e, zi(t, 4), n, i, Vs)
16084 }, W.repeat = function(e, t, n) {
16085 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), kr(fa(e), t)
16086 }, W.replace = function() {
16089 return e.length < 3 ? t : t.replace(e[1], e[2])
16090 }, W.result = function(e, t, n) {
16092 i = (t = Wr(t, e)).length;
16093 for (i || (i = 1, e = J); ++r < i;) {
16094 var o = null == e ? J : e[wo(t[r])];
16095 o === J && (r = i, o = n), e = Xo(o) ? o.call(e) : o
16098 }, W.round = Fl, W.runInContext = m, W.sample = function(e) {
16099 return (zc(e) ? Jt : xr)(e)
16100 }, W.size = function(e) {
16101 if (null == e) return 0;
16102 if (Go(e)) return ia(e) ? G(e) : e.length;
16104 return t == ze || t == Ze ? e.size : sr(e).length
16105 }, W.snakeCase = _l, W.some = function(e, t, n) {
16106 var r = zc(e) ? p : Or;
16107 return n && io(e, t, n) && (t = J), r(e, zi(t, 3))
16108 }, W.sortedIndex = function(e, t) {
16110 }, W.sortedIndexBy = function(e, t, n) {
16111 return Nr(e, t, zi(n, 2))
16112 }, W.sortedIndexOf = function(e, t) {
16113 var n = null == e ? 0 : e.length;
16116 if (r < n && Yo(e[r], t)) return r
16119 }, W.sortedLastIndex = function(e, t) {
16120 return Dr(e, t, !0)
16121 }, W.sortedLastIndexBy = function(e, t, n) {
16122 return Nr(e, t, zi(n, 2), !0)
16123 }, W.sortedLastIndexOf = function(e, t) {
16124 if (null == e ? 0 : e.length) {
16125 var n = Dr(e, t, !0) - 1;
16126 if (Yo(e[n], t)) return n
16129 }, W.startCase = $l, W.startsWith = function(e, t, n) {
16130 return e = fa(e), n = null == n ? 0 : hn(ca(n), 0, e.length), t = Pr(t), e.slice(n, n + t.length) == t
16131 }, W.subtract = ql, W.sum = function(e) {
16132 return e && e.length ? T(e, Ea) : 0
16133 }, W.sumBy = function(e, t) {
16134 return e && e.length ? T(e, zi(t, 2)) : 0
16135 }, W.template = function(e, t, n) {
16136 var r = W.templateSettings;
16137 n && io(e, t, n) && (t = J), e = fa(e), t = nl({}, t, r, Ni);
16138 var i, o, a = nl({}, t.imports, r.imports, Ni),
16142 u = t.interpolate || Bt,
16144 f = Pa((t.escape || Bt).source + "|" + u.source + "|" + (u === wt ? jt : Bt).source + "|" + (t.evaluate || Bt).source + "|$", "g"),
16145 h = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++gn + "]") + "\n";
16146 e.replace(f, function(t, n, r, a, s, c) {
16147 return r || (r = a), d += e.slice(l, c).replace(Wt, P), n && (i = !0, d += "' +\n__e(" + n + ") +\n'"), s && (o = !0, d += "';\n" + s + ";\n__p += '"), r && (d += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), l = c + t.length, t
16149 var p = t.variable;
16150 p || (d = "with (obj) {\n" + d + "\n}\n"), d = (o ? d.replace(ht, "") : d).replace(pt, "$1").replace(mt, "$1;"), d = "function(" + (p || "obj") + ") {\n" + (p ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (i ? ", __e = _.escape" : "") + (o ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
16151 var m = kl(function() {
16152 return Na(s, h + "return " + d).apply(J, c)
16154 if (m.source = d, Zo(m)) throw m;
16156 }, W.times = function(e, t) {
16157 if ((e = ca(e)) < 1 || e > Me) return [];
16160 t = zi(t), e -= Oe;
16161 for (var i = M(r, t); ++n < e;) t(n);
16163 }, W.toFinite = sa, W.toInteger = ca, W.toLength = la, W.toLower = function(e) {
16164 return fa(e).toLowerCase()
16165 }, W.toNumber = ua, W.toSafeInteger = function(e) {
16166 return e ? hn(ca(e), -Me, Me) : 0 === e ? e : 0
16167 }, W.toString = fa, W.toUpper = function(e) {
16168 return fa(e).toUpperCase()
16169 }, W.trim = function(e, t, n) {
16170 if ((e = fa(e)) && (n || t === J)) return e.replace(At, "");
16171 if (!e || !(t = Pr(t))) return e;
16174 return Yr(r, N(r, i), I(r, i) + 1).join("")
16175 }, W.trimEnd = function(e, t, n) {
16176 if ((e = fa(e)) && (n || t === J)) return e.replace(Ot, "");
16177 if (!e || !(t = Pr(t))) return e;
16179 return Yr(r, 0, I(r, K(t)) + 1).join("")
16180 }, W.trimStart = function(e, t, n) {
16181 if ((e = fa(e)) && (n || t === J)) return e.replace(St, "");
16182 if (!e || !(t = Pr(t))) return e;
16184 return Yr(r, N(r, K(t))).join("")
16185 }, W.truncate = function(e, t) {
16189 var i = "separator" in t ? t.separator : i;
16190 n = "length" in t ? ca(t.length) : n, r = "omission" in t ? Pr(t.omission) : r
16192 var o = (e = fa(e)).length;
16197 if (n >= o) return e;
16199 if (s < 1) return r;
16200 var c = a ? Yr(a, 0, s).join("") : e.slice(0, s);
16201 if (i === J) return c + r;
16202 if (a && (s += c.length - s), Kc(i)) {
16203 if (e.slice(s).search(i)) {
16205 for (i.global || (i = Pa(i.source, fa(Ht.exec(i)) + "g")), i.lastIndex = 0; l = i.exec(u);) var d = l.index;
16206 c = c.slice(0, d === J ? s : d)
16208 } else if (e.indexOf(Pr(i), s) != s) {
16209 var f = c.lastIndexOf(i);
16210 f > -1 && (c = c.slice(0, f))
16213 }, W.unescape = function(e) {
16214 return (e = fa(e)) && bt.test(e) ? e.replace(gt, Un) : e
16215 }, W.uniqueId = function(e) {
16218 }, W.upperCase = wl, W.upperFirst = El, W.each = jo, W.eachRight = Ho, W.first = Ao, Ca(W, function() {
16220 return Dn(W, function(t, n) {
16221 za.call(W.prototype, n) || (e[n] = t)
16225 }), W.VERSION = "4.17.4", i(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
16226 W[e].placeholder = W
16227 }), i(["drop", "take"], function(e, t) {
16228 Rt.prototype[e] = function(n) {
16229 n = n === J ? 1 : ys(ca(n), 0);
16230 var r = this.__filtered__ && !t ? new Rt(this) : this.clone();
16231 return r.__filtered__ ? r.__takeCount__ = _s(n, r.__takeCount__) : r.__views__.push({
16233 type: e + (r.__dir__ < 0 ? "Right" : "")
16235 }, Rt.prototype[e + "Right"] = function(t) {
16236 return this.reverse()[e](t).reverse()
16238 }), i(["filter", "map", "takeWhile"], function(e, t) {
16240 r = n == Ce || 3 == n;
16241 Rt.prototype[e] = function(e) {
16242 var t = this.clone();
16243 return t.__iteratees__.push({
16244 iteratee: zi(e, 3),
16246 }), t.__filtered__ = t.__filtered__ || r, t
16248 }), i(["head", "last"], function(e, t) {
16249 var n = "take" + (t ? "Right" : "");
16250 Rt.prototype[e] = function() {
16251 return this[n](1).value()[0]
16253 }), i(["initial", "tail"], function(e, t) {
16254 var n = "drop" + (t ? "" : "Right");
16255 Rt.prototype[e] = function() {
16256 return this.__filtered__ ? new Rt(this) : this[n](1)
16258 }), Rt.prototype.compact = function() {
16259 return this.filter(Ea)
16260 }, Rt.prototype.find = function(e) {
16261 return this.filter(e).head()
16262 }, Rt.prototype.findLast = function(e) {
16263 return this.reverse().find(e)
16264 }, Rt.prototype.invokeMap = Cr(function(e, t) {
16265 return "function" == typeof e ? new Rt(this) : this.map(function(n) {
16268 }), Rt.prototype.reject = function(e) {
16269 return this.filter(Wo(zi(e)))
16270 }, Rt.prototype.slice = function(e, t) {
16273 return n.__filtered__ && (e > 0 || t < 0) ? new Rt(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== J && (n = (t = ca(t)) < 0 ? n.dropRight(-t) : n.take(t - e)), n)
16274 }, Rt.prototype.takeRightWhile = function(e) {
16275 return this.reverse().takeWhile(e).reverse()
16276 }, Rt.prototype.toArray = function() {
16277 return this.take(Oe)
16278 }, Dn(Rt.prototype, function(e, t) {
16279 var n = /^(?:filter|find|map|reject)|While$/.test(t),
16280 r = /^(?:head|last)$/.test(t),
16281 i = W[r ? "take" + ("last" == t ? "Right" : "") : t],
16282 o = r || /^find/.test(t);
16283 i && (W.prototype[t] = function() {
16284 var t = this.__wrapped__,
16285 a = r ? [1] : arguments,
16286 s = t instanceof Rt,
16290 var t = i.apply(W, d([e], a));
16291 return r && f ? t[0] : t
16293 l && n && "function" == typeof c && 1 != c.length && (s = l = !1);
16294 var f = this.__chain__,
16295 h = !!this.__actions__.length,
16299 t = m ? t : new Rt(this);
16300 var g = e.apply(t, a);
16301 return g.__actions__.push({
16307 return p && m ? e.apply(this, a) : (g = this.thru(u), p ? r ? g.value()[0] : g.value() : g)
16309 }), i(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
16311 n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
16312 r = /^(?:pop|shift)$/.test(e);
16313 W.prototype[e] = function() {
16315 if (r && !this.__chain__) {
16316 var i = this.value();
16317 return t.apply(zc(i) ? i : [], e)
16319 return this[n](function(n) {
16320 return t.apply(zc(n) ? n : [], e)
16323 }), Dn(Rt.prototype, function(e, t) {
16326 var r = n.name + "";
16327 (Ds[r] || (Ds[r] = [])).push({
16332 }), Ds[$i(J, fe).name] = [{
16335 }], Rt.prototype.clone = function() {
16336 var e = new Rt(this.__wrapped__);
16337 return e.__actions__ = ai(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = ai(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = ai(this.__views__), e
16338 }, Rt.prototype.reverse = function() {
16339 if (this.__filtered__) {
16340 var e = new Rt(this);
16341 e.__dir__ = -1, e.__filtered__ = !0
16342 } else(e = this.clone()).__dir__ *= -1;
16344 }, Rt.prototype.value = function() {
16345 var e = this.__wrapped__.value(),
16349 i = n ? e.length : 0,
16350 o = Ki(0, i, this.__views__),
16355 u = this.__iteratees__,
16358 h = _s(c, this.__takeCount__);
16359 if (!n || !r && i == c && h == c) return qr(e, this.__actions__);
16361 e: for (; c-- && f < h;) {
16362 for (var m = -1, g = e[l += t]; ++m < d;) {
16367 if (y == xe) g = _;
16369 if (y == Ce) continue e;
16376 }, W.prototype.at = Ec, W.prototype.chain = function() {
16378 }, W.prototype.commit = function() {
16379 return new X(this.value(), this.__chain__)
16380 }, W.prototype.next = function() {
16381 this.__values__ === J && (this.__values__ = aa(this.value()));
16382 var e = this.__index__ >= this.__values__.length;
16385 value: e ? J : this.__values__[this.__index__++]
16387 }, W.prototype.plant = function(e) {
16388 for (var t, n = this; n instanceof Z;) {
16390 r.__index__ = 0, r.__values__ = J, t ? i.__wrapped__ = r : t = r;
16394 return i.__wrapped__ = e, t
16395 }, W.prototype.reverse = function() {
16396 var e = this.__wrapped__;
16397 if (e instanceof Rt) {
16399 return this.__actions__.length && (t = new Rt(this)), (t = t.reverse()).__actions__.push({
16403 }), new X(t, this.__chain__)
16405 return this.thru(Do)
16406 }, W.prototype.toJSON = W.prototype.valueOf = W.prototype.value = function() {
16407 return qr(this.__wrapped__, this.__actions__)
16408 }, W.prototype.first = W.prototype.head, as && (W.prototype[as] = function() {
16412 "function" == typeof define && "object" == typeof define.amd && define.amd ? (Tn._ = Vn, define(function() {
16414 })) : An ? ((An.exports = Vn)._ = Vn, Mn._ = Vn) : Tn._ = Vn
16417 var n = t.isDefined,
16425 t.module("LocalStorageModule", []).provider("localStorageService", function() {
16426 this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
16430 }, this.defaultToCookie = !0, this.notify = {
16433 }, this.setPrefix = function(e) {
16434 return this.prefix = e, this
16435 }, this.setStorageType = function(e) {
16436 return this.storageType = e, this
16437 }, this.setDefaultToCookie = function(e) {
16438 return this.defaultToCookie = !!e, this
16439 }, this.setStorageCookie = function(e, t, n) {
16440 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
16441 }, this.setStorageCookieDomain = function(e) {
16442 return this.cookie.domain = e, this
16443 }, this.setNotify = function(e, t) {
16444 return this.notify = {
16448 }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(e, t, u, d, f) {
16450 if (n || (n = t.event), b.setItem && s(n.key) && w(n.key)) {
16453 e.$broadcast("LocalStorageModule.notification.changed", {
16455 newvalue: n.newValue,
16456 storageType: m.storageType
16466 u ? u[0] && (u = u[0]) : u = document, "." !== g.substr(-1) && (g = g ? g + "." : "");
16467 var _ = function(e) {
16471 return e.replace(new RegExp("^" + g, "g"), "")
16474 return 0 === e.indexOf(g)
16478 var n = y in t && null !== t[y],
16479 r = _("__" + Math.round(1e7 * Math.random()));
16480 return n && ((p = t[y]).setItem(r, ""), p.removeItem(r)), n
16482 return m.defaultToCookie && (y = "cookie"), e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16486 C = function(t, n, i) {
16489 if (I(i), n = r(n) ? null : l(n), !k && m.defaultToCookie || "cookie" === m.storageType) return k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
16492 storageType: "cookie"
16495 p && p.setItem(_(t), n), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
16498 storageType: m.storageType
16501 return e.$broadcast("LocalStorageModule.notification.error", r.message), A(t, n)
16508 x = function(t, n) {
16511 if (I(n), !k && m.defaultToCookie || "cookie" === m.storageType) return k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), S(t);
16512 var i = p ? p.getItem(_(t)) : null;
16513 if (!i || "null" === i) return null;
16515 return JSON.parse(i)
16527 arguments.length >= 1 && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (n = 1, I(arguments[arguments.length - 1]));
16529 for (r = 0; r < arguments.length - n; r++)
16530 if (i = arguments[r], !k && m.defaultToCookie || "cookie" === m.storageType) k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
16532 storageType: "cookie"
16535 p.removeItem(_(i)), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
16537 storageType: m.storageType
16540 e.$broadcast("LocalStorageModule.notification.error", t.message), O(i)
16548 return t.navigator.cookieEnabled || "cookie" in u && (u.cookie.length > 0 || (u.cookie = "test").indexOf.call(u.cookie, "test") > -1)
16550 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16553 A = function(t, n, s, c) {
16554 if (r(n)) return !1;
16555 if ((a(n) || o(n)) && (n = l(n)), !M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16560 if (null === n ? (f.setTime(f.getTime() + -864e5), d = "; expires=" + f.toGMTString(), n = "") : i(s) && 0 !== s ? (f.setTime(f.getTime() + 24 * s * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()) : 0 !== v.expiry && (f.setTime(f.getTime() + 24 * v.expiry * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()), t) {
16561 var p = "; path=" + v.path;
16562 v.domain && (h = "; domain=" + v.domain), "boolean" == typeof c ? !0 === c && (h += "; secure") : !0 === v.secure && (h += "; secure"), u.cookie = _(t) + "=" + encodeURIComponent(n) + d + p + h
16565 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
16570 if (!M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16571 for (var n = u.cookie && u.cookie.split(";") || [], r = 0; r < n.length; r++) {
16573 " " === i.charAt(0);) i = i.substring(1, i.length);
16574 if (0 === i.indexOf(_(t) + "=")) {
16575 var o = decodeURIComponent(i.substring(g.length + t.length + 1, i.length));
16577 var a = JSON.parse(o);
16578 return "number" == typeof a ? o : a
16590 for (var e = null, t = g.length, n = u.cookie.split(";"), r = 0; r < n.length; r++) {
16592 " " === e.charAt(0);) e = e.substring(1, e.length);
16593 var i = e.substring(t, e.indexOf("="));
16601 return e && y !== e && (y = e, k = E()), k
16603 k && (t.addEventListener ? (t.addEventListener("storage", h, !1), e.$on("$destroy", function() {
16604 t.removeEventListener("storage", h)
16605 })) : t.attachEvent && (t.attachEvent("onstorage", h), e.$on("$destroy", function() {
16606 t.detachEvent("onstorage", h)
16612 setPrefix: function(e) {
16618 keys: function(t) {
16621 if (I(t), !k) return e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
16625 if (o.substr(0, r) === g) try {
16626 i.push(o.substr(r))
16628 return e.$broadcast("LocalStorageModule.notification.error", t.Description), []
16636 clearAll: function(t, n) {
16640 var i = g ? new RegExp("^" + g) : new RegExp,
16641 o = t ? new RegExp(t) : new RegExp;
16642 if (!k && m.defaultToCookie || "cookie" === m.storageType) return k || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), D();
16643 if (!k && !m.defaultToCookie) return !1;
16646 if (i.test(s) && o.test(s.substr(a))) try {
16649 return e.$broadcast("LocalStorageModule.notification.error", t.message), D()
16656 bind: function(e, t, r, i, a) {
16657 var s = x(i = i || t, a);
16658 return null === s && n(r) ? s = r : o(s) && o(r) && (s = c(s, r)), d(t).assign(e, s), e.$watch(t, function(e) {
16664 length: function(e) {
16668 for (var r = 0, i = t[y], o = 0; o < i.length; o++) 0 === i.key(o).indexOf(g) && r++;
16674 defaultToCookie: this.defaultToCookie,
16686 }(window, window.angular),
16691 return null != e && "" !== e && "hasOwnProperty" !== e && a.test("." + e)
16695 if (!n(r)) throw o("badmember", 'Dotted member path "@{0}" is invalid.', r);
16696 for (var i = r.split("."), a = 0, s = i.length; a < s && t.isDefined(e); a++) {
16698 e = null !== e ? e[c] : void 0
16704 n = n || {}, t.forEach(n, function(e, t) {
16707 for (var r in e) !e.hasOwnProperty(r) || "$" === r.charAt(0) && "$" === r.charAt(1) || (n[r] = e[r]);
16710 var o = t.$$minErr("$resource"),
16711 a = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
16712 t.module("ngResource", ["ng"]).info({
16713 angularVersion: "1.6.6"
16714 }).provider("$resource", function() {
16715 var e = /^https?:\/\/\[[^\]]*][^/]*/,
16718 stripTrailingSlashes: !0,
16738 }, this.$get = ["$http", "$log", "$q", "$timeout", function(a, s, c, l) {
16740 this.template = e, this.defaults = p({}, n.defaults, t), this.urlParams = {}
16743 function d(e, t, _, $) {
16746 return n = p({}, t, n), h(n, function(t, n) {
16747 b(t) && (t = t(e)), i[n] = t && t.charAt && "@" === t.charAt(0) ? r(e, t.substr(1)) : t
16758 var C = new u(e, $);
16759 return _ = p({}, n.defaults.actions, _), k.prototype.toJSON = function() {
16760 var e = p({}, this);
16761 return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
16762 }, h(_, function(e, t) {
16763 var n = !0 === e.hasBody || !1 !== e.hasBody && /^(POST|PUT|PATCH)$/i.test(e.method),
16765 u = v(e.cancellable) ? e.cancellable : C.defaults.cancellable;
16766 r && !y(r) && (s.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."), delete e.timeout, r = null), k[t] = function(s, d, v, y) {
16767 var _, $, x, T = {};
16768 switch (arguments.length) {
16774 T = s, _ = d, $ = v;
16783 b(s) ? $ = s : n ? _ = s : T = s;
16788 throw o("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
16790 var M, A, S = this instanceof k,
16791 O = S ? _ : e.isArray ? [] : new k(_),
16793 N = e.interceptor && e.interceptor.response || E,
16794 I = e.interceptor && e.interceptor.responseError || void 0,
16797 h(e, function(e, t) {
16799 default: D[t] = m(e);
16803 case "interceptor":
16804 case "cancellable":
16806 }), !S && u && (M = c.defer(), D.timeout = M.promise, r && (A = l(M.resolve, r))), n && (D.data = _), C.setUrlParams(D, p({}, w(_, e.params || {}), T), e.url);
16807 var j = a(D).then(function(n) {
16810 if (g(r) !== !!e.isArray) throw o("badcfg", "Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})", t, e.isArray ? "array" : "object", g(r) ? "array" : "object", D.method, D.url);
16811 if (e.isArray) O.length = 0, h(r, function(e) {
16812 "object" == typeof e ? O.push(new k(e)) : O.push(e)
16815 var a = O.$promise;
16816 i(r, O), O.$promise = a
16819 return n.resource = O, n
16821 return e.resource = O, c.reject(e)
16823 return j = j.finally(function() {
16824 O.$resolved = !0, !S && u && (O.$cancelRequest = f, l.cancel(A), M = A = D.timeout = null)
16825 }), j = j.then(function(e) {
16827 return ($ || f)(t, e.headers, e.status, e.statusText), t
16828 }, R || P ? function(e) {
16829 return R && !P && j.catch(f), R && x(e), P ? I(e) : c.reject(e)
16830 } : void 0), S ? j : (O.$promise = j, O.$resolved = !1, u && (O.$cancelRequest = function(e) {
16831 j.catch(f), null !== M && M.resolve(e)
16833 }, k.prototype["$" + t] = function(e, n, r) {
16834 b(e) && (r = n, n = e, e = {});
16835 var i = k[t].call(this, e, this, n, r);
16836 return i.$promise || i
16838 }), k.bind = function(n) {
16839 var r = p({}, t, n);
16840 return d(e, r, _, $)
16851 _ = t.$$encodeUriQuery,
16852 $ = t.$$encodeUriSegment;
16853 return u.prototype = {
16854 setUrlParams: function(t, n, r) {
16855 var i, a, s = this,
16856 c = r || s.template,
16858 u = s.urlParams = Object.create(null);
16859 h(c.split(/\W/), function(e) {
16860 if ("hasOwnProperty" === e) throw o("badname", "hasOwnProperty is not a valid parameter name.");
16861 !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(c) && (u[e] = {
16862 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(c)
16864 }), c = c.replace(/\\:/g, ":"), c = c.replace(e, function(e) {
16866 }), n = n || {}, h(s.urlParams, function(e, t) {
16867 i = n.hasOwnProperty(t) ? n[t] : s.defaults[t], v(i) && null !== i ? (a = e.isQueryParamValue ? _(i, !0) : $(i), c = c.replace(new RegExp(":" + t + "(\\W|$)", "g"), function(e, t) {
16869 })) : c = c.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
16870 return "/" === n.charAt(0) ? n : t + n
16872 }), s.defaults.stripTrailingSlashes && (c = c.replace(/\/+$/, "") || "/"), c = c.replace(/\/\.(?=\w+($|\?))/, "."), t.url = l + c.replace(/\/(\\|%5C)\./, "/."), h(n, function(e, n) {
16873 s.urlParams[n] || (t.params = t.params || {}, t.params[n] = e)
16879 }(window, window.angular),
16881 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
16882 }(this, function() {
16886 return Ct.apply(null, arguments)
16890 return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
16894 return null != e && "[object Object]" === Object.prototype.toString.call(e)
16898 if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
16901 if (e.hasOwnProperty(t)) return !1;
16906 return void 0 === e
16910 return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
16914 return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
16919 for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
16924 return Object.prototype.hasOwnProperty.call(e, t)
16928 for (var n in t) c(t, n) && (e[n] = t[n]);
16929 return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e
16932 function u(e, t, n, r) {
16933 return qe(e, t, n, r, !0).utc()
16944 invalidMonth: null,
16946 userInvalidated: !1,
16948 parsedDateParts: [],
16951 weekdayMismatch: !1
16956 return null == e._pf && (e._pf = d()), e._pf
16960 if (null == e._isValid) {
16962 n = xt.call(t.parsedDateParts, function(e) {
16965 r = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
16966 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
16974 return null != e ? l(f(t), e) : f(t).userInvalidated = !0, t
16979 if (i(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), i(t._i) || (e._i = t._i), i(t._f) || (e._f = t._f), i(t._l) || (e._l = t._l), i(t._strict) || (e._strict = t._strict), i(t._tzm) || (e._tzm = t._tzm), i(t._isUTC) || (e._isUTC = t._isUTC), i(t._offset) || (e._offset = t._offset), i(t._pf) || (e._pf = f(t)), i(t._locale) || (e._locale = t._locale), Tt.length > 0)
16980 for (n = 0; n < Tt.length; n++) i(o = t[r = Tt[n]]) || (e[r] = o);
16985 m(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === Mt && (Mt = !0, e.updateOffset(this), Mt = !1)
16989 return e instanceof g || null != e && null != e._isAMomentObject
16993 return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
16999 return 0 !== t && isFinite(t) && (n = b(t)), n
17002 function _(e, t, n) {
17003 var r, i = Math.min(e.length, t.length),
17004 o = Math.abs(e.length - t.length),
17006 for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && y(e[r]) !== y(t[r])) && a++;
17011 !1 === e.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
17016 return l(function() {
17017 if (null != e.deprecationHandler && e.deprecationHandler(null, t), r) {
17018 for (var i, o = [], a = 0; a < arguments.length; a++) {
17019 if (i = "", "object" == typeof arguments[a]) {
17020 i += "\n[" + a + "] ";
17021 for (var s in arguments[0]) i += s + ": " + arguments[0][s] + ", ";
17023 } else i = arguments[a];
17026 $(t + "\nArguments: " + Array.prototype.slice.call(o).join("") + "\n" + (new Error).stack), r = !1
17028 return n.apply(this, arguments)
17033 null != e.deprecationHandler && e.deprecationHandler(t, n), At[t] || ($(n), At[t] = !0)
17037 return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
17041 var r, i = l({}, e);
17042 for (r in t) c(t, r) && (n(e[r]) && n(t[r]) ? (i[r] = {}, l(i[r], e[r]), l(i[r], t[r])) : null != t[r] ? i[r] = t[r] : delete i[r]);
17043 for (r in e) c(e, r) && !c(t, r) && n(e[r]) && (i[r] = l({}, i[r]));
17048 null != e && this.set(e)
17052 var n = e.toLowerCase();
17053 Rt[n] = Rt[n + "s"] = Rt[t] = e
17057 return "string" == typeof e ? Rt[e] || Rt[e.toLowerCase()] : void 0
17062 for (n in e) c(e, n) && (t = M(n)) && (r[t] = e[n]);
17072 for (var n in e) t.push({
17076 return t.sort(function(e, t) {
17077 return e.priority - t.priority
17081 function D(e, t, n) {
17082 var r = "" + Math.abs(e),
17084 return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
17087 function N(e, t, n, r) {
17089 "string" == typeof r && (i = function() {
17091 }), e && (Ft[e] = i), t && (Ft[t[0]] = function() {
17092 return D(i.apply(this, arguments), t[1], t[2])
17093 }), n && (Ft[n] = function() {
17094 return this.localeData().ordinal(i.apply(this, arguments), e)
17099 return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
17103 var t, n, r = e.match(jt);
17104 for (t = 0, n = r.length; t < n; t++) Ft[r[t]] ? r[t] = Ft[r[t]] : r[t] = I(r[t]);
17105 return function(t) {
17107 for (i = 0; i < n; i++) o += k(r[i]) ? r[i].call(t, e) : r[i];
17113 return e.isValid() ? (t = j(t, e.localeData()), Lt[t] = Lt[t] || R(t), Lt[t](e)) : e.localeData().invalidDate()
17118 for (Ht.lastIndex = 0; n >= 0 && Ht.test(e);) e = e.replace(Ht, function(e) {
17119 return t.longDateFormat(e) || e
17120 }), Ht.lastIndex = 0, n -= 1;
17124 function H(e, t, n) {
17125 on[e] = k(t) ? t : function(e, r) {
17126 return e && n ? n : t
17131 return c(on, e) ? on[e](t._strict, t._locale) : new RegExp(F(e))
17135 return q(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
17136 return t || n || r || i
17141 return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
17146 for ("string" == typeof e && (e = [e]), o(t) && (r = function(e, n) {
17148 }), n = 0; n < e.length; n++) an[e[n]] = r
17152 U(e, function(e, n, r, i) {
17153 r._w = r._w || {}, t(e, r._w, r, i)
17157 function z(e, t, n) {
17158 null != t && c(an, e) && an[e](t, n._a, n, e)
17162 return W(e) ? 366 : 365
17166 return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
17170 return function(r) {
17171 return null != r ? (K(this, t, r), e.updateOffset(this, n), this) : G(this, t)
17176 return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
17179 function K(e, t, n) {
17180 e.isValid() && !isNaN(n) && ("FullYear" === t && W(e.year()) && 1 === e.month() && 29 === e.date() ? e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), X(n, e.month())) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n))
17184 return (e % t + t) % t
17188 if (isNaN(e) || isNaN(t)) return NaN;
17190 return e += (t - n) / 12, 1 === n ? W(e) ? 29 : 28 : 31 - n % 7 % 2
17193 function Q(e, t, n) {
17194 var r, i, o, a = e.toLocaleLowerCase();
17195 if (!this._monthsParse)
17196 for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) o = u([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase();
17197 return n ? "MMM" === t ? -1 !== (i = gn.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = gn.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = gn.call(this._shortMonthsParse, a)) ? i : -1 !== (i = gn.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = gn.call(this._longMonthsParse, a)) ? i : -1 !== (i = gn.call(this._shortMonthsParse, a)) ? i : null
17202 if (!e.isValid()) return e;
17203 if ("string" == typeof t)
17204 if (/^\d+$/.test(t)) t = y(t);
17205 else if (t = e.localeData().monthsParse(t), !o(t)) return e;
17206 return n = Math.min(e.date(), X(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
17210 return null != t ? (J(this, t), e.updateOffset(this, !0), this) : G(this, "Month")
17215 return t.length - e.length
17220 for (t = 0; t < 12; t++) n = u([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
17221 for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++) r[t] = q(r[t]), i[t] = q(i[t]);
17222 for (t = 0; t < 24; t++) o[t] = q(o[t]);
17223 this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i")
17226 function ne(e, t, n, r, i, o, a) {
17227 var s = new Date(e, t, n, r, i, o, a);
17228 return e < 100 && e >= 0 && isFinite(s.getFullYear()) && s.setFullYear(e), s
17232 var t = new Date(Date.UTC.apply(null, arguments));
17233 return e < 100 && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), t
17236 function ie(e, t, n) {
17238 return -((7 + re(e, 0, r).getUTCDay() - t) % 7) + r - 1
17241 function oe(e, t, n, r, i) {
17242 var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + ie(e, r, i);
17243 return s <= 0 ? a = B(o = e - 1) + s : s > B(e) ? (o = e + 1, a = s - B(e)) : (o = e, a = s), {
17249 function ae(e, t, n) {
17250 var r, i, o = ie(e.year(), t, n),
17251 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
17252 return a < 1 ? r = a + se(i = e.year() - 1, t, n) : a > se(e.year(), t, n) ? (r = a - se(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), {
17258 function se(e, t, n) {
17259 var r = ie(e, t, n),
17260 i = ie(e + 1, t, n);
17261 return (B(e) - r + i) / 7
17264 function ce(e, t) {
17265 return "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
17268 function le(e, t) {
17269 return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
17272 function ue(e, t, n) {
17273 var r, i, o, a = e.toLocaleLowerCase();
17274 if (!this._weekdaysParse)
17275 for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) o = u([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase();
17276 return n ? "dddd" === t ? -1 !== (i = gn.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = gn.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = gn.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = gn.call(this._weekdaysParse, a)) ? i : -1 !== (i = gn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = gn.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = gn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = gn.call(this._weekdaysParse, a)) ? i : -1 !== (i = gn.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = gn.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = gn.call(this._weekdaysParse, a)) ? i : -1 !== (i = gn.call(this._shortWeekdaysParse, a)) ? i : null
17281 return t.length - e.length
17283 var t, n, r, i, o, a = [],
17287 for (t = 0; t < 7; t++) n = u([2e3, 1]).day(t), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), o = this.weekdays(n, ""), a.push(r), s.push(i), c.push(o), l.push(r), l.push(i), l.push(o);
17288 for (a.sort(e), s.sort(e), c.sort(e), l.sort(e), t = 0; t < 7; t++) s[t] = q(s[t]), c[t] = q(c[t]), l[t] = q(l[t]);
17289 this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
17293 return this.hours() % 12 || 12
17296 function he(e, t) {
17297 N(e, 0, 0, function() {
17298 return this.localeData().meridiem(this.hours(), this.minutes(), t)
17302 function pe(e, t) {
17303 return t._meridiemParse
17307 return e ? e.toLowerCase().replace("_", "-") : e
17311 for (var t, n, r, i, o = 0; o < e.length;) {
17312 for (t = (i = me(e[o]).split("-")).length, n = (n = me(e[o + 1])) ? n.split("-") : null; t > 0;) {
17313 if (r = ve(i.slice(0, t).join("-"))) return r;
17314 if (n && n.length >= t && _(i, n, !0) >= t - 1) break;
17324 if (!In[e] && "undefined" != typeof module && module && module.exports) try {
17325 t = Sn._abbr, require("./locale/" + e), be(t)
17330 function be(e, t) {
17332 return e && (n = i(t) ? _e(e) : ye(e, t)) && (Sn = n), Sn._abbr
17335 function ye(e, t) {
17338 if (t.abbr = e, null != In[e]) E("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), n = In[e]._config;
17339 else if (null != t.parentLocale) {
17340 if (null == In[t.parentLocale]) return Rn[t.parentLocale] || (Rn[t.parentLocale] = []), Rn[t.parentLocale].push({
17344 n = In[t.parentLocale]._config
17346 return In[e] = new x(C(n, t)), Rn[e] && Rn[e].forEach(function(e) {
17347 ye(e.name, e.config)
17350 return delete In[e], null
17355 if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return Sn;
17357 if (n = ve(e)) return n;
17365 return n && -2 === f(e).overflow && (t = n[cn] < 0 || n[cn] > 11 ? cn : n[ln] < 1 || n[ln] > X(n[sn], n[cn]) ? ln : n[un] < 0 || n[un] > 24 || 24 === n[un] && (0 !== n[dn] || 0 !== n[fn] || 0 !== n[hn]) ? un : n[dn] < 0 || n[dn] > 59 ? dn : n[fn] < 0 || n[fn] > 59 ? fn : n[hn] < 0 || n[hn] > 999 ? hn : -1, f(e)._overflowDayOfYear && (t < sn || t > ln) && (t = ln), f(e)._overflowWeeks && -1 === t && (t = pn), f(e)._overflowWeekday && -1 === t && (t = mn), f(e).overflow = t), e
17368 function we(e, t, n) {
17369 return null != e ? e : null != t ? t : n
17373 var n = new Date(e.now());
17374 return t._useUTC ? [n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()] : [n.getFullYear(), n.getMonth(), n.getDate()]
17378 var t, n, r, i, o = [];
17380 for (r = Ee(e), e._w && null == e._a[ln] && null == e._a[cn] && Ce(e), null != e._dayOfYear && (i = we(e._a[sn], r[sn]), (e._dayOfYear > B(i) || 0 === e._dayOfYear) && (f(e)._overflowDayOfYear = !0), n = re(i, 0, e._dayOfYear), e._a[cn] = n.getUTCMonth(), e._a[ln] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = o[t] = r[t];
17381 for (; t < 7; t++) e._a[t] = o[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
17382 24 === e._a[un] && 0 === e._a[dn] && 0 === e._a[fn] && 0 === e._a[hn] && (e._nextDay = !0, e._a[un] = 0), e._d = (e._useUTC ? re : ne).apply(null, o), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[un] = 24), e._w && void 0 !== e._w.d && e._w.d !== e._d.getDay() && (f(e).weekdayMismatch = !0)
17387 var t, n, r, i, o, a, s, c;
17388 if (null != (t = e._w).GG || null != t.W || null != t.E) o = 1, a = 4, n = we(t.GG, e._a[sn], ae(Ue(), 1, 4).year), r = we(t.W, 1), ((i = we(t.E, 1)) < 1 || i > 7) && (c = !0);
17390 o = e._locale._week.dow, a = e._locale._week.doy;
17391 var l = ae(Ue(), o, a);
17392 n = we(t.gg, e._a[sn], l.year), r = we(t.w, l.week), null != t.d ? ((i = t.d) < 0 || i > 6) && (c = !0) : null != t.e ? (i = t.e + o, (t.e < 0 || t.e > 6) && (c = !0)) : i = o
17394 r < 1 || r > se(n, o, a) ? f(e)._overflowWeeks = !0 : null != c ? f(e)._overflowWeekday = !0 : (s = oe(n, r, i, o, a), e._a[sn] = s.year, e._dayOfYear = s.dayOfYear)
17398 var t, n, r, i, o, a, s = e._i,
17399 c = Pn.exec(s) || jn.exec(s);
17401 for (f(e).iso = !0, t = 0, n = Ln.length; t < n; t++)
17402 if (Ln[t][1].exec(c[1])) {
17403 i = Ln[t][0], r = !1 !== Ln[t][2];
17406 if (null == i) return void(e._isValid = !1);
17408 for (t = 0, n = Fn.length; t < n; t++)
17409 if (Fn[t][1].exec(c[3])) {
17410 o = (c[2] || " ") + Fn[t][0];
17413 if (null == o) return void(e._isValid = !1)
17415 if (!r && null != o) return void(e._isValid = !1);
17417 if (!Hn.exec(c[4])) return void(e._isValid = !1);
17420 e._f = i + (o || "") + (a || ""), Ie(e)
17421 } else e._isValid = !1
17424 function Te(e, t, n, r, i, o) {
17425 var a = [Me(e), _n.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)];
17426 return o && a.push(parseInt(o, 10)), a
17430 var t = parseInt(e, 10);
17431 return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t
17435 return e.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim()
17438 function Se(e, t, n) {
17439 return !e || Cn.indexOf(e) === new Date(t[0], t[1], t[2]).getDay() || (f(n).weekdayMismatch = !0, n._isValid = !1, !1)
17442 function Oe(e, t, n) {
17443 if (e) return Vn[e];
17445 var r = parseInt(n, 10),
17447 return 60 * ((r - i) / 100) + i
17451 var t = Un.exec(Ae(e._i));
17453 var n = Te(t[4], t[3], t[2], t[5], t[6], t[7]);
17454 if (!Se(t[1], n, e)) return;
17455 e._a = n, e._tzm = Oe(t[8], t[9], t[10]), e._d = re.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), f(e).rfc2822 = !0
17456 } else e._isValid = !1
17460 var n = qn.exec(t._i);
17461 null === n ? (xe(t), !1 === t._isValid && (delete t._isValid, De(t), !1 === t._isValid && (delete t._isValid, e.createFromInputFallback(t)))) : t._d = new Date(+n[1])
17465 if (t._f !== e.ISO_8601)
17466 if (t._f !== e.RFC_2822) {
17467 t._a = [], f(t).empty = !0;
17468 var n, r, i, o, a, s = "" + t._i,
17471 for (i = j(t._f, t._locale).match(jt) || [], n = 0; n < i.length; n++) o = i[n], (r = (s.match(L(o, t)) || [])[0]) && ((a = s.substr(0, s.indexOf(r))).length > 0 && f(t).unusedInput.push(a), s = s.slice(s.indexOf(r) + r.length), l += r.length), Ft[o] ? (r ? f(t).empty = !1 : f(t).unusedTokens.push(o), z(o, r, t)) : t._strict && !r && f(t).unusedTokens.push(o);
17472 f(t).charsLeftOver = c - l, s.length > 0 && f(t).unusedInput.push(s), t._a[un] <= 12 && !0 === f(t).bigHour && t._a[un] > 0 && (f(t).bigHour = void 0), f(t).parsedDateParts = t._a.slice(0), f(t).meridiem = t._meridiem, t._a[un] = Re(t._locale, t._a[un], t._meridiem), ke(t), $e(t)
17477 function Re(e, t, n) {
17479 return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((r = e.isPM(n)) && t < 12 && (t += 12), r || 12 !== t || (t = 0), t) : t
17484 if (0 === e._f.length) return f(e).invalidFormat = !0, void(e._d = new Date(NaN));
17485 for (i = 0; i < e._f.length; i++) o = 0, t = m({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Ie(t), h(t) && (o += f(t).charsLeftOver, o += 10 * f(t).unusedTokens.length, f(t).score = o, (null == r || o < r) && (r = o, n = t));
17492 e._a = s([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
17493 return e && parseInt(e, 10)
17499 var t = new g($e(Le(e)));
17500 return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
17506 return e._locale = e._locale || _e(e._l), null === n || void 0 === r && "" === n ? p({
17508 }) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), v(n) ? new g($e(n)) : (a(n) ? e._d = n : t(r) ? Pe(e) : r ? Ie(e) : Fe(e), h(e) || (e._d = null), e))
17513 i(c) ? r._d = new Date(e.now()) : a(c) ? r._d = new Date(c.valueOf()) : "string" == typeof c ? Ne(r) : t(c) ? (r._a = s(c.slice(0), function(e) {
17514 return parseInt(e, 10)
17515 }), ke(r)) : n(c) ? je(r) : o(c) ? r._d = new Date(c) : e.createFromInputFallback(r)
17518 function qe(e, i, o, a, s) {
17520 return !0 !== o && !1 !== o || (a = o, o = void 0), (n(e) && r(e) || t(e) && 0 === e.length) && (e = void 0), c._isAMomentObject = !0, c._useUTC = c._isUTC = s, c._l = o, c._i = e, c._f = i, c._strict = a, He(c)
17523 function Ue(e, t, n, r) {
17524 return qe(e, t, n, r, !1)
17527 function Ve(e, n) {
17529 if (1 === n.length && t(n[0]) && (n = n[0]), !n.length) return Ue();
17530 for (r = n[0], i = 1; i < n.length; ++i) n[i].isValid() && !n[i][e](r) || (r = n[i]);
17536 if (-1 === gn.call(Wn, t) || null != e[t] && isNaN(e[t])) return !1;
17537 for (var n = !1, r = 0; r < Wn.length; ++r)
17540 parseFloat(e[Wn[r]]) !== y(e[Wn[r]]) && (n = !0)
17548 r = t.quarter || 0,
17555 u = t.millisecond || 0;
17556 this._isValid = ze(t), this._milliseconds = +u + 1e3 * l + 6e4 * c + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = _e(), this._bubble()
17560 return e instanceof Be
17564 return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
17567 function Ge(e, t) {
17568 N(e, 0, 0, function() {
17569 var e = this.utcOffset(),
17571 return e < 0 && (e = -e, n = "-"), n + D(~~(e / 60), 2) + t + D(~~e % 60, 2)
17575 function Ke(e, t) {
17576 var n = (t || "").match(e);
17577 if (null === n) return null;
17578 var r = ((n[n.length - 1] || []) + "").match(Yn) || ["-", 0, 0],
17579 i = 60 * r[1] + y(r[2]);
17580 return 0 === i ? 0 : "+" === r[0] ? i : -i
17583 function Ze(t, n) {
17585 return n._isUTC ? (r = n.clone(), i = (v(t) || a(t) ? t.valueOf() : Ue(t).valueOf()) - r.valueOf(), r._d.setTime(r._d.valueOf() + i), e.updateOffset(r, !1), r) : Ue(t).local()
17589 return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
17593 return !!this.isValid() && (this._isUTC && 0 === this._offset)
17596 function Je(e, t) {
17597 var n, r, i, a = e,
17599 return We(e) ? a = {
17600 ms: e._milliseconds,
17603 } : o(e) ? (a = {}, t ? a[t] = e : a.milliseconds = e) : (s = Gn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
17609 ms: y(Ye(1e3 * s[hn])) * n
17610 }) : (s = Kn.exec(e)) ? (n = "-" === s[1] ? -1 : (s[1], 1), a = {
17618 }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (i = nt(Ue(a.from), Ue(a.to)), (a = {}).ms = i.milliseconds, a.M = i.months), r = new Be(a), We(e) && c(e, "_locale") && (r._locale = e._locale), r
17621 function et(e, t) {
17622 var n = e && parseFloat(e.replace(",", "."));
17623 return (isNaN(n) ? 0 : n) * t
17626 function tt(e, t) {
17631 return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n
17634 function nt(e, t) {
17636 return e.isValid() && t.isValid() ? (t = Ze(t, e), e.isBefore(t) ? n = tt(e, t) : ((n = tt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
17642 function rt(e, t) {
17643 return function(n, r) {
17645 return null === r || isNaN(+r) || (E(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), o = n, n = r, r = o), n = "string" == typeof n ? +n : n, i = Je(n, r), it(this, i, e), this
17649 function it(t, n, r, i) {
17650 var o = n._milliseconds,
17653 t.isValid() && (i = null == i || i, s && J(t, G(t, "Month") + s * r), a && K(t, "Date", G(t, "Date") + a * r), o && t._d.setTime(t._d.valueOf() + o * r), i && e.updateOffset(t, a || s))
17656 function ot(e, t) {
17657 var n, r = 12 * (t.year() - e.year()) + (t.month() - e.month()),
17658 i = e.clone().add(r, "months");
17659 return n = t - i < 0 ? (t - i) / (i - e.clone().add(r - 1, "months")) : (t - i) / (e.clone().add(r + 1, "months") - i), -(r + n) || 0
17664 return void 0 === e ? this._locale._abbr : (null != (t = _e(e)) && (this._locale = t), this)
17668 return this._locale
17671 function ct(e, t) {
17672 N(0, [e, e.length], 0, t)
17675 function lt(e, t, n, r, i) {
17677 return null == e ? ae(this, r, i).year : (o = se(e, r, i), t > o && (t = o), ut.call(this, e, t, n, r, i))
17680 function ut(e, t, n, r, i) {
17681 var o = oe(e, t, n, r, i),
17682 a = re(o.year, 0, o.dayOfYear);
17683 return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
17690 function ft(e, t, n, r) {
17696 function ht(e, t, n) {
17697 if (o(e) && (t = e, e = void 0), e = e || "", null != t) return ft(e, t, n, "month");
17699 for (r = 0; r < 12; r++) i[r] = ft(e, r, n, "month");
17703 function pt(e, t, n, r) {
17704 "boolean" == typeof e ? (o(t) && (n = t, t = void 0), t = t || "") : (n = t = e, e = !1, o(t) && (n = t, t = void 0), t = t || "");
17706 a = e ? i._week.dow : 0;
17707 if (null != n) return ft(t, (n + a) % 7, r, "day");
17709 for (s = 0; s < 7; s++) c[s] = ft(t, (s + a) % 7, r, "day");
17713 function mt(e, t, n, r) {
17715 return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
17719 return e < 0 ? Math.floor(e) : Math.ceil(e)
17723 return 4800 * e / 146097
17727 return 146097 * e / 4800
17731 return function() {
17737 return function() {
17738 return this.isValid() ? this._data[e] : NaN
17742 function $t(e, t, n, r, i) {
17743 return i.relativeTime(t || 1, !!n, e, r)
17746 function wt(e, t, n) {
17747 var r = Je(e).abs(),
17754 u = i <= Er.ss && ["s", i] || i < Er.s && ["ss", i] || o <= 1 && ["m"] || o < Er.m && ["mm", o] || a <= 1 && ["h"] || a < Er.h && ["hh", a] || s <= 1 && ["d"] || s < Er.d && ["dd", s] || c <= 1 && ["M"] || c < Er.M && ["MM", c] || l <= 1 && ["y"] || ["yy", l];
17755 return u[2] = t, u[3] = +e > 0, u[4] = n, $t.apply(null, u)
17759 return (e > 0) - (e < 0) || +e
17763 if (!this.isValid()) return this.localeData().invalidDate();
17764 var e, t, n, r = kr(this._milliseconds) / 1e3,
17765 i = kr(this._days),
17766 o = kr(this._months);
17767 t = b((e = b(r / 60)) / 60), r %= 60, e %= 60;
17768 var a = n = b(o / 12),
17773 d = r ? r.toFixed(3).replace(/\.?0+$/, "") : "",
17774 f = this.asSeconds();
17775 if (!f) return "P0D";
17776 var h = f < 0 ? "-" : "",
17777 p = Et(this._months) !== Et(f) ? "-" : "",
17778 m = Et(this._days) !== Et(f) ? "-" : "",
17779 g = Et(this._milliseconds) !== Et(f) ? "-" : "";
17780 return h + "P" + (a ? p + a + "Y" : "") + (s ? p + s + "M" : "") + (c ? m + c + "D" : "") + (l || u || d ? "T" : "") + (l ? g + l + "H" : "") + (u ? g + u + "M" : "") + (d ? g + d + "S" : "")
17783 xt = Array.prototype.some ? Array.prototype.some : function(e) {
17784 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
17785 if (r in t && e.call(this, t[r], r, t)) return !0;
17788 var Tt = e.momentProperties = [],
17791 e.suppressDeprecationWarnings = !1, e.deprecationHandler = null;
17793 St = Object.keys ? Object.keys : function(e) {
17795 for (t in e) c(e, t) && n.push(t);
17799 sameDay: "[Today at] LT",
17800 nextDay: "[Tomorrow at] LT",
17801 nextWeek: "dddd [at] LT",
17802 lastDay: "[Yesterday at] LT",
17803 lastWeek: "[Last] dddd [at] LT",
17810 LL: "MMMM D, YYYY",
17811 LLL: "MMMM D, YYYY h:mm A",
17812 LLLL: "dddd, MMMM D, YYYY h:mm A"
17818 s: "a few seconds",
17833 jt = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
17834 Ht = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
17844 Gt = /\d\d\d\d\d\d?/,
17847 Xt = /[+-]?\d{1,6}/,
17850 en = /Z|[+-]\d\d:?\d\d/gi,
17851 tn = /Z|[+-]\d\d(?::?\d\d)?/gi,
17852 nn = /[+-]?\d+(\.\d{1,3})?/,
17853 rn = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
17865 N("Y", 0, 0, function() {
17866 var e = this.year();
17867 return e <= 9999 ? "" + e : "+" + e
17868 }), N(0, ["YY", 2], 0, function() {
17869 return this.year() % 100
17870 }), N(0, ["YYYY", 4], 0, "year"), N(0, ["YYYYY", 5], 0, "year"), N(0, ["YYYYYY", 6, !0], 0, "year"), T("year", "y"), S("year", 1), H("Y", Jt), H("YY", Wt, Ut), H("YYYY", Zt, zt), H("YYYYY", Xt, Bt), H("YYYYYY", Xt, Bt), U(["YYYYY", "YYYYYY"], sn), U("YYYY", function(t, n) {
17871 n[sn] = 2 === t.length ? e.parseTwoDigitYear(t) : y(t)
17872 }), U("YY", function(t, n) {
17873 n[sn] = e.parseTwoDigitYear(t)
17874 }), U("Y", function(e, t) {
17875 t[sn] = parseInt(e, 10)
17876 }), e.parseTwoDigitYear = function(e) {
17877 return y(e) + (y(e) > 68 ? 1900 : 2e3)
17879 var gn, vn = Y("FullYear", !0);
17880 gn = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
17882 for (t = 0; t < this.length; ++t)
17883 if (this[t] === e) return t;
17885 }, N("M", ["MM", 2], "Mo", function() {
17886 return this.month() + 1
17887 }), N("MMM", 0, 0, function(e) {
17888 return this.localeData().monthsShort(this, e)
17889 }), N("MMMM", 0, 0, function(e) {
17890 return this.localeData().months(this, e)
17891 }), T("month", "M"), S("month", 8), H("M", Wt), H("MM", Wt, Ut), H("MMM", function(e, t) {
17892 return t.monthsShortRegex(e)
17893 }), H("MMMM", function(e, t) {
17894 return t.monthsRegex(e)
17895 }), U(["M", "MM"], function(e, t) {
17897 }), U(["MMM", "MMMM"], function(e, t, n, r) {
17898 var i = n._locale.monthsParse(e, r, n._strict);
17899 null != i ? t[cn] = i : f(n).invalidMonth = e
17901 var bn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
17902 yn = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
17903 _n = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
17906 N("w", ["ww", 2], "wo", "week"), N("W", ["WW", 2], "Wo", "isoWeek"), T("week", "w"), T("isoWeek", "W"), S("week", 5), S("isoWeek", 5), H("w", Wt), H("ww", Wt, Ut), H("W", Wt), H("WW", Wt, Ut), V(["w", "ww", "W", "WW"], function(e, t, n, r) {
17907 t[r.substr(0, 1)] = y(e)
17913 N("d", 0, "do", "day"), N("dd", 0, 0, function(e) {
17914 return this.localeData().weekdaysMin(this, e)
17915 }), N("ddd", 0, 0, function(e) {
17916 return this.localeData().weekdaysShort(this, e)
17917 }), N("dddd", 0, 0, function(e) {
17918 return this.localeData().weekdays(this, e)
17919 }), N("e", 0, 0, "weekday"), N("E", 0, 0, "isoWeekday"), T("day", "d"), T("weekday", "e"), T("isoWeekday", "E"), S("day", 11), S("weekday", 11), S("isoWeekday", 11), H("d", Wt), H("e", Wt), H("E", Wt), H("dd", function(e, t) {
17920 return t.weekdaysMinRegex(e)
17921 }), H("ddd", function(e, t) {
17922 return t.weekdaysShortRegex(e)
17923 }), H("dddd", function(e, t) {
17924 return t.weekdaysRegex(e)
17925 }), V(["dd", "ddd", "dddd"], function(e, t, n, r) {
17926 var i = n._locale.weekdaysParse(e, r, n._strict);
17927 null != i ? t.d = i : f(n).invalidWeekday = e
17928 }), V(["d", "e", "E"], function(e, t, n, r) {
17931 var kn = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
17932 Cn = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
17933 xn = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
17937 N("H", ["HH", 2], 0, "hour"), N("h", ["hh", 2], 0, fe), N("k", ["kk", 2], 0, function() {
17938 return this.hours() || 24
17939 }), N("hmm", 0, 0, function() {
17940 return "" + fe.apply(this) + D(this.minutes(), 2)
17941 }), N("hmmss", 0, 0, function() {
17942 return "" + fe.apply(this) + D(this.minutes(), 2) + D(this.seconds(), 2)
17943 }), N("Hmm", 0, 0, function() {
17944 return "" + this.hours() + D(this.minutes(), 2)
17945 }), N("Hmmss", 0, 0, function() {
17946 return "" + this.hours() + D(this.minutes(), 2) + D(this.seconds(), 2)
17947 }), he("a", !0), he("A", !1), T("hour", "h"), S("hour", 13), H("a", pe), H("A", pe), H("H", Wt), H("h", Wt), H("k", Wt), H("HH", Wt, Ut), H("hh", Wt, Ut), H("kk", Wt, Ut), H("hmm", Yt), H("hmmss", Gt), H("Hmm", Yt), H("Hmmss", Gt), U(["H", "HH"], un), U(["k", "kk"], function(e, t, n) {
17949 t[un] = 24 === r ? 0 : r
17950 }), U(["a", "A"], function(e, t, n) {
17951 n._isPm = n._locale.isPM(e), n._meridiem = e
17952 }), U(["h", "hh"], function(e, t, n) {
17953 t[un] = y(e), f(n).bigHour = !0
17954 }), U("hmm", function(e, t, n) {
17955 var r = e.length - 2;
17956 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r)), f(n).bigHour = !0
17957 }), U("hmmss", function(e, t, n) {
17958 var r = e.length - 4,
17960 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r, 2)), t[fn] = y(e.substr(i)), f(n).bigHour = !0
17961 }), U("Hmm", function(e, t, n) {
17962 var r = e.length - 2;
17963 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r))
17964 }), U("Hmmss", function(e, t, n) {
17965 var r = e.length - 4,
17967 t[un] = y(e.substr(0, r)), t[dn] = y(e.substr(r, 2)), t[fn] = y(e.substr(i))
17969 var Sn, On = /[ap]\.?m?\.?/i,
17970 Dn = Y("Hours", !0),
17973 longDateFormat: Dt,
17974 invalidDate: "Invalid date",
17976 dayOfMonthOrdinalParse: Nt,
17988 Pn = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
17989 jn = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
17990 Hn = /Z|[+-]\d\d(?::?\d\d)?/,
17992 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
17993 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
17994 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
17995 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
17996 ["YYYY-DDD", /\d{4}-\d{3}/],
17997 ["YYYY-MM", /\d{4}-\d\d/, !1],
17998 ["YYYYYYMMDD", /[+-]\d{10}/],
17999 ["YYYYMMDD", /\d{8}/],
18000 ["GGGG[W]WWE", /\d{4}W\d{3}/],
18001 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
18002 ["YYYYDDD", /\d{7}/]
18005 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
18006 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
18007 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
18008 ["HH:mm", /\d\d:\d\d/],
18009 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
18010 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
18011 ["HHmmss", /\d\d\d\d\d\d/],
18012 ["HHmm", /\d\d\d\d/],
18015 qn = /^\/?Date\((\-?\d+)/i,
18016 Un = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
18029 e.createFromInputFallback = w("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(e) {
18030 e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
18031 }), e.ISO_8601 = function() {}, e.RFC_2822 = function() {};
18032 var zn = w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
18033 var e = Ue.apply(null, arguments);
18034 return this.isValid() && e.isValid() ? e < this ? this : e : p()
18036 Bn = w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
18037 var e = Ue.apply(null, arguments);
18038 return this.isValid() && e.isValid() ? e > this ? this : e : p()
18040 Wn = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
18041 Ge("Z", ":"), Ge("ZZ", ""), H("Z", tn), H("ZZ", tn), U(["Z", "ZZ"], function(e, t, n) {
18042 n._useUTC = !0, n._tzm = Ke(tn, e)
18044 var Yn = /([\+\-]|\d\d)/gi;
18045 e.updateOffset = function() {};
18046 var Gn = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
18047 Kn = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
18048 Je.fn = Be.prototype, Je.invalid = function() {
18051 var Zn = rt(1, "add"),
18052 Xn = rt(-1, "subtract");
18053 e.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", e.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
18054 var Qn = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
18055 return void 0 === e ? this.localeData() : this.locale(e)
18057 N(0, ["gg", 2], 0, function() {
18058 return this.weekYear() % 100
18059 }), N(0, ["GG", 2], 0, function() {
18060 return this.isoWeekYear() % 100
18061 }), ct("gggg", "weekYear"), ct("ggggg", "weekYear"), ct("GGGG", "isoWeekYear"), ct("GGGGG", "isoWeekYear"), T("weekYear", "gg"), T("isoWeekYear", "GG"), S("weekYear", 1), S("isoWeekYear", 1), H("G", Jt), H("g", Jt), H("GG", Wt, Ut), H("gg", Wt, Ut), H("GGGG", Zt, zt), H("gggg", Zt, zt), H("GGGGG", Xt, Bt), H("ggggg", Xt, Bt), V(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, r) {
18062 t[r.substr(0, 2)] = y(e)
18063 }), V(["gg", "GG"], function(t, n, r, i) {
18064 n[i] = e.parseTwoDigitYear(t)
18065 }), N("Q", 0, "Qo", "quarter"), T("quarter", "Q"), S("quarter", 7), H("Q", qt), U("Q", function(e, t) {
18066 t[cn] = 3 * (y(e) - 1)
18067 }), N("D", ["DD", 2], "Do", "date"), T("date", "D"), S("date", 9), H("D", Wt), H("DD", Wt, Ut), H("Do", function(e, t) {
18068 return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
18069 }), U(["D", "DD"], ln), U("Do", function(e, t) {
18070 t[ln] = y(e.match(Wt)[0], 10)
18072 var Jn = Y("Date", !0);
18073 N("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), T("dayOfYear", "DDD"), S("dayOfYear", 4), H("DDD", Kt), H("DDDD", Vt), U(["DDD", "DDDD"], function(e, t, n) {
18074 n._dayOfYear = y(e)
18075 }), N("m", ["mm", 2], 0, "minute"), T("minute", "m"), S("minute", 14), H("m", Wt), H("mm", Wt, Ut), U(["m", "mm"], dn);
18076 var er = Y("Minutes", !1);
18077 N("s", ["ss", 2], 0, "second"), T("second", "s"), S("second", 15), H("s", Wt), H("ss", Wt, Ut), U(["s", "ss"], fn);
18078 var tr = Y("Seconds", !1);
18079 N("S", 0, 0, function() {
18080 return ~~(this.millisecond() / 100)
18081 }), N(0, ["SS", 2], 0, function() {
18082 return ~~(this.millisecond() / 10)
18083 }), N(0, ["SSS", 3], 0, "millisecond"), N(0, ["SSSS", 4], 0, function() {
18084 return 10 * this.millisecond()
18085 }), N(0, ["SSSSS", 5], 0, function() {
18086 return 100 * this.millisecond()
18087 }), N(0, ["SSSSSS", 6], 0, function() {
18088 return 1e3 * this.millisecond()
18089 }), N(0, ["SSSSSSS", 7], 0, function() {
18090 return 1e4 * this.millisecond()
18091 }), N(0, ["SSSSSSSS", 8], 0, function() {
18092 return 1e5 * this.millisecond()
18093 }), N(0, ["SSSSSSSSS", 9], 0, function() {
18094 return 1e6 * this.millisecond()
18095 }), T("millisecond", "ms"), S("millisecond", 16), H("S", Kt, qt), H("SS", Kt, Ut), H("SSS", Kt, Vt);
18097 for (nr = "SSSS"; nr.length <= 9; nr += "S") H(nr, Qt);
18098 for (nr = "S"; nr.length <= 9; nr += "S") U(nr, function(e, t) {
18099 t[hn] = y(1e3 * ("0." + e))
18101 var rr = Y("Milliseconds", !1);
18102 N("z", 0, 0, "zoneAbbr"), N("zz", 0, 0, "zoneName");
18103 var ir = g.prototype;
18104 ir.add = Zn, ir.calendar = function(t, n) {
18106 i = Ze(r, this).startOf("day"),
18107 o = e.calendarFormat(this, i) || "sameElse",
18108 a = n && (k(n[o]) ? n[o].call(this, r) : n[o]);
18109 return this.format(a || this.localeData().calendar(o, this, Ue(r)))
18110 }, ir.clone = function() {
18112 }, ir.diff = function(e, t, n) {
18114 if (!this.isValid()) return NaN;
18115 if (!(r = Ze(e, this)).isValid()) return NaN;
18116 switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = M(t)) {
18118 o = ot(this, r) / 12;
18124 o = ot(this, r) / 3;
18127 o = (this - r) / 1e3;
18130 o = (this - r) / 6e4;
18133 o = (this - r) / 36e5;
18136 o = (this - r - i) / 864e5;
18139 o = (this - r - i) / 6048e5;
18144 return n ? o : b(o)
18145 }, ir.endOf = function(e) {
18146 return void 0 === (e = M(e)) || "millisecond" === e ? this : ("date" === e && (e = "day"), this.startOf(e).add(1, "isoWeek" === e ? "week" : e).subtract(1, "ms"))
18147 }, ir.format = function(t) {
18148 t || (t = this.isUtc() ? e.defaultFormatUtc : e.defaultFormat);
18149 var n = P(this, t);
18150 return this.localeData().postformat(n)
18151 }, ir.from = function(e, t) {
18152 return this.isValid() && (v(e) && e.isValid() || Ue(e).isValid()) ? Je({
18155 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
18156 }, ir.fromNow = function(e) {
18157 return this.from(Ue(), e)
18158 }, ir.to = function(e, t) {
18159 return this.isValid() && (v(e) && e.isValid() || Ue(e).isValid()) ? Je({
18162 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
18163 }, ir.toNow = function(e) {
18164 return this.to(Ue(), e)
18165 }, ir.get = function(e) {
18166 return e = M(e), k(this[e]) ? this[e]() : this
18167 }, ir.invalidAt = function() {
18168 return f(this).overflow
18169 }, ir.isAfter = function(e, t) {
18170 var n = v(e) ? e : Ue(e);
18171 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
18172 }, ir.isBefore = function(e, t) {
18173 var n = v(e) ? e : Ue(e);
18174 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
18175 }, ir.isBetween = function(e, t, n, r) {
18176 return ("(" === (r = r || "()")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (")" === r[1] ? this.isBefore(t, n) : !this.isAfter(t, n))
18177 }, ir.isSame = function(e, t) {
18178 var n, r = v(e) ? e : Ue(e);
18179 return !(!this.isValid() || !r.isValid()) && ("millisecond" === (t = M(t || "millisecond")) ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
18180 }, ir.isSameOrAfter = function(e, t) {
18181 return this.isSame(e, t) || this.isAfter(e, t)
18182 }, ir.isSameOrBefore = function(e, t) {
18183 return this.isSame(e, t) || this.isBefore(e, t)
18184 }, ir.isValid = function() {
18186 }, ir.lang = Qn, ir.locale = at, ir.localeData = st, ir.max = Bn, ir.min = zn, ir.parsingFlags = function() {
18187 return l({}, f(this))
18188 }, ir.set = function(e, t) {
18189 if ("object" == typeof e)
18190 for (var n = O(e = A(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
18191 else if (e = M(e), k(this[e])) return this[e](t);
18193 }, ir.startOf = function(e) {
18194 switch (e = M(e)) {
18210 this.milliseconds(0)
18212 return "week" === e && this.weekday(0), "isoWeek" === e && this.isoWeekday(1), "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), this
18213 }, ir.subtract = Xn, ir.toArray = function() {
18215 return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
18216 }, ir.toObject = function() {
18223 minutes: e.minutes(),
18224 seconds: e.seconds(),
18225 milliseconds: e.milliseconds()
18227 }, ir.toDate = function() {
18228 return new Date(this.valueOf())
18229 }, ir.toISOString = function() {
18230 if (!this.isValid()) return null;
18231 var e = this.clone().utc();
18232 return e.year() < 0 || e.year() > 9999 ? P(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : k(Date.prototype.toISOString) ? this.toDate().toISOString() : P(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
18233 }, ir.inspect = function() {
18234 if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
18237 this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
18238 var n = "[" + e + '("]',
18239 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
18241 return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
18242 }, ir.toJSON = function() {
18243 return this.isValid() ? this.toISOString() : null
18244 }, ir.toString = function() {
18245 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
18246 }, ir.unix = function() {
18247 return Math.floor(this.valueOf() / 1e3)
18248 }, ir.valueOf = function() {
18249 return this._d.valueOf() - 6e4 * (this._offset || 0)
18250 }, ir.creationData = function() {
18254 locale: this._locale,
18255 isUTC: this._isUTC,
18256 strict: this._strict
18258 }, ir.year = vn, ir.isLeapYear = function() {
18259 return W(this.year())
18260 }, ir.weekYear = function(e) {
18261 return lt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
18262 }, ir.isoWeekYear = function(e) {
18263 return lt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
18264 }, ir.quarter = ir.quarters = function(e) {
18265 return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
18266 }, ir.month = ee, ir.daysInMonth = function() {
18267 return X(this.year(), this.month())
18268 }, ir.week = ir.weeks = function(e) {
18269 var t = this.localeData().week(this);
18270 return null == e ? t : this.add(7 * (e - t), "d")
18271 }, ir.isoWeek = ir.isoWeeks = function(e) {
18272 var t = ae(this, 1, 4).week;
18273 return null == e ? t : this.add(7 * (e - t), "d")
18274 }, ir.weeksInYear = function() {
18275 var e = this.localeData()._week;
18276 return se(this.year(), e.dow, e.doy)
18277 }, ir.isoWeeksInYear = function() {
18278 return se(this.year(), 1, 4)
18279 }, ir.date = Jn, ir.day = ir.days = function(e) {
18280 if (!this.isValid()) return null != e ? this : NaN;
18281 var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
18282 return null != e ? (e = ce(e, this.localeData()), this.add(e - t, "d")) : t
18283 }, ir.weekday = function(e) {
18284 if (!this.isValid()) return null != e ? this : NaN;
18285 var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
18286 return null == e ? t : this.add(e - t, "d")
18287 }, ir.isoWeekday = function(e) {
18288 if (!this.isValid()) return null != e ? this : NaN;
18290 var t = le(e, this.localeData());
18291 return this.day(this.day() % 7 ? t : t - 7)
18293 return this.day() || 7
18294 }, ir.dayOfYear = function(e) {
18295 var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
18296 return null == e ? t : this.add(e - t, "d")
18297 }, ir.hour = ir.hours = Dn, ir.minute = ir.minutes = er, ir.second = ir.seconds = tr, ir.millisecond = ir.milliseconds = rr, ir.utcOffset = function(t, n, r) {
18298 var i, o = this._offset || 0;
18299 if (!this.isValid()) return null != t ? this : NaN;
18301 if ("string" == typeof t) {
18302 if (null === (t = Ke(tn, t))) return this
18303 } else Math.abs(t) < 16 && !r && (t *= 60);
18304 return !this._isUTC && n && (i = Xe(this)), this._offset = t, this._isUTC = !0, null != i && this.add(i, "m"), o !== t && (!n || this._changeInProgress ? it(this, Je(t - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, e.updateOffset(this, !0), this._changeInProgress = null)), this
18306 return this._isUTC ? o : Xe(this)
18307 }, ir.utc = function(e) {
18308 return this.utcOffset(0, e)
18309 }, ir.local = function(e) {
18310 return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Xe(this), "m")), this
18311 }, ir.parseZone = function() {
18312 if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
18313 else if ("string" == typeof this._i) {
18314 var e = Ke(en, this._i);
18315 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
18318 }, ir.hasAlignedHourOffset = function(e) {
18319 return !!this.isValid() && (e = e ? Ue(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
18320 }, ir.isDST = function() {
18321 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
18322 }, ir.isLocal = function() {
18323 return !!this.isValid() && !this._isUTC
18324 }, ir.isUtcOffset = function() {
18325 return !!this.isValid() && this._isUTC
18326 }, ir.isUtc = Qe, ir.isUTC = Qe, ir.zoneAbbr = function() {
18327 return this._isUTC ? "UTC" : ""
18328 }, ir.zoneName = function() {
18329 return this._isUTC ? "Coordinated Universal Time" : ""
18330 }, ir.dates = w("dates accessor is deprecated. Use date instead.", Jn), ir.months = w("months accessor is deprecated. Use month instead", ee), ir.years = w("years accessor is deprecated. Use year instead", vn), ir.zone = w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
18331 return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
18332 }), ir.isDSTShifted = w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
18333 if (!i(this._isDSTShifted)) return this._isDSTShifted;
18335 if (m(e, this), (e = Le(e))._a) {
18336 var t = e._isUTC ? u(e._a) : Ue(e._a);
18337 this._isDSTShifted = this.isValid() && _(e._a, t.toArray()) > 0
18338 } else this._isDSTShifted = !1;
18339 return this._isDSTShifted
18341 var or = x.prototype;
18342 or.calendar = function(e, t, n) {
18343 var r = this._calendar[e] || this._calendar.sameElse;
18344 return k(r) ? r.call(t, n) : r
18345 }, or.longDateFormat = function(e) {
18346 var t = this._longDateFormat[e],
18347 n = this._longDateFormat[e.toUpperCase()];
18348 return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
18350 }), this._longDateFormat[e])
18351 }, or.invalidDate = function() {
18352 return this._invalidDate
18353 }, or.ordinal = function(e) {
18354 return this._ordinal.replace("%d", e)
18355 }, or.preparse = dt, or.postformat = dt, or.relativeTime = function(e, t, n, r) {
18356 var i = this._relativeTime[n];
18357 return k(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
18358 }, or.pastFuture = function(e, t) {
18359 var n = this._relativeTime[e > 0 ? "future" : "past"];
18360 return k(n) ? n(t) : n.replace(/%s/i, t)
18361 }, or.set = function(e) {
18363 for (n in e) k(t = e[n]) ? this[n] = t : this["_" + n] = t;
18364 this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
18365 }, or.months = function(e, n) {
18366 return e ? t(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || bn).test(n) ? "format" : "standalone"][e.month()] : t(this._months) ? this._months : this._months.standalone
18367 }, or.monthsShort = function(e, n) {
18368 return e ? t(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[bn.test(n) ? "format" : "standalone"][e.month()] : t(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
18369 }, or.monthsParse = function(e, t, n) {
18371 if (this._monthsParseExact) return Q.call(this, e, t, n);
18372 for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
18373 if (i = u([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r;
18374 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
18375 if (!n && this._monthsParse[r].test(e)) return r
18377 }, or.monthsRegex = function(e) {
18378 return this._monthsParseExact ? (c(this, "_monthsRegex") || te.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = wn), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
18379 }, or.monthsShortRegex = function(e) {
18380 return this._monthsParseExact ? (c(this, "_monthsRegex") || te.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = $n), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
18381 }, or.week = function(e) {
18382 return ae(e, this._week.dow, this._week.doy).week
18383 }, or.firstDayOfYear = function() {
18384 return this._week.doy
18385 }, or.firstDayOfWeek = function() {
18386 return this._week.dow
18387 }, or.weekdays = function(e, n) {
18388 return e ? t(this._weekdays) ? this._weekdays[e.day()] : this._weekdays[this._weekdays.isFormat.test(n) ? "format" : "standalone"][e.day()] : t(this._weekdays) ? this._weekdays : this._weekdays.standalone
18389 }, or.weekdaysMin = function(e) {
18390 return e ? this._weekdaysMin[e.day()] : this._weekdaysMin
18391 }, or.weekdaysShort = function(e) {
18392 return e ? this._weekdaysShort[e.day()] : this._weekdaysShort
18393 }, or.weekdaysParse = function(e, t, n) {
18395 if (this._weekdaysParseExact) return ue.call(this, e, t, n);
18396 for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
18397 if (i = u([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r;
18398 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
18399 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
18400 if (!n && this._weekdaysParse[r].test(e)) return r
18402 }, or.weekdaysRegex = function(e) {
18403 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || de.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, "_weekdaysRegex") || (this._weekdaysRegex = Tn), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
18404 }, or.weekdaysShortRegex = function(e) {
18405 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || de.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Mn), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
18406 }, or.weekdaysMinRegex = function(e) {
18407 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || de.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = An), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
18408 }, or.isPM = function(e) {
18409 return "p" === (e + "").toLowerCase().charAt(0)
18410 }, or.meridiem = function(e, t, n) {
18411 return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
18413 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
18414 ordinal: function(e) {
18416 return e + (1 === y(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
18418 }), e.lang = w("moment.lang is deprecated. Use moment.locale instead.", be), e.langData = w("moment.langData is deprecated. Use moment.localeData instead.", _e);
18428 mr = _t("milliseconds"),
18429 gr = _t("seconds"),
18430 vr = _t("minutes"),
18446 return Cr.isValid = function() {
18447 return this._isValid
18448 }, Cr.abs = function() {
18449 var e = this._data;
18450 return this._milliseconds = ar(this._milliseconds), this._days = ar(this._days), this._months = ar(this._months), e.milliseconds = ar(e.milliseconds), e.seconds = ar(e.seconds), e.minutes = ar(e.minutes), e.hours = ar(e.hours), e.months = ar(e.months), e.years = ar(e.years), this
18451 }, Cr.add = function(e, t) {
18452 return mt(this, e, t, 1)
18453 }, Cr.subtract = function(e, t) {
18454 return mt(this, e, t, -1)
18455 }, Cr.as = function(e) {
18456 if (!this.isValid()) return NaN;
18457 var t, n, r = this._milliseconds;
18458 if ("month" === (e = M(e)) || "year" === e) return t = this._days + r / 864e5, n = this._months + vt(t), "month" === e ? n : n / 12;
18459 switch (t = this._days + Math.round(bt(this._months)), e) {
18461 return t / 7 + r / 6048e5;
18463 return t + r / 864e5;
18465 return 24 * t + r / 36e5;
18467 return 1440 * t + r / 6e4;
18469 return 86400 * t + r / 1e3;
18470 case "millisecond":
18471 return Math.floor(864e5 * t) + r;
18473 throw new Error("Unknown unit " + e)
18475 }, Cr.asMilliseconds = sr, Cr.asSeconds = cr, Cr.asMinutes = lr, Cr.asHours = ur, Cr.asDays = dr, Cr.asWeeks = fr, Cr.asMonths = hr, Cr.asYears = pr, Cr.valueOf = function() {
18476 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * y(this._months / 12) : NaN
18477 }, Cr._bubble = function() {
18478 var e, t, n, r, i, o = this._milliseconds,
18482 return o >= 0 && a >= 0 && s >= 0 || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * gt(bt(s) + a), a = 0, s = 0), c.milliseconds = o % 1e3, e = b(o / 1e3), c.seconds = e % 60, t = b(e / 60), c.minutes = t % 60, n = b(t / 60), c.hours = n % 24, a += b(n / 24), i = b(vt(a)), s += i, a -= gt(bt(i)), r = b(s / 12), s %= 12, c.days = a, c.months = s, c.years = r, this
18483 }, Cr.clone = function() {
18485 }, Cr.get = function(e) {
18486 return e = M(e), this.isValid() ? this[e + "s"]() : NaN
18487 }, Cr.milliseconds = mr, Cr.seconds = gr, Cr.minutes = vr, Cr.hours = br, Cr.days = yr, Cr.weeks = function() {
18488 return b(this.days() / 7)
18489 }, Cr.months = _r, Cr.years = $r, Cr.humanize = function(e) {
18490 if (!this.isValid()) return this.localeData().invalidDate();
18491 var t = this.localeData(),
18492 n = wt(this, !e, t);
18493 return e && (n = t.pastFuture(+this, n)), t.postformat(n)
18494 }, Cr.toISOString = kt, Cr.toString = kt, Cr.toJSON = kt, Cr.locale = at, Cr.localeData = st, Cr.toIsoString = w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", kt), Cr.lang = Qn, N("X", 0, 0, "unix"), N("x", 0, 0, "valueOf"), H("x", Jt), H("X", nn), U("X", function(e, t, n) {
18495 n._d = new Date(1e3 * parseFloat(e, 10))
18496 }), U("x", function(e, t, n) {
18497 n._d = new Date(y(e))
18498 }), e.version = "2.19.2",
18501 }(Ue), e.fn = ir, e.min = function() {
18502 return Ve("isBefore", [].slice.call(arguments, 0))
18503 }, e.max = function() {
18504 return Ve("isAfter", [].slice.call(arguments, 0))
18505 }, e.now = function() {
18506 return Date.now ? Date.now() : +new Date
18507 }, e.utc = u, e.unix = function(e) {
18509 }, e.months = function(e, t) {
18510 return ht(e, t, "months")
18511 }, e.isDate = a, e.locale = be, e.invalid = p, e.duration = Je, e.isMoment = v, e.weekdays = function(e, t, n) {
18512 return pt(e, t, n, "weekdays")
18513 }, e.parseZone = function() {
18514 return Ue.apply(null, arguments).parseZone()
18515 }, e.localeData = _e, e.isDuration = We, e.monthsShort = function(e, t) {
18516 return ht(e, t, "monthsShort")
18517 }, e.weekdaysMin = function(e, t, n) {
18518 return pt(e, t, n, "weekdaysMin")
18519 }, e.defineLocale = ye, e.updateLocale = function(e, t) {
18522 null != (r = ve(e)) && (i = r._config), (n = new x(t = C(i, t))).parentLocale = In[e], In[e] = n, be(e)
18523 } else null != In[e] && (null != In[e].parentLocale ? In[e] = In[e].parentLocale : null != In[e] && delete In[e]);
18525 }, e.locales = function() {
18527 }, e.weekdaysShort = function(e, t, n) {
18528 return pt(e, t, n, "weekdaysShort")
18529 }, e.normalizeUnits = M, e.relativeTimeRounding = function(e) {
18530 return void 0 === e ? wr : "function" == typeof e && (wr = e, !0)
18531 }, e.relativeTimeThreshold = function(e, t) {
18532 return void 0 !== Er[e] && (void 0 === t ? Er[e] : (Er[e] = t, "s" === e && (Er.ss = t - 1), !0))
18533 }, e.calendarFormat = function(e, t) {
18534 var n = e.diff(t, "days", !0);
18535 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
18536 }, e.prototype = ir, e
18540 "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
18541 if (!e.document) throw new Error("jQuery requires a window with a document");
18544 }("undefined" != typeof window ? window : this, function(e, t) {
18548 var n = (t = t || te).createElement("script");
18549 n.text = e, t.head.appendChild(n).parentNode.removeChild(n)
18553 var t = !!e && "length" in e && e.length,
18555 return "function" !== n && !he.isWindow(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
18559 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
18562 function o(e, t, n) {
18563 return he.isFunction(t) ? he.grep(e, function(e, r) {
18564 return !!t.call(e, r, e) !== n
18565 }) : t.nodeType ? he.grep(e, function(e) {
18566 return e === t !== n
18567 }) : "string" != typeof t ? he.grep(e, function(e) {
18568 return ae.call(t, e) > -1 !== n
18569 }) : Ee.test(t) ? he.filter(t, e, n) : (t = he.filter(t, e), he.grep(e, function(e) {
18570 return ae.call(t, e) > -1 !== n && 1 === e.nodeType
18576 (e = e[t]) && 1 !== e.nodeType;);
18582 return he.each(e.match(Me) || [], function(e, n) {
18595 function u(e, t, n, r) {
18598 e && he.isFunction(i = e.promise) ? i.call(e).done(t).fail(n) : e && he.isFunction(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
18600 n.apply(void 0, [e])
18605 te.removeEventListener("DOMContentLoaded", d), e.removeEventListener("load", d), he.ready()
18609 this.expando = he.expando + f.uid++
18613 return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Re.test(e) ? JSON.parse(e) : e)
18616 function p(e, t, n) {
18618 if (void 0 === n && 1 === e.nodeType)
18619 if (r = "data-" + t.replace(Pe, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
18628 function m(e, t, n, r) {
18631 s = r ? function() {
18634 return he.css(e, t, "")
18637 l = n && n[3] || (he.cssNumber[t] ? "" : "px"),
18638 u = (he.cssNumber[t] || "px" !== l && +c) && He.exec(he.css(e, t));
18639 if (u && u[3] !== l) {
18640 l = l || u[3], n = n || [], u = +c || 1;
18642 u /= o = o || ".5", he.style(e, t, u + l)
18643 } while (o !== (o = s() / c) && 1 !== o && --a)
18645 return n && (u = +u || +c || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = u, r.end = i)), i
18649 var t, n = e.ownerDocument,
18652 return i || (t = n.body.appendChild(n.createElement(r)), i = he.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), Ue[r] = i, i)
18656 for (var n, r, i = [], o = 0, a = e.length; o < a; o++)(r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = Ne.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && Fe(r) && (i[o] = g(r))) : "none" !== n && (i[o] = "none", Ne.set(r, "display", n)));
18657 for (o = 0; o < a; o++) null != i[o] && (e[o].style.display = i[o]);
18663 return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && i(e, t) ? he.merge([e], n) : n
18667 for (var n = 0, r = e.length; n < r; n++) Ne.set(e[n], "globalEval", !t || Ne.get(t[n], "globalEval"))
18670 function _(e, t, n, r, i) {
18671 for (var o, a, s, c, l, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
18672 if ((o = e[h]) || 0 === o)
18673 if ("object" === he.type(o)) he.merge(f, o.nodeType ? [o] : o);
18674 else if (Ye.test(o)) {
18675 for (a = a || d.appendChild(t.createElement("div")), s = (ze.exec(o) || ["", ""])[1].toLowerCase(), c = We[s] || We._default, a.innerHTML = c[1] + he.htmlPrefilter(o) + c[2], u = c[0]; u--;) a = a.lastChild;
18676 he.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
18677 } else f.push(t.createTextNode(o));
18678 for (d.textContent = "", h = 0; o = f[h++];)
18679 if (r && he.inArray(o, r) > -1) i && i.push(o);
18680 else if (l = he.contains(o.ownerDocument, o), a = b(d.appendChild(o), "script"), l && y(a), n)
18681 for (u = 0; o = a[u++];) Be.test(o.type || "") && n.push(o);
18695 return te.activeElement
18699 function k(e, t, n, r, i, o) {
18701 if ("object" == typeof t) {
18702 "string" != typeof n && (r = r || n, n = void 0);
18703 for (s in t) k(e, s, n, r, t[s], o);
18706 if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = w;
18707 else if (!i) return e;
18708 return 1 === o && (a = i, (i = function(e) {
18709 return he().off(e), a.apply(this, arguments)
18710 }).guid = a.guid || (a.guid = he.guid++)), e.each(function() {
18711 he.event.add(this, t, i, r, n)
18716 return i(e, "table") && i(11 !== t.nodeType ? t : t.firstChild, "tr") ? he(">tbody", e)[0] || e : e
18720 return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
18724 var t = tt.exec(e.type);
18725 return t ? e.type = t[1] : e.removeAttribute("type"), e
18729 var n, r, i, o, a, s, c, l;
18730 if (1 === t.nodeType) {
18731 if (Ne.hasData(e) && (o = Ne.access(e), a = Ne.set(t, o), l = o.events)) {
18732 delete a.handle, a.events = {};
18734 for (n = 0, r = l[i].length; n < r; n++) he.event.add(t, i, l[i][n])
18736 Ie.hasData(e) && (s = Ie.access(e), c = he.extend({}, s), Ie.set(t, c))
18741 var n = t.nodeName.toLowerCase();
18742 "input" === n && Ve.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
18745 function S(e, t, r, i) {
18746 t = ie.apply([], t);
18747 var o, a, s, c, l, u, d = 0,
18751 m = he.isFunction(p);
18752 if (m || f > 1 && "string" == typeof p && !fe.checkClone && et.test(p)) return e.each(function(n) {
18754 m && (t[0] = p.call(this, n, o.html())), S(o, t, r, i)
18756 if (f && (o = _(t, e[0].ownerDocument, !1, e, i), a = o.firstChild, 1 === o.childNodes.length && (o = a), a || i)) {
18757 for (c = (s = he.map(b(o, "script"), x)).length; d < f; d++) l = o, d !== h && (l = he.clone(l, !0, !0), c && he.merge(s, b(l, "script"))), r.call(e[d], l, d);
18759 for (u = s[s.length - 1].ownerDocument, he.map(s, T), d = 0; d < c; d++) l = s[d], Be.test(l.type || "") && !Ne.access(l, "globalEval") && he.contains(u, l) && (l.src ? he._evalUrl && he._evalUrl(l.src) : n(l.textContent.replace(nt, ""), u))
18764 function O(e, t, n) {
18765 for (var r, i = t ? he.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || he.cleanData(b(r)), r.parentNode && (n && he.contains(r.ownerDocument, r) && y(b(r, "script")), r.parentNode.removeChild(r));
18769 function D(e, t, n) {
18770 var r, i, o, a, s = e.style;
18771 return (n = n || ot(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || he.contains(e.ownerDocument, e) || (a = he.style(e, t)), !fe.pixelMarginRight() && it.test(a) && rt.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
18777 if (!e()) return (this.get = t).apply(this, arguments);
18784 if (e in dt) return e;
18785 for (var t = e[0].toUpperCase() + e.slice(1), n = ut.length; n--;)
18786 if ((e = ut[n] + t) in dt) return e
18790 var t = he.cssProps[e];
18791 return t || (t = he.cssProps[e] = I(e) || e), t
18794 function P(e, t, n) {
18795 var r = He.exec(t);
18796 return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
18799 function j(e, t, n, r, i) {
18801 for (o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0; o < 4; o += 2) "margin" === n && (a += he.css(e, n + Le[o], !0, i)), r ? ("content" === n && (a -= he.css(e, "padding" + Le[o], !0, i)), "margin" !== n && (a -= he.css(e, "border" + Le[o] + "Width", !0, i))) : (a += he.css(e, "padding" + Le[o], !0, i), "padding" !== n && (a += he.css(e, "border" + Le[o] + "Width", !0, i)));
18805 function H(e, t, n) {
18808 a = "border-box" === he.css(e, "boxSizing", !1, i);
18809 return it.test(o) ? o : (r = a && (fe.boxSizingReliable() || o === e.style[t]), "auto" === o && (o = e["offset" + t[0].toUpperCase() + t.slice(1)]), (o = parseFloat(o) || 0) + j(e, t, n || (a ? "border" : "content"), r, i) + "px")
18812 function L(e, t, n, r, i) {
18813 return new L.prototype.init(e, t, n, r, i)
18817 ht && (!1 === te.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(F) : e.setTimeout(F, he.fx.interval), he.fx.tick())
18821 return e.setTimeout(function() {
18831 for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = Le[r])] = i["padding" + n] = e;
18832 return t && (i.opacity = i.width = e), i
18835 function V(e, t, n) {
18836 for (var r, i = (B.tweeners[t] || []).concat(B.tweeners["*"]), o = 0, a = i.length; o < a; o++)
18837 if (r = i[o].call(n, t, e)) return r
18843 if (r = he.camelCase(n), i = t[r], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = he.cssHooks[r]) && "expand" in a) {
18844 o = a.expand(o), delete e[r];
18845 for (n in o) n in e || (e[n] = o[n], t[n] = i)
18849 function B(e, t, n) {
18851 a = B.prefilters.length,
18852 s = he.Deferred().always(function() {
18857 for (var t = ft || q(), n = Math.max(0, l.startTime + l.duration - t), r = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++) l.tweens[o].run(r);
18858 return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
18862 props: he.extend({}, t),
18863 opts: he.extend(!0, {
18865 easing: he.easing._default
18867 originalProperties: t,
18868 originalOptions: n,
18869 startTime: ft || q(),
18870 duration: n.duration,
18872 createTween: function(t, n) {
18873 var r = he.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
18874 return l.tweens.push(r), r
18876 stop: function(t) {
18878 r = t ? l.tweens.length : 0;
18879 if (i) return this;
18880 for (i = !0; n < r; n++) l.tweens[n].run(1);
18881 return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
18885 for (z(u, l.opts.specialEasing); o < a; o++)
18886 if (r = B.prefilters[o].call(l, e, u, l.opts)) return he.isFunction(r.stop) && (he._queueHooks(l.elem, l.opts.queue).stop = he.proxy(r.stop, r)), r;
18887 return he.map(u, V, l), he.isFunction(l.opts.start) && l.opts.start.call(e, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), he.fx.timer(he.extend(c, {
18890 queue: l.opts.queue
18895 return (e.match(Me) || []).join(" ")
18899 return e.getAttribute && e.getAttribute("class") || ""
18902 function G(e, t, n, r) {
18904 if (Array.isArray(t)) he.each(t, function(t, i) {
18905 n || Ct.test(e) ? r(e, i) : G(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
18907 else if (n || "object" !== he.type(t)) r(e, t);
18909 for (i in t) G(e + "[" + i + "]", t[i], n, r)
18913 return function(t, n) {
18914 "string" != typeof t && (n = t, t = "*");
18916 o = t.toLowerCase().match(Me) || [];
18917 if (he.isFunction(n))
18918 for (; r = o[i++];) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
18922 function Z(e, t, n, r) {
18925 return o[s] = !0, he.each(e[s] || [], function(e, s) {
18926 var l = s(t, n, r);
18927 return "string" != typeof l || a || o[l] ? a ? !(c = l) : void 0 : (t.dataTypes.unshift(l), i(l), !1)
18932 return i(t.dataTypes[0]) || !o["*"] && i("*")
18936 var n, r, i = he.ajaxSettings.flatOptions || {};
18937 for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
18938 return r && he.extend(!0, e, r), e
18941 function Q(e, t, n) {
18942 for (var r, i, o, a, s = e.contents, c = e.dataTypes;
18943 "*" === c[0];) c.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
18946 if (s[i] && s[i].test(r)) {
18950 if (c[0] in n) o = c[0];
18953 if (!c[0] || e.converters[i + " " + c[0]]) {
18961 if (o) return o !== c[0] && c.unshift(o), n[o]
18964 function J(e, t, n, r) {
18965 var i, o, a, s, c, l = {},
18966 u = e.dataTypes.slice();
18968 for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
18969 for (o = u.shift(); o;)
18970 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !c && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), c = o, o = u.shift())
18971 if ("*" === o) o = c;
18972 else if ("*" !== c && c !== o) {
18973 if (!(a = l[c + " " + o] || l["* " + o]))
18975 if ((s = i.split(" "))[1] === o && (a = l[c + " " + s[0]] || l["* " + s[0]])) {
18976 !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], u.unshift(s[1]));
18980 if (a && e.throws) t = a(t);
18985 state: "parsererror",
18986 error: a ? e : "No conversion from " + c + " to " + o
18997 ne = Object.getPrototypeOf,
19004 le = se.hasOwnProperty,
19006 de = ue.call(Object),
19008 he = function(e, t) {
19009 return new he.fn.init(e, t)
19011 pe = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
19014 ve = function(e, t) {
19015 return t.toUpperCase()
19017 he.fn = he.prototype = {
19021 toArray: function() {
19022 return re.call(this)
19025 return null == e ? re.call(this) : e < 0 ? this[e + this.length] : this[e]
19027 pushStack: function(e) {
19028 var t = he.merge(this.constructor(), e);
19029 return t.prevObject = this, t
19031 each: function(e) {
19032 return he.each(this, e)
19035 return this.pushStack(he.map(this, function(t, n) {
19036 return e.call(t, n, t)
19039 slice: function() {
19040 return this.pushStack(re.apply(this, arguments))
19042 first: function() {
19049 var t = this.length,
19050 n = +e + (e < 0 ? t : 0);
19051 return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
19054 return this.prevObject || this.constructor()
19059 }, he.extend = he.fn.extend = function() {
19060 var e, t, n, r, i, o, a = arguments[0] || {},
19062 c = arguments.length,
19064 for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || he.isFunction(a) || (a = {}), s === c && (a = this, s--); s < c; s++)
19065 if (null != (e = arguments[s]))
19066 for (t in e) n = a[t], a !== (r = e[t]) && (l && r && (he.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && he.isPlainObject(n) ? n : {}, a[t] = he.extend(l, o, r)) : void 0 !== r && (a[t] = r));
19069 expando: "jQuery" + ("3.2.1" + Math.random()).replace(/\D/g, ""),
19071 error: function(e) {
19074 noop: function() {},
19075 isFunction: function(e) {
19076 return "function" === he.type(e)
19078 isWindow: function(e) {
19079 return null != e && e === e.window
19081 isNumeric: function(e) {
19082 var t = he.type(e);
19083 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
19085 isPlainObject: function(e) {
19087 return !(!e || "[object Object]" !== ce.call(e)) && (!(t = ne(e)) || "function" == typeof(n = le.call(t, "constructor") && t.constructor) && ue.call(n) === de)
19089 isEmptyObject: function(e) {
19091 for (t in e) return !1;
19094 type: function(e) {
19095 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? se[ce.call(e)] || "object" : typeof e
19097 globalEval: function(e) {
19100 camelCase: function(e) {
19101 return e.replace(me, "ms-").replace(ge, ve)
19103 each: function(e, t) {
19106 for (n = e.length; i < n && !1 !== t.call(e[i], i, e[i]); i++);
19109 if (!1 === t.call(e[i], i, e[i])) break; return e
19111 trim: function(e) {
19112 return null == e ? "" : (e + "").replace(pe, "")
19114 makeArray: function(e, t) {
19116 return null != e && (r(Object(e)) ? he.merge(n, "string" == typeof e ? [e] : e) : oe.call(n, e)), n
19118 inArray: function(e, t, n) {
19119 return null == t ? -1 : ae.call(t, e, n)
19121 merge: function(e, t) {
19122 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
19123 return e.length = i, e
19125 grep: function(e, t, n) {
19126 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
19129 map: function(e, t, n) {
19133 for (i = e.length; a < i; a++) null != (o = t(e[a], a, n)) && s.push(o);
19135 for (a in e) null != (o = t(e[a], a, n)) && s.push(o);
19136 return ie.apply([], s)
19139 proxy: function(e, t) {
19141 if ("string" == typeof t && (n = e[t], t = e, e = n), he.isFunction(e)) return r = re.call(arguments, 2), i = function() {
19142 return e.apply(t || this, r.concat(re.call(arguments)))
19143 }, i.guid = e.guid = e.guid || he.guid++, i
19147 }), "function" == typeof Symbol && (he.fn[Symbol.iterator] = ee[Symbol.iterator]), he.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
19148 se["[object " + t + "]"] = t.toLowerCase()
19150 var be = function(e) {
19151 function t(e, t, n, r) {
19152 var i, o, a, s, c, u, f, h = t && t.ownerDocument,
19153 p = t ? t.nodeType : 9;
19154 if (n = n || [], "string" != typeof e || !e || 1 !== p && 9 !== p && 11 !== p) return n;
19155 if (!r && ((t ? t.ownerDocument || t : L) !== O && S(t), t = t || O, N)) {
19156 if (11 !== p && (c = me.exec(e)))
19159 if (!(a = t.getElementById(i))) return n;
19160 if (a.id === i) return n.push(a), n
19161 } else if (h && (a = h.getElementById(i)) && j(t, a) && a.id === i) return n.push(a), n
19163 if (c[2]) return Z.apply(n, t.getElementsByTagName(e)), n;
19164 if ((i = c[3]) && _.getElementsByClassName && t.getElementsByClassName) return Z.apply(n, t.getElementsByClassName(i)), n
19166 if (_.qsa && !z[e + " "] && (!I || !I.test(e))) {
19167 if (1 !== p) h = t, f = e;
19168 else if ("object" !== t.nodeName.toLowerCase()) {
19169 for ((s = t.getAttribute("id")) ? s = s.replace(ye, _e) : t.setAttribute("id", s = H), o = (u = k(e)).length; o--;) u[o] = "#" + s + " " + d(u[o]);
19170 f = u.join(","), h = ge.test(e) && l(t.parentNode) || t
19173 return Z.apply(n, h.querySelectorAll(f)), n
19174 } catch (e) {} finally {
19175 s === H && t.removeAttribute("id")
19179 return x(e.replace(oe, "$1"), t, n, r)
19184 return t.push(n + " ") > $.cacheLength && delete e[t.shift()], e[n + " "] = r
19191 return e[H] = !0, e
19195 var t = O.createElement("fieldset");
19201 t.parentNode && t.parentNode.removeChild(t), t = null
19206 for (var n = e.split("|"), r = n.length; r--;) $.attrHandle[n[r]] = t
19211 r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
19214 for (; n = n.nextSibling;)
19215 if (n === t) return -1;
19220 return function(t) {
19221 return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && we(t) === e : t.disabled === e : "label" in t && t.disabled === e
19226 return r(function(t) {
19227 return t = +t, r(function(n, r) {
19228 for (var i, o = e([], n.length, t), a = o.length; a--;) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
19234 return e && void 0 !== e.getElementsByTagName && e
19240 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
19244 function f(e, t, n) {
19248 a = n && "parentNode" === o,
19250 return t.first ? function(t, n, i) {
19252 if (1 === t.nodeType || a) return e(t, n, i);
19254 } : function(t, n, c) {
19255 var l, u, d, f = [F, s];
19258 if ((1 === t.nodeType || a) && e(t, n, c)) return !0
19261 if (1 === t.nodeType || a)
19262 if (d = t[H] || (t[H] = {}), u = d[t.uniqueID] || (d[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t;
19264 if ((l = u[o]) && l[0] === F && l[1] === s) return f[2] = l[2];
19265 if (u[o] = f, f[2] = e(t, n, c)) return !0
19271 return e.length > 1 ? function(t, n, r) {
19272 for (var i = e.length; i--;)
19273 if (!e[i](t, n, r)) return !1;
19278 function p(e, n, r) {
19279 for (var i = 0, o = n.length; i < o; i++) t(e, n[i], r);
19283 function m(e, t, n, r, i) {
19284 for (var o, a = [], s = 0, c = e.length, l = null != t; s < c; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
19288 function g(e, t, n, i, o, a) {
19289 return i && !i[H] && (i = g(i)), o && !o[H] && (o = g(o, a)), r(function(r, a, s, c) {
19290 var l, u, d, f = [],
19293 v = r || p(t || "*", s.nodeType ? [s] : s, []),
19294 b = !e || !r && t ? v : m(v, f, e, s, c),
19295 y = n ? o || (r ? e : g || i) ? [] : a : b;
19296 if (n && n(b, y, s, c), i)
19297 for (l = m(y, h), i(l, [], s, c), u = l.length; u--;)(d = l[u]) && (y[h[u]] = !(b[h[u]] = d));
19301 for (l = [], u = y.length; u--;)(d = y[u]) && l.push(b[u] = d);
19302 o(null, y = [], l, c)
19304 for (u = y.length; u--;)(d = y[u]) && (l = o ? Q(r, d) : f[u]) > -1 && (r[l] = !(a[l] = d))
19306 } else y = m(y === a ? y.splice(g, y.length) : y), o ? o(null, a, y, c) : Z.apply(a, y)
19311 for (var t, n, r, i = e.length, o = $.relative[e[0].type], a = o || $.relative[" "], s = o ? 1 : 0, c = f(function(e) {
19313 }, a, !0), l = f(function(e) {
19314 return Q(t, e) > -1
19315 }, a, !0), u = [function(e, n, r) {
19316 var i = !o && (r || n !== T) || ((t = n).nodeType ? c(e, n, r) : l(e, n, r));
19319 if (n = $.relative[e[s].type]) u = [f(h(u), n)];
19321 if ((n = $.filter[e[s].type].apply(null, e[s].matches))[H]) {
19322 for (r = ++s; r < i && !$.relative[e[r].type]; r++);
19323 return g(s > 1 && h(u), s > 1 && d(e.slice(0, s - 1).concat({
19324 value: " " === e[s - 2].type ? "*" : ""
19325 })).replace(oe, "$1"), n, s < r && v(e.slice(s, r)), r < i && v(e = e.slice(r)), r < i && d(e))
19333 var i = n.length > 0,
19335 a = function(r, a, s, c, l) {
19336 var u, d, f, h = 0,
19341 y = r || o && $.find.TAG("*", l),
19342 _ = F += null == b ? 1 : Math.random() || .1,
19344 for (l && (T = a === O || a || l); p !== w && null != (u = y[p]); p++) {
19346 for (d = 0, a || u.ownerDocument === O || (S(u), s = !N); f = e[d++];)
19347 if (f(u, a || O, s)) {
19353 i && ((u = !f && u) && h--, r && g.push(u))
19355 if (h += p, i && p !== h) {
19356 for (d = 0; f = n[d++];) f(g, v, a, s);
19359 for (; p--;) g[p] || v[p] || (v[p] = G.call(c));
19362 Z.apply(c, v), l && !r && v.length > 0 && h + n.length > 1 && t.uniqueSort(c)
19364 return l && (F = _, T = b), g
19366 return i ? r(a) : a
19368 var y, _, $, w, E, k, C, x, T, M, A, S, O, D, N, I, R, P, j, H = "sizzle" + 1 * new Date,
19375 B = function(e, t) {
19376 return e === t && (A = !0), 0
19378 W = {}.hasOwnProperty,
19384 Q = function(e, t) {
19385 for (var n = 0, r = e.length; n < r; n++)
19386 if (e[n] === t) return n;
19389 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
19390 ee = "[\\x20\\t\\r\\n\\f]",
19391 te = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
19392 ne = "\\[" + ee + "*(" + te + ")(?:" + ee + "*([*^$|!~]?=)" + ee + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + te + "))|)" + ee + "*\\]",
19393 re = ":(" + te + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ne + ")*)|.*)\\)|)",
19394 ie = new RegExp(ee + "+", "g"),
19395 oe = new RegExp("^" + ee + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ee + "+$", "g"),
19396 ae = new RegExp("^" + ee + "*," + ee + "*"),
19397 se = new RegExp("^" + ee + "*([>+~]|" + ee + ")" + ee + "*"),
19398 ce = new RegExp("=" + ee + "*([^\\]'\"]*?)" + ee + "*\\]", "g"),
19399 le = new RegExp(re),
19400 ue = new RegExp("^" + te + "$"),
19402 ID: new RegExp("^#(" + te + ")"),
19403 CLASS: new RegExp("^\\.(" + te + ")"),
19404 TAG: new RegExp("^(" + te + "|[*])"),
19405 ATTR: new RegExp("^" + ne),
19406 PSEUDO: new RegExp("^" + re),
19407 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ee + "*(even|odd|(([+-]|)(\\d*)n|)" + ee + "*(?:([+-]|)" + ee + "*(\\d+)|))" + ee + "*\\)|)", "i"),
19408 bool: new RegExp("^(?:" + J + ")$", "i"),
19409 needsContext: new RegExp("^" + ee + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ee + "*((?:-\\d)?\\d*)" + ee + "*\\)|)(?=[^-]|$)", "i")
19411 fe = /^(?:input|select|textarea|button)$/i,
19413 pe = /^[^{]+\{\s*\[native \w/,
19414 me = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
19416 ve = new RegExp("\\\\([\\da-f]{1,6}" + ee + "?|(" + ee + ")|.)", "ig"),
19417 be = function(e, t, n) {
19418 var r = "0x" + t - 65536;
19419 return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
19421 ye = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
19422 _e = function(e, t) {
19423 return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
19428 we = f(function(e) {
19429 return !0 === e.disabled && ("form" in e || "label" in e)
19435 Z.apply(Y = X.call(L.childNodes), L.childNodes), Y[L.childNodes.length].nodeType
19438 apply: Y.length ? function(e, t) {
19439 K.apply(e, X.call(t))
19440 } : function(e, t) {
19441 for (var n = e.length, r = 0; e[n++] = t[r++];);
19446 _ = t.support = {}, E = t.isXML = function(e) {
19447 var t = e && (e.ownerDocument || e).documentElement;
19448 return !!t && "HTML" !== t.nodeName
19449 }, S = t.setDocument = function(e) {
19450 var t, n, r = e ? e.ownerDocument || e : L;
19451 return r !== O && 9 === r.nodeType && r.documentElement ? (O = r, D = O.documentElement, N = !E(O), L !== O && (n = O.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", $e, !1) : n.attachEvent && n.attachEvent("onunload", $e)), _.attributes = i(function(e) {
19452 return e.className = "i", !e.getAttribute("className")
19453 }), _.getElementsByTagName = i(function(e) {
19454 return e.appendChild(O.createComment("")), !e.getElementsByTagName("*").length
19455 }), _.getElementsByClassName = pe.test(O.getElementsByClassName), _.getById = i(function(e) {
19456 return D.appendChild(e).id = H, !O.getElementsByName || !O.getElementsByName(H).length
19457 }), _.getById ? ($.filter.ID = function(e) {
19458 var t = e.replace(ve, be);
19459 return function(e) {
19460 return e.getAttribute("id") === t
19462 }, $.find.ID = function(e, t) {
19463 if (void 0 !== t.getElementById && N) {
19464 var n = t.getElementById(e);
19465 return n ? [n] : []
19467 }) : ($.filter.ID = function(e) {
19468 var t = e.replace(ve, be);
19469 return function(e) {
19470 var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
19471 return n && n.value === t
19473 }, $.find.ID = function(e, t) {
19474 if (void 0 !== t.getElementById && N) {
19475 var n, r, i, o = t.getElementById(e);
19477 if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
19478 for (i = t.getElementsByName(e), r = 0; o = i[r++];)
19479 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
19483 }), $.find.TAG = _.getElementsByTagName ? function(e, t) {
19484 return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : _.qsa ? t.querySelectorAll(e) : void 0
19485 } : function(e, t) {
19488 o = t.getElementsByTagName(e);
19490 for (; n = o[i++];) 1 === n.nodeType && r.push(n);
19494 }, $.find.CLASS = _.getElementsByClassName && function(e, t) {
19495 if (void 0 !== t.getElementsByClassName && N) return t.getElementsByClassName(e)
19496 }, R = [], I = [], (_.qsa = pe.test(O.querySelectorAll)) && (i(function(e) {
19497 D.appendChild(e).innerHTML = "<a id='" + H + "'></a><select id='" + H + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && I.push("[*^$]=" + ee + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || I.push("\\[" + ee + "*(?:value|" + J + ")"), e.querySelectorAll("[id~=" + H + "-]").length || I.push("~="), e.querySelectorAll(":checked").length || I.push(":checked"), e.querySelectorAll("a#" + H + "+*").length || I.push(".#.+[+~]")
19498 }), i(function(e) {
19499 e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
19500 var t = O.createElement("input");
19501 t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && I.push("name" + ee + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && I.push(":enabled", ":disabled"), D.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && I.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), I.push(",.*:")
19502 })), (_.matchesSelector = pe.test(P = D.matches || D.webkitMatchesSelector || D.mozMatchesSelector || D.oMatchesSelector || D.msMatchesSelector)) && i(function(e) {
19503 _.disconnectedMatch = P.call(e, "*"), P.call(e, "[s!='']:x"), R.push("!=", re)
19504 }), I = I.length && new RegExp(I.join("|")), R = R.length && new RegExp(R.join("|")), t = pe.test(D.compareDocumentPosition), j = t || pe.test(D.contains) ? function(e, t) {
19505 var n = 9 === e.nodeType ? e.documentElement : e,
19506 r = t && t.parentNode;
19507 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
19508 } : function(e, t) {
19510 for (; t = t.parentNode;)
19511 if (t === e) return !0;
19513 }, B = t ? function(e, t) {
19514 if (e === t) return A = !0, 0;
19515 var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
19516 return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !_.sortDetached && t.compareDocumentPosition(e) === n ? e === O || e.ownerDocument === L && j(L, e) ? -1 : t === O || t.ownerDocument === L && j(L, t) ? 1 : M ? Q(M, e) - Q(M, t) : 0 : 4 & n ? -1 : 1)
19517 } : function(e, t) {
19518 if (e === t) return A = !0, 0;
19524 if (!i || !o) return e === O ? -1 : t === O ? 1 : i ? -1 : o ? 1 : M ? Q(M, e) - Q(M, t) : 0;
19525 if (i === o) return a(e, t);
19526 for (n = e; n = n.parentNode;) s.unshift(n);
19527 for (n = t; n = n.parentNode;) c.unshift(n);
19528 for (; s[r] === c[r];) r++;
19529 return r ? a(s[r], c[r]) : s[r] === L ? -1 : c[r] === L ? 1 : 0
19531 }, t.matches = function(e, n) {
19532 return t(e, null, null, n)
19533 }, t.matchesSelector = function(e, n) {
19534 if ((e.ownerDocument || e) !== O && S(e), n = n.replace(ce, "='$1']"), _.matchesSelector && N && !z[n + " "] && (!R || !R.test(n)) && (!I || !I.test(n))) try {
19535 var r = P.call(e, n);
19536 if (r || _.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
19538 return t(n, O, null, [e]).length > 0
19539 }, t.contains = function(e, t) {
19540 return (e.ownerDocument || e) !== O && S(e), j(e, t)
19541 }, t.attr = function(e, t) {
19542 (e.ownerDocument || e) !== O && S(e);
19543 var n = $.attrHandle[t.toLowerCase()],
19544 r = n && W.call($.attrHandle, t.toLowerCase()) ? n(e, t, !N) : void 0;
19545 return void 0 !== r ? r : _.attributes || !N ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19546 }, t.escape = function(e) {
19547 return (e + "").replace(ye, _e)
19548 }, t.error = function(e) {
19549 throw new Error("Syntax error, unrecognized expression: " + e)
19550 }, t.uniqueSort = function(e) {
19554 if (A = !_.detectDuplicates, M = !_.sortStable && e.slice(0), e.sort(B), A) {
19555 for (; t = e[i++];) t === e[i] && (r = n.push(i));
19556 for (; r--;) e.splice(n[r], 1)
19559 }, w = t.getText = function(e) {
19564 if (1 === i || 9 === i || 11 === i) {
19565 if ("string" == typeof e.textContent) return e.textContent;
19566 for (e = e.firstChild; e; e = e.nextSibling) n += w(e)
19567 } else if (3 === i || 4 === i) return e.nodeValue
19569 for (; t = e[r++];) n += w(t);
19571 }, ($ = t.selectors = {
19586 dir: "previousSibling",
19590 dir: "previousSibling"
19594 ATTR: function(e) {
19595 return e[1] = e[1].replace(ve, be), e[3] = (e[3] || e[4] || e[5] || "").replace(ve, be), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
19597 CHILD: function(e) {
19598 return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]), e
19600 PSEUDO: function(e) {
19601 var t, n = !e[6] && e[2];
19602 return de.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && le.test(n) && (t = k(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
19607 var t = e.replace(ve, be).toLowerCase();
19608 return "*" === e ? function() {
19611 return e.nodeName && e.nodeName.toLowerCase() === t
19614 CLASS: function(e) {
19615 var t = U[e + " "];
19616 return t || (t = new RegExp("(^|" + ee + ")" + e + "(" + ee + "|$)")) && U(e, function(e) {
19617 return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
19620 ATTR: function(e, n, r) {
19621 return function(i) {
19622 var o = t.attr(i, e);
19623 return null == o ? "!=" === n : !n || (o += "", "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o.replace(ie, " ") + " ").indexOf(r) > -1 : "|=" === n && (o === r || o.slice(0, r.length + 1) === r + "-"))
19626 CHILD: function(e, t, n, r, i) {
19627 var o = "nth" !== e.slice(0, 3),
19628 a = "last" !== e.slice(-4),
19629 s = "of-type" === t;
19630 return 1 === r && 0 === i ? function(e) {
19631 return !!e.parentNode
19632 } : function(t, n, c) {
19633 var l, u, d, f, h, p, m = o !== a ? "nextSibling" : "previousSibling",
19635 v = s && t.nodeName.toLowerCase(),
19641 for (f = t; f = f[m];)
19642 if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType) return !1;
19643 p = m = "only" === e && !p && "nextSibling"
19647 if (p = [a ? g.firstChild : g.lastChild], a && b) {
19648 for (y = (h = (l = (u = (d = (f = g)[H] || (f[H] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]) && l[2], f = h && g.childNodes[h]; f = ++h && f && f[m] || (y = h = 0) || p.pop();)
19649 if (1 === f.nodeType && ++y && f === t) {
19653 } else if (b && (y = h = (l = (u = (d = (f = t)[H] || (f[H] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]), !1 === y)
19655 (f = ++h && f && f[m] || (y = h = 0) || p.pop()) && ((s ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) || !++y || (b && ((u = (d = f[H] || (f[H] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] = [F, y]), f !== t)););
19656 return (y -= i) === r || y % r == 0 && y / r >= 0
19660 PSEUDO: function(e, n) {
19661 var i, o = $.pseudos[e] || $.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
19662 return o[H] ? o(n) : o.length > 1 ? (i = [e, e, "", n], $.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
19663 for (var r, i = o(e, n), a = i.length; a--;) e[r = Q(e, i[a])] = !(t[r] = i[a])
19670 not: r(function(e) {
19673 i = C(e.replace(oe, "$1"));
19674 return i[H] ? r(function(e, t, n, r) {
19675 for (var o, a = i(e, null, r, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
19676 }) : function(e, r, o) {
19677 return t[0] = e, i(t, null, o, n), t[0] = null, !n.pop()
19680 has: r(function(e) {
19681 return function(n) {
19682 return t(e, n).length > 0
19685 contains: r(function(e) {
19686 return e = e.replace(ve, be),
19688 return (t.textContent || t.innerText || w(t)).indexOf(e) > -1
19691 lang: r(function(e) {
19692 return ue.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(ve, be).toLowerCase(),
19696 if (n = N ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
19697 } while ((t = t.parentNode) && 1 === t.nodeType);
19701 target: function(t) {
19702 var n = e.location && e.location.hash;
19703 return n && n.slice(1) === t.id
19705 root: function(e) {
19708 focus: function(e) {
19709 return e === O.activeElement && (!O.hasFocus || O.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
19713 checked: function(e) {
19714 var t = e.nodeName.toLowerCase();
19715 return "input" === t && !!e.checked || "option" === t && !!e.selected
19717 selected: function(e) {
19718 return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
19720 empty: function(e) {
19721 for (e = e.firstChild; e; e = e.nextSibling)
19722 if (e.nodeType < 6) return !1;
19725 parent: function(e) {
19726 return !$.pseudos.empty(e)
19728 header: function(e) {
19729 return he.test(e.nodeName)
19731 input: function(e) {
19732 return fe.test(e.nodeName)
19734 button: function(e) {
19735 var t = e.nodeName.toLowerCase();
19736 return "input" === t && "button" === e.type || "button" === t
19738 text: function(e) {
19740 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
19742 first: c(function() {
19745 last: c(function(e, t) {
19748 eq: c(function(e, t, n) {
19749 return [n < 0 ? n + t : n]
19751 even: c(function(e, t) {
19752 for (var n = 0; n < t; n += 2) e.push(n);
19755 odd: c(function(e, t) {
19756 for (var n = 1; n < t; n += 2) e.push(n);
19759 lt: c(function(e, t, n) {
19760 for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
19763 gt: c(function(e, t, n) {
19764 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
19768 }).pseudos.nth = $.pseudos.eq;
19775 }) $.pseudos[y] = function(e) {
19776 return function(t) {
19777 return "input" === t.nodeName.toLowerCase() && t.type === e
19783 }) $.pseudos[y] = function(e) {
19784 return function(t) {
19785 var n = t.nodeName.toLowerCase();
19786 return ("input" === n || "button" === n) && t.type === e
19789 return u.prototype = $.filters = $.pseudos, $.setFilters = new u, k = t.tokenize = function(e, n) {
19790 var r, i, o, a, s, c, l, u = V[e + " "];
19791 if (u) return n ? 0 : u.slice(0);
19792 for (s = e, c = [], l = $.preFilter; s;) {
19793 r && !(i = ae.exec(s)) || (i && (s = s.slice(i[0].length) || s), c.push(o = [])), r = !1, (i = se.exec(s)) && (r = i.shift(), o.push({
19795 type: i[0].replace(oe, " ")
19796 }), s = s.slice(r.length));
19797 for (a in $.filter) !(i = de[a].exec(s)) || l[a] && !(i = l[a](i)) || (r = i.shift(), o.push({
19801 }), s = s.slice(r.length));
19804 return n ? s.length : s ? t.error(e) : V(e, c).slice(0)
19805 }, C = t.compile = function(e, t) {
19810 for (t || (t = k(e)), n = t.length; n--;)(o = v(t[n]))[H] ? r.push(o) : i.push(o);
19811 (o = z(e, b(i, r))).selector = e
19814 }, x = t.select = function(e, t, n, r) {
19815 var i, o, a, s, c, u = "function" == typeof e && e,
19816 f = !r && k(e = u.selector || e);
19817 if (n = n || [], 1 === f.length) {
19818 if ((o = f[0] = f[0].slice(0)).length > 2 && "ID" === (a = o[0]).type && 9 === t.nodeType && N && $.relative[o[1].type]) {
19819 if (!(t = ($.find.ID(a.matches[0].replace(ve, be), t) || [])[0])) return n;
19820 u && (t = t.parentNode), e = e.slice(o.shift().value.length)
19822 for (i = de.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !$.relative[s = a.type]);)
19823 if ((c = $.find[s]) && (r = c(a.matches[0].replace(ve, be), ge.test(o[0].type) && l(t.parentNode) || t))) {
19824 if (o.splice(i, 1), !(e = r.length && d(o))) return Z.apply(n, r), n;
19828 return (u || C(e, f))(r, t, !N, n, !t || ge.test(e) && l(t.parentNode) || t), n
19829 }, _.sortStable = H.split("").sort(B).join("") === H, _.detectDuplicates = !!A, S(), _.sortDetached = i(function(e) {
19830 return 1 & e.compareDocumentPosition(O.createElement("fieldset"))
19831 }), i(function(e) {
19832 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
19833 }) || o("type|href|height|width", function(e, t, n) {
19834 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
19835 }), _.attributes && i(function(e) {
19836 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
19837 }) || o("value", function(e, t, n) {
19838 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
19839 }), i(function(e) {
19840 return null == e.getAttribute("disabled")
19841 }) || o(J, function(e, t, n) {
19843 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19846 he.find = be, he.expr = be.selectors, he.expr[":"] = he.expr.pseudos, he.uniqueSort = he.unique = be.uniqueSort, he.text = be.getText, he.isXMLDoc = be.isXML, he.contains = be.contains, he.escapeSelector = be.escape;
19847 var ye = function(e, t, n) {
19848 for (var r = [], i = void 0 !== n;
19849 (e = e[t]) && 9 !== e.nodeType;)
19850 if (1 === e.nodeType) {
19851 if (i && he(e).is(n)) break;
19856 _e = function(e, t) {
19857 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
19860 $e = he.expr.match.needsContext,
19861 we = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
19862 Ee = /^.[^:#\[\.,]*$/;
19863 he.filter = function(e, t, n) {
19865 return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? he.find.matchesSelector(r, e) ? [r] : [] : he.find.matches(e, he.grep(t, function(e) {
19866 return 1 === e.nodeType
19869 find: function(e) {
19870 var t, n, r = this.length,
19872 if ("string" != typeof e) return this.pushStack(he(e).filter(function() {
19873 for (t = 0; t < r; t++)
19874 if (he.contains(i[t], this)) return !0
19876 for (n = this.pushStack([]), t = 0; t < r; t++) he.find(e, i[t], n);
19877 return r > 1 ? he.uniqueSort(n) : n
19879 filter: function(e) {
19880 return this.pushStack(o(this, e || [], !1))
19883 return this.pushStack(o(this, e || [], !0))
19886 return !!o(this, "string" == typeof e && $e.test(e) ? he(e) : e || [], !1).length
19889 var ke, Ce = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
19890 (he.fn.init = function(e, t, n) {
19892 if (!e) return this;
19893 if (n = n || ke, "string" == typeof e) {
19894 if (!(r = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : Ce.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
19896 if (t = t instanceof he ? t[0] : t, he.merge(this, he.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : te, !0)), we.test(r[1]) && he.isPlainObject(t))
19897 for (r in t) he.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
19900 return (i = te.getElementById(r[2])) && (this[0] = i, this.length = 1), this
19902 return e.nodeType ? (this[0] = e, this.length = 1, this) : he.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(he) : he.makeArray(e, this)
19903 }).prototype = he.fn, ke = he(te);
19904 var xe = /^(?:parents|prev(?:Until|All))/,
19913 var t = he(e, this),
19915 return this.filter(function() {
19916 for (var e = 0; e < n; e++)
19917 if (he.contains(this, t[e])) return !0
19920 closest: function(e, t) {
19924 a = "string" != typeof e && he(e);
19927 for (n = this[r]; n && n !== t; n = n.parentNode)
19928 if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && he.find.matchesSelector(n, e))) {
19932 return this.pushStack(o.length > 1 ? he.uniqueSort(o) : o)
19934 index: function(e) {
19935 return e ? "string" == typeof e ? ae.call(he(e), this[0]) : ae.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
19937 add: function(e, t) {
19938 return this.pushStack(he.uniqueSort(he.merge(this.get(), he(e, t))))
19940 addBack: function(e) {
19941 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
19944 parent: function(e) {
19945 var t = e.parentNode;
19946 return t && 11 !== t.nodeType ? t : null
19948 parents: function(e) {
19949 return ye(e, "parentNode")
19951 parentsUntil: function(e, t, n) {
19952 return ye(e, "parentNode", n)
19954 next: function(e) {
19955 return a(e, "nextSibling")
19957 prev: function(e) {
19958 return a(e, "previousSibling")
19960 nextAll: function(e) {
19961 return ye(e, "nextSibling")
19963 prevAll: function(e) {
19964 return ye(e, "previousSibling")
19966 nextUntil: function(e, t, n) {
19967 return ye(e, "nextSibling", n)
19969 prevUntil: function(e, t, n) {
19970 return ye(e, "previousSibling", n)
19972 siblings: function(e) {
19973 return _e((e.parentNode || {}).firstChild, e)
19975 children: function(e) {
19976 return _e(e.firstChild)
19978 contents: function(e) {
19979 return i(e, "iframe") ? e.contentDocument : (i(e, "template") && (e = e.content || e), he.merge([], e.childNodes))
19981 }, function(e, t) {
19982 he.fn[e] = function(n, r) {
19983 var i = he.map(this, t, n);
19984 return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = he.filter(r, i)), this.length > 1 && (Te[e] || he.uniqueSort(i), xe.test(e) && i.reverse()), this.pushStack(i)
19987 var Me = /[^\x20\t\r\n\f]+/g;
19988 he.Callbacks = function(e) {
19989 e = "string" == typeof e ? s(e) : he.extend({}, e);
19990 var t, n, r, i, o = [],
19994 for (i = i || e.once, r = t = !0; a.length; c = -1)
19995 for (n = a.shift(); ++c < o.length;) !1 === o[c].apply(n[0], n[1]) && e.stopOnFalse && (c = o.length, n = !1);
19996 e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
20000 return o && (n && !t && (c = o.length - 1, a.push(n)), function t(n) {
20001 he.each(n, function(n, r) {
20002 he.isFunction(r) ? e.unique && u.has(r) || o.push(r) : r && r.length && "string" !== he.type(r) && t(r)
20004 }(arguments), n && !t && l()), this
20006 remove: function() {
20007 return he.each(arguments, function(e, t) {
20009 (n = he.inArray(t, o, n)) > -1;) o.splice(n, 1), n <= c && c--
20013 return e ? he.inArray(e, o) > -1 : o.length > 0
20015 empty: function() {
20016 return o && (o = []), this
20018 disable: function() {
20019 return i = a = [], o = n = "", this
20021 disabled: function() {
20025 return i = a = [], n || t || (o = n = ""), this
20027 locked: function() {
20030 fireWith: function(e, n) {
20031 return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || l()), this
20034 return u.fireWith(this, arguments), this
20036 fired: function() {
20042 Deferred: function(t) {
20044 ["notify", "progress", he.Callbacks("memory"), he.Callbacks("memory"), 2],
20045 ["resolve", "done", he.Callbacks("once memory"), he.Callbacks("once memory"), 0, "resolved"],
20046 ["reject", "fail", he.Callbacks("once memory"), he.Callbacks("once memory"), 1, "rejected"]
20050 state: function() {
20053 always: function() {
20054 return o.done(arguments).fail(arguments), this
20056 catch: function(e) {
20057 return i.then(null, e)
20061 return he.Deferred(function(t) {
20062 he.each(n, function(n, r) {
20063 var i = he.isFunction(e[r[4]]) && e[r[4]];
20064 o[r[1]](function() {
20065 var e = i && i.apply(this, arguments);
20066 e && he.isFunction(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
20071 then: function(t, r, i) {
20072 function o(t, n, r, i) {
20073 return function() {
20079 if ((e = r.apply(s, u)) === n.promise()) throw new TypeError("Thenable self-resolution");
20080 d = e && ("object" == typeof e || "function" == typeof e) && e.then, he.isFunction(d) ? i ? d.call(e, o(a, n, c, i), o(a, n, l, i)) : (a++, d.call(e, o(a, n, c, i), o(a, n, l, i), o(a, n, c, n.notifyWith))) : (r !== c && (s = void 0, u = [e]), (i || n.resolveWith)(s, u))
20083 f = i ? d : function() {
20087 he.Deferred.exceptionHook && he.Deferred.exceptionHook(e, f.stackTrace), t + 1 >= a && (r !== l && (s = void 0, u = [e]), n.rejectWith(s, u))
20090 t ? f() : (he.Deferred.getStackHook && (f.stackTrace = he.Deferred.getStackHook()), e.setTimeout(f))
20094 return he.Deferred(function(e) {
20095 n[0][3].add(o(0, e, he.isFunction(i) ? i : c, e.notifyWith)), n[1][3].add(o(0, e, he.isFunction(t) ? t : c)), n[2][3].add(o(0, e, he.isFunction(r) ? r : l))
20098 promise: function(e) {
20099 return null != e ? he.extend(e, i) : i
20103 return he.each(n, function(e, t) {
20106 i[t[1]] = a.add, s && a.add(function() {
20108 }, n[3 - e][2].disable, n[0][2].lock), a.add(t[3].fire), o[t[0]] = function() {
20109 return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
20110 }, o[t[0] + "With"] = a.fireWith
20111 }), i.promise(o), t && t.call(o, o), o
20113 when: function(e) {
20114 var t = arguments.length,
20117 i = re.call(arguments),
20120 return function(n) {
20121 r[e] = this, i[e] = arguments.length > 1 ? re.call(arguments) : n, --t || o.resolveWith(r, i)
20124 if (t <= 1 && (u(e, o.done(a(n)).resolve, o.reject, !t), "pending" === o.state() || he.isFunction(i[n] && i[n].then))) return o.then();
20125 for (; n--;) u(i[n], a(n), o.reject);
20129 var Ae = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
20130 he.Deferred.exceptionHook = function(t, n) {
20131 e.console && e.console.warn && t && Ae.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
20132 }, he.readyException = function(t) {
20133 e.setTimeout(function() {
20137 var Se = he.Deferred();
20138 he.fn.ready = function(e) {
20139 return Se.then(e).catch(function(e) {
20140 he.readyException(e)
20145 ready: function(e) {
20146 (!0 === e ? --he.readyWait : he.isReady) || (he.isReady = !0, !0 !== e && --he.readyWait > 0 || Se.resolveWith(te, [he]))
20148 }), he.ready.then = Se.then, "complete" === te.readyState || "loading" !== te.readyState && !te.documentElement.doScroll ? e.setTimeout(he.ready) : (te.addEventListener("DOMContentLoaded", d), e.addEventListener("load", d));
20149 var Oe = function(e, t, n, r, i, o, a) {
20153 if ("object" === he.type(n)) {
20155 for (s in n) Oe(e, t, s, n[s], !0, o, a)
20156 } else if (void 0 !== r && (i = !0, he.isFunction(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
20157 return l.call(he(e), n)
20159 for (; s < c; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
20160 return i ? e : l ? t.call(e) : c ? t(e[0], n) : o
20163 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
20165 f.uid = 1, f.prototype = {
20166 cache: function(e) {
20167 var t = e[this.expando];
20168 return t || (t = {}, De(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
20173 set: function(e, t, n) {
20174 var r, i = this.cache(e);
20175 if ("string" == typeof t) i[he.camelCase(t)] = n;
20177 for (r in t) i[he.camelCase(r)] = t[r];
20180 get: function(e, t) {
20181 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][he.camelCase(t)]
20183 access: function(e, t, n) {
20184 return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
20186 remove: function(e, t) {
20187 var n, r = e[this.expando];
20188 if (void 0 !== r) {
20189 if (void 0 !== t) {
20190 n = (t = Array.isArray(t) ? t.map(he.camelCase) : (t = he.camelCase(t)) in r ? [t] : t.match(Me) || []).length;
20191 for (; n--;) delete r[t[n]]
20192 }(void 0 === t || he.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
20195 hasData: function(e) {
20196 var t = e[this.expando];
20197 return void 0 !== t && !he.isEmptyObject(t)
20202 Re = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
20205 hasData: function(e) {
20206 return Ie.hasData(e) || Ne.hasData(e)
20208 data: function(e, t, n) {
20209 return Ie.access(e, t, n)
20211 removeData: function(e, t) {
20214 _data: function(e, t, n) {
20215 return Ne.access(e, t, n)
20217 _removeData: function(e, t) {
20221 data: function(e, t) {
20222 var n, r, i, o = this[0],
20223 a = o && o.attributes;
20224 if (void 0 === e) {
20225 if (this.length && (i = Ie.get(o), 1 === o.nodeType && !Ne.get(o, "hasDataAttrs"))) {
20226 for (n = a.length; n--;) a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = he.camelCase(r.slice(5)), p(o, r, i[r]));
20227 Ne.set(o, "hasDataAttrs", !0)
20231 return "object" == typeof e ? this.each(function() {
20233 }) : Oe(this, function(t) {
20235 if (o && void 0 === t) {
20236 if (void 0 !== (n = Ie.get(o, e))) return n;
20237 if (void 0 !== (n = p(o, e))) return n
20238 } else this.each(function() {
20241 }, null, t, arguments.length > 1, null, !0)
20243 removeData: function(e) {
20244 return this.each(function() {
20249 queue: function(e, t, n) {
20251 if (e) return t = (t || "fx") + "queue", r = Ne.get(e, t), n && (!r || Array.isArray(n) ? r = Ne.access(e, t, he.makeArray(n)) : r.push(n)), r || []
20253 dequeue: function(e, t) {
20255 var n = he.queue(e, t),
20258 o = he._queueHooks(e, t);
20259 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
20261 }, o)), !r && o && o.empty.fire()
20263 _queueHooks: function(e, t) {
20264 var n = t + "queueHooks";
20265 return Ne.get(e, n) || Ne.access(e, n, {
20266 empty: he.Callbacks("once memory").add(function() {
20267 Ne.remove(e, [t + "queue", n])
20272 queue: function(e, t) {
20274 return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? he.queue(this[0], e) : void 0 === t ? this : this.each(function() {
20275 var n = he.queue(this, e, t);
20276 he._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && he.dequeue(this, e)
20279 dequeue: function(e) {
20280 return this.each(function() {
20281 he.dequeue(this, e)
20284 clearQueue: function(e) {
20285 return this.queue(e || "fx", [])
20287 promise: function(e, t) {
20293 --r || i.resolveWith(o, [o])
20295 for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;)(n = Ne.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
20296 return s(), i.promise(t)
20299 var je = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
20300 He = new RegExp("^(?:([+-])=|)(" + je + ")([a-z%]*)$", "i"),
20301 Le = ["Top", "Right", "Bottom", "Left"],
20302 Fe = function(e, t) {
20303 return "none" === (e = t || e).style.display || "" === e.style.display && he.contains(e.ownerDocument, e) && "none" === he.css(e, "display")
20305 qe = function(e, t, n, r) {
20307 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
20308 i = n.apply(e, r || []);
20309 for (o in t) e.style[o] = a[o];
20320 toggle: function(e) {
20321 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
20322 Fe(this) ? he(this).show() : he(this).hide()
20326 var Ve = /^(?:checkbox|radio)$/i,
20327 ze = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
20328 Be = /^$|\/(?:java|ecma)script/i,
20330 option: [1, "<select multiple='multiple'>", "</select>"],
20331 thead: [1, "<table>", "</table>"],
20332 col: [2, "<table><colgroup>", "</colgroup></table>"],
20333 tr: [2, "<table><tbody>", "</tbody></table>"],
20334 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
20335 _default: [0, "", ""]
20337 We.optgroup = We.option, We.tbody = We.tfoot = We.colgroup = We.caption = We.thead, We.th = We.td;
20338 var Ye = /<|&#?\w+;/;
20340 var e = te.createDocumentFragment().appendChild(te.createElement("div")),
20341 t = te.createElement("input");
20342 t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), fe.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "<textarea>x</textarea>", fe.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
20344 var Ge = te.documentElement,
20346 Ze = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
20347 Xe = /^([^.]*)(?:\.(.+)|)/;
20350 add: function(e, t, n, r, i) {
20351 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.get(e);
20353 for (n.handler && (n = (o = n).handler, i = o.selector), i && he.find.matchesSelector(Ge, i), n.guid || (n.guid = he.guid++), (c = g.events) || (c = g.events = {}), (a = g.handle) || (a = g.handle = function(t) {
20354 return void 0 !== he && he.event.triggered !== t.type ? he.event.dispatch.apply(e, arguments) : void 0
20355 }), l = (t = (t || "").match(Me) || [""]).length; l--;) h = m = (s = Xe.exec(t[l]) || [])[1], p = (s[2] || "").split(".").sort(), h && (d = he.event.special[h] || {}, h = (i ? d.delegateType : d.bindType) || h, d = he.event.special[h] || {}, u = he.extend({
20362 needsContext: i && he.expr.match.needsContext.test(i),
20363 namespace: p.join(".")
20364 }, o), (f = c[h]) || ((f = c[h] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(e, r, p, a) || e.addEventListener && e.addEventListener(h, a)), d.add && (d.add.call(e, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), he.event.global[h] = !0)
20366 remove: function(e, t, n, r, i) {
20367 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.hasData(e) && Ne.get(e);
20368 if (g && (c = g.events)) {
20369 for (l = (t = (t || "").match(Me) || [""]).length; l--;)
20370 if (s = Xe.exec(t[l]) || [], h = m = s[1], p = (s[2] || "").split(".").sort(), h) {
20371 for (d = he.event.special[h] || {}, f = c[h = (r ? d.delegateType : d.bindType) || h] || [], s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = f.length; o--;) u = f[o], !i && m !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || r && r !== u.selector && ("**" !== r || !u.selector) || (f.splice(o, 1), u.selector && f.delegateCount--, d.remove && d.remove.call(e, u));
20372 a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || he.removeEvent(e, h, g.handle), delete c[h])
20374 for (h in c) he.event.remove(e, h + t[l], n, r, !0);
20375 he.isEmptyObject(c) && Ne.remove(e, "handle events")
20378 dispatch: function(e) {
20379 var t, n, r, i, o, a, s = he.event.fix(e),
20380 c = new Array(arguments.length),
20381 l = (Ne.get(this, "events") || {})[s.type] || [],
20382 u = he.event.special[s.type] || {};
20383 for (c[0] = s, t = 1; t < arguments.length; t++) c[t] = arguments[t];
20384 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
20385 for (a = he.event.handlers.call(this, s, l), t = 0;
20386 (i = a[t++]) && !s.isPropagationStopped();)
20387 for (s.currentTarget = i.elem, n = 0;
20388 (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((he.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, c)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));
20389 return u.postDispatch && u.postDispatch.call(this, s), s.result
20392 handlers: function(e, t) {
20393 var n, r, i, o, a, s = [],
20394 c = t.delegateCount,
20396 if (c && l.nodeType && !("click" === e.type && e.button >= 1))
20397 for (; l !== this; l = l.parentNode || this)
20398 if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
20399 for (o = [], a = {}, n = 0; n < c; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? he(i, this).index(l) > -1 : he.find(i, this, null, [l]).length), a[i] && o.push(r);
20400 o.length && s.push({
20405 return l = this, c < t.length && s.push({
20407 handlers: t.slice(c)
20410 addProp: function(e, t) {
20411 Object.defineProperty(he.Event.prototype, e, {
20414 get: he.isFunction(t) ? function() {
20415 if (this.originalEvent) return t(this.originalEvent)
20417 if (this.originalEvent) return this.originalEvent[e]
20420 Object.defineProperty(this, e, {
20430 return e[he.expando] ? e : new he.Event(e)
20437 trigger: function() {
20438 if (this !== E() && this.focus) return this.focus(), !1
20440 delegateType: "focusin"
20443 trigger: function() {
20444 if (this === E() && this.blur) return this.blur(), !1
20446 delegateType: "focusout"
20449 trigger: function() {
20450 if ("checkbox" === this.type && this.click && i(this, "input")) return this.click(), !1
20452 _default: function(e) {
20453 return i(e.target, "a")
20457 postDispatch: function(e) {
20458 void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
20462 }, he.removeEvent = function(e, t, n) {
20463 e.removeEventListener && e.removeEventListener(t, n)
20464 }, he.Event = function(e, t) {
20465 if (!(this instanceof he.Event)) return new he.Event(e, t);
20466 e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? $ : w, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && he.extend(this, t), this.timeStamp = e && e.timeStamp || he.now(), this[he.expando] = !0
20467 }, he.Event.prototype = {
20468 constructor: he.Event,
20469 isDefaultPrevented: w,
20470 isPropagationStopped: w,
20471 isImmediatePropagationStopped: w,
20473 preventDefault: function() {
20474 var e = this.originalEvent;
20475 this.isDefaultPrevented = $, e && !this.isSimulated && e.preventDefault()
20477 stopPropagation: function() {
20478 var e = this.originalEvent;
20479 this.isPropagationStopped = $, e && !this.isSimulated && e.stopPropagation()
20481 stopImmediatePropagation: function() {
20482 var e = this.originalEvent;
20483 this.isImmediatePropagationStopped = $, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
20489 changedTouches: !0,
20515 which: function(e) {
20517 return null == e.which && Ke.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Ze.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
20519 }, he.event.addProp), he.each({
20520 mouseenter: "mouseover",
20521 mouseleave: "mouseout",
20522 pointerenter: "pointerover",
20523 pointerleave: "pointerout"
20524 }, function(e, t) {
20525 he.event.special[e] = {
20528 handle: function(e) {
20530 i = e.relatedTarget,
20532 return i && (i === r || he.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
20536 on: function(e, t, n, r) {
20537 return k(this, e, t, n, r)
20539 one: function(e, t, n, r) {
20540 return k(this, e, t, n, r, 1)
20542 off: function(e, t, n) {
20544 if (e && e.preventDefault && e.handleObj) return r = e.handleObj, he(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
20545 if ("object" == typeof e) {
20546 for (i in e) this.off(i, t, e[i]);
20549 return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = w), this.each(function() {
20550 he.event.remove(this, e, n, t)
20554 var Qe = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
20555 Je = /<script|<style|<link/i,
20556 et = /checked\s*(?:[^=]|=\s*.checked.)/i,
20557 tt = /^true\/(.*)/,
20558 nt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
20560 htmlPrefilter: function(e) {
20561 return e.replace(Qe, "<$1></$2>")
20563 clone: function(e, t, n) {
20564 var r, i, o, a, s = e.cloneNode(!0),
20565 c = he.contains(e.ownerDocument, e);
20566 if (!(fe.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || he.isXMLDoc(e)))
20567 for (a = b(s), r = 0, i = (o = b(e)).length; r < i; r++) A(o[r], a[r]);
20570 for (o = o || b(e), a = a || b(s), r = 0, i = o.length; r < i; r++) M(o[r], a[r]);
20572 return (a = b(s, "script")).length > 0 && y(a, !c && b(e, "script")), s
20574 cleanData: function(e) {
20575 for (var t, n, r, i = he.event.special, o = 0; void 0 !== (n = e[o]); o++)
20577 if (t = n[Ne.expando]) {
20579 for (r in t.events) i[r] ? he.event.remove(n, r) : he.removeEvent(n, r, t.handle);
20580 n[Ne.expando] = void 0
20582 n[Ie.expando] && (n[Ie.expando] = void 0)
20586 detach: function(e) {
20587 return O(this, e, !0)
20589 remove: function(e) {
20592 text: function(e) {
20593 return Oe(this, function(e) {
20594 return void 0 === e ? he.text(this) : this.empty().each(function() {
20595 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
20597 }, null, e, arguments.length)
20599 append: function() {
20600 return S(this, arguments, function(e) {
20601 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || C(this, e).appendChild(e)
20604 prepend: function() {
20605 return S(this, arguments, function(e) {
20606 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
20607 var t = C(this, e);
20608 t.insertBefore(e, t.firstChild)
20612 before: function() {
20613 return S(this, arguments, function(e) {
20614 this.parentNode && this.parentNode.insertBefore(e, this)
20617 after: function() {
20618 return S(this, arguments, function(e) {
20619 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
20622 empty: function() {
20623 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (he.cleanData(b(e, !1)), e.textContent = "");
20626 clone: function(e, t) {
20627 return e = null != e && e, t = null == t ? e : t, this.map(function() {
20628 return he.clone(this, e, t)
20631 html: function(e) {
20632 return Oe(this, function(e) {
20633 var t = this[0] || {},
20636 if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
20637 if ("string" == typeof e && !Je.test(e) && !We[(ze.exec(e) || ["", ""])[1].toLowerCase()]) {
20638 e = he.htmlPrefilter(e);
20640 for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (he.cleanData(b(t, !1)), t.innerHTML = e);
20644 t && this.empty().append(e)
20645 }, null, e, arguments.length)
20647 replaceWith: function() {
20649 return S(this, arguments, function(t) {
20650 var n = this.parentNode;
20651 he.inArray(this, e) < 0 && (he.cleanData(b(this)), n && n.replaceChild(t, this))
20655 appendTo: "append",
20656 prependTo: "prepend",
20657 insertBefore: "before",
20658 insertAfter: "after",
20659 replaceAll: "replaceWith"
20660 }, function(e, t) {
20661 he.fn[e] = function(e) {
20662 for (var n, r = [], i = he(e), o = i.length - 1, a = 0; a <= o; a++) n = a === o ? this : this.clone(!0), he(i[a])[t](n), oe.apply(r, n.get());
20663 return this.pushStack(r)
20666 var rt = /^margin/,
20667 it = new RegExp("^(" + je + ")(?!px)[a-z%]+$", "i"),
20669 var n = t.ownerDocument.defaultView;
20670 return n && n.opener || (n = e), n.getComputedStyle(t)
20675 s.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%", s.innerHTML = "", Ge.appendChild(a);
20676 var t = e.getComputedStyle(s);
20677 n = "1%" !== t.top, o = "2px" === t.marginLeft, r = "4px" === t.width, s.style.marginRight = "50%", i = "4px" === t.marginRight, Ge.removeChild(a), s = null
20680 var n, r, i, o, a = te.createElement("div"),
20681 s = te.createElement("div");
20682 s.style && (s.style.backgroundClip = "content-box", s.cloneNode(!0).style.backgroundClip = "", fe.clearCloneStyle = "content-box" === s.style.backgroundClip, a.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", a.appendChild(s), he.extend(fe, {
20683 pixelPosition: function() {
20686 boxSizingReliable: function() {
20689 pixelMarginRight: function() {
20692 reliableMarginLeft: function() {
20697 var at = /^(none|table(?!-c[ea]).+)/,
20700 position: "absolute",
20701 visibility: "hidden",
20705 letterSpacing: "0",
20708 ut = ["Webkit", "Moz", "ms"],
20709 dt = te.createElement("div").style;
20713 get: function(e, t) {
20715 var n = D(e, "opacity");
20716 return "" === n ? "1" : n
20722 animationIterationCount: !0,
20739 style: function(e, t, n, r) {
20740 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
20741 var i, o, a, s = he.camelCase(t),
20744 if (c || (t = R(s)), a = he.cssHooks[t] || he.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
20745 "string" == (o = typeof n) && (i = He.exec(n)) && i[1] && (n = m(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (he.cssNumber[s] ? "" : "px")), fe.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (c ? l.setProperty(t, n) : l[t] = n))
20748 css: function(e, t, n, r) {
20749 var i, o, a, s = he.camelCase(t);
20750 return st.test(t) || (t = R(s)), (a = he.cssHooks[t] || he.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = D(e, t, r)), "normal" === i && t in lt && (i = lt[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
20752 }), he.each(["height", "width"], function(e, t) {
20754 get: function(e, n, r) {
20755 if (n) return !at.test(he.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? H(e, t, r) : qe(e, ct, function() {
20759 set: function(e, n, r) {
20760 var i, o = r && ot(e),
20761 a = r && j(e, t, r, "border-box" === he.css(e, "boxSizing", !1, o), o);
20762 return a && (i = He.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = he.css(e, t)), P(0, n, a)
20765 }), he.cssHooks.marginLeft = N(fe.reliableMarginLeft, function(e, t) {
20766 if (t) return (parseFloat(D(e, "marginLeft")) || e.getBoundingClientRect().left - qe(e, {
20769 return e.getBoundingClientRect().left
20775 }, function(e, t) {
20776 he.cssHooks[e + t] = {
20777 expand: function(n) {
20778 for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++) i[e + Le[r] + t] = o[r] || o[r - 2] || o[0];
20781 }, rt.test(e) || (he.cssHooks[e + t].set = P)
20783 css: function(e, t) {
20784 return Oe(this, function(e, t, n) {
20787 if (Array.isArray(t)) {
20788 for (r = ot(e), i = t.length; a < i; a++) o[t[a]] = he.css(e, t[a], !1, r);
20791 return void 0 !== n ? he.style(e, t, n) : he.css(e, t)
20792 }, e, t, arguments.length > 1)
20794 }), he.Tween = L, L.prototype = {
20796 init: function(e, t, n, r, i, o) {
20797 this.elem = e, this.prop = n, this.easing = i || he.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (he.cssNumber[n] ? "" : "px")
20800 var e = L.propHooks[this.prop];
20801 return e && e.get ? e.get(this) : L.propHooks._default.get(this)
20804 var t, n = L.propHooks[this.prop];
20805 return this.options.duration ? this.pos = t = he.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = 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) : L.propHooks._default.set(this), this
20807 }, L.prototype.init.prototype = L.prototype, L.propHooks = {
20811 return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = he.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
20814 he.fx.step[e.prop] ? he.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[he.cssProps[e.prop]] && !he.cssHooks[e.prop] ? e.elem[e.prop] = e.now : he.style(e.elem, e.prop, e.now + e.unit)
20817 }, L.propHooks.scrollTop = L.propHooks.scrollLeft = {
20819 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
20822 linear: function(e) {
20825 swing: function(e) {
20826 return .5 - Math.cos(e * Math.PI) / 2
20829 }, he.fx = L.prototype.init, he.fx.step = {};
20830 var ft, ht, pt = /^(?:toggle|show|hide)$/,
20831 mt = /queueHooks$/;
20832 he.Animation = he.extend(B, {
20834 "*": [function(e, t) {
20835 var n = this.createTween(e, t);
20836 return m(n.elem, e, He.exec(t), n), n
20839 tweener: function(e, t) {
20840 he.isFunction(e) ? (t = e, e = ["*"]) : e = e.match(Me);
20841 for (var n, r = 0, i = e.length; r < i; r++) n = e[r], B.tweeners[n] = B.tweeners[n] || [], B.tweeners[n].unshift(t)
20843 prefilters: [function(e, t, n) {
20844 var r, i, o, a, s, c, l, u, d = "width" in t || "height" in t,
20848 m = e.nodeType && Fe(e),
20849 g = Ne.get(e, "fxshow");
20850 n.queue || (null == (a = he._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
20852 }), a.unqueued++, f.always(function() {
20853 f.always(function() {
20854 a.unqueued--, he.queue(e, "fx").length || a.empty.fire()
20858 if (i = t[r], pt.test(i)) {
20859 if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
20860 if ("show" !== i || !g || void 0 === g[r]) continue;
20863 h[r] = g && g[r] || he.style(e, r)
20865 if ((c = !he.isEmptyObject(t)) || !he.isEmptyObject(h)) {
20866 d && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (l = g && g.display) && (l = Ne.get(e, "display")), "none" === (u = he.css(e, "display")) && (l ? u = l : (v([e], !0), l = e.style.display || l, u = he.css(e, "display"), v([e]))), ("inline" === u || "inline-block" === u && null != l) && "none" === he.css(e, "float") && (c || (f.done(function() {
20868 }), null == l && (u = p.display, l = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
20869 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
20871 for (r in h) c || (g ? "hidden" in g && (m = g.hidden) : g = Ne.access(e, "fxshow", {
20873 }), o && (g.hidden = !m), m && v([e], !0), f.done(function() {
20874 m || v([e]), Ne.remove(e, "fxshow");
20875 for (r in h) he.style(e, r, h[r])
20876 })), c = V(m ? g[r] : 0, r, f), r in g || (g[r] = c.start, m && (c.end = c.start, c.start = 0))
20879 prefilter: function(e, t) {
20880 t ? B.prefilters.unshift(e) : B.prefilters.push(e)
20882 }), he.speed = function(e, t, n) {
20883 var r = e && "object" == typeof e ? he.extend({}, e) : {
20884 complete: n || !n && t || he.isFunction(e) && e,
20886 easing: n && t || t && !he.isFunction(t) && t
20888 return he.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in he.fx.speeds ? r.duration = he.fx.speeds[r.duration] : r.duration = he.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
20889 he.isFunction(r.old) && r.old.call(this), r.queue && he.dequeue(this, r.queue)
20892 fadeTo: function(e, t, n, r) {
20893 return this.filter(Fe).css("opacity", 0).show().end().animate({
20897 animate: function(e, t, n, r) {
20898 var i = he.isEmptyObject(e),
20899 o = he.speed(t, n, r),
20901 var t = B(this, he.extend({}, e), o);
20902 (i || Ne.get(this, "finish")) && t.stop(!0)
20904 return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
20906 stop: function(e, t, n) {
20907 var r = function(e) {
20909 delete e.stop, t(n)
20911 return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function() {
20913 i = null != e && e + "queueHooks",
20916 if (i) a[i] && a[i].stop && r(a[i]);
20918 for (i in a) a[i] && a[i].stop && mt.test(i) && r(a[i]);
20919 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));
20920 !t && n || he.dequeue(this, e)
20923 finish: function(e) {
20924 return !1 !== e && (e = e || "fx"), this.each(function() {
20925 var t, n = Ne.get(this),
20926 r = n[e + "queue"],
20927 i = n[e + "queueHooks"],
20929 a = r ? r.length : 0;
20930 for (n.finish = !0, he.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));
20931 for (t = 0; t < a; t++) r[t] && r[t].finish && r[t].finish.call(this);
20935 }), he.each(["toggle", "show", "hide"], function(e, t) {
20937 he.fn[t] = function(e, r, i) {
20938 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(U(t, !0), e, r, i)
20941 slideDown: U("show"),
20942 slideUp: U("hide"),
20943 slideToggle: U("toggle"),
20953 }, function(e, t) {
20954 he.fn[e] = function(e, n, r) {
20955 return this.animate(t, e, n, r)
20957 }), he.timers = [], he.fx.tick = function() {
20960 for (ft = he.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
20961 n.length || he.fx.stop(), ft = void 0
20962 }, he.fx.timer = function(e) {
20963 he.timers.push(e), he.fx.start()
20964 }, he.fx.interval = 13, he.fx.start = function() {
20965 ht || (ht = !0, F())
20966 }, he.fx.stop = function() {
20968 }, he.fx.speeds = {
20972 }, he.fn.delay = function(t, n) {
20973 return t = he.fx ? he.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function(n, r) {
20974 var i = e.setTimeout(n, t);
20975 r.stop = function() {
20981 var e = te.createElement("input"),
20982 t = te.createElement("select").appendChild(te.createElement("option"));
20983 e.type = "checkbox", fe.checkOn = "" !== e.value, fe.optSelected = t.selected, (e = te.createElement("input")).value = "t", e.type = "radio", fe.radioValue = "t" === e.value
20985 var gt, vt = he.expr.attrHandle;
20987 attr: function(e, t) {
20988 return Oe(this, he.attr, e, t, arguments.length > 1)
20990 removeAttr: function(e) {
20991 return this.each(function() {
20992 he.removeAttr(this, e)
20996 attr: function(e, t, n) {
20997 var r, i, o = e.nodeType;
20998 if (3 !== o && 8 !== o && 2 !== o) return void 0 === e.getAttribute ? he.prop(e, t, n) : (1 === o && he.isXMLDoc(e) || (i = he.attrHooks[t.toLowerCase()] || (he.expr.match.bool.test(t) ? gt : void 0)), void 0 !== n ? null === n ? void he.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = he.find.attr(e, t)) ? void 0 : r)
21002 set: function(e, t) {
21003 if (!fe.radioValue && "radio" === t && i(e, "input")) {
21005 return e.setAttribute("type", t), n && (e.value = n), t
21010 removeAttr: function(e, t) {
21012 i = t && t.match(Me);
21013 if (i && 1 === e.nodeType)
21014 for (; n = i[r++];) e.removeAttribute(n)
21017 set: function(e, t, n) {
21018 return !1 === t ? he.removeAttr(e, n) : e.setAttribute(n, n), n
21020 }, he.each(he.expr.match.bool.source.match(/\w+/g), function(e, t) {
21021 var n = vt[t] || he.find.attr;
21022 vt[t] = function(e, t, r) {
21023 var i, o, a = t.toLowerCase();
21024 return r || (o = vt[a], vt[a] = i, i = null != n(e, t, r) ? a : null, vt[a] = o), i
21027 var bt = /^(?:input|select|textarea|button)$/i,
21028 yt = /^(?:a|area)$/i;
21030 prop: function(e, t) {
21031 return Oe(this, he.prop, e, t, arguments.length > 1)
21033 removeProp: function(e) {
21034 return this.each(function() {
21035 delete this[he.propFix[e] || e]
21039 prop: function(e, t, n) {
21040 var r, i, o = e.nodeType;
21041 if (3 !== o && 8 !== o && 2 !== o) return 1 === o && he.isXMLDoc(e) || (t = he.propFix[t] || t, i = he.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]
21046 var t = he.find.attr(e, "tabindex");
21047 return t ? parseInt(t, 10) : bt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
21055 }), fe.optSelected || (he.propHooks.selected = {
21057 var t = e.parentNode;
21058 return t && t.parentNode && t.parentNode.selectedIndex, null
21061 var t = e.parentNode;
21062 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
21064 }), he.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
21065 he.propFix[this.toLowerCase()] = this
21067 addClass: function(e) {
21068 var t, n, r, i, o, a, s, c = 0;
21069 if (he.isFunction(e)) return this.each(function(t) {
21070 he(this).addClass(e.call(this, t, Y(this)))
21072 if ("string" == typeof e && e)
21073 for (t = e.match(Me) || []; n = this[c++];)
21074 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
21075 for (a = 0; o = t[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
21076 i !== (s = W(r)) && n.setAttribute("class", s)
21080 removeClass: function(e) {
21081 var t, n, r, i, o, a, s, c = 0;
21082 if (he.isFunction(e)) return this.each(function(t) {
21083 he(this).removeClass(e.call(this, t, Y(this)))
21085 if (!arguments.length) return this.attr("class", "");
21086 if ("string" == typeof e && e)
21087 for (t = e.match(Me) || []; n = this[c++];)
21088 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
21089 for (a = 0; o = t[a++];)
21090 for (; r.indexOf(" " + o + " ") > -1;) r = r.replace(" " + o + " ", " ");
21091 i !== (s = W(r)) && n.setAttribute("class", s)
21095 toggleClass: function(e, t) {
21097 return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : he.isFunction(e) ? this.each(function(n) {
21098 he(this).toggleClass(e.call(this, n, Y(this), t), t)
21099 }) : this.each(function() {
21101 if ("string" === n)
21102 for (r = 0, i = he(this), o = e.match(Me) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
21103 else void 0 !== e && "boolean" !== n || ((t = Y(this)) && Ne.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : Ne.get(this, "__className__") || ""))
21106 hasClass: function(e) {
21108 for (t = " " + e + " "; n = this[r++];)
21109 if (1 === n.nodeType && (" " + W(Y(n)) + " ").indexOf(t) > -1) return !0;
21116 var t, n, r, i = this[0]; {
21117 if (arguments.length) return r = he.isFunction(e), this.each(function(n) {
21119 1 === this.nodeType && (null == (i = r ? e.call(this, n, he(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = he.map(i, function(e) {
21120 return null == e ? "" : e + ""
21121 })), (t = he.valHooks[this.type] || he.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
21123 if (i) return (t = he.valHooks[i.type] || he.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof(n = i.value) ? n.replace(_t, "") : null == n ? "" : n
21130 var t = he.find.attr(e, "value");
21131 return null != t ? t : W(he.text(e))
21136 var t, n, r, o = e.options,
21137 a = e.selectedIndex,
21138 s = "select-one" === e.type,
21140 l = s ? a + 1 : o.length;
21141 for (r = a < 0 ? l : s ? a : 0; r < l; r++)
21142 if (((n = o[r]).selected || r === a) && !n.disabled && (!n.parentNode.disabled || !i(n.parentNode, "optgroup"))) {
21143 if (t = he(n).val(), s) return t;
21148 set: function(e, t) {
21149 for (var n, r, i = e.options, o = he.makeArray(t), a = i.length; a--;)((r = i[a]).selected = he.inArray(he.valHooks.option.get(r), o) > -1) && (n = !0);
21150 return n || (e.selectedIndex = -1), o
21154 }), he.each(["radio", "checkbox"], function() {
21155 he.valHooks[this] = {
21156 set: function(e, t) {
21157 if (Array.isArray(t)) return e.checked = he.inArray(he(e).val(), t) > -1
21159 }, fe.checkOn || (he.valHooks[this].get = function(e) {
21160 return null === e.getAttribute("value") ? "on" : e.value
21163 var $t = /^(?:focusinfocus|focusoutblur)$/;
21164 he.extend(he.event, {
21165 trigger: function(t, n, r, i) {
21166 var o, a, s, c, l, u, d, f = [r || te],
21167 h = le.call(t, "type") ? t.type : t,
21168 p = le.call(t, "namespace") ? t.namespace.split(".") : [];
21169 if (a = s = r = r || te, 3 !== r.nodeType && 8 !== r.nodeType && !$t.test(h + he.event.triggered) && (h.indexOf(".") > -1 && (h = (p = h.split(".")).shift(), p.sort()), l = h.indexOf(":") < 0 && "on" + h, t = t[he.expando] ? t : new he.Event(h, "object" == typeof t && t), t.isTrigger = i ? 2 : 3, t.namespace = p.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = r), n = null == n ? [t] : he.makeArray(n, [t]), d = he.event.special[h] || {}, i || !d.trigger || !1 !== d.trigger.apply(r, n))) {
21170 if (!i && !d.noBubble && !he.isWindow(r)) {
21171 for (c = d.delegateType || h, $t.test(c + h) || (a = a.parentNode); a; a = a.parentNode) f.push(a), s = a;
21172 s === (r.ownerDocument || te) && f.push(s.defaultView || s.parentWindow || e)
21175 (a = f[o++]) && !t.isPropagationStopped();) t.type = o > 1 ? c : d.bindType || h, (u = (Ne.get(a, "events") || {})[t.type] && Ne.get(a, "handle")) && u.apply(a, n), (u = l && a[l]) && u.apply && De(a) && (t.result = u.apply(a, n), !1 === t.result && t.preventDefault());
21176 return t.type = h, i || t.isDefaultPrevented() || d._default && !1 !== d._default.apply(f.pop(), n) || !De(r) || l && he.isFunction(r[h]) && !he.isWindow(r) && ((s = r[l]) && (r[l] = null), he.event.triggered = h, r[h](), he.event.triggered = void 0, s && (r[l] = s)), t.result
21179 simulate: function(e, t, n) {
21180 var r = he.extend(new he.Event, n, {
21184 he.event.trigger(r, null, t)
21187 trigger: function(e, t) {
21188 return this.each(function() {
21189 he.event.trigger(e, t, this)
21192 triggerHandler: function(e, t) {
21194 if (n) return he.event.trigger(e, t, n, !0)
21196 }), he.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, t) {
21197 he.fn[t] = function(e, n) {
21198 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
21201 hover: function(e, t) {
21202 return this.mouseenter(e).mouseleave(t || e)
21204 }), fe.focusin = "onfocusin" in e, fe.focusin || he.each({
21207 }, function(e, t) {
21208 var n = function(e) {
21209 he.event.simulate(t, e.target, he.event.fix(e))
21211 he.event.special[t] = {
21212 setup: function() {
21213 var r = this.ownerDocument || this,
21214 i = Ne.access(r, t);
21215 i || r.addEventListener(e, n, !0), Ne.access(r, t, (i || 0) + 1)
21217 teardown: function() {
21218 var r = this.ownerDocument || this,
21219 i = Ne.access(r, t) - 1;
21220 i ? Ne.access(r, t, i) : (r.removeEventListener(e, n, !0), Ne.remove(r, t))
21224 var wt = e.location,
21227 he.parseXML = function(t) {
21229 if (!t || "string" != typeof t) return null;
21231 n = (new e.DOMParser).parseFromString(t, "text/xml")
21235 return n && !n.getElementsByTagName("parsererror").length || he.error("Invalid XML: " + t), n
21239 Tt = /^(?:submit|button|image|reset|file)$/i,
21240 Mt = /^(?:input|select|textarea|keygen)/i;
21241 he.param = function(e, t) {
21243 i = function(e, t) {
21244 var n = he.isFunction(t) ? t() : t;
21245 r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
21247 if (Array.isArray(e) || e.jquery && !he.isPlainObject(e)) he.each(e, function() {
21248 i(this.name, this.value)
21251 for (n in e) G(n, e[n], t, i);
21254 serialize: function() {
21255 return he.param(this.serializeArray())
21257 serializeArray: function() {
21258 return this.map(function() {
21259 var e = he.prop(this, "elements");
21260 return e ? he.makeArray(e) : this
21261 }).filter(function() {
21263 return this.name && !he(this).is(":disabled") && Mt.test(this.nodeName) && !Tt.test(e) && (this.checked || !Ve.test(e))
21264 }).map(function(e, t) {
21265 var n = he(this).val();
21266 return null == n ? null : Array.isArray(n) ? he.map(n, function(e) {
21269 value: e.replace(xt, "\r\n")
21273 value: n.replace(xt, "\r\n")
21280 Ot = /([?&])_=[^&]*/,
21281 Dt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
21282 Nt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
21283 It = /^(?:GET|HEAD)$/,
21287 Ht = "*/".concat("*"),
21288 Lt = te.createElement("a");
21289 Lt.href = wt.href, he.extend({
21296 isLocal: Nt.test(wt.protocol),
21300 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
21303 text: "text/plain",
21305 xml: "application/xml, text/xml",
21306 json: "application/json, text/javascript"
21314 xml: "responseXML",
21315 text: "responseText",
21316 json: "responseJSON"
21321 "text json": JSON.parse,
21322 "text xml": he.parseXML
21329 ajaxSetup: function(e, t) {
21330 return t ? X(X(e, he.ajaxSettings), t) : X(he.ajaxSettings, e)
21332 ajaxPrefilter: K(Pt),
21333 ajaxTransport: K(jt),
21334 ajax: function(t, n) {
21335 function r(t, n, r, s) {
21336 var l, f, h, _, $, w = n;
21337 u || (u = !0, c && e.clearTimeout(c), i = void 0, a = s || "", E.readyState = t > 0 ? 4 : 0, l = t >= 200 && t < 300 || 304 === t, r && (_ = Q(p, E, r)), _ = J(p, _, E, l), l ? (p.ifModified && (($ = E.getResponseHeader("Last-Modified")) && (he.lastModified[o] = $), ($ = E.getResponseHeader("etag")) && (he.etag[o] = $)), 204 === t || "HEAD" === p.type ? w = "nocontent" : 304 === t ? w = "notmodified" : (w = _.state, f = _.data, l = !(h = _.error))) : (h = w, !t && w || (w = "error", t < 0 && (t = 0))), E.status = t, E.statusText = (n || w) + "", l ? v.resolveWith(m, [f, w, E]) : v.rejectWith(m, [E, w, h]), E.statusCode(y), y = void 0, d && g.trigger(l ? "ajaxSuccess" : "ajaxError", [E, p, l ? f : h]), b.fireWith(m, [E, w]), d && (g.trigger("ajaxComplete", [E, p]), --he.active || he.event.trigger("ajaxStop")))
21339 "object" == typeof t && (n = t, t = void 0), n = n || {};
21340 var i, o, a, s, c, l, u, d, f, h, p = he.ajaxSetup({}, n),
21341 m = p.context || p,
21342 g = p.context && (m.nodeType || m.jquery) ? he(m) : he.event,
21344 b = he.Callbacks("once memory"),
21345 y = p.statusCode || {},
21351 getResponseHeader: function(e) {
21355 for (s = {}; t = Dt.exec(a);) s[t[1].toLowerCase()] = t[2];
21356 t = s[e.toLowerCase()]
21358 return null == t ? null : t
21360 getAllResponseHeaders: function() {
21361 return u ? a : null
21363 setRequestHeader: function(e, t) {
21364 return null == u && (e = $[e.toLowerCase()] = $[e.toLowerCase()] || e, _[e] = t), this
21366 overrideMimeType: function(e) {
21367 return null == u && (p.mimeType = e), this
21369 statusCode: function(e) {
21372 if (u) E.always(e[E.status]);
21374 for (t in e) y[t] = [y[t], e[t]];
21377 abort: function(e) {
21379 return i && i.abort(t), r(0, t), this
21382 if (v.promise(E), p.url = ((t || p.url || wt.href) + "").replace(Rt, wt.protocol + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = (p.dataType || "*").toLowerCase().match(Me) || [""], null == p.crossDomain) {
21383 l = te.createElement("a");
21385 l.href = p.url, l.href = l.href, p.crossDomain = Lt.protocol + "//" + Lt.host != l.protocol + "//" + l.host
21390 if (p.data && p.processData && "string" != typeof p.data && (p.data = he.param(p.data, p.traditional)), Z(Pt, p, n, E), u) return E;
21391 (d = he.event && p.global) && 0 == he.active++ && he.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !It.test(p.type), o = p.url.replace(St, ""), p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(At, "+")) : (h = p.url.slice(o.length), p.data && (o += (kt.test(o) ? "&" : "?") + p.data, delete p.data), !1 === p.cache && (o = o.replace(Ot, "$1"), h = (kt.test(o) ? "&" : "?") + "_=" + Et++ + h), p.url = o + h), p.ifModified && (he.lastModified[o] && E.setRequestHeader("If-Modified-Since", he.lastModified[o]), he.etag[o] && E.setRequestHeader("If-None-Match", he.etag[o])), (p.data && p.hasContent && !1 !== p.contentType || n.contentType) && E.setRequestHeader("Content-Type", p.contentType), E.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Ht + "; q=0.01" : "") : p.accepts["*"]);
21392 for (f in p.headers) E.setRequestHeader(f, p.headers[f]);
21393 if (p.beforeSend && (!1 === p.beforeSend.call(m, E, p) || u)) return E.abort();
21394 if (w = "abort", b.add(p.complete), E.done(p.success), E.fail(p.error), i = Z(jt, p, n, E)) {
21395 if (E.readyState = 1, d && g.trigger("ajaxSend", [E, p]), u) return E;
21396 p.async && p.timeout > 0 && (c = e.setTimeout(function() {
21400 u = !1, i.send(_, r)
21405 } else r(-1, "No Transport");
21408 getJSON: function(e, t, n) {
21409 return he.get(e, t, n, "json")
21411 getScript: function(e, t) {
21412 return he.get(e, void 0, t, "script")
21414 }), he.each(["get", "post"], function(e, t) {
21415 he[t] = function(e, n, r, i) {
21416 return he.isFunction(n) && (i = i || r, r = n, n = void 0), he.ajax(he.extend({
21422 }, he.isPlainObject(e) && e))
21424 }), he._evalUrl = function(e) {
21428 dataType: "script",
21435 wrapAll: function(e) {
21437 return this[0] && (he.isFunction(e) && (e = e.call(this[0])), t = he(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
21438 for (var e = this; e.firstElementChild;) e = e.firstElementChild;
21440 }).append(this)), this
21442 wrapInner: function(e) {
21443 return he.isFunction(e) ? this.each(function(t) {
21444 he(this).wrapInner(e.call(this, t))
21445 }) : this.each(function() {
21448 n.length ? n.wrapAll(e) : t.append(e)
21451 wrap: function(e) {
21452 var t = he.isFunction(e);
21453 return this.each(function(n) {
21454 he(this).wrapAll(t ? e.call(this, n) : e)
21457 unwrap: function(e) {
21458 return this.parent(e).not("body").each(function() {
21459 he(this).replaceWith(this.childNodes)
21462 }), he.expr.pseudos.hidden = function(e) {
21463 return !he.expr.pseudos.visible(e)
21464 }, he.expr.pseudos.visible = function(e) {
21465 return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
21466 }, he.ajaxSettings.xhr = function() {
21468 return new e.XMLHttpRequest
21475 qt = he.ajaxSettings.xhr();
21476 fe.cors = !!qt && "withCredentials" in qt, fe.ajax = qt = !!qt, he.ajaxTransport(function(t) {
21478 if (fe.cors || qt && !t.crossDomain) return {
21479 send: function(i, o) {
21480 var a, s = t.xhr();
21481 if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
21482 for (a in t.xhrFields) s[a] = t.xhrFields[a];
21483 t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
21484 for (a in i) s.setRequestHeader(a, i[a]);
21486 return function() {
21487 n && (n = r = s.onload = s.onerror = s.onabort = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Ft[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
21490 text: s.responseText
21491 }, s.getAllResponseHeaders()))
21493 }, s.onload = n(), r = s.onerror = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function() {
21494 4 === s.readyState && e.setTimeout(function() {
21499 s.send(t.hasContent && t.data || null)
21504 abort: function() {
21508 }), he.ajaxPrefilter(function(e) {
21509 e.crossDomain && (e.contents.script = !1)
21512 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
21515 script: /\b(?:java|ecma)script\b/
21518 "text script": function(e) {
21519 return he.globalEval(e), e
21522 }), he.ajaxPrefilter("script", function(e) {
21523 void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
21524 }), he.ajaxTransport("script", function(e) {
21525 if (e.crossDomain) {
21528 send: function(r, i) {
21529 t = he("<script>").prop({
21530 charset: e.scriptCharset,
21532 }).on("load error", n = function(e) {
21533 t.remove(), n = null, e && i("error" === e.type ? 404 : 200, e.type)
21534 }), te.head.appendChild(t[0])
21536 abort: function() {
21543 Vt = /(=)\?(?=&|$)|\?\?/;
21546 jsonpCallback: function() {
21547 var e = Ut.pop() || he.expando + "_" + Et++;
21548 return this[e] = !0, e
21550 }), he.ajaxPrefilter("json jsonp", function(t, n, r) {
21551 var i, o, a, s = !1 !== t.jsonp && (Vt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(t.data) && "data");
21552 if (s || "jsonp" === t.dataTypes[0]) return i = t.jsonpCallback = he.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Vt, "$1" + i) : !1 !== t.jsonp && (t.url += (kt.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() {
21553 return a || he.error(i + " was not called"), a[0]
21554 }, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
21556 }, r.always(function() {
21557 void 0 === o ? he(e).removeProp(i) : e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, Ut.push(i)), a && he.isFunction(o) && o(a[0]), a = o = void 0
21559 }), fe.createHTMLDocument = function() {
21560 var e = te.implementation.createHTMLDocument("").body;
21561 return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
21562 }(), he.parseHTML = function(e, t, n) {
21563 if ("string" != typeof e) return [];
21564 "boolean" == typeof t && (n = t, t = !1);
21566 return t || (fe.createHTMLDocument ? ((r = (t = te.implementation.createHTMLDocument("")).createElement("base")).href = te.location.href, t.head.appendChild(r)) : t = te), i = we.exec(e), o = !n && [], i ? [t.createElement(i[1])] : (i = _([e], t, o), o && o.length && he(o).remove(), he.merge([], i.childNodes))
21567 }, he.fn.load = function(e, t, n) {
21568 var r, i, o, a = this,
21569 s = e.indexOf(" ");
21570 return s > -1 && (r = W(e.slice(s)), e = e.slice(0, s)), he.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), a.length > 0 && he.ajax({
21575 }).done(function(e) {
21576 o = arguments, a.html(r ? he("<div>").append(he.parseHTML(e)).find(r) : e)
21577 }).always(n && function(e, t) {
21578 a.each(function() {
21579 n.apply(this, o || [e.responseText, t, e])
21582 }, he.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
21583 he.fn[t] = function(e) {
21584 return this.on(t, e)
21586 }), he.expr.pseudos.animated = function(e) {
21587 return he.grep(he.timers, function(t) {
21588 return e === t.elem
21591 setOffset: function(e, t, n) {
21592 var r, i, o, a, s, c, l = he.css(e, "position"),
21595 "static" === l && (e.style.position = "relative"), s = u.offset(), o = he.css(e, "top"), c = he.css(e, "left"), ("absolute" === l || "fixed" === l) && (o + c).indexOf("auto") > -1 ? (a = (r = u.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(c) || 0), he.isFunction(t) && (t = t.call(e, n, he.extend({}, s))), null != t.top && (d.top = t.top - s.top + a), null != t.left && (d.left = t.left - s.left + i), "using" in t ? t.using.call(e, d) : u.css(d)
21598 offset: function(e) {
21599 if (arguments.length) return void 0 === e ? this : this.each(function(t) {
21600 he.offset.setOffset(this, e, t)
21602 var t, n, r, i, o = this[0];
21603 if (o) return o.getClientRects().length ? (r = o.getBoundingClientRect(), t = o.ownerDocument, n = t.documentElement, i = t.defaultView, {
21604 top: r.top + i.pageYOffset - n.clientTop,
21605 left: r.left + i.pageXOffset - n.clientLeft
21611 position: function() {
21613 var e, t, n = this[0],
21618 return "fixed" === he.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), i(e[0], "html") || (r = e.offset()), r = {
21619 top: r.top + he.css(e[0], "borderTopWidth", !0),
21620 left: r.left + he.css(e[0], "borderLeftWidth", !0)
21622 top: t.top - r.top - he.css(n, "marginTop", !0),
21623 left: t.left - r.left - he.css(n, "marginLeft", !0)
21627 offsetParent: function() {
21628 return this.map(function() {
21629 for (var e = this.offsetParent; e && "static" === he.css(e, "position");) e = e.offsetParent;
21634 scrollLeft: "pageXOffset",
21635 scrollTop: "pageYOffset"
21636 }, function(e, t) {
21637 var n = "pageYOffset" === t;
21638 he.fn[e] = function(r) {
21639 return Oe(this, function(e, r, i) {
21641 if (he.isWindow(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r];
21642 o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
21643 }, e, r, arguments.length)
21645 }), he.each(["top", "left"], function(e, t) {
21646 he.cssHooks[t] = N(fe.pixelPosition, function(e, n) {
21647 if (n) return n = D(e, t), it.test(n) ? he(e).position()[t] + "px" : n
21652 }, function(e, t) {
21654 padding: "inner" + e,
21657 }, function(n, r) {
21658 he.fn[r] = function(i, o) {
21659 var a = arguments.length && (n || "boolean" != typeof i),
21660 s = n || (!0 === i || !0 === o ? "margin" : "border");
21661 return Oe(this, function(t, n, i) {
21663 return he.isWindow(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? he.css(t, n, s) : he.style(t, n, i, s)
21664 }, t, a ? i : void 0, a)
21668 bind: function(e, t, n) {
21669 return this.on(e, null, t, n)
21671 unbind: function(e, t) {
21672 return this.off(e, null, t)
21674 delegate: function(e, t, n, r) {
21675 return this.on(t, e, n, r)
21677 undelegate: function(e, t, n) {
21678 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
21680 }), he.holdReady = function(e) {
21681 e ? he.readyWait++ : he.ready(!0)
21682 }, he.isArray = Array.isArray, he.parseJSON = JSON.parse, he.nodeName = i, "function" == typeof define && define.amd && define("jquery", [], function() {
21687 return he.noConflict = function(t) {
21688 return e.$ === he && (e.$ = Bt), t && e.jQuery === he && (e.jQuery = zt), he
21689 }, t || (e.jQuery = e.$ = he), he
21690 }), angular.module("ngRateIt", ["ng"]).directive("ngRateIt", ["$q", function(e) {
21698 readOnly: "&?readOnly",
21699 pristine: "=?pristine",
21700 resetable: "&?resetable",
21701 starWidth: "=?starWidth",
21702 starHeight: "=?starHeight",
21703 canelWidth: "=?canelWidth",
21704 cancelHeight: "=?cancelHeight",
21707 beforeRated: "=?beforeRated",
21708 beforeReset: "=?beforeReset"
21710 templateUrl: "ngRateIt/ng-rate-it.html",
21711 require: "ngModel",
21713 link: function(t, n, r) {
21714 r.readOnly || (t.readOnly = function() {
21716 }), r.resetable || (t.resetable = function() {
21718 }), r.beforeRated || (t.beforeRated = function() {
21720 return t.resolve(), t.promise
21721 }), r.rated || (t.rated = function() {}), r.beforeReset || (t.beforeReset = function() {
21723 return t.resolve(), t.promise
21724 }), r.reset || (t.reset = function() {})
21726 controller: "ngRateItController"
21728 }]).controller("ngRateItController", ["$scope", "$timeout", function(e, t) {
21730 e.isTouch = !!window.hasOwnProperty("ontouchstart") || window.navigator.msMaxTouchPoints > 0, e.orgValue = angular.copy(e.ngModel), e.min = e.min || 0, e.max = e.max || 5, e.step = e.step || .5, e.pristine = e.orgValue === e.ngModel, e.starWidth = e.starWidth || 16, e.starPartWidth = e.starWidth * e.step, e.starHeight = e.starHeight || 16, e.canelWidth = e.canelWidth || e.starWidth, e.cancelHeight = e.cancelHeight || e.starHeight;
21731 var n = e.max - e.min,
21733 i = e.$watch("ngModel", function() {
21734 e.pristine = e.orgValue === e.ngModel
21737 return (e + 1) / r * n
21739 e.getStartParts = function() {
21740 return new Array(r)
21741 }, e.getStarOffset = function(t) {
21742 var n = 1 / e.step;
21743 return -e.starWidth / n * (t % n)
21744 }, e.isSelected = function(t) {
21745 return o(t) <= e.ngModel - e.min
21746 }, e.removeRating = function() {
21747 e.resetable() && !e.readOnly() && e.beforeReset().then(function() {
21748 e.ngModel = e.min, e.reset()
21750 }, e.setValue = function(n) {
21751 if (!e.readOnly()) {
21752 var r = angular.copy(e.min + o(n));
21753 e.beforeRated(r).then(function() {
21754 e.ngModel = r, t(function() {
21759 }, e.$on("$destroy", function() {
21762 }]).run(["$templateCache", function(e) {
21764 e.put("ngRateIt/ng-rate-it.html", '<div class="ngrateit" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"' + "ng-style=\"{'width': starPartWidth+'px', 'height':starHeight+'px', 'background-position': getStarOffset($index)+'px 0'}\"></span></div></div>")
21766 function(e, t, n) {
21770 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
21771 this.supportDirectory = /Chrome/.test(e.navigator.userAgent) || /Firefox/.test(e.navigator.userAgent) || /Edge/.test(e.navigator.userAgent), this.files = [], this.defaults = {
21772 chunkSize: 1048576,
21773 forceChunkSize: !1,
21774 simultaneousUploads: 3,
21776 fileParameterName: "file",
21777 progressCallbacksInterval: 500,
21778 speedSmoothingFactor: .1,
21781 withCredentials: !1,
21783 method: "multipart",
21785 uploadMethod: "POST",
21786 prioritizeFirstAndLastChunk: !1,
21787 allowDuplicateUploads: !1,
21790 generateUniqueIdentifier: null,
21791 maxChunkRetries: 0,
21792 chunkRetryInterval: null,
21793 permanentErrors: [404, 413, 415, 500, 501],
21794 successStatuses: [200, 201, 202],
21795 onDropStopPropagation: !1,
21798 }, this.opts = {}, this.events = {};
21800 this.onDrop = function(e) {
21801 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
21802 var t = e.dataTransfer;
21803 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
21804 }, this.preventEvent = function(e) {
21806 }, this.opts = r.extend({}, this.defaults, t || {})
21810 function i(e, t, r) {
21811 this.flowObj = e, this.bytes = null, this.file = t, this.name = t.fileName || t.name, this.size = t.size, this.relativePath = t.relativePath || t.webkitRelativePath || this.name, this.uniqueIdentifier = r === n ? e.generateUniqueIdentifier(t) : r, this.chunks = [], this.paused = !1, this.error = !1, this.averageSpeed = 0, this.currentSpeed = 0, this._lastProgressCallback = Date.now(), this._prevUploadedSize = 0, this._prevProgress = 0, this.bootstrap()
21814 function o(e, t, n, r, i) {
21816 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
21819 function a(e, t, n) {
21820 this.flowObj = e, this.fileObj = t, this.offset = n, this.tested = !1, this.retries = 0, this.pendingRetry = !1, this.preprocessState = 0, this.readState = 0, this.loaded = 0, this.total = 0, this.chunkSize = this.flowObj.opts.chunkSize, this.startByte = this.offset * this.chunkSize, this.computeEndByte = function() {
21821 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
21822 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
21823 }, this.endByte = this.computeEndByte(), this.xhr = null;
21825 this.event = function(e, t) {
21826 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
21827 }, this.progressHandler = function(e) {
21828 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
21829 }, this.testHandler = function(e) {
21830 var t = r.status(!0);
21831 "error" === t ? (r.event(t, r.message()), r.flowObj.uploadNextChunk()) : "success" === t ? (r.tested = !0, r.event(t, r.message()), r.flowObj.uploadNextChunk()) : r.fileObj.paused || (r.tested = !0, r.send())
21832 }, this.doneHandler = function(e) {
21833 var t = r.status();
21834 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
21836 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
21837 var n = r.flowObj.opts.chunkRetryInterval;
21838 null !== n ? setTimeout(function() {
21846 var n = e.indexOf(t);
21847 n > -1 && e.splice(n, 1)
21851 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
21855 setTimeout(e.bind(t), 0)
21859 return d(arguments, function(t) {
21860 t !== e && d(t, function(t, n) {
21866 function d(e, t, n) {
21869 if (void 0 !== e.length) {
21870 for (r = 0; r < e.length; r++)
21871 if (!1 === t.call(n, e[r], r)) return
21874 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
21877 var f = e.navigator.msPointerEnabled;
21879 on: function(e, t) {
21880 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
21882 off: function(e, t) {
21883 e !== n ? (e = e.toLowerCase(), t !== n ? this.events.hasOwnProperty(e) && s(this.events[e], t) : delete this.events[e]) : this.events = {}
21885 fire: function(e, t) {
21886 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
21888 return this.events.hasOwnProperty(e) && d(this.events[e], function(e) {
21889 n = !1 === e.apply(this, t.slice(1)) || n
21890 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
21892 webkitReadDataTransfer: function(e) {
21894 e.readEntries(function(o) {
21895 o.length ? (a += o.length, d(o, function(e) {
21897 var i = e.fullPath;
21898 e.file(function(e) {
21901 } else e.isDirectory && t(e.createReader())
21907 e.relativePath = t.substring(1), s.push(e), i()
21915 0 == --a && o.addFiles(s, e)
21918 a = e.dataTransfer.items.length,
21920 d(e.dataTransfer.items, function(e) {
21921 var r = e.webkitGetAsEntry();
21922 r ? r.isFile ? n(e.getAsFile(), r.fullPath) : t(r.createReader()) : i()
21925 generateUniqueIdentifier: function(e) {
21926 var t = this.opts.generateUniqueIdentifier;
21927 if ("function" == typeof t) return t(e);
21928 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
21929 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
21931 uploadNextChunk: function(e) {
21933 if (this.opts.prioritizeFirstAndLastChunk && (d(this.files, function(e) {
21934 return !e.paused && e.chunks.length && "pending" === e.chunks[0].status() ? (e.chunks[0].send(), t = !0, !1) : !e.paused && e.chunks.length > 1 && "pending" === e.chunks[e.chunks.length - 1].status() ? (e.chunks[e.chunks.length - 1].send(), t = !0, !1) : void 0
21936 if (d(this.files, function(e) {
21937 if (e.paused || d(e.chunks, function(e) {
21938 if ("pending" === e.status()) return e.send(), t = !0, !1
21942 return d(this.files, function(e) {
21943 if (!e.isComplete()) return n = !0, !1
21944 }), n || e || l(function() {
21945 this.fire("complete")
21948 assignBrowse: function(e, n, r, i) {
21949 e instanceof Element && (e = [e]), d(e, function(e) {
21951 "INPUT" === e.tagName && "file" === e.type ? o = e : ((o = t.createElement("input")).setAttribute("type", "file"), u(o.style, {
21952 visibility: "hidden",
21953 position: "absolute",
21956 }), e.appendChild(o), e.addEventListener("click", function() {
21958 }, !1)), this.opts.singleFile || r || o.setAttribute("multiple", "multiple"), n && o.setAttribute("webkitdirectory", "webkitdirectory"), d(i, function(e, t) {
21959 o.setAttribute(t, e)
21962 o.addEventListener("change", function(e) {
21963 e.target.value && (a.addFiles(e.target.files, e), e.target.value = "")
21967 assignDrop: function(e) {
21968 void 0 === e.length && (e = [e]), d(e, function(e) {
21969 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
21972 unAssignDrop: function(e) {
21973 void 0 === e.length && (e = [e]), d(e, function(e) {
21974 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
21977 isUploading: function() {
21979 return d(this.files, function(t) {
21980 if (t.isUploading()) return e = !0, !1
21983 _shouldUploadNext: function() {
21986 n = this.opts.simultaneousUploads;
21987 return d(this.files, function(r) {
21988 d(r.chunks, function(r) {
21989 if ("uploading" === r.status() && ++e >= n) return t = !1, !1
21993 upload: function() {
21994 var e = this._shouldUploadNext();
21996 this.fire("uploadStart");
21997 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
21998 t || l(function() {
21999 this.fire("complete")
22003 resume: function() {
22004 d(this.files, function(e) {
22005 e.isComplete() || e.resume()
22008 pause: function() {
22009 d(this.files, function(e) {
22013 cancel: function() {
22014 for (var e = this.files.length - 1; e >= 0; e--) this.files[e].cancel()
22016 progress: function() {
22019 return d(this.files, function(n) {
22020 e += n.progress() * n.size, t += n.size
22021 }), t > 0 ? e / t : 0
22023 addFile: function(e, t) {
22024 this.addFiles([e], t)
22026 addFiles: function(e, t) {
22029 if ((!f || f && e.size > 0) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
22030 var r = this.generateUniqueIdentifier(e);
22031 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(r)) {
22032 var o = new i(this, e, r);
22033 this.fire("fileAdded", o, t) && n.push(o)
22036 }, this), this.fire("filesAdded", n, t) && (d(n, function(e) {
22037 this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]), this.files.push(e)
22038 }, this), this.fire("filesSubmitted", n, t))
22040 removeFile: function(e) {
22041 for (var t = this.files.length - 1; t >= 0; t--) this.files[t] === e && (this.files.splice(t, 1), e.abort(), this.fire("fileRemoved", e))
22043 getFromUniqueIdentifier: function(e) {
22045 return d(this.files, function(n) {
22046 n.uniqueIdentifier === e && (t = n)
22049 getSize: function() {
22051 return d(this.files, function(t) {
22055 sizeUploaded: function() {
22057 return d(this.files, function(t) {
22058 e += t.sizeUploaded()
22061 timeRemaining: function() {
22064 return d(this.files, function(n) {
22065 n.paused || n.error || (e += n.size - n.sizeUploaded(), t += n.averageSpeed)
22066 }), e && !t ? Number.POSITIVE_INFINITY : e || t ? Math.floor(e / t) : 0
22069 measureSpeed: function() {
22070 var e = Date.now() - this._lastProgressCallback;
22072 var t = this.flowObj.opts.speedSmoothingFactor,
22073 n = this.sizeUploaded();
22074 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
22077 chunkEvent: function(e, t, n) {
22080 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
22081 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
22084 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
22087 if (this.error) return;
22088 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now(), this.isComplete() && (this.currentSpeed = 0, this.averageSpeed = 0, this.flowObj.fire("fileSuccess", this, n, e));
22091 this.flowObj.fire("fileRetry", this, e)
22094 pause: function() {
22095 this.paused = !0, this.abort()
22097 resume: function() {
22098 this.paused = !1, this.flowObj.upload()
22100 abort: function(e) {
22101 this.currentSpeed = 0, this.averageSpeed = 0;
22102 var t = this.chunks;
22103 e && (this.chunks = []), d(t, function(e) {
22104 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
22107 cancel: function() {
22108 this.flowObj.removeFile(this)
22110 retry: function() {
22111 this.bootstrap(), this.flowObj.upload()
22113 bootstrap: function() {
22114 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
22115 for (var e = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor, t = Math.max(e(this.size / this.flowObj.opts.chunkSize), 1), n = 0; n < t; n++) this.chunks.push(new a(this.flowObj, this, n))
22117 progress: function() {
22118 if (this.error) return 1;
22119 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
22121 d(this.chunks, function(t) {
22122 e += t.progress() * (t.endByte - t.startByte)
22124 var t = e / this.size;
22125 return this._prevProgress = Math.max(this._prevProgress, t > .9999 ? 1 : t), this._prevProgress
22127 isUploading: function() {
22129 return d(this.chunks, function(t) {
22130 if ("uploading" === t.status()) return e = !0, !1
22133 isComplete: function() {
22135 return d(this.chunks, function(t) {
22136 var n = t.status();
22137 if ("pending" === n || "uploading" === n || "reading" === n || 1 === t.preprocessState || 1 === t.readState) return e = !0, !1
22140 sizeUploaded: function() {
22142 return d(this.chunks, function(t) {
22143 e += t.sizeUploaded()
22146 timeRemaining: function() {
22147 if (this.paused || this.error) return 0;
22148 var e = this.size - this.sizeUploaded();
22149 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
22151 getType: function() {
22152 return this.file.type && this.file.type.split("/")[1]
22154 getExtension: function() {
22155 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
22158 getParams: function() {
22160 flowChunkNumber: this.offset + 1,
22161 flowChunkSize: this.flowObj.opts.chunkSize,
22162 flowCurrentChunkSize: this.endByte - this.startByte,
22163 flowTotalSize: this.fileObj.size,
22164 flowIdentifier: this.fileObj.uniqueIdentifier,
22165 flowFilename: this.fileObj.name,
22166 flowRelativePath: this.fileObj.relativePath,
22167 flowTotalChunks: this.fileObj.chunks.length
22170 getTarget: function(e, t) {
22171 return e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&")
22174 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
22175 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
22176 t = this.prepareXhrRequest(e, !0);
22179 preprocessFinished: function() {
22180 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
22182 readFinished: function(e) {
22183 this.readState = 2, this.bytes = e, this.send()
22186 var e = this.flowObj.opts.preprocess,
22187 t = this.flowObj.opts.readFileFn;
22188 if ("function" == typeof e) switch (this.preprocessState) {
22190 return this.preprocessState = 1, void e(this);
22194 switch (this.readState) {
22196 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
22200 if (!this.flowObj.opts.testChunks || this.tested) {
22201 this.loaded = 0, this.total = 0, this.pendingRetry = !1, this.xhr = new XMLHttpRequest, this.xhr.upload.addEventListener("progress", this.progressHandler, !1), this.xhr.addEventListener("load", this.doneHandler, !1), this.xhr.addEventListener("error", this.doneHandler, !1);
22202 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
22203 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
22207 abort: function() {
22209 this.xhr = null, e && e.abort()
22211 status: function(e) {
22212 return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1 ? "success" : this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 || !e && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(), "pending") : "pending"
22214 message: function() {
22215 return this.xhr ? this.xhr.responseText : ""
22217 progress: function() {
22218 if (this.pendingRetry) return 0;
22219 var e = this.status();
22220 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : this.total > 0 ? this.loaded / this.total : 0
22222 sizeUploaded: function() {
22223 var e = this.endByte - this.startByte;
22224 return "success" !== this.status() && (e = this.progress() * e), e
22226 prepareXhrRequest: function(e, t, n, r) {
22227 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
22228 i = u(i, this.getParams());
22229 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
22231 if ("GET" === e || "octet" === n) {
22233 d(i, function(e, t) {
22234 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
22235 }), o = this.getTarget(o, s), a = r || null
22236 } else a = new FormData, d(i, function(e, t) {
22238 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
22239 return this.xhr.open(e, o, !0), this.xhr.withCredentials = this.flowObj.opts.withCredentials, d(c(this.flowObj.opts.headers, this.fileObj, this, t), function(e, t) {
22240 this.xhr.setRequestHeader(t, e)
22243 }, r.evalOpts = c, r.extend = u, r.each = d, r.FlowFile = i, r.FlowChunk = a, r.version = "2.13.0", "object" == typeof module && module && "object" == typeof module.exports ? module.exports = r : (e.Flow = r, "function" == typeof define && define.amd && define("flow", [], function() {
22246 }(window, document), angular.module("flow.provider", []).provider("flowFactory", function() {
22248 this.defaults = {}, this.factory = function(e) {
22250 }, this.events = [], this.on = function(e, t) {
22251 this.events.push([e, t])
22252 }, this.$get = function() {
22253 var e = this.factory,
22257 create: function(r) {
22258 var i = e(angular.extend({}, t, r));
22259 return angular.forEach(n, function(e) {
22265 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(e, t, n, r) {
22266 var i = angular.extend({}, e.$eval(t.flowInit)),
22267 o = e.$eval(t.flowObject) || r.create(i),
22269 var n = Array.prototype.slice.call(arguments);
22271 var r = e.$broadcast.apply(e, ["flow::" + t, o].concat(n));
22278 }[t] && e.$apply(), r.defaultPrevented) return !1
22280 o.on("catchAll", a), e.$on("$destroy", function() {
22281 o.off("catchAll", a)
22282 }), e.$flow = o, t.hasOwnProperty("flowName") && (n(t.flowName).assign(e, o), e.$on("$destroy", function() {
22283 n(t.flowName).assign(e)
22285 }]).directive("flowInit", [function() {
22288 controller: "flowCtrl"
22290 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
22294 require: "^flowInit",
22295 link: function(e, t, n) {
22296 var r = n.hasOwnProperty("flowDirectory"),
22297 i = n.hasOwnProperty("flowSingleFile"),
22298 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
22299 e.$flow.assignBrowse(t, r, i, o)
22302 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
22305 link: function(e, t, n) {
22306 t.bind("drop dragover", function(e) {
22311 }).directive("flowDragEnter", ["$timeout", function(e) {
22314 link: function(t, n, r) {
22317 n = e.dataTransfer || e.originalEvent.dataTransfer;
22318 return angular.forEach(n && n.types, function(e) {
22319 "Files" === e && (t = !0)
22323 n.bind("dragover", function(n) {
22324 i(n) && (a || (t.$apply(r.flowDragEnter), a = !0), e.cancel(o), n.preventDefault())
22325 }), n.bind("dragleave drop", function(n) {
22326 e.cancel(o), o = e(function() {
22327 t.$eval(r.flowDragLeave), o = null, a = !1
22332 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
22335 require: "^flowInit",
22336 link: function(e, t, n) {
22338 e.$flow.assignDrop(t)
22342 e.$flow.unAssignDrop(t)
22344 n.flowDropEnabled ? e.$watch(n.flowDropEnabled, function(e) {
22354 return e.charAt(0).toUpperCase() + e.slice(1)
22356 var n = e.module("flow.events", ["flow.init"]),
22358 fileSuccess: ["$file", "$message"],
22359 fileProgress: ["$file"],
22360 fileAdded: ["$file", "$event"],
22361 filesAdded: ["$files", "$event"],
22362 filesSubmitted: ["$files", "$event"],
22363 fileRetry: ["$file"],
22364 fileRemoved: ["$file"],
22365 fileError: ["$file", "$message"],
22369 error: ["$message", "$file"]
22371 e.forEach(r, function(r, i) {
22372 var o = "flow" + t(i);
22373 "flowUploadStart" == o && (o = "flowUploadStarted"), n.directive(o, [function() {
22375 require: "^flowInit",
22376 controller: ["$scope", "$attrs", function(t, n) {
22377 t.$on("flow::" + i, function() {
22378 var i = Array.prototype.slice.call(arguments),
22380 if (t.$flow === i.shift()) {
22382 e.forEach(r, function(e, t) {
22384 }), !1 === t.$eval(n[o], s) && a.preventDefault()
22391 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
22394 require: "^flowInit",
22395 link: function(e, t, n) {
22397 e.$watch(r, function(t) {
22399 var r = new FileReader;
22400 r.readAsDataURL(t.file), r.onload = function(t) {
22401 e.$apply(function() {
22402 n.$set("src", t.target.result)
22409 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
22412 require: "^flowInit",
22413 link: function(e) {
22414 e.transfers = e.$flow.files
22417 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
22423 return d(t, c).chars(e), t.join("")
22425 var r, i, o, a, s, c, l, u, d, f = t.$$minErr("$sanitize");
22426 t.module("ngSanitize", []).provider("$sanitize", function() {
22430 for (n = 0; n < i.length; n++) r[t ? s(i[n]) : i[n]] = !0;
22435 for (var t = {}, n = 0, r = e.length; n < r; n++) {
22437 t[i.name] = i.value
22443 return e.replace(/&/g, "&").replace(b, function(e) {
22444 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
22445 }).replace(y, function(e) {
22446 return "&#" + e.charCodeAt(0) + ";"
22447 }).replace(/</g, "<").replace(/>/g, ">")
22452 if (t.nodeType === e.Node.ELEMENT_NODE)
22453 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
22455 a = o.name.toLowerCase();
22456 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
22458 var s = t.firstChild;
22459 s && m(s), t = g("nextSibling", t)
22465 if (n && l.call(t, n)) throw f("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
22469 this.$get = ["$$sanitizeUri", function(e) {
22470 return v && i(M, x),
22473 return u(t, d(n, function(t, n) {
22474 return !/^unsafe:/.test(e(t, n))
22477 }], this.enableSvg = function(e) {
22478 return a(e) ? (v = e, this) : v
22479 }, r = t.bind, i = t.extend, o = t.forEach, a = t.isDefined, s = t.lowercase, c = t.noop, u = function(e, t) {
22480 null === e || void 0 === e ? e = "" : "string" != typeof e && (e = "" + e);
22485 if (0 === r) throw f("uinput", "Failed to sanitize html because the input is unstable");
22486 r--, e = n.innerHTML, n = N(e)
22487 } while (e !== n.innerHTML);
22488 for (var i = n.firstChild; i;) {
22489 switch (i.nodeType) {
22491 t.start(i.nodeName.toLowerCase(), h(i.attributes));
22494 t.chars(i.textContent)
22497 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = g("nextSibling", i))))
22498 for (; null == o && (i = g("parentNode", i)) !== n;) o = g("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
22501 for (; i = n.firstChild;) n.removeChild(i)
22502 }, d = function(e, t) {
22506 start: function(e, r) {
22507 e = s(e), !n && T[e] && (n = e), n || !0 !== M[e] || (i("<"), i(e), o(r, function(n, r) {
22509 a = "img" === e && "src" === o || "background" === o;
22510 !0 !== D[o] || !0 === A[o] && !t(n, a) || (i(" "), i(r), i('="'), i(p(n)), i('"'))
22514 e = s(e), n || !0 !== M[e] || !0 === _[e] || (i("</"), i(e), i(">")), e == n && (n = !1)
22516 chars: function(e) {
22520 }, l = e.Node.prototype.contains || function(e) {
22521 return !!(16 & this.compareDocumentPosition(e))
22523 var b = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
22524 y = /([^#-~ |!])/g,
22525 _ = n("area,br,col,hr,img,wbr"),
22526 $ = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
22529 k = i({}, $, n("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
22530 C = i({}, w, n("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
22531 x = n("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
22532 T = n("script,style"),
22533 M = i({}, _, k, C, E),
22534 A = n("background,cite,href,longdesc,src,xlink:href"),
22535 S = n("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
22536 O = n("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0),
22537 D = i({}, A, O, S),
22538 N = function(e, t) {
22540 if (!t || !t.implementation) throw f("noinert", "Can't create an inert html document");
22541 var r = ((n = t.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
22542 return r.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>', r.querySelector("svg") ? (r.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">', r.querySelector("svg img") ? function(t) {
22543 t = "<remove></remove>" + t;
22545 var n = (new e.DOMParser).parseFromString(t, "text/html").body;
22546 return n.firstChild.remove(), n
22551 return r.innerHTML = e, t.documentMode && m(r), r
22553 t = "<remove></remove>" + t;
22559 var n = new e.XMLHttpRequest;
22560 n.responseType = "document", n.open("GET", "data:text/html;charset=utf-8," + t, !1), n.send(null);
22561 var r = n.response.body;
22562 return r.firstChild.remove(), r
22566 angularVersion: "1.6.6"
22567 }), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
22568 var r = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
22570 o = t.$$minErr("linky"),
22575 return function(t, u, d) {
22579 if (null == t || "" === t) return t;
22580 if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
22581 for (var h, p, m, g = s(d) ? d : c(d) ? function() {
22585 }, v = t, b = []; h = v.match(r);) p = h[0], h[2] || h[4] || (p = (h[3] ? "http://" : "mailto:") + p), m = h.index, f(v.substr(0, m)),
22589 for (n in r) b.push(n + '="' + r[n] + '" ');
22590 !a(u) || "target" in r || b.push('target="', u, '" '), b.push('href="', e.replace(/"/g, """), '">'), f(t), b.push("</a>")
22591 }(p, h[0].replace(i, "")), v = v.substring(m + h[0].length);
22592 return f(v), e(b.join(""))
22595 }(window, window.angular),
22598 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(e) {
22617 class: "wondering",
22633 class: "thumbsup2",
22649 class: "thumbs-up",
22665 class: "heart-broken",
22669 class: "heart-broken",
22692 n = ["bowtie", "smile", "laughing", "blush", "smiley", "relaxed", "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed", "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "grinning", "kissing", "winky_face", "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried", "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed", "expressionless", "unamused", "sweat_smile", "sweat", "wow", "disappointed_relieved", "weary", "pensive", "disappointed", "confounded", "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished", "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy", "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp", "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart", "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart", "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid", "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom", "collision", "anger", "exclamation", "question", "grey_exclamation", "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note", "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown", "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand", "open_hands", "point_up", "point_down", "point_left", "point_right", "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu", "walking", "runner", "running", "couple", "family", "two_men_holding_hands", "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good", "information_desk_person", "raising_hand", "bride_with_veil", "person_with_pouting_face", "person_frowning", "bow", "couplekiss", "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl", "woman", "man", "baby", "older_woman", "older_man", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "construction_worker", "cop", "angel", "princess", "smiley_cat", "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat", "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre", "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil", "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes", "nose", "tongue", "love_letter", "bust_in_silhouette", "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood", "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2", "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud", "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog", "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear", "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse", "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird", "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin", "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus", "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat", "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2", "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile", "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet", "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower", "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom", "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut", "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians", "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "last_quarter_moon_with_face", "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas", "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel", "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags", "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern", "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell", "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd", "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer", "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax", "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega", "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio", "satellite", "loop", "mag", "mag_right", "unlock", "lock", "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight", "high_brightness", "low_brightness", "electric_plug", "battery", "calling", "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet", "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar", "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray", "outbox_tray", "envelope", "incoming_envelope", "postal_horn", "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door", "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up", "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend", "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date", "card_index", "file_folder", "open_file_folder", "scissors", "pushpin", "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler", "closed_book", "green_book", "blue_book", "orange_book", "notebook", "notebook_with_decorative_cover", "ledger", "books", "bookmark", "name_badge", "microscope", "telescope", "newspaper", "football", "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football", "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing", "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs", "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard", "violin", "space_invader", "video_game", "black_joker", "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo", "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone", "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt", "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash", "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat", "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse", "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake", "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass", "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg", "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi", "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden", "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream", "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy", "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon", "cherries", "grapes", "watermelon", "strawberry", "peach", "melon", "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn", "house", "house_with_garden", "school", "office", "post_office", "hospital", "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church", "department_store", "european_post_office", "city_sunrise", "city_sunset", "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower", "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars", "themoreyouknow", "tmyk", "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow", "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat", "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter", "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway", "suspension_railway", "mountain_cableway", "tractor", "blue_car", "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi", "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car", "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck", "train", "station", "train2", "bullettrain_front", "bullettrain_side", "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump", "vertical_traffic_light", "traffic_light", "warning", "construction", "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings", "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai", "circus_tent", "performing_arts", "round_pushpin", "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru", "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols", "arrow_backward", "arrow_down", "arrow_forward", "arrow_left", "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right", "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right", "arrow_double_down", "arrow_double_up", "arrow_down_small", "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook", "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small", "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward", "information_source", "ok", "twisted_rightwards_arrows", "repeat", "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko", "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709", "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens", "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro", "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place", "secret", "congratulations", "m", "passport_control", "left_luggage", "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign", "underage", "no_mobile_phones", "do_not_litter", "non-potable_water", "no_bicycles", "no_pedestrians", "children_crossing", "no_entry", "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration", "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus", "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2", "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1", "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12", "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4", "clock430", "clock5", "clock530", "clock6", "clock630", "clock7", "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign", "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang", "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign", "heavy_minus_sign", "heavy_division_sign", "white_flower", "100", "heavy_check_mark", "ballot_box_with_check", "radio_button", "link", "curly_loop", "wavy_dash", "part_alternation_mark", "trident", "black_square", "white_square", "white_check_mark", "black_square_button", "white_square_button", "black_circle", "white_circle", "red_circle", "large_blue_circle", "large_blue_diamond", "large_orange_diamond", "small_blue_diamond", "small_orange_diamond", "small_red_triangle", "small_red_triangle_down", "shipit"];
22693 return function(r, i) {
22695 return angular.forEach(arguments, function(t) {
22696 t !== e && angular.forEach(t, function(t, n) {
22697 e[n] && e[n].constructor && e[n].constructor === Object ? o(e[n], t) : e[n] = t
22705 linkTarget: "_self"
22707 if (o(a, i), void 0 !== r && null !== r) {
22708 if ("object" == typeof r) return r;
22714 return angular.isNumber(r) || (r = r.toString()), r = r.replace(/[&<>]/g, function(e) {
22716 }), a.fontSmiley && (r = function(e) {
22717 var n = e.split(" ");
22718 return angular.forEach(t, function(e) {
22719 for (var t = 0; t < n.length; t++) n[t] === e.text && (n[t] = '<i class="ne-emoticon" title="' + e.text + '">&#x' + e.code + "</i>")
22721 }(r)), a.emoji && (r = function(e) {
22722 var t = new RegExp(":(" + n.join("|") + "):", "g");
22723 return e.replace(t, function(e, t) {
22724 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
22726 }(r)), a.link && (r = function(e) {
22727 var t = /\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi,
22728 n = /^[a-z]+\:\/\//i;
22729 return e.replace(t, function(e) {
22731 return n.test(e) || (t = "http://" + e), "cordova" == a.linkTarget ? '<a href="#" onclick="window.open(\'' + t + "', '_system', 'location=yes')\" >" + e + "</a>" : '<a href="' + t + '" target="' + a.linkTarget + '">' + e + "</a>"
22733 }(r)), e.trustAsHtml(r)
22736 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(e, t, n, r, i) {
22737 return i.put("", '<div ng-bind-html="neText"></div> <div class="ne-video" ng-if="video.host" class="fade"> <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details"> <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo"> <img ng-src="{{video.thumbnail}}" alt=""/> <i class="fa fa-play-circle-o"></i> </div> <div class="ne-video-detail"> <div class="ne-video-title"> <a ng-href="{{video.url}}">{{video.title}}</a> </div> <div class="ne-video-desc"> {{video.description}} </div> <div class="ne-video-stats"> <span><i class="fa fa-eye"></i> {{video.views}}</span> <span><i class="fa fa-heart"></i> {{video.likes}}</span> </div> </div> </div> <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)"> <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </div> <div class="ne-video" ng-if="video.basic"> <div class="ne-video-player"> <div class="player"> <video ng-src="{{video.basic}}" controls></video> </div> </div> </div> <div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]" ng-if="image.url"> <div class="ne-image-wrapper"> <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/> </div> </div> <div class="ne-pdf" ng-if="pdf.url"> <div class="ne-pdf-preview" ng-hide="neShowPdf"> <div class="ne-pdf-icon"> <i class="fa fa-file-pdf-o"></i> </div> <div class="ne-pdf-detail" > <div class="ne-pdf-title"> <a href="">{{pdf.url}}</a> </div> <div class="ne-pdf-view"> <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button> <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button> </div> </div> </div> <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf"> <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe> </div> </div> <div class="ne-audio" ng-if="audio.url"> <audio ng-src="{{audio.url}}" controls></audio> </div> <div ng-if="tweets" ng-repeat="tweet in tweets"> <div ng-bind-html="tweet"></div> </div> <div ng-if="videoServices" class="ne-video" ng-repeat="v in videoServices"> <div class="ne-video-player"> <div class="player"> <div ng-bind-html="v"></div> </div> </div> </div> <div ng-if="audioServices" class="ne-audio" ng-repeat="a in audioServices"> <div ng-bind-html="a"></div> </div> <div ng-if="codeServices" class="ne-embed" ng-repeat="c in codeServices"> <div ng-bind-html="c"></div> </div> <div ng-if="gist" class="ne-gist" ng-repeat="g in gist"> <ne-gist id="{{g}}"></ne-gist> </div>'), {
22740 templateUrl: function(e, t) {
22741 return t.embedTemplateUrl || ""
22743 link: function(i, o, a) {
22745 return angular.forEach(arguments, function(t) {
22746 t !== e && angular.forEach(t, function(t, n) {
22747 e[n] && e[n].constructor && e[n].constructor === Object ? s(e[n], t) : e[n] = t
22751 var c = i.$eval(a.embedData),
22752 l = i.$eval(a.embedOptions);
22753 i.video = {}, i.image = {}, i.pdf = {}, i.audio = {}, i.videoServices = [], i.audioServices = [], i.codeServices = [], i.gist = [];
22758 linkTarget: "_self",
22780 thumbnailQuality: "medium"
22791 dailymotionEmbed: !0,
22795 soundCloudEmbed: !0,
22796 soundCloudOptions: {
22798 themeColor: "f50000",
22809 codepenHeight: 300,
22811 jsfiddleHeight: 300,
22815 githubgistEmbed: !0,
22819 s(u, l), String.prototype.trunc = function(e, t) {
22820 var n = this.length > e,
22821 r = n ? this.substr(0, e - 1) : this;
22822 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
22823 }, Array.prototype.getUnique = function() {
22824 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
22828 calcDimensions: function(e) {
22833 return t.width = e.video.width, t.height = e.video.height, e.video.height && e.video.width ? t : e.video.height ? (t.width = e.video.height / 390 * 640, t) : e.video.width ? (t.height = t.width / 640 * 390, t) : (t.width = 640, t.height = 390, t)
22835 embed: function(e, r) {
22836 var o = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/gi;
22838 var a = this.calcDimensions(r);
22839 return i.video.id = RegExp.$1, r.video.details ? n.get("https://www.googleapis.com/youtube/v3/videos?id=" + RegExp.$1 + "&key=" + r.gdevAuth + "&part=snippet,statistics").success(function(e) {
22840 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
22842 i.video.host = "youtube", i.video.title = o.snippet.title, i.video.thumbnail = o.snippet.thumbnails.medium.url, i.video.description = o.snippet.description.trunc(250, !0).replace(/\n/g, " ").replace(/ /g, " "), i.video.rawDescription = o.snippet.description, i.video.views = o.statistics.viewCount, i.video.likes = o.statistics.likeCount, i.video.uploader = o.snippet.channelTitle, i.video.uploaderPage = "https://www.youtube.com/channel/" + o.snippet.channelId, i.video.uploadDate = o.snippet.publishedAt, i.video.url = t.trustAsResourceUrl("https://www.youtube.com/watch?v=" + o.id), i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + i.video.id + n), i.video.width = a.width, i.video.height = a.height
22843 }) : (i.video.width = a.width, i.video.height = a.height, i.video.host = "youtube", i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + RegExp.$1 + "?autoplay=0")), e
22845 var s = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi;
22847 var c = this.calcDimensions(r);
22848 i.video.id = RegExp.$3, r.video.details ? n.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
22849 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
22850 i.video.host = "vimeo", i.video.title = e[0].title, i.video.rawDescription = e[0].description.replace(/\n/g, "<br/>").replace(/ /g, "<br/>"), i.video.description = e[0].description.replace(/((<|<)br\s*\/*(>|>)\r\n)/g, " ").trunc(250, !0), i.video.thumbnail = e[0].thumbnail_medium, i.video.views = e[0].stats_number_of_plays, i.video.likes = e[0].stats_number_of_likes, i.video.uploader = e[0].user_name, i.video.uploaderPage = e[0].user_url, i.video.uploadDate = e[0].uploadDate, i.video.url = e[0].url, i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + e[0].id + "?title=0&byline=0&portrait=0" + n), i.video.width = c.width, i.video.height = c.height
22851 }) : (i.video.width = c.width, i.video.height = c.height, i.video.host = "vimeo", i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + RegExp.$3 + "?title=0&byline=0&portrait=0&autoplay=0"))
22855 embedBasic: function(e) {
22856 var n = /((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi;
22857 return e.match(n) && (i.video.basic = t.trustAsResourceUrl(RegExp.$1)), e
22859 twitchtvEmbed: function(e, n) {
22860 var r = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
22861 o = e.match(r) ? e.match(r).getUnique() : null,
22862 a = d.calcDimensions(n);
22864 for (var s = 0; s < o.length;) {
22865 var c = t.trustAsHtml('<object bgcolor="#000000" data="//www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" height="' + a.height + '" id="clip_embed_player_flash" type="application/x-shockwave-flash" width="' + a.width + '"><param name="movie" value="http://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="channel=' + o[s].split("/")[1] + '&auto_play=false" /></object>');
22866 i.videoServices.push(c), s++
22870 dailymotionEmbed: function(e, n) {
22871 var r = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
22872 o = e.match(r) ? e.match(r).getUnique() : null,
22873 a = d.calcDimensions(n);
22875 for (var s = 0; s < o.length;) {
22876 var c = t.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + o[s].split("/")[2] + '" height="' + a.height + '" width="' + a.width + '"></iframe>');
22877 i.videoServices.push(c), s++
22881 tedEmbed: function(e, n) {
22882 var r = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
22883 o = e.match(r) ? e.match(r).getUnique() : null,
22884 a = d.calcDimensions(n);
22886 for (var s = 0; s < o.length;) {
22887 var c = t.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + o[s].split("/")[2] + '.html" height="' + a.height + '" width="' + a.width + '"></iframe>');
22888 i.videoServices.push(c), s++
22892 dotsubEmbed: function(e, n) {
22893 var r = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
22894 o = e.match(r) ? e.match(r).getUnique() : null,
22895 a = d.calcDimensions(n);
22897 for (var s = 0; s < o.length;) {
22898 var c = t.trustAsHtml('<iframe src="https://dotsub.com/media/' + o[s].split("/")[2] + '/embed/" width="' + a.width + '" height="' + a.height + '"></iframe>');
22899 i.videoServices.push(c), s++
22903 liveleakEmbed: function(e, n) {
22904 var r = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
22905 o = e.match(r) ? e.match(r).getUnique() : null,
22906 a = d.calcDimensions(n);
22908 for (var s = 0; s < o.length;) {
22909 var c = t.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + o[s].split("=")[1] + '" height="' + a.height + '" width="' + a.width + '"></iframe></div>');
22910 i.videoServices.push(c), s++
22916 embed: function(e) {
22917 var n = /((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi;
22918 return e.match(n) && (i.audio.url = t.trustAsResourceUrl(RegExp.$1)), e
22920 soundcloudEmbed: function(e, n) {
22921 var r = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
22922 o = e.match(r) ? e.match(r).getUnique() : null;
22924 for (var a = 0; a < o.length;) {
22925 var s = t.trustAsHtml('<iframe height="160" scrolling="no" src="https://w.soundcloud.com/player/?url=https://' + o[a] + "&auto_play=" + n.soundCloudOptions.autoPlay + "&hide_related=" + n.soundCloudOptions.hideRelated + "&show_comments=" + n.soundCloudOptions.showComments + "&show_user=" + n.soundCloudOptions.showUser + "&show_reposts=" + n.soundCloudOptions.showReposts + "&visual=" + n.soundCloudOptions.visual + "&download=" + n.soundCloudOptions.download + "&color=" + n.soundCloudOptions.themeColor + "&theme_color=" + n.soundCloudOptions.themeColor + '"></iframe>');
22926 i.videoServices.push(s), a++
22930 spotifyEmbed: function(e) {
22931 var n = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
22932 r = e.match(n) ? e.match(n).getUnique() : null;
22934 for (var o = 0; o < r.length;) {
22935 var a = t.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + r[o].split("/")[2] + '" height="80"></iframe>');
22936 i.audioServices.push(a), o++
22942 embed: function(e) {
22943 var t = /((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi;
22944 return e.match(t) && (i.image.url = RegExp.$1), e
22948 getCode: function(e) {
22949 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
22951 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
22953 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
22958 embed: function(e) {
22959 var n = /((?:https?):\/\/\S*\.(?:pdf|PDF))/gi;
22960 return e.match(n) && (i.pdf.url = t.trustAsResourceUrl(RegExp.$1)), e
22964 embed: function(e, t) {
22967 twttr.widgets.load()
22970 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
22971 var a = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
22972 s = e.match(a) ? e.match(a).getUnique() : null;
22973 if (i.tweets = [], s)
22974 for (var c = 0; c < s.length;) {
22975 var l = "https://api.twitter.com/1/statuses/oembed.json?omit_script=true&callback=JSON_CALLBACK&url=" + s[c] + "&maxwidth=" + t.tweetOptions.maxWidth + "&hide_media=" + t.tweetOptions.hideMedia + "&hide_thread=" + t.tweetOptions.hideThread + "&align=" + t.tweetOptions.align + "&lang=" + t.tweetOptions.lang;
22976 n.jsonp(l).success(function(e) {
22977 i.tweets.push(e.html), i.tweets.length == s.length && o()
22984 codepenEmbed: function(e, n) {
22985 var r = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
22986 o = e.match(r) ? e.match(r).getUnique() : null;
22988 for (var a = 0; a < o.length;) {
22989 var s = t.trustAsHtml('<iframe scrolling="no" height="' + n.codepenHeight + '" src="' + o[a].replace(/\/pen\//, "/embed/") + "/?height=" + n.codepenHeight + '" frameborder="no" allowtransparency="true" allowfullscreen="true"></iframe>');
22990 i.codeServices.push(s), a++
22994 jsfiddleEmbed: function(e, n) {
22995 var r = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
22996 o = e.match(r) ? e.match(r).getUnique() : null;
22998 for (var a = 0; a < o.length;) {
22999 var s = t.trustAsHtml('<iframe height="' + n.jsfiddleHeight + '" src="http://' + o[a] + '/embedded"></iframe>');
23000 i.codeServices.push(s), a++
23004 jsbinEmbed: function(e, n) {
23005 var r = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
23006 o = e.match(r) ? e.match(r).getUnique() : null;
23008 for (var a = 0; a < o.length;) {
23009 var s = t.trustAsHtml('<iframe height="' + n.jsbinHeight + '" class="jsbin-embed foo" src="http://' + o[a] + '/embed?html,js,output">Simple Animation Tests</iframe>');
23010 i.codeServices.push(s), a++
23014 plunkerEmbed: function(e, n) {
23015 var r = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
23016 o = e.match(r) ? e.match(r).getUnique() : null;
23018 for (var a = 0; a < o.length;) {
23019 var s = -1 === o[a].indexOf("?") ? o[a].split("/")[2] : o[a].split("/")[2].split("?")[0],
23020 c = t.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + s + '" height="' + n.jsbinHeight + '"></iframe>');
23021 i.codeServices.push(c), a++
23025 githubgistEmbed: function(e) {
23026 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
23027 n = e.match(t) ? e.match(t).getUnique() : null;
23029 for (var r = 0; r < n.length;) i.gist.push(n[r].split("/")[2]), r++;
23032 ideoneEmbed: function(e, n) {
23033 var r = /ideone.com\/[a-zA-Z0-9]{6}/gi,
23034 o = e.match(r) ? e.match(r).getUnique() : null;
23036 for (var a = 0; a < o.length;) {
23037 var s = t.trustAsHtml('<iframe src="http://ideone.com/embed/' + o[a].split("/")[1] + '" height="' + n.ideoneHeight + '"></iframe>');
23038 i.codeServices.push(s), a++
23043 if (u.code.highlight) {
23044 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
23045 c = p.getCode(c), r(function() {
23046 u.code.lineNumbers && angular.element(".ne-code").each(function() {
23048 t = $(this).text().split("\n").length,
23049 n = $("<ul/>").addClass("pre-numbering");
23050 for (angular.element(this).addClass("has-numbering").parent().append(n), e; e <= t; e++) n.append(angular.element("<li/>").text(e))
23054 var b = e("embed")(c, u).$$unwrapTrustedValue();
23055 if (u.video.embed) {
23056 if (!u.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
23059 b = u.basicVideo ? d.embedBasic(b) : b, b = u.audio.embed ? f.embed(b) : b, b = u.image.embed ? h.embed(b) : b, b = u.pdf.embed ? m.embed(b) : b, b = u.tweetEmbed ? g.embed(b, u) : b, b = u.twitchtvEmbed ? d.twitchtvEmbed(b, u) : b, b = u.dailymotionEmbed ? d.dailymotionEmbed(b, u) : b, b = u.tedEmbed ? d.tedEmbed(b, u) : b, b = u.dotsubEmbed ? d.dotsubEmbed(b, u) : b, b = u.liveleakEmbed ? d.liveleakEmbed(b, u) : b, b = u.soundCloudEmbed ? f.soundcloudEmbed(b, u) : b, b = u.spotifyEmbed ? f.spotifyEmbed(b) : b, b = u.codepenEmbed ? v.codepenEmbed(b, u) : b, b = u.jsfiddleEmbed ? v.jsfiddleEmbed(b, u) : b, b = u.jsbinEmbed ? v.jsbinEmbed(b, u) : b, b = u.plunkerEmbed ? v.plunkerEmbed(b, u) : b, b = u.githubgistEmbed ? v.githubgistEmbed(b, u) : b, b = u.ideoneEmbed ? v.ideoneEmbed(b, u) : b, i.neText = t.trustAsHtml(b)
23062 }]).directive("neGist", function() {
23066 template: "<div></div>",
23067 link: function(e, t, n) {
23069 i = document.createElement("iframe");
23070 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
23071 var o = '<html><head><base target="_parent"><style>table{font-size:12px;}</style></head><body onload="parent.document.getElementById(\'' + i.id + '\').style.height=document.body.scrollHeight + \'px\'" style="margin:10px 0;"><script type="text/javascript">!function(){"use strict";window.retargetLinks=function(){ var gists=document.getElementsByClassName("gist");for(var i=0,links;i<gists.length;i++){links=gists[i].getElementsByTagName("a");for(var j=0;j<links.length;j++){ links[j].setAttribute("target","_blank");}}}}();<\/script><script type="text/javascript" src="https://gist.github.com/' + r + '.js" onload="retargetLinks()"><\/script></body></html>',
23073 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
23081 function n(e, t, n) {
23082 if (!e) throw ce("areq", "Argument '{0}' is {1}", t || "?", n || "required");
23087 return e || t ? e ? t ? (W(e) && (e = e.join(" ")), W(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
23092 return e && (e.to || e.from) && (t.to = e.to, t.from = e.from), t
23095 function o(e, t, n) {
23097 return e = W(e) ? e : e && X(e) && e.length ? e.split(/\s+/) : [], B(e, function(e, i) {
23098 e && e.length > 0 && (r += i > 0 ? " " : "", r += n ? t + e : e + t)
23103 var n = e.indexOf(t);
23104 t >= 0 && e.splice(n, 1)
23108 if (e instanceof J) switch (e.length) {
23112 if (e[0].nodeType === j) return e;
23117 if (e.nodeType === j) return J(e)
23121 if (!e[0]) return e;
23122 for (var t = 0; t < e.length; t++) {
23124 if (n.nodeType === j) return n
23128 function l(e, t, n) {
23134 function u(e, t, n) {
23136 e.removeClass(t, n)
23141 return function(t, n) {
23142 n.addClass && (l(e, t, n.addClass), n.addClass = null), n.removeClass && (u(e, t, n.removeClass), n.removeClass = null)
23147 if (!(e = e || {}).$$prepared) {
23148 var t = e.domOperation || ee;
23149 e.domOperation = function() {
23150 e.$$domOperationFired = !0, t(), t = ee
23151 }, e.$$prepared = !0
23161 t.from && (e.css(t.from), t.from = null)
23165 t.to && (e.css(t.to), t.to = null)
23168 function g(e, t, n) {
23169 var r = t.options || {},
23170 i = n.options || {},
23171 o = (r.addClass || "") + " " + (i.addClass || ""),
23172 a = (r.removeClass || "") + " " + (i.removeClass || ""),
23173 s = v(e.attr("class"), o, a);
23174 i.preparationClasses && (r.preparationClasses = k(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
23175 var c = r.domOperation !== ee ? r.domOperation : null;
23176 return z(r, i), c && (r.domOperation = c), s.addClass ? r.addClass = s.addClass : r.addClass = null, s.removeClass ? r.removeClass = s.removeClass : r.removeClass = null, t.addClass = r.addClass, t.removeClass = r.removeClass, r
23179 function v(e, t, n) {
23181 X(e) && (e = e.split(" "));
23183 return B(e, function(e) {
23184 e.length && (t[e] = !0)
23188 e = r(e), t = r(t), B(t, function(e, t) {
23190 }), n = r(n), B(n, function(e, t) {
23191 i[t] = 1 === i[t] ? null : -1
23197 return B(i, function(t, n) {
23199 1 === t ? (r = "addClass", i = !e[n] || e[n + L]) : -1 === t && (r = "removeClass", i = e[n] || e[n + H]), i && (o[r].length && (o[r] += " "), o[r] += n)
23204 return e instanceof J ? e[0] : e
23207 function y(e, t, n) {
23209 t && (r = o(t, F, !0)), n.addClass && (r = k(r, o(n.addClass, H))), n.removeClass && (r = k(r, o(n.removeClass, L))), r.length && (n.preparationClasses = r, e.addClass(r))
23213 t.preparationClasses && (e.removeClass(t.preparationClasses), t.preparationClasses = null), t.activeClasses && (e.removeClass(t.activeClasses), t.activeClasses = null)
23217 var n = t ? "-" + t + "s" : "";
23218 return E(e, [ae, n]), [ae, n]
23222 var n = t ? "paused" : "",
23224 return E(e, [r, n]), [r, n]
23234 return e ? t ? e + " " + t : e : t
23238 return [oe, e + "s"]
23242 return [t ? ie : ae, e + "s"]
23245 function T(e, t, n) {
23246 var r = Object.create(null),
23247 i = e.getComputedStyle(t) || {};
23248 return B(n, function(e, t) {
23251 var o = n.charAt(0);
23252 ("-" === o || "+" === o || o >= 0) && (n = M(n)), 0 === n && (n = null), r[t] = n
23259 n = e.split(/\s*,\s*/);
23260 return B(n, function(e) {
23261 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
23266 return 0 === e || null != e
23272 return t ? n += te : r += " linear all", [n, r]
23276 var e = Object.create(null);
23278 flush: function() {
23279 e = Object.create(null)
23281 count: function(t) {
23283 return n ? n.total : 0
23287 return n && n.value
23289 put: function(t, n) {
23290 e[t] ? e[t].total++ : e[t] = {
23298 function D(e, t, n) {
23300 e[n] = Y(e[n]) ? e[n] : t.style.getPropertyValue(n)
23303 var N, I, R, P, j = 1,
23308 U = "$$ngAnimateChildren";
23309 void 0 === e.ontransitionend && void 0 !== e.onwebkittransitionend ? ("-webkit-", N = "WebkitTransition", I = "webkitTransitionEnd transitionend") : (N = "transition", I = "transitionend"), void 0 === e.onanimationend && void 0 !== e.onwebkitanimationend ? ("-webkit-", R = "WebkitAnimation", P = "webkitAnimationEnd animationend") : (R = "animation", P = "animationend");
23310 var V, z, B, W, Y, G, K, Z, X, Q, J, ee, te = "Duration",
23311 ne = "TimingFunction",
23317 ce = t.$$minErr("ng"),
23318 le = ["$$rAF", function(e) {
23320 r = r.concat(e), n()
23325 for (var t = r.shift(), o = 0; o < t.length; o++) t[o]();
23326 i || e(function() {
23332 return r = t.queue = [], t.waitUntilQuiet = function(t) {
23333 i && i(), i = e(function() {
23338 ue = ["$interpolate", function(e) {
23340 link: function(t, n, r) {
23342 e = "on" === e || "true" === e, n.data(U, e)
23344 var o = r.ngAnimateChildren;
23345 X(o) && 0 === o.length ? n.data(U, !0) : (i(e(o)(t)), r.$observe("ngAnimateChildren", i))
23349 de = "$$animateCss",
23354 transitionDuration: se,
23355 transitionDelay: ae,
23356 transitionProperty: N + "Property",
23357 animationDuration: oe,
23358 animationDelay: ie,
23359 animationIterationCount: R + "IterationCount"
23362 transitionDuration: se,
23363 transitionDelay: ae,
23364 animationDuration: oe,
23367 ve = ["$animateProvider", function(e) {
23370 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(e, r, s, c, l, u, g, v) {
23372 var n = "$$ngAnimateParentKey",
23374 return (r[n] || (r[n] = ++q)) + "-" + e.getAttribute("class") + "-" + t
23377 function _(n, r, i, o) {
23379 return a || "infinite" === (a = T(e, n, o)).animationIterationCount && (a.animationIterationCount = 1), t.put(i, a), a
23382 function k(i, a, s, c) {
23384 if (t.count(s) > 0 && !(l = n.get(s))) {
23385 var u = o(a, "-stagger");
23386 r.addClass(i, u), (l = T(e, i, c)).animationDuration = Math.max(l.animationDuration, 0), l.transitionDuration = Math.max(l.transitionDuration, 0), r.removeClass(i, u), n.put(s, l)
23392 U.push(e), g.waitUntilQuiet(function() {
23393 t.flush(), n.flush();
23394 for (var e = l(), r = 0; r < U.length; r++) U[r](e);
23399 function O(e, t, n) {
23400 var r = _(e, t, n, me),
23401 i = r.animationDelay,
23402 o = r.transitionDelay;
23403 return r.maxDelay = i && o ? Math.max(i, o) : i || o, r.maxDuration = Math.max(r.animationDuration * r.animationIterationCount, r.transitionDuration), r
23408 return function(e, n) {
23418 if (!(K || X && Z)) {
23419 K = !0, Z = !1, z.$$skipPreparationClasses || r.removeClass(e, ye), r.removeClass(e, $e), w(G, !1), $(G, !1), B(se, function(e) {
23421 }), j(e, z), h(e, z), Object.keys(Y).length && B(Y, function(e, t) {
23422 e ? G.style.setProperty(t, e) : G.style.removeProperty(t)
23423 }), z.onDone && z.onDone(), ue && ue.length && e.off(ue.join(" "), q);
23424 var n = e.data(de);
23425 n && (c.cancel(n[0].timer), e.removeData(de)), Q && Q.complete(!t)
23430 Ie.blockTransition && $(G, e), Ie.blockKeyframeAnimation && w(G, !!e)
23439 start: function() {
23447 e.stopPropagation();
23448 var t = e.originalEvent || e,
23449 n = t.$manualTimeStamp || Date.now(),
23450 r = parseFloat(t.elapsedTime.toFixed(he));
23451 Math.max(n - ae, 0) >= re && r >= ie && (X = !0, g())
23457 if (_(!1), B(se, function(e) {
23461 }), j(e, z), r.addClass(e, $e), Ie.recalculateTimingStyles) {
23462 if (_e = G.getAttribute("class") + " " + ye, Ee = y(G, _e), De = O(G, _e, Ee), Ne = De.maxDelay, te = Math.max(Ne, 0), 0 === (ie = De.maxDuration)) return void g();
23463 Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0
23465 if (Ie.applyAnimationDelay && (Ne = "boolean" != typeof z.delay && A(z.delay) ? parseFloat(z.delay) : Ne, te = Math.max(Ne, 0), De.animationDelay = Ne, Re = x(Ne, !0), se.push(Re), G.style[Re[0]] = Re[1]), re = te * fe, oe = ie * fe, z.easing) {
23466 var t, i = z.easing;
23467 Ie.hasTransitions && (t = N + ne, se.push([t, i]), G.style[t] = i), Ie.hasAnimations && (t = R + ne, se.push([t, i]), G.style[t] = i)
23469 De.transitionDuration && ue.push(I), De.animationDuration && ue.push(P), ae = Date.now();
23470 var o = re + pe * oe,
23472 s = e.data(de) || [],
23476 (l = a > u.expectedEndTime) ? c.cancel(u.timer): s.push(g)
23479 var d = c(n, o, !1);
23483 }, s.push(g), e.data(de, s)
23485 ue.length && e.on(ue.join(" "), q), z.to && (z.cleanupStyles && D(Y, G, Object.keys(z.to)), m(e, z))
23490 var t = e.data(de);
23492 for (var n = 1; n < t.length; n++) t[n]();
23497 if (G.parentNode) {
23498 var i = function(e) {
23499 if (X) Z && e && (Z = !1, g());
23500 else if (Z = !e, De.animationDuration) {
23502 Z ? se.push(t) : a(se, t)
23505 o = Se > 0 && (De.transitionDuration && 0 === ke.transitionDuration || De.animationDuration && 0 === ke.animationDuration) && Math.max(ke.animationDelay, ke.transitionDelay);
23506 o ? c(t, Math.floor(o * Se * fe), !1) : t(), J.resume = function() {
23508 }, J.pause = function() {
23514 z.$$prepared || (z = f(V(z)));
23517 if (!G || !G.parentNode || !v.enabled()) return T();
23518 var K, Z, X, Q, J, te, re, ie, oe, ae, se = [],
23519 ce = e.attr("class"),
23522 if (0 === z.duration || !u.animations && !u.transitions) return T();
23523 var me = z.event && W(z.event) ? z.event.join(" ") : z.event,
23526 me && z.structural ? ve = o(me, F, !0) : me && (ve = me), z.addClass && (be += o(z.addClass, H)), z.removeClass && (be.length && (be += " "), be += o(z.removeClass, L)), z.applyClassesEarly && be.length && j(e, z);
23527 var ye = [ve, be].join(" ").trim(),
23528 _e = ce + " " + ye,
23529 $e = o(ye, "-active"),
23530 we = le.to && Object.keys(le.to).length > 0;
23531 if (!((z.keyframeStyle || "").length > 0) && !we && !ye) return T();
23533 if (z.stagger > 0) {
23534 var Ce = parseFloat(z.stagger);
23536 transitionDelay: Ce,
23537 animationDelay: Ce,
23538 transitionDuration: 0,
23539 animationDuration: 0
23541 } else Ee = y(G, _e), ke = k(G, ye, Ee, ge);
23542 z.$$skipPreparationClasses || r.addClass(e, ye);
23544 if (z.transitionStyle) {
23545 var Te = [N, z.transitionStyle];
23546 E(G, Te), se.push(Te)
23548 if (z.duration >= 0) {
23549 xe = G.style[N].length > 0;
23550 var Me = S(z.duration, xe);
23551 E(G, Me), se.push(Me)
23553 if (z.keyframeStyle) {
23554 var Ae = [R, z.keyframeStyle];
23555 E(G, Ae), se.push(Ae)
23557 var Se = ke ? z.staggerIndex >= 0 ? z.staggerIndex : t.count(Ee) : 0,
23559 Oe && !z.skipBlocking && $(G, 9999);
23560 var De = O(G, _e, Ee),
23562 te = Math.max(Ne, 0), ie = De.maxDuration;
23564 if (Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0, Ie.hasTransitionAll = Ie.hasTransitions && "all" === De.transitionProperty, Ie.applyTransitionDuration = we && (Ie.hasTransitions && !Ie.hasTransitionAll || Ie.hasAnimations && !Ie.hasTransitions), Ie.applyAnimationDuration = z.duration && Ie.hasAnimations, Ie.applyTransitionDelay = A(z.delay) && (Ie.applyTransitionDuration || Ie.hasTransitions), Ie.applyAnimationDelay = A(z.delay) && Ie.hasAnimations, Ie.recalculateTimingStyles = be.length > 0, (Ie.applyTransitionDuration || Ie.applyAnimationDuration) && (ie = z.duration ? parseFloat(z.duration) : ie, Ie.applyTransitionDuration && (Ie.hasTransitions = !0, De.transitionDuration = ie, xe = G.style[N + "Property"].length > 0, se.push(S(ie, xe))), Ie.applyAnimationDuration && (Ie.hasAnimations = !0, De.animationDuration = ie, se.push(C(ie)))), 0 === ie && !Ie.recalculateTimingStyles) return T();
23565 if (null != z.delay) {
23567 "boolean" != typeof z.delay && (Re = parseFloat(z.delay), te = Math.max(Re, 0)), Ie.applyTransitionDelay && se.push(x(Re)), Ie.applyAnimationDelay && se.push(x(Re, !0))
23569 return null == z.duration && De.transitionDuration > 0 && (Ie.recalculateTimingStyles = Ie.recalculateTimingStyles || Oe), re = te * fe, oe = ie * fe, z.skipBlocking || (Ie.blockTransition = De.transitionDuration > 0, Ie.blockKeyframeAnimation = De.animationDuration > 0 && ke.animationDelay > 0 && 0 === ke.animationDuration), z.from && (z.cleanupStyles && D(Y, G, Object.keys(z.from)), p(e, z)), Ie.blockTransition || Ie.blockKeyframeAnimation ? _(ie) : z.skipBlocking || $(G, !1), {
23572 start: function() {
23573 if (!K) return J = {
23578 }, Q = new s(J), M(U), Q
23584 be = ["$$animationProvider", function(e) {
23586 return e.parentNode && 11 === e.parentNode.nodeType
23588 e.drivers.push("$$animateCssDriver");
23589 var n = "ng-animate-shim",
23591 i = "ng-anchor-out",
23592 o = "ng-anchor-in";
23593 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(e, a, s, c, l, u, d) {
23595 return e.replace(/\bng-\S+\b/g, "")
23599 return X(e) && (e = e.split(" ")), X(t) && (t = t.split(" ")), e.filter(function(e) {
23600 return -1 === t.indexOf(e)
23604 function p(t, a, c) {
23607 n = b(e).getBoundingClientRect();
23608 return B(["width", "height", "top", "left"], function(e) {
23617 t[e] = Math.floor(r) + "px"
23622 return e.attr("class") || ""
23631 addClass: o + " " + n,
23632 removeClass: i + " " + r,
23635 return a.$$willAnimate ? a : null
23639 m.remove(), a.removeClass(n), c.removeClass(n)
23641 var m = J(b(a).cloneNode(!0)),
23643 a.addClass(n), c.addClass(n), m.addClass(r), _.append(m);
23644 var y, $ = function() {
23650 return t.$$willAnimate ? t : null
23652 if (!$ && !(y = d())) return p();
23655 start: function() {
23659 var t, n = w.start();
23660 return n.done(function() {
23661 if (n = null, !y && (y = d())) return (n = y.start()).done(function() {
23662 n = null, p(), t.complete()
23673 function m(e, t, n, r) {
23677 if (B(r, function(e) {
23682 }), i || o || 0 !== a.length) return {
23683 start: function() {
23690 i && t.push(i.start()), o && t.push(o.start()), B(a, function(e) {
23697 return s.all(t, function(e) {
23706 r = t.options || {};
23707 t.structural && (r.event = t.event, r.structural = !0, r.applyClassesEarly = !0, "leave" === t.event && (r.onDone = r.domOperation)), r.preparationClasses && (r.event = k(r.event, r.preparationClasses));
23709 return i.$$willAnimate ? i : null
23711 if (!l.animations && !l.transitions) return ee;
23714 _ = J(t(y) || v.contains(y) ? y : v);
23715 return function(e) {
23716 return e.from && e.to ? m(e.from, e.to, e.classes, e.anchors) : g(e)
23720 ye = ["$animateProvider", function(e) {
23721 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(t, n, r) {
23723 n = W(n) ? n : n.split(" ");
23724 for (var r = [], i = {}, o = 0; o < n.length; o++) {
23726 s = e.$$registeredAnimations[a];
23727 s && !i[a] && (r.push(t.get(s)), i[a] = !0)
23732 return function(e, t, r, a) {
23734 a.domOperation(), o(e, a)
23738 p = !0, s(), h(e, a)
23741 function l(e, t, r, i, o) {
23745 a = [t, i.from, i.to, o];
23753 case "removeClass":
23760 var s = e.apply(e, a);
23762 if (K(s.start) && (s = s.start()), s instanceof n) s.done(o);
23763 else if (K(s)) return s;
23767 function u(e, t, r, i, o) {
23769 return B(i, function(i) {
23771 s && a.push(function() {
23774 a || (a = !0, (o || ee)(e), i.complete(!e))
23780 cancel: function() {
23783 }), o = l(s, e, t, r, function(e) {
23790 function d(e, t, r, i, o) {
23791 var a = u(e, t, r, i, o);
23792 if (0 === a.length) {
23794 "beforeSetClass" === o ? (s = u(e, "removeClass", r, i, "beforeRemoveClass"), c = u(e, "addClass", r, i, "beforeAddClass")) : "setClass" === o && (s = u(e, "removeClass", r, i, "removeClass"), c = u(e, "addClass", r, i, "addClass")), s && (a = a.concat(s)), c && (a = a.concat(c))
23796 if (0 !== a.length) return function(e) {
23798 return a.length && B(a, function(e) {
23800 }), t.length ? n.all(t, e) : e(),
23803 e ? t.cancel() : t.end()
23809 3 === arguments.length && Z(r) && (a = r, r = null), a = f(a), r || (r = e.attr("class") || "", a.addClass && (r += " " + a.addClass), a.removeClass && (r += " " + a.removeClass));
23810 var m, g, v = a.addClass,
23815 "leave" === t ? ($ = "leave", _ = "afterLeave") : ($ = "before" + t.charAt(0).toUpperCase() + t.substr(1), _ = t), "enter" !== t && "move" !== t && (m = d(e, t, a, y, $)), g = d(e, t, a, y, _)
23822 return w ? w.end() : (c(), (w = new n).complete(!0)), w
23824 start: function() {
23826 c(e), w.complete(e)
23830 p || ((r || ee)(t), e(t))
23835 return m && i.push(function(e) {
23837 }), i.length ? i.push(function(e) {
23839 }) : s(), g && i.push(function(e) {
23845 cancel: function() {
23848 }), n.chain(i, e), w
23855 _e = ["$$animationProvider", function(e) {
23856 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(e, t) {
23862 return e(n, r, o, i)
23864 return function(e) {
23865 if (e.from && e.to) {
23868 if (!r && !i) return;
23870 start: function() {
23872 return function() {
23879 r && n.push(r.start()), i && n.push(i.start()), t.all(n, function(e) {
23894 $e = "data-ng-animate",
23895 we = "$ngAnimatePin",
23896 Ee = ["$animateProvider", function(t) {
23898 if (!e) return null;
23899 var t = e.split(p),
23900 n = Object.create(null);
23901 return B(t, function(e) {
23909 return e.split(p).some(function(e) {
23915 function o(e, t, n) {
23916 return m[e].some(function(e) {
23922 var n = (e.addClass || "").length > 0,
23923 r = (e.removeClass || "").length > 0;
23924 return t ? n && r : n || r
23934 m.join.push(function(e, t) {
23935 return !e.structural && a(e)
23936 }), m.skip.push(function(e, t) {
23937 return !e.structural && !a(e)
23938 }), m.skip.push(function(e, t) {
23939 return "leave" === t.event && e.structural
23940 }), m.skip.push(function(e, t) {
23941 return t.structural && t.state === u && !e.structural
23942 }), m.cancel.push(function(e, t) {
23943 return t.structural && e.structural
23944 }), m.cancel.push(function(e, t) {
23945 return t.state === u && e.structural
23946 }), m.cancel.push(function(e, t) {
23947 if (t.structural) return !1;
23948 var n = e.addClass,
23952 return !(Q(n) && Q(r) || Q(o) && Q(a)) && (i(n, a) || i(r, o))
23953 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(r, i, p, m, v, $, w, E, k, C, x) {
23956 return function(t) {
23957 e ? t() : i.$$postDigest(function() {
23967 function A(e, t, n) {
23970 return i && B(i, function(i) {
23971 ae.call(i.node, t) ? r.push(i.callback) : "leave" === n && ae.call(i.node, e) && r.push(i.callback)
23975 function S(e, t, n) {
23977 return e.filter(function(e) {
23978 return !(e.node === r && (!n || e.callback === n))
23983 "close" !== e || t.parentNode || se.off(t)
23986 function D(e, t, n) {
23987 function c(e, t, n, i) {
23989 var e = A(E, v, t);
23990 e.length ? r(function() {
23995 }), e.progress(t, n, i)
23999 _(m, p), oe(m, p), h(m, p), p.domOperation(), k.complete(!e)
24004 E = v && v.parentNode;
24008 if (W(p.addClass) && (p.addClass = p.addClass.join(" ")), p.addClass && !X(p.addClass) && (p.addClass = null), W(p.removeClass) && (p.removeClass = p.removeClass.join(" ")), p.removeClass && !X(p.removeClass) && (p.removeClass = null), p.from && !Z(p.from) && (p.from = null), p.to && !Z(p.to) && (p.to = null), !(F && v && re(v, t, n) && ie(v, p))) return d(), k;
24009 var S = ["enter", "move", "leave"].indexOf(t) >= 0,
24012 q = !j && H.get(v) || {},
24014 if (j || U && q.state === l || (j = !R(v, E, t)), j) return D && c(k, t, "start"), d(), D && c(k, t, "close"), k;
24020 addClass: p.addClass,
24021 removeClass: p.removeClass,
24027 if (o("skip", z, q)) return q.state === u ? (d(), k) : (g(m, q, z), q.runner);
24028 if (o("cancel", z, q))
24029 if (q.state === u) q.runner.end();
24031 if (!q.structural) return g(m, q, z), q.runner;
24034 else if (o("join", z, q)) {
24035 if (q.state !== u) return y(m, S ? t : null, p), t = z.event = q.event, p = g(m, q, z), q.runner;
24039 var Y = z.structural;
24040 if (Y || (Y = "animate" === z.event && Object.keys(z.options.to || {}).length > 0 || a(z)), !Y) return d(), I(v), k;
24041 var G = (q.counter || 0) + 1;
24042 return z.counter = G, P(v, l, z), i.$$postDigest(function() {
24047 var i = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
24048 if (r || n.counter !== G || !i) return r && (oe(m, p), h(m, p)), (r || S && n.event !== t) && (p.domOperation(), k.end()), void(i || I(v));
24049 t = !n.structural && a(n, !0) ? "setClass" : n.event, P(v, u);
24050 var o = $(m, t, n.options);
24051 k.setHost(o), c(k, t, "start", {}), o.done(function(e) {
24054 n && n.counter === G && I(v), c(k, t, "close", {})
24060 var t = e.querySelectorAll("[" + $e + "]");
24062 var t = parseInt(e.getAttribute($e), 10),
24064 if (n) switch (t) {
24074 e.removeAttribute($e), H.delete(e)
24077 function R(e, t, n) {
24078 var r, i = m[0].body,
24080 a = e === i || "HTML" === e.nodeName,
24085 for (u && (t = b(u)); t && (s || (s = t === o), t.nodeType === j);) {
24086 var d = H.get(t) || {};
24089 if (!0 === f && !1 !== l) {
24092 }!1 === f && (l = !1), c = d.structural
24094 if (Q(r) || !0 === r) {
24095 var h = J.data(t, U);
24098 if (c && !1 === r) break;
24099 if (a || (a = t === i), a && s) break;
24100 t = s || !(u = J.data(t, we)) ? t.parentNode : b(u)
24102 return (!c || r) && !0 !== l && s && a
24105 function P(e, t, n) {
24106 (n = n || {}).state = t, e.setAttribute($e, t);
24108 i = r ? z(r, n) : n;
24114 q = i.$watch(function() {
24115 return 0 === E.totalPendingRequests
24117 e && (q(), i.$$postDigest(function() {
24118 i.$$postDigest(function() {
24119 null === F && (F = !0)
24123 K = Object.create(null),
24124 ee = t.customFilter(),
24125 te = t.classNameFilter(),
24130 ie = te ? function(e, t) {
24131 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
24135 ae = e.Node.prototype.contains || function(e) {
24136 return this === e || !!(16 & this.compareDocumentPosition(e))
24139 on: function(e, t, n) {
24141 K[e] = K[e] || [], K[e].push({
24144 }), J(t).on("$destroy", function() {
24145 H.get(r) || se.off(e, t, n)
24148 off: function(e, t, n) {
24149 if (1 !== arguments.length || X(arguments[0])) {
24151 r && (K[e] = 1 === arguments.length ? null : S(r, t, n))
24154 for (var i in K) K[i] = S(K[i], t)
24157 pin: function(e, t) {
24158 n(G(e), "element", "not an element"), n(G(t), "parentElement", "not an element"), e.data(we, t)
24160 push: function(e, t, n, r) {
24161 return n = n || {}, n.domOperation = r, D(e, t, n)
24163 enabled: function(e, t) {
24164 var n = arguments.length;
24165 if (0 === n) t = !!F;
24168 1 === n ? t = !L.get(r) : L.set(r, !t)
24169 } else t = F = !!e;
24176 ke = ["$animateProvider", function(e) {
24188 var o = "ng-animate-ref",
24189 a = this.drivers = [],
24190 s = "$$animationRunner";
24191 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", function(e, s, c, l, u, p) {
24194 if (e.processed) return e;
24200 if (a = i.get(o)) {
24201 a.processed || (a = t(a));
24206 return (a || r).children.push(e), e
24212 for (n = 0; n < e.length; n++) {
24214 i.set(o.domNode, e[n] = {
24215 domNode: o.domNode,
24220 for (n = 0; n < e.length; n++) t(e[n]);
24221 return function(e) {
24224 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
24228 for (t = 0; t < r.length; t++) {
24230 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s.fn), s.children.forEach(function(e) {
24234 return a.length && n.push(a), n
24239 return function(u, d, y) {
24241 var t = "[" + o + "]",
24242 n = e.hasAttribute(o) ? [e] : e.querySelectorAll(t),
24244 return B(n, function(e) {
24245 var t = e.getAttribute(o);
24246 t && t.length && r.push(e)
24253 B(e, function(e, r) {
24254 var i = b(e.element),
24256 s = ["enter", "move"].indexOf(a) >= 0,
24257 c = e.structural ? _(i) : [];
24259 var l = s ? "to" : "from";
24261 var t = e.getAttribute(o);
24262 n[t] = n[t] || {}, n[t][l] = {
24271 return B(n, function(n, o) {
24275 var c = e[a.animationID],
24276 l = e[s.animationID],
24277 u = a.animationID.toString();
24281 beforeStart: function() {
24282 c.beforeStart(), l.beforeStart()
24284 close: function() {
24285 c.close(), l.close()
24287 classes: w(c.classes, l.classes),
24292 d.classes.length ? t.push(d) : (t.push(c), t.push(l))
24294 i[u].anchors.push({
24299 var f = a ? a.animationID : s.animationID,
24301 r[h] || (r[h] = !0, t.push(e[f]))
24307 e = e.split(" "), t = t.split(" ");
24308 for (var n = [], r = 0; r < e.length; r++) {
24310 if ("ng-" !== i.substring(0, 3))
24311 for (var o = 0; o < t.length; o++)
24321 for (var t = a.length - 1; t >= 0; t--) {
24333 e.from && e.to ? (n(e.from.element), n(e.to.element)) : n(e.element)
24338 !e || "leave" === d && y.$$domOperationFired || e.end()
24342 u.off("$destroy", C), n(u), v(u, y), h(u, y), y.domOperation(), S && e.removeClass(u, S), u.removeClass(q), M.complete(!t)
24345 var T = ["enter", "move", "leave"].indexOf(d) >= 0,
24350 cancel: function() {
24354 if (!a.length) return x(), M;
24356 var A = r(u.attr("class"), r(y.addClass, y.removeClass)),
24358 S && (A += " " + S, y.tempClasses = null);
24360 return T && (O = "ng-" + d + "-prepare", e.addClass(u, O)), g.push({
24366 beforeStart: function() {
24367 u.addClass(q), S && e.addClass(u, S), O && (e.removeClass(u, O), O = null)
24370 }), u.on("$destroy", C), g.length > 1 ? M : (s.$$postDigest(function() {
24373 i(t.element) ? e.push(t) : t.close()
24379 domNode: b(e.from ? e.from.element : e.element),
24382 var t, n = e.close;
24383 if (i(e.anchors ? e.from.element || e.to.element : e.element)) {
24389 o.done(function(e) {
24400 Ce = ["$animate", "$rootScope", function(e, t) {
24403 transclude: "element",
24406 link: function(t, n, r, i, o) {
24408 t.$watchCollection(r.ngAnimateSwap || r.for, function(r) {
24409 a && e.leave(a), s && (s.$destroy(), s = null), (r || 0 === r) && (s = t.$new(), o(s, function(t) {
24410 a = t, e.enter(t, null, n)
24416 t.module("ngAnimate", [], function() {
24417 ee = t.noop, V = t.copy, z = t.extend, J = t.element, B = t.forEach, W = t.isArray, X = t.isString, Z = t.isObject, Q = t.isUndefined, Y = t.isDefined, K = t.isFunction, G = t.isElement
24419 angularVersion: "1.6.6"
24420 }).directive("ngAnimateSwap", Ce).directive("ngAnimateChildren", ue).factory("$$rAFScheduler", le).provider("$$animateQueue", Ee).provider("$$animation", ke).provider("$animateCss", ve).provider("$$animateCssDriver", be).provider("$$animateJs", ye).provider("$$animateJsDriver", _e)
24421 }(window, window.angular),
24424 var n = t.module("ngAria", ["ng"]).info({
24425 angularVersion: "1.6.6"
24426 }).provider("$aria", function() {
24427 function e(e, t, r, o) {
24428 return function(a, s, c) {
24429 var l = c.$normalize(t);
24430 !n[l] || i(s, r) || c[l] || a.$watch(c[e], function(e) {
24431 e = o ? !e : !!e, s.attr(t, e)
24445 bindRoleForClick: !0
24447 this.config = function(e) {
24449 }, this.$get = function() {
24451 config: function(e) {
24458 r = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
24459 i = function(e, t) {
24460 if (-1 !== t.indexOf(e[0].nodeName)) return !0
24462 n.directive("ngShow", ["$aria", function(e) {
24463 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
24464 }]).directive("ngHide", ["$aria", function(e) {
24465 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
24466 }]).directive("ngValue", ["$aria", function(e) {
24467 return e.$$watchExpr("ngValue", "aria-checked", r, !1)
24468 }]).directive("ngChecked", ["$aria", function(e) {
24469 return e.$$watchExpr("ngChecked", "aria-checked", r, !1)
24470 }]).directive("ngReadonly", ["$aria", function(e) {
24471 return e.$$watchExpr("ngReadonly", "aria-readonly", r, !1)
24472 }]).directive("ngRequired", ["$aria", function(e) {
24473 return e.$$watchExpr("ngRequired", "aria-required", r, !1)
24474 }]).directive("ngModel", ["$aria", function(e) {
24475 function t(t, n, o, a) {
24476 return e.config(n) && !o.attr(t) && (a || !i(o, r))
24480 return !t.attr("role") && t.attr("type") === e && !i(t, r)
24486 return "checkbox" === (n || r) || "menuitemcheckbox" === r ? "checkbox" : "radio" === (n || r) || "menuitemradio" === r ? "radio" : "range" === n || "progressbar" === r || "slider" === r ? "range" : ""
24490 require: "ngModel",
24492 compile: function(r, i) {
24495 post: function(r, i, o, s) {
24497 return s.$modelValue
24499 var l = t("tabindex", "tabindex", i, !1);
24503 n(a, i) && i.attr("role", a), t("aria-checked", "ariaChecked", i, !1) && r.$watch(c, "radio" === a ? function(e) {
24504 var t = o.value == s.$viewValue;
24505 i.attr("aria-checked", t)
24507 i.attr("aria-checked", !s.$isEmpty(s.$viewValue))
24508 }), l && i.attr("tabindex", 0);
24511 if (n(a, i) && i.attr("role", "slider"), e.config("ariaValue")) {
24512 var u = !i.attr("aria-valuemin") && (o.hasOwnProperty("min") || o.hasOwnProperty("ngMin")),
24513 d = !i.attr("aria-valuemax") && (o.hasOwnProperty("max") || o.hasOwnProperty("ngMax")),
24514 f = !i.attr("aria-valuenow");
24515 u && o.$observe("min", function(e) {
24516 i.attr("aria-valuemin", e)
24517 }), d && o.$observe("max", function(e) {
24518 i.attr("aria-valuemax", e)
24519 }), f && r.$watch(c, function(e) {
24520 i.attr("aria-valuenow", e)
24523 l && i.attr("tabindex", 0)
24524 }!o.hasOwnProperty("ngRequired") && s.$validators.required && t("aria-required", "ariaRequired", i, !1) && o.$observe("required", function() {
24525 i.attr("aria-required", !!o.required)
24526 }), t("aria-invalid", "ariaInvalid", i, !0) && r.$watch(function() {
24529 i.attr("aria-invalid", !!e)
24535 }]).directive("ngDisabled", ["$aria", function(e) {
24536 return e.$$watchExpr("ngDisabled", "aria-disabled", r, !1)
24537 }]).directive("ngMessages", function() {
24540 require: "?ngMessages",
24541 link: function(e, t, n, r) {
24542 t.attr("aria-live") || t.attr("aria-live", "assertive")
24545 }).directive("ngClick", ["$aria", "$parse", function(e, t) {
24548 compile: function(n, o) {
24549 var a = t(o.ngClick);
24550 return function(t, n, o) {
24551 i(n, r) || (e.config("bindRoleForClick") && !n.attr("role") && n.attr("role", "button"), e.config("tabindex") && !n.attr("tabindex") && n.attr("tabindex", 0), !e.config("bindKeydown") || o.ngKeydown || o.ngKeypress || o.ngKeyup || n.on("keydown", function(e) {
24552 var n = e.which || e.keyCode;
24553 32 !== n && 13 !== n || t.$apply(function() {
24562 }]).directive("ngDblclick", ["$aria", function(e) {
24563 return function(t, n, o) {
24564 !e.config("tabindex") || n.attr("tabindex") || i(n, r) || n.attr("tabindex", 0)
24567 }(window, window.angular),
24573 if (e) return i(e) ? e.indexOf(t) >= 0 : e.hasOwnProperty(t)
24575 return ["$animate", function(t) {
24578 transclude: "element",
24581 require: "^^ngMessages",
24582 link: function(n, r, o, a, s) {
24584 u = o.ngMessage || o.when,
24585 d = o.ngMessageExp || o.whenExp,
24587 c = e ? i(e) ? e : e.split(/[\s,]+/) : null, a.reRender()
24589 d ? (f(n.$eval(d)), n.$watchCollection(d, f)) : f(u);
24591 a.register(l, p = {
24592 test: function(t) {
24595 attach: function() {
24596 h || s(function(e, n) {
24597 t.enter(e, null, r);
24598 var i = (h = e).$$attachId = a.getAttachId();
24599 h.on("$destroy", function() {
24600 h && h.$$attachId === i && (a.deregister(l), p.detach()), n.$destroy()
24604 detach: function() {
24607 h = null, t.leave(e)
24616 t.module("ngMessages", [], function() {
24617 r = t.forEach, i = t.isArray, o = t.isString, a = t.element
24619 angularVersion: "1.6.6"
24620 }).directive("ngMessages", ["$animate", function(e) {
24622 return o(t) && 0 === t.length || n(e.$eval(t))
24626 return o(e) ? e.length : !!e
24629 require: "ngMessages",
24631 controller: ["$element", "$scope", "$attrs", function(i, o, a) {
24633 for (var n = t, r = []; n && n !== e;) {
24634 var i = n.$$ngMessageNode;
24635 if (i && i.length) return m[i];
24636 n.childNodes.length && -1 === r.indexOf(n) ? (r.push(n), n = n.childNodes[n.childNodes.length - 1]) : n.previousSibling ? n = n.previousSibling : (n = n.parentNode, r.push(n))
24640 function c(e, t, n) {
24644 i ? (r.next = i.next, i.next = r) : (r.next = u.head, u.head = r)
24648 function l(e, t, n) {
24651 i ? i.next = r.next : u.head = r.next
24656 this.getAttachId = function() {
24659 var h, p, m = this.messages = {};
24660 this.render = function(s) {
24661 h = !1, p = s = s || {};
24662 for (var c = t(o, a.ngMessagesMultiple) || t(o, a.multiple), l = [], d = {}, f = u.head, m = !1, g = 0; null != f;) {
24666 m || r(s, function(e, t) {
24667 if (!b && n(e) && v.test(t)) {
24669 d[t] = !0, b = !0, v.attach()
24671 }), b ? m = !c : l.push(v), f = f.next
24675 }), l.length !== g ? e.setClass(i, "ng-active", "ng-inactive") : e.setClass(i, "ng-inactive", "ng-active")
24676 }, o.$watchCollection(a.ngMessages || a.for, u.render), i.on("$destroy", function() {
24680 }), this.reRender = function() {
24681 h || (h = !0, o.$evalAsync(function() {
24682 h && p && u.render(p)
24684 }, this.register = function(e, t) {
24685 var n = d.toString();
24688 }, c(i[0], e, n), e.$$ngMessageNode = n, d++, u.reRender()
24689 }, this.deregister = function(e) {
24690 var t = e.$$ngMessageNode;
24691 delete e.$$ngMessageNode, l(i[0], e, t), delete m[t], u.reRender()
24695 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(e, t, n) {
24697 var i = n.$$createComment ? n.$$createComment("ngMessagesInclude", r) : t[0].createComment(" ngMessagesInclude: " + r + " "),
24699 e.after(o), e.remove()
24703 require: "^^ngMessages",
24704 link: function(t, i, a) {
24705 var s = a.ngMessagesInclude || a.src;
24706 e(s).then(function(e) {
24707 t.$$destroyed || (o(e) && !e.trim() ? r(i, s) : n(e)(t, function(e) {
24708 i.after(e), r(i, s)
24713 }]).directive("ngMessage", n()).directive("ngMessageExp", n())
24714 }(window, window.angular),
24715 function(e, t, n) {
24717 t.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.gestures", "material.core.interaction", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.core.animate", "material.components.autocomplete", "material.components.backdrop", "material.components.bottomSheet", "material.components.button", "material.components.card", "material.components.chips", "material.components.checkbox", "material.components.colors", "material.components.content", "material.components.datepicker", "material.components.dialog", "material.components.divider", "material.components.fabActions", "material.components.fabShared", "material.components.fabSpeedDial", "material.components.fabToolbar", "material.components.icon", "material.components.gridList", "material.components.input", "material.components.list", "material.components.menu", "material.components.menuBar", "material.components.navBar", "material.components.panel", "material.components.progressCircular", "material.components.progressLinear", "material.components.radioButton", "material.components.select", "material.components.showHide", "material.components.sidenav", "material.components.slider", "material.components.sticky", "material.components.subheader", "material.components.swipe", "material.components.switch", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.truncate", "material.components.virtualRepeat", "material.components.whiteframe"]),
24720 if (t.has("$swipe")) {
24721 e.warn("You are using the ngTouch module. \nAngularJS Material already has mobile click, tap, and swipe support... \nngTouch is not supported with AngularJS Material!")
24726 e.decorator("$$rAF", ["$delegate", r]), e.decorator("$q", ["$delegate", i]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
24730 return e.throttle = function(t) {
24732 return function() {
24733 n = arguments, o = this, i = t, r || (r = !0, e(function() {
24734 i.apply(o, Array.prototype.slice.call(n)), r = !1
24741 return e.resolve || (e.resolve = e.when), e
24743 e.$inject = ["$log", "$injector"], n.$inject = ["$provide", "$mdThemingProvider"], r.$inject = ["$delegate"], i.$inject = ["$delegate"], t.module("material.core", ["ngAnimate", "material.core.animate", "material.core.layout", "material.core.interaction", "material.core.gestures", "material.core.theming"]).config(n).run(e)
24750 pre: function(n, r, i) {
24752 t.isUndefined(e) && (e = !0), r.toggleClass("md-autofocus", !!e)
24754 var a = i.mdAutoFocus || i.mdAutofocus || i.mdSidenavFocus;
24755 o(e(a)(n)), a && n.$watch(a, o)
24760 e.$inject = ["$parse"], t.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
24763 t.module("material.core").factory("$mdColorUtil", function() {
24765 rgbaToHex: function(e) {
24766 return ((e = e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === e.length ? "#" + ("0" + parseInt(e[1], 10).toString(16)).slice(-2) + ("0" + parseInt(e[2], 10).toString(16)).slice(-2) + ("0" + parseInt(e[3], 10).toString(16)).slice(-2) : "").toUpperCase()
24768 hexToRgba: function(e) {
24769 var t = "#" === e[0] ? e.substr(1) : e,
24771 r = t.substr(0, n),
24772 i = t.substr(n, n),
24773 o = t.substr(2 * n);
24774 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
24776 rgbToRgba: function(e) {
24777 return e.replace(")", ", 0.1)").replace("(", "a(")
24779 rgbaToRgb: function(e) {
24780 return e ? e.replace("rgba", "rgb").replace(/,[^\),]+\)/, ")") : "rgb(0,0,0)"
24786 t.module("material.core").factory("$mdConstant", function() {
24788 var t = r(o + "-" + e),
24789 a = t.charAt(0).toLowerCase() + t.substring(1);
24790 return n(i, e) ? e : n(i, t) ? t : n(i, a) ? a : e
24794 return t.isDefined(e.style[n])
24798 return e.replace(s, function(e, t, n, r) {
24799 return r ? n.toUpperCase() : n
24802 var i = document.createElement("div"),
24804 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
24806 if (n = r.exec(t)) return n[0]
24808 a = /webkit/i.test(o),
24809 s = /([:\-_]+(.))/g,
24811 isInputKey: function(e) {
24812 return e.keyCode >= 31 && e.keyCode <= 90
24814 isNumPadKey: function(e) {
24815 return 3 === e.location && e.keyCode >= 97 && e.keyCode <= 105
24817 isMetaKey: function(e) {
24818 return e.keyCode >= 91 && e.keyCode <= 93
24820 isFnLockKey: function(e) {
24821 return e.keyCode >= 112 && e.keyCode <= 145
24823 isNavigationKey: function(e) {
24824 var t = c.KEY_CODE;
24825 return -1 != [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW].indexOf(e.keyCode)
24827 hasModifierKey: function(e) {
24828 return e.ctrlKey || e.metaKey || e.altKey
24830 ELEMENT_MAX_PIXELS: 1533917,
24831 BEFORE_NG_ARIA: 210,
24851 TRANSITIONEND: "transitionend" + (a ? " webkitTransitionEnd" : ""),
24852 ANIMATIONEND: "animationend" + (a ? " webkitAnimationEnd" : ""),
24853 TRANSFORM: e("transform"),
24854 TRANSFORM_ORIGIN: e("transformOrigin"),
24855 TRANSITION: e("transition"),
24856 TRANSITION_DURATION: e("transitionDuration"),
24857 ANIMATION_PLAY_STATE: e("animationPlayState"),
24858 ANIMATION_DURATION: e("animationDuration"),
24859 ANIMATION_NAME: e("animationName"),
24860 ANIMATION_TIMING: e("animationTimingFunction"),
24861 ANIMATION_DIRECTION: e("animationDirection")
24864 xs: "(max-width: 599px)",
24865 "gt-xs": "(min-width: 600px)",
24866 sm: "(min-width: 600px) and (max-width: 959px)",
24867 "gt-sm": "(min-width: 960px)",
24868 md: "(min-width: 960px) and (max-width: 1279px)",
24869 "gt-md": "(min-width: 1280px)",
24870 lg: "(min-width: 1280px) and (max-width: 1919px)",
24871 "gt-lg": "(min-width: 1920px)",
24872 xl: "(min-width: 1920px)",
24873 landscape: "(orientation: landscape)",
24874 portrait: "(orientation: portrait)",
24877 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
24885 return u.length && e > -1 && e < u.length
24889 return u.indexOf(e)
24893 return e && i(e) > -1
24897 return u.length ? u[0] : null
24901 return u.length ? u[u.length - 1] : null
24904 function c(e, o, c, d) {
24906 for (var f = i(o);;) {
24907 if (!r(f)) return null;
24908 var h = f + (e ? -1 : 1),
24910 if (r(h) ? p = u[h] : n && (h = i(p = e ? s() : a())), null === p || h === d) return null;
24911 if (c(p)) return p;
24912 t.isUndefined(d) && (d = h), f = h
24915 var l = function() {
24918 e && !t.isArray(e) && (e = Array.prototype.slice.call(e)), n = !!n;
24921 items: function() {
24922 return [].concat(u)
24924 count: function() {
24930 itemAt: function(e) {
24931 return r(e) ? u[e] : null
24933 findBy: function(e, t) {
24934 return u.filter(function(n) {
24938 add: function(e, n) {
24939 return e ? (t.isNumber(n) || (n = u.length), u.splice(n, 0, e), i(e)) : -1
24941 remove: function(e) {
24942 o(e) && u.splice(i(e), 1)
24946 next: t.bind(null, c, !1),
24947 previous: t.bind(null, c, !0),
24948 hasPrevious: function(e) {
24949 return !!e && r(i(e) - 1)
24951 hasNext: function(e) {
24952 return !!e && r(i(e) + 1)
24956 t.module("material.core").config(["$provide", function(t) {
24957 t.decorator("$mdUtil", ["$delegate", function(t) {
24958 return t.iterator = e, t
24963 function e(e, n, r) {
24966 t.isUndefined(n) && (n = l[e] = o(e));
24968 return t.isUndefined(r) && (r = a(n)), r
24972 return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
24977 return t || (t = u[e] = r.matchMedia(e)), t.addListener(s), d[t.media] = !!t.matches
24981 n.$evalAsync(function() {
24982 d[e.media] = !!e.matches
24987 return f[t] || (f[t] = e.$normalize(t))
24993 return i.getResponsiveAttribute = function(t, n) {
24994 for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
24995 var i = e.MEDIA_PRIORITY[r];
24996 if (u[l[i]].matches) {
24997 var o = c(t, n + "-" + i);
24998 if (t[o]) return t[o]
25002 }, i.getQuery = function(e) {
25004 }, i.watchResponsiveAttributes = function(n, r, i) {
25006 return n.forEach(function(n) {
25008 t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, null)));
25009 for (var s in e.MEDIA) a = c(r, n + "-" + s), t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, s)))
25012 o.forEach(function(e) {
25018 e.$inject = ["$mdConstant", "$rootScope", "$window"], t.module("material.core").factory("$mdMedia", e)
25023 return (e = t.isArray(e) ? e : [e]).forEach(function(t) {
25024 a.forEach(function(n) {
25025 e.push(n + "-" + t)
25031 return e = t.isArray(e) ? e : [e], r(e).map(function(e) {
25032 return "[" + e + "]"
25037 if ((e = e[0] || e).nodeType) return e
25039 var a = ["data", "x"];
25040 return e ? n ? i(e) : r(e) : {
25043 hasAttribute: function(e, t) {
25044 if (!(e = o(e))) return !1;
25045 for (var n = r(t), i = 0; i < n.length; i++)
25046 if (e.hasAttribute(n[i])) return !0;
25049 removeAttribute: function(e, t) {
25050 (e = o(e)) && r(t).forEach(function(t) {
25051 e.removeAttribute(t)
25056 t.module("material.core").config(["$provide", function(t) {
25057 t.decorator("$mdUtil", ["$delegate", function(t) {
25058 return t.prefixer = e, t
25063 function r(r, o, a, s, c, l, u, d, f, h) {
25065 return e ? m(e) || g(e) ? e : e + "px" : "0"
25069 return String(e).indexOf("px") > -1
25073 return String(e).indexOf("%") > -1
25079 var b = l.startSymbol(),
25081 _ = "{{" === b && "}}" === y,
25082 $ = function(e, n, r) {
25084 if (e && e.length) {
25085 var o = f.getComputedStyle(e[0]);
25086 i = t.isDefined(o[n]) && (!r || o[n] == r)
25092 now: e.performance && e.performance.now ? t.bind(e.performance, e.performance.now) : Date.now || function() {
25093 return (new Date).getTime()
25095 getModelOption: function(e, t) {
25097 var n = e.$options;
25098 return n.getOption ? n.getOption(t) : n[t]
25101 bidi: function(e, n, i, o) {
25102 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir);
25103 if (0 == arguments.length) return a ? "ltr" : "rtl";
25104 var s = t.element(e);
25105 a && t.isDefined(i) ? s.css(n, p(i)) : !a && t.isDefined(o) && s.css(n, p(o))
25107 bidiProperty: function(e, n, i, o) {
25108 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir),
25110 a && t.isDefined(n) ? (s.css(n, p(o)), s.css(i, "")) : !a && t.isDefined(i) && (s.css(i, p(o)), s.css(n, ""))
25112 clientRect: function(e, t, n) {
25114 t = v(t || r.offsetParent || document.body);
25115 var i = r.getBoundingClientRect(),
25116 o = n ? t.getBoundingClientRect() : {
25123 left: i.left - o.left,
25124 top: i.top - o.top,
25129 offsetRect: function(e, t) {
25130 return w.clientRect(e, t, !0)
25132 nodesToArray: function(e) {
25134 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
25137 getViewportTop: function() {
25138 return e.scrollY || e.pageYOffset || 0
25140 findFocusTarget: function(e, n) {
25142 var r, i = e[0].querySelectorAll(n);
25143 return i && i.length && i.length && t.forEach(i, function(e) {
25144 (e = t.element(e)).hasClass("md-autofocus") && (r = e)
25147 var i, o = this.prefixer("md-autofocus", !0);
25148 return (i = r(e, n || o)) || n == o || (i = r(e, this.prefixer("md-auto-focus", !0))) || (i = r(e, o)), i
25150 disableScrollAround: function(e, n, i) {
25151 if (i = i || {}, w.disableScrollAround._count = Math.max(0, w.disableScrollAround._count || 0), w.disableScrollAround._count++, w.disableScrollAround._restoreScroll) return w.disableScrollAround._restoreScroll;
25154 var e = r[0].documentElement,
25155 n = e.style.cssText || "",
25156 i = o.style.cssText || "",
25157 a = w.getViewportTop(),
25159 c = o.scrollHeight > o.clientHeight + 1,
25160 l = e.scrollTop > 0 ? e : o;
25161 return c && t.element(o).css({
25165 }), o.clientWidth < s && (o.style.overflow = "hidden"), c && (e.style.overflowY = "scroll"),
25167 o.style.cssText = i, e.style.cssText = n, l.scrollTop = a
25174 e = t.element(e || o);
25176 return i.disableScrollMask ? r = e : (r = t.element('<div class="md-scroll-mask"> <div class="md-scroll-mask-bar"></div></div>'), e.append(r)), r.on("wheel", n), r.on("touchmove", n),
25178 r.off("wheel"), r.off("touchmove"), !i.disableScrollMask && r[0].parentNode && r[0].parentNode.removeChild(r[0])
25181 return w.disableScrollAround._restoreScroll = function() {
25182 --w.disableScrollAround._count <= 0 && (a(), s(), delete w.disableScrollAround._restoreScroll)
25185 enableScrolling: function() {
25186 var e = this.disableScrollAround._restoreScroll;
25189 floatingScrollbars: function() {
25190 if (this.floatingScrollbars.cached === n) {
25191 var e = t.element("<div><div></div></div>").css({
25194 position: "absolute",
25196 "overflow-y": "scroll"
25198 e.children().css("height", "60px"), r[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
25200 return this.floatingScrollbars.cached
25202 forceFocus: function(t) {
25204 document.addEventListener("click", function e(t) {
25205 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
25207 var r = document.createEvent("MouseEvents");
25208 r.initMouseEvent("click", !1, !0, e, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), r.$material = !0, r.$focus = !0, n.dispatchEvent(r)
25210 createBackdrop: function(e, t) {
25211 return a(w.supplant('<md-backdrop class="{0}">', [t]))(e)
25213 supplant: function(e, t, n) {
25214 return n = n || /\{([^\{\}]*)\}/g, e.replace(n, function(e, n) {
25215 var r = n.split("."),
25218 for (var o in r) r.hasOwnProperty(o) && (i = i[r[o]])
25222 return "string" == typeof i || "number" == typeof i ? i : e
25225 fakeNgModel: function() {
25228 $setTouched: t.noop,
25229 $setViewValue: function(e) {
25230 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
25234 $isEmpty: function(e) {
25235 return 0 === ("" + e).length
25239 $viewChangeListeners: [],
25243 debounce: function(e, t, r, i) {
25245 return function() {
25247 c = Array.prototype.slice.call(arguments);
25248 o.cancel(a), a = o(function() {
25249 a = n, e.apply(s, c)
25253 throttle: function(e, t) {
25255 return function() {
25259 (!n || o - n > t) && (e.apply(r, i), n = o)
25262 time: function(e) {
25264 return e(), w.now() - t
25266 valueOnUse: function(e, t, n) {
25268 i = Array.prototype.slice.call(arguments),
25269 o = i.length > 3 ? i.slice(3) : [];
25270 Object.defineProperty(e, t, {
25272 return null === r && (r = n.apply(e, o)), r
25276 nextUid: function() {
25279 disconnectScope: function(e) {
25280 if (e && e.$root !== e && !e.$$destroyed) {
25282 e.$$disconnected = !0, t.$$childHead === e && (t.$$childHead = e.$$nextSibling), t.$$childTail === e && (t.$$childTail = e.$$prevSibling), e.$$prevSibling && (e.$$prevSibling.$$nextSibling = e.$$nextSibling), e.$$nextSibling && (e.$$nextSibling.$$prevSibling = e.$$prevSibling), e.$$nextSibling = e.$$prevSibling = null
25285 reconnectScope: function(e) {
25286 if (e && e.$root !== e && e.$$disconnected) {
25289 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
25292 getClosest: function(e, n, r) {
25293 if (t.isString(n)) {
25294 var i = n.toUpperCase();
25296 return e.nodeName.toUpperCase() === i
25299 if (e instanceof t.element && (e = e[0]), r && (e = e.parentNode), !e) return null;
25302 } while (e = e.parentNode);
25305 elementContains: function(n, r) {
25306 return (e.Node && e.Node.prototype && Node.prototype.contains ? t.bind(n, n.contains) : t.bind(n, function(e) {
25307 return n === r || !!(16 & this.compareDocumentPosition(e))
25310 extractElementByName: function(e, n, r, i) {
25312 return a(e) || (r ? s(e) : null)
25317 for (var t = 0, r = e.length; t < r; t++)
25318 if (e[t].nodeName.toLowerCase() === n) return e[t];
25325 for (var n = 0, r = e.length; n < r; n++) {
25328 for (var a = 0, s = i.childNodes.length; a < s; a++) t = t || o([i.childNodes[a]])
25333 return !c && i && u.warn(w.supplant("Unable to find node '{0}' in element '{1}'.", [n, e[0].outerHTML])), t.element(c || e)
25335 initOptionalProperties: function(e, n, r) {
25336 r = r || {}, t.forEach(e.$$isolateBindings, function(i, o) {
25337 if (i.optional && t.isUndefined(e[o])) {
25338 var a = t.isDefined(n[i.attrName]);
25339 e[o] = t.isDefined(r[o]) ? r[o] : a
25343 nextTick: function(e, t, n) {
25344 var r = w.nextTick,
25350 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = a, i || (r.timeout = o(function() {
25353 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
25354 e.scope && e.scope.$$destroyed || e.callback()
25355 }), t && s.$digest()
25358 processTemplate: function(e) {
25359 return _ ? e : e && t.isString(e) ? e.replace(/\{\{/g, b).replace(/}}/g, y) : e
25361 getParentWithPointerEvents: function(e) {
25362 for (var t = e.parent(); $(t, "pointer-events", "none");) t = t.parent();
25365 getNearestContentElement: function(e) {
25366 for (var t = e.parent()[0]; t && t !== d[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
25369 checkStickySupport: function() {
25370 var e, n = t.element("<div>");
25371 r[0].body.appendChild(n[0]);
25372 for (var i = ["sticky", "-webkit-sticky"], o = 0; o < i.length; ++o)
25377 }), n.css("position") == i[o]) {
25381 return n.remove(), e
25383 parseAttributeBoolean: function(e, t) {
25384 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
25386 hasComputedStyle: $,
25387 isParentFormSubmitted: function(e) {
25388 var n = w.getClosest(e, "form"),
25389 r = n ? t.element(n).controller("form") : null;
25390 return !!r && r.$submitted
25392 animateScrollTo: function(e, t, n) {
25395 e.scrollTop = n, (c ? n < t : n > t) && h(r)
25400 return o(w.now() - l, a, s, e)
25403 function o(e, t, n, r) {
25404 if (e > r) return t + n;
25405 var i = (e /= r) * e;
25406 return t + n * (-2 * (i * e) + 3 * i)
25408 var a = e.scrollTop,
25414 uniq: function(e) {
25415 if (e) return e.filter(function(e, t, n) {
25416 return n.indexOf(e) === t
25420 return w.dom.animator = c(w), w
25422 r.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
25424 t.module("material.core").factory("$mdUtil", r), t.element.prototype.focus = t.element.prototype.focus || function() {
25425 return this.length && this[0].focus(), this
25426 }, t.element.prototype.blur = t.element.prototype.blur || function() {
25427 return this.length && this[0].blur(), this
25431 function e(e, n, r, i) {
25432 function o(e, r, i) {
25433 var o = t.element(e)[0] || e;
25434 !o || o.hasAttribute(r) && 0 !== o.getAttribute(r).length || c(o, r) || ((i = t.isString(i) ? i.trim() : "").length ? e.attr(r, i) : d && n.warn('ARIA: Attribute "', r, '", required for accessibility, is missing on node:', o))
25437 function a(t, n, r) {
25445 for (var t, n = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1), r = ""; t = n.nextNode();)(function(t) {
25446 for (; t.parentNode && (t = t.parentNode) !== e;)
25447 if (t.getAttribute && "true" === t.getAttribute("aria-hidden")) return !0
25448 })(t) || (r += t.textContent);
25449 return r.trim() || ""
25454 if (e.hasChildNodes())
25455 for (var i = e.childNodes, o = 0; o < i.length; o++) {
25457 1 === a.nodeType && a.hasAttribute(t) && (function(e) {
25458 return "none" === (e.currentStyle ? e.currentStyle : r.getComputedStyle(e)).display
25465 var n = t.element(e)[0] || e;
25466 return !!n.hasAttribute && (n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby") || n.hasAttribute("aria-describedby"))
25471 var r = t.element(e)[0] || e;
25472 return !!r.parentNode && (!! function(e) {
25473 if (!l(e)) return !1;
25474 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
25486 case "presentation":
25493 switch (e.tagName.toLowerCase()) {
25546 case "presentation":
25573 }(r.parentNode) || !!--n && u(r.parentNode, n))
25575 var d = this.showWarnings;
25579 expectWithText: function(e, t) {
25580 var n = s(e) || "";
25581 n.indexOf(i.startSymbol()) > -1 ? a(e, t, function() {
25585 expectWithoutText: function(e, t) {
25587 n.indexOf(i.startSymbol()) > -1 || n || o(e, t, n)
25591 parentHasAriaLabel: u
25594 e.$inject = ["$$rAF", "$log", "$window", "$interpolate"], t.module("material.core").provider("$mdAria", function() {
25599 disableWarnings: function() {
25600 t.showWarnings = !1
25602 $get: ["$$rAF", "$log", "$window", "$interpolate", function(n, r, i, o) {
25603 return e.apply(t, arguments)
25611 return !i || ("function" == typeof e.preAssignBindingsEnabled ? e.preAssignBindingsEnabled() : 1 === t.version.major && t.version.minor < 6)
25614 function r(e, t, n, r, i) {
25615 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
25618 this.respectPreAssignBindingsEnabled = function(e) {
25619 return t.isDefined(e) ? (i = e, this) : i
25620 }, this.$get = ["$q", "$templateRequest", "$injector", "$compile", "$controller", function(e, t, n, i, o) {
25621 return new r(e, t, n, i, o)
25622 }], r.prototype.compile = function(e) {
25623 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
25624 }, r.prototype._prepareContentElement = function(e) {
25625 var t = this._fetchContentElement(e);
25626 return this.$q.resolve({
25627 element: t.element,
25628 cleanup: t.restore,
25634 }, r.prototype._compileTemplate = function(e) {
25637 i = e.template || "",
25638 o = t.extend({}, e.resolve),
25639 a = t.extend({}, e.locals),
25640 s = e.transformTemplate || t.identity;
25641 return t.forEach(o, function(e, r) {
25642 t.isString(e) ? o[r] = n.$injector.get(e) : o[r] = n.$injector.invoke(e)
25643 }), t.extend(o, a), o.$$ngTemplate = r ? this.$templateRequest(r) : this.$q.when(i), this.$q.all(o).then(function(r) {
25644 var i = s(r.$$ngTemplate, e),
25645 o = e.element || t.element("<div>").html(i.trim()).contents();
25646 return n._compileElement(r, o, e)
25648 }, r.prototype._compileElement = function(e, n, r) {
25650 o = this.$compile(n),
25653 cleanup: n.remove.bind(n),
25655 link: function(s) {
25656 if (e.$scope = s, r.controller) {
25657 var c = t.extend({}, e, {
25660 l = i._createController(r, c, e);
25661 n.data("$ngControllerController", l), n.children().data("$ngControllerController", l), a.controller = l
25667 }, r.prototype._createController = function(e, r, i) {
25668 var o = this.$controller(e.controller, r, !0, e.controllerAs);
25669 n() && e.bindToController && t.extend(o.instance, i);
25671 return !n() && e.bindToController && t.extend(o.instance, i), t.isFunction(a.$onInit) && a.$onInit(), a
25672 }, r.prototype._fetchContentElement = function(e) {
25674 var t = e.parentNode,
25675 n = e.nextElementSibling;
25676 return function() {
25677 n ? t.insertBefore(e, n) : t.appendChild(e)
25680 var r = e.contentElement,
25682 return t.isString(r) ? i = n(r = document.querySelector(r)) : (r = r[0] || r, i = document.contains(r) ? n(r) : function() {
25683 r.parentNode && r.parentNode.removeChild(r)
25685 element: t.element(r),
25690 t.module("material.core").provider("$mdCompiler", e), e.$inject = ["$compileProvider"]
25695 function r(n, r, i) {
25697 return function(t, n) {
25698 n.distance < this.state.options.maxDistance && this.dispatchEvent(t, e, n)
25701 var s = navigator.userAgent || navigator.vendor || e.opera,
25702 c = s.match(/ipad|iphone|ipod/i),
25703 u = s.match(/android/i),
25705 for (var e = document.createElement("div"), n = ["", "webkit", "Moz", "MS", "ms", "o"], r = 0; r < n.length; r++) {
25707 o = i ? i + "TouchAction" : "touchAction";
25708 if (t.isDefined(e.style[o])) return o
25711 h = void 0 !== e.jQuery && t.element === e.jQuery,
25713 handler: function(e, r) {
25715 return t.extend(i, r), p[e] = i, v
25717 register: function(e, t, n) {
25718 var r = p[t.replace(/^\$md./, "")];
25719 if (!r) throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(p).join(", "));
25720 return r.registerElement(e, n)
25722 isHijackingClicks: (c || u) && !h && !m
25724 return v.isHijackingClicks && (v.handler("click", {
25729 }), v.handler("focus", {
25733 onEnd: function(e, t) {
25734 t.distance < this.state.options.maxDistance && d(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
25736 }), v.handler("mouseup", {
25740 onEnd: o("mouseup")
25741 }), v.handler("mousedown", {
25742 onStart: function(e) {
25743 this.dispatchEvent(e, "mousedown")
25745 })), v.handler("press", {
25746 onStart: function(e, t) {
25747 this.dispatchEvent(e, "$md.pressdown")
25749 onEnd: function(e, t) {
25750 this.dispatchEvent(e, "$md.pressup")
25752 }).handler("hold", {
25757 onCancel: function() {
25758 i.cancel(this.state.timeout)
25760 onStart: function(e, n) {
25761 if (!this.state.registeredParent) return this.cancel();
25765 }, this.state.timeout = i(t.bind(this, function() {
25766 this.dispatchEvent(e, "$md.hold"), this.cancel()
25767 }), this.state.options.delay, !1)
25769 onMove: function(e, t) {
25770 f || "touchmove" !== e.type || e.preventDefault();
25771 var n = this.state.pos.x - t.x,
25772 r = this.state.pos.y - t.y;
25773 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
25775 onEnd: function() {
25778 }).handler("drag", {
25782 cancelMultiplier: 1.5
25784 onSetup: function(e, t) {
25785 f && (this.oldTouchAction = e[0].style[f], e[0].style[f] = t.horizontal ? "pan-y" : "pan-x")
25787 onCleanup: function(e) {
25788 this.oldTouchAction && (e[0].style[f] = this.oldTouchAction)
25790 onStart: function(e) {
25791 this.state.registeredParent || this.cancel()
25793 onMove: function(e, t) {
25795 f || "touchmove" !== e.type || e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, r = Math.abs(t.distanceY) > this.state.options.minDistance * this.state.options.cancelMultiplier) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, r = Math.abs(t.distanceX) > this.state.options.minDistance * this.state.options.cancelMultiplier), n ? (this.state.dragPointer = a(e), l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
25797 dispatchDragMove: r.throttle(function(e) {
25798 this.state.isRunning && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
25800 onEnd: function(e, t) {
25801 this.state.dragPointer && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
25803 }).handler("swipe", {
25808 onEnd: function(e, t) {
25810 Math.abs(t.velocityX) > this.state.options.minVelocity && Math.abs(t.distanceX) > this.state.options.minDistance ? (n = "left" == t.directionX ? "$md.swipeleft" : "$md.swiperight", this.dispatchEvent(e, n)) : Math.abs(t.velocityY) > this.state.options.minVelocity && Math.abs(t.distanceY) > this.state.options.minDistance && (n = "up" == t.directionY ? "$md.swipeup" : "$md.swipedown", this.dispatchEvent(e, n))
25816 this.name = e, this.state = {}
25821 !e.clientX && !e.clientY || e.$material || e.isIonicTap || c(e) || "mousedown" === e.type && (d(e.target) || d(document.activeElement)) || (e.preventDefault(), e.stopPropagation())
25826 for (var i in p)(r = p[i]) instanceof n && ("start" === e && r.cancel(), r[e](t, f))
25828 document.contains || (document.contains = function(e) {
25829 return document.body.contains(e)
25830 }), !b && e.isHijackingClicks && (document.addEventListener("click", function(e) {
25831 var t = 0 === e.clientX && 0 === e.clientY,
25832 n = e.target && "submit" === e.target.type;
25833 t || e.$material || e.isIonicTap || c(e) || n ? (v = null, "label" == e.target.tagName.toLowerCase() && (v = {
25836 })) : (e.preventDefault(), e.stopPropagation(), v = null)
25837 }, !0), document.addEventListener("mouseup", r, !0), document.addEventListener("mousedown", r, !0), document.addEventListener("focus", r, !0), b = !0);
25838 t.element(document).on("mousedown touchstart pointerdown", function(e) {
25840 var t = +Date.now();
25841 h && !s(e, h) && t - h.endTime < 1500 || (f = a(e), i("start", e))
25843 }).on("mousemove touchmove pointermove", function(e) {
25844 f && s(e, f) && (l(e, f), i("move", e))
25845 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
25846 f && s(e, f) && (l(e, f), f.endTime = +Date.now(), "pointercancel" !== e.type && i("end", e), h = f, f = null)
25847 }).on("$$mdGestureReset", function() {
25855 startTime: +Date.now(),
25857 type: e.type.charAt(0)
25859 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
25863 return e && t && e.type.charAt(0) === t.type
25867 return v && v.x == e.x && v.y == e.y
25874 t.distanceX = r - t.startX, t.distanceY = i - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = t.distanceX > 0 ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = t.distanceY > 0 ? "down" : t.distanceY < 0 ? "up" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
25878 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
25882 return !!e && "-1" != e.getAttribute("tabindex") && !e.hasAttribute("disabled") && (e.hasAttribute("tabindex") || e.hasAttribute("href") || e.isContentEditable || -1 != ["INPUT", "SELECT", "BUTTON", "TEXTAREA", "VIDEO", "AUDIO"].indexOf(e.nodeName))
25884 r.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"], o.$inject = ["$mdGesture", "$$MdGestureHandler"];
25890 t.module("material.core.gestures", []).provider("$mdGesture", n).factory("$$MdGestureHandler", function() {
25891 var n = void 0 !== e.jQuery && t.element === e.jQuery;
25892 return i.prototype = {
25894 dispatchEvent: n ? function(e, n, r) {
25896 var i = new t.element.Event(n);
25897 i.$material = !0, i.pointer = r, i.srcEvent = e, t.extend(i, {
25904 ctrlKey: e.ctrlKey,
25906 shiftKey: e.shiftKey,
25908 }), t.element(r.target).trigger(i)
25909 } : function(t, n, r) {
25912 "click" === n || "mouseup" == n || "mousedown" == n ? (i = document.createEvent("MouseEvents")).initMouseEvent(n, !0, !0, e, t.detail, r.x, r.y, r.x, r.y, t.ctrlKey, t.altKey, t.shiftKey, t.metaKey, t.button, t.relatedTarget || null) : (i = document.createEvent("CustomEvent")).initCustomEvent(n, !0, !0, {}), i.$material = !0, i.pointer = r, i.srcEvent = t, r.target.dispatchEvent(i)
25920 start: function(e, n) {
25921 if (!this.state.isRunning) {
25922 var r = this.getNearestParent(e.target),
25923 i = r && r.$mdGesture[this.name] || {};
25926 options: t.extend({}, this.options, i),
25927 registeredParent: r
25928 }, this.onStart(e, n)
25931 move: function(e, t) {
25932 this.state.isRunning && this.onMove(e, t)
25934 end: function(e, t) {
25935 this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
25937 cancel: function(e, t) {
25938 this.onCancel(e, t), this.state = {}
25940 getNearestParent: function(e) {
25941 for (var t = e; t;) {
25942 if ((t.$mdGesture || {})[this.name]) return t;
25947 registerElement: function(e, t) {
25949 delete e[0].$mdGesture[r.name], e.off("$destroy", n), r.onCleanup(e, t || {})
25952 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), r.onSetup(e, t || {}), n
25955 }).run(o), n.prototype = {
25956 skipClickHijack: function() {
25959 setMaxClickDistance: function(e) {
25962 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
25963 return new r(e, t, n)
25969 this.$timeout = e, this.$mdUtil = n, this.bodyElement = t.element(document.body), this.isBuffering = !1, this.bufferTimeout = null, this.lastInteractionType = null, this.lastInteractionTime = null, this.inputEventMap = {
25970 keydown: "keyboard",
25971 mousedown: "mouse",
25972 mouseenter: "mouse",
25973 touchstart: "touch",
25974 pointerdown: "pointer",
25975 MSPointerDown: "pointer"
25976 }, this.iePointerMap = {
25980 }, this.initializeEvents()
25982 n.$inject = ["$timeout", "$mdUtil"], t.module("material.core.interaction", []).service("$mdInteraction", n), n.prototype.initializeEvents = function() {
25983 var t = "MSPointerEvent" in e ? "MSPointerDown" : "PointerEvent" in e ? "pointerdown" : null;
25984 this.bodyElement.on("keydown mousedown", this.onInputEvent.bind(this)), "ontouchstart" in document.documentElement && this.bodyElement.on("touchstart", this.onBufferInputEvent.bind(this)), t && this.bodyElement.on(t, this.onInputEvent.bind(this))
25985 }, n.prototype.onInputEvent = function(e) {
25986 if (!this.isBuffering) {
25987 var t = this.inputEventMap[e.type];
25988 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
25990 }, n.prototype.onBufferInputEvent = function(e) {
25991 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
25992 this.isBuffering = !1
25993 }.bind(this), 650, !1)
25994 }, n.prototype.getLastInteractionType = function() {
25995 return this.lastInteractionType
25996 }, n.prototype.isUserInvoked = function(e) {
25997 var n = t.isNumber(e) ? e : 15;
25998 return this.lastInteractionTime >= this.$mdUtil.now() - n
26002 t.module("material.core").provider("$$interimElement", function() {
26007 return i[e] = u, r.invoke(t || function() {
26015 show: function(e) {
26016 return (e = e || {})._options && (e = e._options), l.show(t.extend({}, c, e))
26018 destroy: function(e) {
26019 return l.destroy(e)
26022 return s = o.methods || [], c = a(o.optionsFactory, {}), t.forEach(i, function(e, t) {
26024 }), t.forEach(o.presets, function(e, n) {
26026 this._options = t.extend({}, i, e)
26028 var i = a(e.optionsFactory, {}),
26029 o = (e.methods || []).concat(s);
26032 }), t.forEach(o, function(e) {
26033 r.prototype[e] = function(t) {
26034 return this._options[e] = t, this
26037 var c = "show" + n.charAt(0).toUpperCase() + n.slice(1);
26038 u[c] = function(e) {
26043 u[n] = function(n) {
26044 return arguments.length && e.argOption && !t.isObject(n) && !t.isArray(n) ? (new r)[e.argOption](n) : new r(n)
26048 n.$inject = ["$$interimElement", "$injector"];
26049 var r = ["onHide", "onShow", "onRemove"],
26055 setDefaults: function(e) {
26056 return o.optionsFactory = e.options, o.methods = (e.methods || []).concat(r), a
26058 addPreset: function(t, n) {
26059 if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function() {
26061 }, /^cancel|hide|show$/.test(t)) throw new Error("Preset '" + t + "' in " + e + " is reserved!");
26062 if (n.methods.indexOf("_options") > -1) throw new Error("Method '_options' in " + e + " is reserved!");
26063 return o.presets[t] = {
26064 methods: n.methods.concat(r),
26065 optionsFactory: n.options,
26066 argOption: n.argOption
26069 addMethod: function(e, t) {
26074 return a.addPreset("build", {
26075 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
26079 function r(e, r, i, o, a, s, c, l, u, d, f) {
26080 return function() {
26082 return function() {
26084 return y.length ? e.apply(m, t) : v.length ? v[0].finally(function() {
26085 return e.apply(m, t)
26086 }) : r.when("No interim elements currently showing up.")
26092 return (e.skipCompile ? null : l.compile(e)) || r(function(t) {
26103 t.extend(e.locals, n);
26104 var r = e.link(n.scope);
26105 return n.element = r, n.parent = p(r, n), n.themable && u(r), r
26110 if (!((i = t.isFunction(i) ? i(r.scope, n, r) : t.isString(i) ? t.element(e[0].querySelector(i)) : t.element(i)) || {}).length) {
26112 return a[0] && a[0].querySelector && (o = a[0].querySelector(":not(svg) > body")), o || (o = a[0]), "#comment" == o.nodeName && (o = e[0].body), t.element(o)
26119 d.hideDelay && (e = o(m.hide, d.hideDelay), r = function() {
26121 }), d.cancelAutoHide = function() {
26122 r(), d.cancelAutoHide = n
26126 function v(e, n, i) {
26127 var o = n.onShowing || t.noop,
26128 a = n.onComplete || t.noop;
26130 o(n.scope, e, n, i)
26134 return r(function(t, o) {
26136 r.when(n.onShow(n.scope, e, n, i)).then(function() {
26137 a(n.scope, e, n), g(), t(e)
26146 var i = n.onRemoving || t.noop;
26147 return r(function(t, o) {
26149 var a = r.when(n.onRemove(n.scope, e, n) || !0);
26150 i(e, a), n.$destroy ? (t(e), !n.preserveScope && n.scope && a.then(function() {
26152 })) : a.then(function() {
26153 !n.preserveScope && n.scope && n.scope.$destroy(), t(e)
26160 var y, _, $ = r.when(!0);
26161 return d = function(e) {
26162 return (e = e || {}).template && (e.template = c.processTemplate(e.template)), t.extend({
26164 cancelAutoHide: t.noop,
26165 scope: e.scope || i.$new(e.isolateScope),
26166 onShow: function(e, t, n) {
26167 return s.enter(t, n.parent)
26169 onRemove: function(e, t) {
26170 return t && s.leave(t) || r.when()
26175 deferred: r.defer(),
26177 return r(function(e, t) {
26179 y.deferred.reject(e), t(e)
26181 d.onCompiling && d.onCompiling(d), f(d).then(function(t) {
26182 _ = h(t, d), d.cleanupElement = t.cleanup, $ = v(_, d, t.controller).then(e, n)
26186 remove: function(e, n, i) {
26188 y.deferred.resolve(e)
26192 y.deferred.reject(e)
26194 return _ ? ((d = t.extend(d || {}, i || {})).cancelAutoHide && d.cancelAutoHide(), d.element.triggerHandler("$mdInterimElementRemove"), !0 === d.$destroy ? b(d.element, d).then(function() {
26196 }) : (r.when($).finally(function() {
26197 b(d.element, d).then(function() {
26200 }), y.deferred.promise)) : r.when(!1)
26209 show: function(e) {
26210 var t = new p((e = e || {}) || {}),
26211 n = e.multiple ? r.resolve() : r.all(v);
26212 e.multiple || (n = n.then(function() {
26213 var e = b.concat(y.map(m.cancel));
26216 var i = n.then(function() {
26217 return t.show().catch(function(e) {
26219 }).finally(function() {
26220 v.splice(v.indexOf(i), 1), y.push(t)
26223 return v.push(i), t.deferred.promise.catch(function(e) {
26224 return e instanceof Error && f(e), e
26225 }), t.deferred.promise
26227 hide: h(function(e, t) {
26229 var r = n.remove(e, !1, t || {}).catch(function(e) {
26231 }).finally(function() {
26232 b.splice(b.indexOf(r), 1)
26234 return y.splice(y.indexOf(n), 1), b.push(r), n.deferred.promise
26236 return (t = t || {}).closeAll ? r.all(y.slice().reverse().map(i)) : t.closeTo !== n ? r.all(y.slice(t.closeTo).map(i)) : i(y[y.length - 1])
26238 cancel: h(function(e, n) {
26240 if (!i) return r.when(e);
26241 var o = i.remove(e, !0, n || {}).catch(function(e) {
26243 }).finally(function() {
26244 b.splice(b.indexOf(o), 1)
26246 return b.push(o), i.deferred.promise.catch(t.noop)
26248 destroy: function(e) {
26249 var n = e ? null : y.shift(),
26250 i = t.element(e).length && t.element(e)[0].parentNode;
26252 var o = y.filter(function(e) {
26253 return e.options.element[0] === i
26255 o.length && (n = o[0], y.splice(y.indexOf(n), 1))
26257 return n ? n.remove(g, !1, {
26265 return r.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = r, e
26270 var e = !!document.querySelector("[md-layouts-disabled]");
26275 return k.enabled = !1, {
26282 return ["$timeout", function(n) {
26286 compile: function(r) {
26287 return k.enabled ? (r.addClass(e), function(t, r) {
26298 function n(t, n, r) {
26300 o = r.$observe(r.$normalize(e), i);
26301 i(f(e, r, "")), t.$on("$destroy", function() {
26305 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26306 return m = r, g = i, v = o, {
26308 compile: function(r, i) {
26310 return k.enabled && (c(e, i, r, v), l(e, f(e, i, ""), u(r, e, i)), o = n), o || t.noop
26320 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
26321 return m = r, g = i, v = o, {
26323 compile: function(r, i) {
26325 return k.enabled && (l(e, f(e, i, ""), u(r, e, i)), n(0, r), o = n), o || t.noop
26333 return function(i) {
26334 var o = l(n, i || "");
26335 t.isDefined(o) && (r && e.removeClass(r), r = o ? n + "-" + o.trim().replace(y, "-") : n, e.addClass(r))
26340 var n = e.split("-");
26341 return ["$log", function(r) {
26342 return r.warn(e + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), t.noop
26346 function c(e, t, n, r) {
26347 var i, o, a, s = n[0].nodeName.toLowerCase();
26348 switch (e.replace(b, "")) {
26350 "md-button" != s && "fieldset" != s || (o = "<" + s + " " + e + "></" + s + ">", a = "https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers", i = "Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.", r.warn(m.supplant(i, [o, a])))
26354 function l(e, n, r) {
26356 switch (e.replace(b, "")) {
26358 h(n, $) || (n = $[0]);
26361 h(n, _) || isNaN(n) && (n = "");
26363 case "flex-offset":
26365 n && !isNaN(+n) || (n = "0");
26367 case "layout-align":
26369 n = m.supplant("{main}-{cross}", i);
26371 case "layout-padding":
26372 case "layout-margin":
26373 case "layout-fill":
26374 case "layout-wrap":
26375 case "layout-nowrap":
26376 case "layout-nowrap":
26379 void 0 != n && (r || t.noop)(n)
26381 return n ? n.trim() : ""
26384 function u(e, t, n) {
26385 return function(e) {
26386 d(e) || (n[n.$normalize(t)] = e)
26391 return (e || "").indexOf(g.startSymbol()) > -1
26394 function f(e, t, n) {
26395 var r = t.$normalize(e);
26396 return t[r] ? t[r].trim().replace(y, "-") : n || null
26399 function h(e, t, n) {
26401 return (e = n && e ? e.replace(y, n) : e) && t.forEach(function(t) {
26402 t = n ? t.replace(y, n) : t, r = r || t === e
26411 return 0 !== (e = e || "").indexOf("-") && 0 !== e.indexOf(" ") || (e = "none" + e), (t = e.toLowerCase().trim().replace(y, "-").split("-")).length && "space" === t[0] && (t = [t[0] + "-" + t[1], t[2]]), t.length > 0 && (n.main = t[0] || n.main), t.length > 1 && (n.cross = t[1] || n.cross), w.indexOf(n.main) < 0 && (n.main = "start"), E.indexOf(n.cross) < 0 && (n.cross = "stretch"), n
26413 var m, g, v, b = /(-gt)?-(sm|md|lg|print)/g,
26415 _ = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
26416 $ = ["row", "column"],
26417 w = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
26418 E = ["", "start", "center", "end", "stretch"],
26425 return e.replace(d, "").replace(f, function(e, t, n, r) {
26426 return r ? n.toUpperCase() : n
26429 var d = /^((?:x|data)[\:\-_])/i,
26430 f = /([\:\-\_]+(.))/g,
26431 h = ["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"],
26432 p = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
26433 m = ["show", "hide", "layout-padding", "layout-margin"];
26434 t.forEach(h, function(e) {
26435 t.forEach(p, function(t) {
26436 var n = e ? t + "-" + e : t;
26437 a.directive(u(n), i(n))
26438 }), t.forEach(m, function(t) {
26439 var n = e ? t + "-" + e : t;
26440 a.directive(u(n), o(n))
26442 }), a.provider("$$mdLayout", function() {
26445 validateAttributeValue: l,
26446 validateAttributeUsage: c,
26447 disableLayouts: function(e) {
26448 k.enabled = !0 !== e
26451 }).directive("mdLayoutCss", n).directive("ngCloak", r("ng-cloak")).directive("layoutWrap", o("layout-wrap")).directive("layoutNowrap", o("layout-nowrap")).directive("layoutNoWrap", o("layout-no-wrap")).directive("layoutFill", o("layout-fill")).directive("layoutLtMd", s("layout-lt-md")).directive("layoutLtLg", s("layout-lt-lg")).directive("flexLtMd", s("flex-lt-md")).directive("flexLtLg", s("flex-lt-lg")).directive("layoutAlignLtMd", s("layout-align-lt-md")).directive("layoutAlignLtLg", s("layout-align-lt-lg")).directive("flexOrderLtMd", s("flex-order-lt-md")).directive("flexOrderLtLg", s("flex-order-lt-lg")).directive("offsetLtMd", s("flex-offset-lt-md")).directive("offsetLtLg", s("flex-offset-lt-lg")).directive("hideLtMd", s("hide-lt-md")).directive("hideLtLg", s("hide-lt-lg")).directive("showLtMd", s("show-lt-md")).directive("showLtLg", s("show-lt-lg")).config(e)
26452 }(t.module("material.core.layout", ["ng"]))
26456 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
26458 e.$inject = ["$timeout"], t.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
26459 t || (t = "polite");
26461 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
26462 n._liveElement.textContent = e
26463 }, n._announceTimeout, !1)
26464 }, e.prototype._createLiveElement = function() {
26465 var e = document.createElement("div");
26466 return e.classList.add("md-visually-hidden"), e.setAttribute("role", "status"), e.setAttribute("aria-atomic", "true"), e.setAttribute("aria-live", "polite"), document.body.appendChild(e), e
26468 }(), t.module("material.core.meta", []).provider("$$mdMeta", function() {
26470 if (r[e]) return !0;
26471 var n = document.getElementsByName(e)[0];
26472 return !!n && (r[e] = t.element(n), !0)
26474 var n = t.element(document.head),
26477 setMeta: function(i, o) {
26478 if (e(i), r[i]) r[i].attr("content", o);
26480 var a = t.element('<meta name="' + i + '" content="' + o + '"/>');
26481 n.append(a), r[i] = a
26483 return function() {
26484 r[i].attr("content", ""), r[i].remove(), delete r[i]
26487 getMeta: function(t) {
26488 if (!e(t)) throw Error("$$mdMeta: could not find a meta tag with the name '" + t + "'");
26489 return r[t].attr("content")
26492 return t.extend({}, i, {
26501 return e && "" !== e
26506 notFoundError: function(t, n) {
26507 e.error((n || "") + "No instance found for handle", t)
26509 getInstances: function() {
26513 if (!i(e)) return null;
26515 for (t = 0, n = a.length; t < n; t++)
26516 if ((r = a[t]).$$mdHandle === e) return r;
26519 register: function(e, n) {
26520 return n ? (e.$$mdHandle = n, a.push(e), function() {
26522 t && (t.forEach(function(t) {
26526 var t = a.indexOf(e); - 1 !== t && a.splice(t, 1)
26529 when: function(e) {
26533 return a ? t.resolve(a) : (s[e] === n && (s[e] = []), s[e].push(t)), t.promise
26535 return r.reject("Invalid `md-component-id` value.")
26539 e.$inject = ["$log", "$q"], t.module("material.core").factory("$mdComponentRegistry", e)
26544 return e.hasClass("md-icon-button") ? {
26545 isMenuItem: e.hasClass("md-menu-item"),
26549 isMenuItem: e.hasClass("md-menu-item"),
26554 attach: function(r, i, o) {
26555 return o = t.extend(n(i), o), e.attach(r, i, o)
26559 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdButtonInkRipple", e)
26564 attach: function(n, r, i) {
26565 return e.attach(n, r, t.extend({
26573 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdCheckboxInkRipple", e)
26578 attach: function(n, r, i) {
26579 return e.attach(n, r, t.extend({
26588 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdListInkRipple", e)
26593 controller: t.noop,
26594 link: function(t, r, i) {
26595 i.hasOwnProperty("mdInkRippleCheckbox") ? n.attach(t, r) : e.attach(t, r)
26600 function n(e, n, r, i, o, a, s) {
26601 this.$window = i, this.$timeout = o, this.$mdUtil = a, this.$mdColorUtil = s, this.$scope = e, this.$element = n, this.options = r, this.mousedown = !1, this.ripples = [], this.timeout = null, this.lastRipple = null, a.valueOnUse(this, "container", this.createContainer), this.$element.addClass("md-ink-ripple"), (n.controller("mdInkRipple") || {}).createRipple = t.bind(this, this.createRipple), (n.controller("mdInkRipple") || {}).setColor = t.bind(this, this.color), this.bindEvents()
26605 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(t.bind(e, n), !1))
26613 n.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], t.module("material.core").provider("$mdInkRipple", function() {
26616 disableInkRipple: function() {
26619 $get: ["$injector", function(r) {
26621 attach: function(i, o, a) {
26622 return e || o.controller("mdNoInk") ? t.noop : r.instantiate(n, {
26631 }).directive("mdInkRipple", e).directive("mdNoInk", i).directive("mdNoBar", i).directive("mdNoStretch", i);
26632 n.prototype.color = function(e) {
26634 return t.isDefined(e) && (n._color = n._parseColor(e)), n._color || n._parseColor(n.inkRipple()) || n._parseColor(function() {
26635 var e = n.options && n.options.colorElement ? n.options.colorElement : [],
26636 t = e.length ? e[0] : n.$element[0];
26637 return t ? n.$window.getComputedStyle(t).color : "rgb(0,0,0)"
26639 }, n.prototype.calculateColor = function() {
26640 return this.color()
26641 }, n.prototype._parseColor = function(e, t) {
26643 var n = this.$mdColorUtil;
26644 if (e) return 0 === e.indexOf("rgba") ? e.replace(/\d?\.?\d*\s*\)\s*$/, (.1 * t).toString() + ")") : 0 === e.indexOf("rgb") ? n.rgbToRgba(e) : 0 === e.indexOf("#") ? n.hexToRgba(e) : void 0
26645 }, n.prototype.bindEvents = function() {
26646 this.$element.on("mousedown", t.bind(this, this.handleMousedown)), this.$element.on("mouseup touchend", t.bind(this, this.handleMouseup)), this.$element.on("mouseleave", t.bind(this, this.handleMouseup)), this.$element.on("touchmove", t.bind(this, this.handleTouchmove))
26647 }, n.prototype.handleMousedown = function(e) {
26648 if (!this.mousedown)
26649 if (e.hasOwnProperty("originalEvent") && (e = e.originalEvent), this.mousedown = !0, this.options.center) this.createRipple(this.container.prop("clientWidth") / 2, this.container.prop("clientWidth") / 2);
26650 else if (e.srcElement !== this.$element[0]) {
26651 var t = this.$element[0].getBoundingClientRect(),
26652 n = e.clientX - t.left,
26653 r = e.clientY - t.top;
26654 this.createRipple(n, r)
26655 } else this.createRipple(e.offsetX, e.offsetY)
26656 }, n.prototype.handleMouseup = function() {
26657 r(this, this.clearRipples)
26658 }, n.prototype.handleTouchmove = function() {
26659 r(this, this.deleteRipples)
26660 }, n.prototype.deleteRipples = function() {
26661 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
26662 }, n.prototype.clearRipples = function() {
26663 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
26664 }, n.prototype.createContainer = function() {
26665 var e = t.element('<div class="md-ripple-container"></div>');
26666 return this.$element.append(e), e
26667 }, n.prototype.clearTimeout = function() {
26668 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
26669 }, n.prototype.isRippleAllowed = function() {
26670 var e = this.$element[0];
26672 if (!e.tagName || "BODY" === e.tagName) break;
26673 if (e && t.isFunction(e.hasAttribute)) {
26674 if (e.hasAttribute("disabled")) return !1;
26675 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
26677 } while (e = e.parentNode);
26679 }, n.prototype.inkRipple = function() {
26680 return this.$element.attr("md-ink-ripple")
26681 }, n.prototype.createRipple = function(e, n) {
26682 if (this.isRippleAllowed()) {
26684 i = r.$mdColorUtil,
26685 o = t.element('<div class="md-ripple"></div>'),
26686 a = this.$element.prop("clientWidth"),
26687 s = this.$element.prop("clientHeight"),
26688 c = 2 * Math.max(Math.abs(a - e), e),
26689 l = 2 * Math.max(Math.abs(s - n), n),
26690 u = function(e, t, n) {
26691 return e ? Math.max(t, n) : Math.sqrt(Math.pow(t, 2) + Math.pow(n, 2))
26692 }(this.options.fitRipple, c, l),
26693 d = this.calculateColor();
26697 background: "black",
26700 backgroundColor: i.rgbaToRgb(d),
26701 borderColor: i.rgbaToRgb(d)
26702 }), this.lastRipple = o, this.clearTimeout(), this.timeout = this.$timeout(function() {
26703 r.clearTimeout(), r.mousedown || r.fadeInComplete(o)
26704 }, 157.5, !1), this.options.dimBackground && this.container.css({
26706 }), this.container.append(o), this.ripples.push(o), o.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
26707 o.addClass("md-ripple-scaled md-ripple-active"), r.$timeout(function() {
26712 }, n.prototype.fadeInComplete = function(e) {
26713 this.lastRipple === e ? this.timeout || this.mousedown || this.removeRipple(e) : this.removeRipple(e)
26714 }, n.prototype.removeRipple = function(e) {
26716 this.ripples.indexOf(e) < 0 || (this.ripples.splice(this.ripples.indexOf(e), 1), e.removeClass("md-ripple-active"), e.addClass("md-ripple-remove"), 0 === this.ripples.length && this.container.css({
26717 backgroundColor: ""
26718 }), this.$timeout(function() {
26719 t.fadeOutComplete(e)
26721 }, n.prototype.fadeOutComplete = function(e) {
26722 e.remove(), this.lastRipple = null
26728 attach: function(n, r, i) {
26729 return e.attach(n, r, t.extend({
26738 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdTabInkRipple", e)
26739 }(), t.module("material.core.theming.palette", []).constant("$mdColorPalette", {
26755 contrastDefaultColor: "light",
26756 contrastDarkColors: "50 100 200 300 A100",
26757 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
26774 contrastDefaultColor: "light",
26775 contrastDarkColors: "50 100 200 A100",
26776 contrastStrongLightColors: "500 600 A200 A400 A700"
26793 contrastDefaultColor: "light",
26794 contrastDarkColors: "50 100 200 A100",
26795 contrastStrongLightColors: "300 400 A200 A400 A700"
26812 contrastDefaultColor: "light",
26813 contrastDarkColors: "50 100 200 A100",
26814 contrastStrongLightColors: "300 400 A200"
26831 contrastDefaultColor: "light",
26832 contrastDarkColors: "50 100 200 A100",
26833 contrastStrongLightColors: "300 400 A200 A400"
26850 contrastDefaultColor: "light",
26851 contrastDarkColors: "50 100 200 300 400 A100",
26852 contrastStrongLightColors: "500 600 700 A200 A400 A700"
26869 contrastDefaultColor: "dark",
26870 contrastLightColors: "600 700 800 900 A700",
26871 contrastStrongLightColors: "600 700 800 A700"
26888 contrastDefaultColor: "dark",
26889 contrastLightColors: "700 800 900",
26890 contrastStrongLightColors: "700 800 900"
26907 contrastDefaultColor: "dark",
26908 contrastLightColors: "500 600 700 800 900",
26909 contrastStrongLightColors: "500 600 700"
26926 contrastDefaultColor: "dark",
26927 contrastLightColors: "500 600 700 800 900",
26928 contrastStrongLightColors: "500 600 700"
26945 contrastDefaultColor: "dark",
26946 contrastLightColors: "700 800 900",
26947 contrastStrongLightColors: "700 800 900"
26964 contrastDefaultColor: "dark",
26965 contrastLightColors: "900",
26966 contrastStrongLightColors: "900"
26983 contrastDefaultColor: "dark"
27000 contrastDefaultColor: "dark"
27017 contrastDefaultColor: "dark",
27018 contrastLightColors: "800 900",
27019 contrastStrongLightColors: "800 900"
27036 contrastDefaultColor: "light",
27037 contrastDarkColors: "50 100 200 300 400 A100 A200",
27038 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
27055 contrastDefaultColor: "light",
27056 contrastDarkColors: "50 100 200 A100 A200",
27057 contrastStrongLightColors: "300 400"
27074 contrastDefaultColor: "dark",
27075 contrastLightColors: "600 700 800 900 A200 A400 A700"
27092 contrastDefaultColor: "light",
27093 contrastDarkColors: "50 100 200 300 A100 A200",
27094 contrastStrongLightColors: "400 500 700"
27099 var t = !!document.querySelector("[md-themes-disabled]");
27100 e.disableTheming(t)
27105 var n = C.filter(function(e) {
27108 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
27113 if (h[t]) return h[t];
27114 var r = "string" == typeof(n = n || "default") ? h[n] : n,
27116 return r && e.forEach(r.colors, function(t, n) {
27119 hues: e.extend({}, t.hues)
27126 if ((t = 0 === arguments.length || !!t) !== r.isDark) {
27127 r.isDark = t, r.foregroundPalette = r.isDark ? m : p, r.foregroundShadow = r.isDark ? g : v;
27128 var n = r.isDark ? k : E,
27129 i = r.isDark ? E : k;
27130 return e.forEach(n, function(e, t) {
27131 var n = r.colors[t],
27134 for (var a in n.hues) n.hues[a] === o[a] && (n.hues[a] = e[a])
27139 r.name = t, r.colors = {}, r.dark = n, n(!1), $.forEach(function(t) {
27140 var n = (r.isDark ? k : E)[t];
27141 r[t + "Palette"] = function(i, o) {
27142 var a = r.colors[t] = {
27144 hues: e.extend({}, n, o)
27146 return Object.keys(a.hues).forEach(function(e) {
27147 if (!n[e]) throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", r.name).replace("%3", i).replace("%4", Object.keys(n).join(", ")))
27148 }), Object.keys(a.hues).map(function(e) {
27150 }).forEach(function(e) {
27151 if (-1 == C.indexOf(e)) throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1", e).replace("%2", r.name).replace("%3", t).replace("%4", i).replace("%5", C.join(", ")))
27153 }, r[t + "Color"] = function() {
27154 var e = Array.prototype.slice.call(arguments);
27155 return console.warn("$mdThemingProviderTheme." + t + "Color() has been deprecated. Use $mdThemingProviderTheme." + t + "Palette() instead."), r[t + "Palette"].apply(r, e)
27160 function l(t, r, i, a) {
27162 return e === n || "" === e || l.THEMES[e] !== n
27164 var l = function(e, r) {
27165 r === n && (r = e, e = n), e === n && (e = t), l.inherit(r, r)
27167 return Object.defineProperty(l, "THEMES", {
27169 return e.extend({}, h)
27171 }), Object.defineProperty(l, "PALETTES", {
27173 return e.extend({}, f)
27175 }), Object.defineProperty(l, "ALWAYS_WATCH", {
27179 }), l.inherit = function(e, t) {
27182 s(t) || a.warn("Attempted to use unregistered theme '" + t + "'. Register it with $mdThemingProvider.theme().");
27183 var n = e.data("$mdThemeName");
27184 n && e.removeClass("md-" + n + "-theme"), e.addClass("md-" + t + "-theme"), e.data("$mdThemeName", t), i && e.data("$mdThemeController", i)
27187 var i = t.controller("mdTheme") || e.data("$mdThemeController");
27188 if (n(i && i.$mdTheme || ("default" == y ? "" : y)), i) var o = b || i.$shouldWatch || r.parseAttributeBoolean(e.attr("md-theme-watch")),
27189 c = i.registerChanges(function(t) {
27190 n(t), o ? e.on("$destroy", c) : c()
27192 }, l.registered = s, l.defaultTheme = function() {
27194 }, l.generateTheme = function(e) {
27195 c(h[e], e, x.nonce)
27196 }, l.defineTheme = function(e, t) {
27199 return t.primary && n.primaryPalette(t.primary), t.accent && n.accentPalette(t.accent), t.warn && n.warnPalette(t.warn), t.background && n.backgroundPalette(t.background), t.dark && n.dark(), this.generateTheme(e), i.resolve(e)
27200 }, l.setBrowserColor = w, l
27202 l.$inject = ["$rootScope", "$mdUtil", "$q", "$log"], f = {};
27207 var _ = function(e) {
27208 var t = r.setMeta("theme-color", e),
27209 n = r.setMeta("msapplication-navbutton-color", e);
27210 return function() {
27215 var n = (t = e.isObject(t) ? t : {}).theme || "default",
27216 r = t.hue || "800",
27217 i = f[t.palette] || f[h[n].colors[t.palette || "primary"].name],
27218 o = e.isObject(i[r]) ? i[r].hex : i[r];
27222 definePalette: function(e, t) {
27223 return t = t || {}, f[e] = i(e, t), u
27225 extendPalette: function(t, n) {
27226 return i(t, e.extend({}, f[t] || {}, n))
27229 configuration: function() {
27230 return e.extend({}, x, {
27232 alwaysWatchTheme: b,
27233 registeredStyles: [].concat(x.registeredStyles)
27236 disableTheming: function(t) {
27237 x.disableTheming = e.isUndefined(t) || !!t
27239 registerStyles: function(e) {
27240 x.registeredStyles.push(e)
27242 setNonce: function(e) {
27245 generateThemesOnDemand: function(e) {
27246 x.generateOnDemand = e
27248 setDefaultTheme: function(e) {
27251 alwaysWatchTheme: function(e) {
27254 enableBrowserColor: w,
27256 _LIGHT_DEFAULT_HUES: E,
27257 _DARK_DEFAULT_HUES: k,
27265 function i(t, n, r, i, o, a) {
27269 pre: function(s, c, l) {
27271 d = n.startSymbol(),
27273 h = l.mdTheme.trim(),
27274 p = h.substr(0, d.length) === d && h.lastIndexOf(f) === h.length - f.length,
27275 m = "::" === l.mdTheme.split(d).join("").split(f).join("").trim().substr(0, "::".length),
27277 registerChanges: function(t, n) {
27278 return n && (t = e.bind(n, t)), u.push(t),
27280 var e = u.indexOf(t);
27281 e > -1 && u.splice(e, 1)
27284 $setTheme: function(e) {
27285 t.registered(e) || a.warn("attempted to use unregistered theme '" + e + "'"), g.$mdTheme = e;
27286 for (var n = u.length; n--;) u[n](e)
27288 $shouldWatch: i.parseAttributeBoolean(c.attr("md-theme-watch")) || t.ALWAYS_WATCH || p && !m
27290 c.data("$mdThemeController", g);
27291 var v = function() {
27292 var e = n(l.mdTheme)(s);
27293 return r(e)(s) || e
27296 if ("string" == typeof t) return g.$setTheme(t);
27297 o.when(e.isFunction(t) ? t() : t).then(function(e) {
27302 var y = s.$watch(v, function(e) {
27303 e && (b(e), g.$shouldWatch || y())
27314 function a(t, n, r) {
27315 l(t, n), r = r.replace(/THEME_NAME/g, t.name);
27318 a = new RegExp("\\.md-" + t.name + "-theme", "g"),
27319 s = new RegExp("('|\")?{{\\s*(" + n + ")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
27320 c = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,
27322 return r = r.replace(c, function(e, n, r, i, o) {
27323 return "foreground" === n ? "shadow" == r ? t.foregroundShadow : t.foregroundPalette[r] || t.foregroundPalette[1] : (0 !== r.indexOf("hue") && "default" !== r || (r = t.colors[n].hues[r]), d((f[t.colors[n].name][r] || "")[o ? "contrast" : "value"], i))
27324 }), e.forEach(o.hues, function(e, n) {
27325 var o = r.replace(s, function(t, n, r, i, o) {
27326 return d(u[e]["color" === i ? "value" : "contrast"], o)
27328 if ("default" !== n && (o = o.replace(a, ".md-" + t.name + "-theme.md-" + n)), "default" == t.name) {
27329 var c = /((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;
27330 o = o.replace(c, function(e, t, n) {
27331 return e + ", " + t + n
27339 var r = document.head,
27340 i = r ? r.firstElementChild : null,
27341 o = !x.disableTheming && t.has("$MD_THEME_CSS") ? t.get("$MD_THEME_CSS") : "";
27342 if (o += x.registeredStyles.join(""), i && 0 !== o.length) {
27343 e.forEach(f, function(t, n) {
27344 var r = t.contrastDefaultColor,
27345 i = t.contrastLightColors || [],
27346 o = t.contrastStrongLightColors || [],
27347 a = t.contrastDarkColors || [];
27348 "string" == typeof i && (i = i.split(" ")), "string" == typeof o && (o = o.split(" ")), "string" == typeof a && (a = a.split(" ")), delete t.contrastDefaultColor, delete t.contrastLightColors, delete t.contrastStrongLightColors, delete t.contrastDarkColors, e.forEach(t, function(n, s) {
27349 if (!e.isObject(n)) {
27351 if (!c) throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", n).replace("%2", t.name).replace("%3", s));
27355 contrast: "light" === r ? a.indexOf(s) > -1 ? b : o.indexOf(s) > -1 ? _ : y : i.indexOf(s) > -1 ? o.indexOf(s) > -1 ? _ : y : b
27360 var a = o.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
27361 return e && e.trim().length
27362 }).map(function(e) {
27363 return e.trim() + "}"
27365 s = new RegExp("md-(" + $.join("|") + ")", "g");
27366 $.forEach(function(e) {
27368 }), a.forEach(function(e) {
27370 for (var t, n = 0; t = $[n]; n++)
27371 if (e.indexOf(".md-" + t) > -1) return T[t] += e;
27372 for (n = 0; t = $[n]; n++)
27373 if (e.indexOf(t) > -1) return T[t] += e;
27375 }), x.generateOnDemand || e.forEach(n.THEMES, function(e) {
27376 h[e.name] || "default" !== n.defaultTheme() && "default" === e.name || c(e, e.name, x.nonce)
27381 function c(e, t, n) {
27382 var r = document.head,
27383 i = r ? r.firstElementChild : null;
27384 h[t] || ($.forEach(function(t) {
27385 for (var o = a(e, t, T[t]); o.length;) {
27388 var c = document.createElement("style");
27389 c.setAttribute("md-theme-style", ""), n && c.setAttribute("nonce", n), c.appendChild(document.createTextNode(s)), r.insertBefore(c, i)
27392 }), h[e.name] = !0)
27396 if (!f[(e.colors[t] || {}).name]) throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1", e.name).replace("%2", t).replace("%3", Object.keys(f).join(", ")))
27400 if (e.isArray(t) && 3 == t.length) return t;
27401 if (/^rgb/.test(t)) return t.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
27402 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
27404 if ("#" == t.charAt(0) && (t = t.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(t)) {
27405 var n = t.length / 3,
27406 r = t.substr(0, n),
27407 i = t.substr(n, n),
27408 o = t.substr(2 * n);
27409 return 1 === n && (r += r, i += i, o += o), [parseInt(r, 16), parseInt(i, 16), parseInt(o, 16)]
27414 return t ? (4 == t.length && (t = e.copy(t), n ? t.pop() : n = t.pop()), n && ("number" == typeof n || "string" == typeof n && n.length) ? "rgba(" + t.join(",") + "," + n + ")" : "rgb(" + t.join(",") + ")") : "rgb('0,0,0')"
27416 t.$inject = ["$mdThemingProvider"], i.$inject = ["$mdTheming", "$interpolate", "$parse", "$mdUtil", "$q", "$log"], o.$inject = ["$mdTheming"], r.$inject = ["$mdColorPalette", "$$mdMetaProvider"], s.$inject = ["$injector", "$mdTheming"], e.module("material.core.theming", ["material.core.theming.palette", "material.core.meta"]).directive("mdTheme", i).directive("mdThemable", o).directive("mdThemesDisabled", function() {
27417 return x.disableTheming = !0, {
27421 }).provider("$mdTheming", r).config(t).run(s);
27425 1: "rgba(0,0,0,0.87)",
27426 2: "rgba(0,0,0,0.54)",
27427 3: "rgba(0,0,0,0.38)",
27428 4: "rgba(0,0,0,0.12)"
27432 1: "rgba(255,255,255,1.0)",
27433 2: "rgba(255,255,255,0.7)",
27434 3: "rgba(255,255,255,0.5)",
27435 4: "rgba(255,255,255,0.12)"
27437 g = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
27439 b = u("rgba(0,0,0,0.87)"),
27440 y = u("rgba(255,255,255,0.87)"),
27441 _ = u("rgb(255,255,255)"),
27442 $ = ["primary", "accent", "warn", "background"],
27466 $.forEach(function(e) {
27473 E[e] || (E[e] = t), k[e] || (k[e] = t)
27475 var C = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
27477 disableTheming: !1,
27478 generateOnDemand: !1,
27479 registeredStyles: [],
27485 function n(n, r, i, o, a) {
27488 translate3d: function(e, t, n, r) {
27492 addClass: r.transitionOutClass,
27493 removeClass: r.transitionInClass,
27494 duration: r.duration
27500 addClass: r.transitionInClass,
27501 removeClass: r.transitionOutClass,
27502 duration: r.duration
27503 }).start().then(function() {
27507 waitTransitionEnd: function(t, n) {
27509 return r(function(r, s) {
27511 e && e.target !== t[0] || (e && i.cancel(l), t.off(o.CSS.TRANSITIONEND, c), r())
27513 return "0s" == (n = n || e.getComputedStyle(t[0])).transitionDuration || !n.transition && !n.transitionProperty
27514 })((n = n || {}).cachedTransitionStyles) && (a = 0);
27515 var l = i(c, n.timeout || a);
27516 t.on(o.CSS.TRANSITIONEND, c)
27519 calculateTransformValues: function(e, t) {
27523 var i = n ? s.clientRect(n) || function() {
27524 var t = e ? e.parent() : null,
27525 n = t ? t.parent() : null;
27526 return n ? s.clientRect(n) : null
27527 }() : s.copyRect(r),
27528 o = s.copyRect(e[0].getBoundingClientRect()),
27529 a = s.centerPointFor(o),
27530 c = s.centerPointFor(i);
27532 centerX: c.x - a.x,
27533 centerY: c.y - a.y,
27534 scaleX: Math.round(100 * Math.min(.5, i.width / o.width)) / 100,
27535 scaleY: Math.round(100 * Math.min(.5, i.height / o.height)) / 100
27545 calculateZoomToOrigin: function(e, r) {
27546 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )")(s.calculateTransformValues(e, r))
27548 calculateSlideToOrigin: function(e, r) {
27549 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 )")(s.calculateTransformValues(e, r))
27551 toCss: function(e) {
27552 function n(e, n, i) {
27553 t.forEach(n.split(" "), function(e) {
27558 return t.forEach(e, function(e, i) {
27559 if (!t.isUndefined(e))
27560 if ("left top right bottom width height x y min-width min-height max-width max-height".indexOf(i) >= 0) r[i] = e + "px";
27563 n(0, o.CSS.TRANSITION, e);
27566 n(0, o.CSS.TRANSFORM, e);
27568 case "transformOrigin":
27569 n(0, o.CSS.TRANSFORM_ORIGIN, e);
27576 toTransformCss: function(e, n, r) {
27578 return t.forEach(o.CSS.TRANSFORM.split(" "), function(t) {
27580 }), n && (r = r || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", i.transition = r), i
27582 copyRect: function(e, n) {
27583 return e ? (n = n || {}, t.forEach("left top right bottom width height".split(" "), function(t) {
27584 n[t] = Math.round(e[t])
27585 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
27587 clientRect: function(e) {
27588 var n = t.element(e)[0].getBoundingClientRect();
27589 return function(e) {
27590 return e && e.width > 0 && e.height > 0
27591 }(n) ? s.copyRect(n) : null
27593 centerPointFor: function(e) {
27595 x: Math.round(e.left + e.width / 2),
27596 y: Math.round(e.top + e.height / 2)
27604 t.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(e, t, r, i) {
27605 return function(o) {
27606 return n(o, e, t, r, i)
27609 }(), t.version.minor >= 4 ? t.module("material.core.animate", []) : function() {
27611 return e.replace(/-[a-z]/g, function(e) {
27612 return e.charAt(1).toUpperCase()
27616 r = t.isDefined(document.documentElement.style.WebkitAppearance),
27617 i = r ? "-webkit-" : "",
27618 o = (r ? "webkitTransitionEnd " : "") + "transitionend",
27619 a = (r ? "webkitAnimationEnd " : "") + "animationend",
27620 s = ["$document", function(e) {
27621 return function() {
27622 return e[0].body.clientWidth + 1
27625 c = ["$$rAF", function(e) {
27626 return function() {
27628 return e(function() {
27636 l = ["$q", "$$rAFMutex", function(e, r) {
27638 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = r(), this._state = 0
27640 return i.prototype = {
27641 setHost: function(e) {
27642 this.host = e || {}
27644 done: function(e) {
27645 2 === this._state ? e() : this._doneCallbacks.push(e)
27648 getPromise: function() {
27649 if (!this.promise) {
27651 this.promise = e(function(e, n) {
27652 t.done(function(t) {
27653 !1 === t ? n() : e()
27657 return this.promise
27659 then: function(e, t) {
27660 return this.getPromise().then(e, t)
27662 catch: function(e) {
27663 return this.getPromise().catch(e)
27665 finally: function(e) {
27666 return this.getPromise().finally(e)
27668 pause: function() {
27669 this.host.pause && this.host.pause()
27671 resume: function() {
27672 this.host.resume && this.host.resume()
27675 this.host.end && this.host.end(), this._resolve(!0)
27677 cancel: function() {
27678 this.host.cancel && this.host.cancel(), this._resolve(!1)
27680 complete: function(e) {
27682 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
27686 _resolve: function(e) {
27687 2 !== this._state && (n(this._doneCallbacks, function(t) {
27689 }), this._doneCallbacks.length = 0, this._state = 2)
27691 }, i.all = function(e, t) {
27693 o = o && n, ++i === e.length && t(o)
27702 t.module("material.core.animate", []).factory("$$forceReflow", s).factory("$$AnimateRunner", l).factory("$$rAFMutex", c).factory("$animateCss", ["$window", "$$rAF", "$$AnimateRunner", "$$forceReflow", "$$jqLite", "$timeout", "$animate", function(t, s, c, l, u, d, f) {
27704 t.addClass && (u.addClass(e, t.addClass), t.addClass = null), t.removeClass && (u.removeClass(e, t.removeClass), t.removeClass = null)
27709 return r ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
27712 o = t.getComputedStyle(i),
27713 a = m(o[n("transitionDuration")]),
27714 s = m(o[n("animationDuration")]),
27715 c = m(o[n("transitionDelay")]),
27716 l = m(o[n("animationDelay")]);
27717 return s *= parseInt(o[n("animationIterationCount")], 10) || 1, {
27718 duration: Math.max(s, a),
27719 delay: Math.max(l, c),
27720 animationDuration: s,
27721 transitionDuration: a,
27729 r = (e || "").split(/\s*,\s*/);
27730 return n(r, function(e) {
27731 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
27736 w && w(), E.push(e), w = s(function() {
27738 for (var e = l(), t = 0; t < E.length; t++) E[t](e);
27748 t.from && (e.css(t.from), t.from = null)
27752 t.to && (e.css(t.to), t.to = null)
27756 for (var t = 0; t < e.length; t++)
27757 if (1 === e[t].nodeType) return e[t]
27762 o = e(i + "transition-delay");
27763 r.style[o] = n ? "-9999s" : ""
27766 return function(r, s) {
27769 m = u && f.enabled(),
27772 m && (s.transitionStyle && l.push([i + "transition", s.transitionStyle]), s.keyframeStyle && l.push([i + "animation", s.keyframeStyle]), s.delay && l.push([i + "transition-delay", s.delay + "s"]), s.duration && l.push([i + "transition-duration", s.duration + "s"]), w = s.keyframeStyle || s.to && (s.duration > 0 || s.transitionStyle), E = !!s.addClass || !!s.removeClass, $(r, !0));
27773 var k = m && (w || E);
27778 start: function() {
27780 if (!T) return T = !0, C && x && r.off(C, x), h(r, s), v(r, s), n(l, function(t) {
27781 u.style[e(t[0])] = ""
27782 }), f.complete(!0), f
27785 return g(function() {
27786 if ($(r, !1), !k) return t();
27793 if (0 === c.duration) return t();
27795 s.easing && (c.transitionDuration && f.push([i + "transition-timing-function", s.easing]), c.animationDuration && f.push([i + "animation-timing-function", s.easing])), s.delay && c.animationDelay && f.push([i + "animation-delay", s.delay + "s"]), s.duration && c.animationDuration && f.push([i + "animation-duration", s.duration + "s"]), n(f, function(t) {
27798 u.style[e(n)] = r, l.push(t)
27800 var m = 1e3 * c.delay,
27804 C = [], c.transitionDuration && C.push(o), c.animationDuration && C.push(a), C = C.join(" "), x = function(e) {
27805 e.stopPropagation();
27806 var n = e.originalEvent || e,
27807 r = n.timeStamp || Date.now(),
27808 i = parseFloat(n.elapsedTime.toFixed(3));
27809 Math.max(r - b, 0) >= m && i >= g && t()
27810 }, r.on(C, x), y(r, s), d(t, m + 1.5 * v, !1)
27816 }(), t.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]), t.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function(e, n, r, i, o, a, s, c) {
27817 var l = "<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";
27820 link: function(u, d, f) {
27822 var e = parseInt(p.height, 10) + Math.abs(parseInt(p.top, 10));
27823 d.css("height", e + "px")
27825 r.pin && r.pin(d, i);
27828 if ("fixed" === (p = o.getComputedStyle(c[0].body)).position) {
27829 var r = n.debounce(function() {
27830 p = o.getComputedStyle(c[0].body), h()
27832 h(), t.element(o).on("resize", r), u.$on("$destroy", function() {
27833 t.element(o).off("resize", r)
27836 var i = d.parent();
27837 i.length && ("BODY" === i[0].nodeName && d.css("position", "fixed"), "static" === o.getComputedStyle(i[0]).position && a.warn(l), e.inherit(d, i))
27846 link: function(t, n) {
27847 n.addClass("_md"), t.$on("$destroy", function() {
27855 function n(e, n, o, a, s, c, l, u) {
27858 e.css(n.CSS.TRANSITION_DURATION, "0ms")
27862 var r = t.pointer.distanceY;
27863 r < 5 && (r = Math.max(-i, r / 2)), e.css(n.CSS.TRANSFORM, "translate3d(0," + (i + r) + "px,0)")
27867 if (t.pointer.distanceY > 0 && (t.pointer.distanceY > 20 || Math.abs(t.pointer.velocityY) > r)) {
27868 var i = e.prop("offsetHeight") - t.pointer.distanceY,
27869 a = Math.min(i / t.pointer.velocityY * .75, 500);
27870 e.css(n.CSS.TRANSITION_DURATION, a + "ms"), o.nextTick(s.cancel, !0)
27871 } else e.css(n.CSS.TRANSITION_DURATION, ""), e.css(n.CSS.TRANSFORM, "")
27873 var d = l.register(t, "drag", {
27876 return t.on("$md.dragstart", a).on("$md.drag", c).on("$md.dragend", u), {
27878 cleanup: function() {
27879 d(), t.off("$md.dragstart", a), t.off("$md.drag", c), t.off("$md.dragend", u)
27886 onShow: function(r, i, l, h) {
27887 (i = o.extractElementByName(i, "md-bottom-sheet")).attr("tabindex", "-1"), i.hasClass("ng-cloak") && u.warn("$mdBottomSheet: using `<md-bottom-sheet ng-cloak >` will affect the bottom-sheet opening animations.", i[0]);
27888 l.disableBackdrop || ((f = o.createBackdrop(r, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, l.clickOutsideToClose && f.on("click", function() {
27889 o.nextTick(s.cancel, !0)
27890 }), a.inherit(f, l.parent), e.enter(f, l.parent, null));
27891 var p = new d(i, l.parent);
27892 return l.bottomSheet = p, a.inherit(p.element, l.parent), l.disableParentScroll && (l.restoreScroll = o.disableScrollAround(p.element, l.parent)), e.enter(p.element, l.parent, f).then(function() {
27893 var e = o.findFocusTarget(i) || t.element(i[0].querySelector("button") || i[0].querySelector("a") || i[0].querySelector(o.prefixer("ng-click", !0))) || f;
27894 l.escapeToClose && (l.rootElementKeyupCallback = function(e) {
27895 e.keyCode === n.KEY_CODE.ESCAPE && o.nextTick(s.cancel, !0)
27896 }, c.on("keyup", l.rootElementKeyupCallback), e && e.focus())
27899 onRemove: function(t, n, r) {
27900 var i = r.bottomSheet;
27901 return r.disableBackdrop || e.leave(f), e.leave(i.element).then(function() {
27902 r.disableParentScroll && (r.restoreScroll(), delete r.restoreScroll), i.cleanup()
27905 disableBackdrop: !1,
27907 clickOutsideToClose: !0,
27908 disableParentScroll: !0
27911 n.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
27914 return e("$mdBottomSheet").setDefaults({
27915 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
27919 e.$inject = ["$mdBottomSheet"], n.$inject = ["$$interimElementProvider"], t.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", n)
27925 link: function(t, n) {
27931 function n(e, n, r, i) {
27933 return t.isDefined(e.href) || t.isDefined(e.ngHref) || t.isDefined(e.ngLink) || t.isDefined(e.uiSref)
27939 template: function(e, t) {
27940 return o(t) ? '<a class="md-button" ng-transclude></a>' : '<button class="md-button" type="' + (void 0 === t.type ? "button" : t.type) + '" ng-transclude></button>'
27942 link: function(a, s, c) {
27943 n(s), e.attach(a, s), r.expectWithoutText(s, "aria-label"), o(c) && t.isDefined(c.ngDisabled) && a.$watch(c.ngDisabled, function(e) {
27944 s.attr("tabindex", e ? -1 : 0)
27945 }), s.on("click", function(e) {
27946 !0 === c.disabled && (e.preventDefault(), e.stopImmediatePropagation())
27947 }), s.hasClass("md-no-focus") || (s.on("focus", function() {
27948 i.isUserInvoked() && "keyboard" !== i.getLastInteractionType() || s.addClass("md-focused")
27949 }), s.on("blur", function() {
27950 s.removeClass("md-focused")
27955 n.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], t.module("material.components.button", ["material.core"]).directive("mdButton", n).directive("a", e)
27961 link: function(t, n, r) {
27962 n.addClass("_md"), e(n)
27966 e.$inject = ["$mdTheming"], t.module("material.components.card", ["material.core"]).directive("mdCard", e)
27967 }(), t.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
27969 function e(e, n, r, i, o, a) {
27973 require: ["^?mdInputContainer", "?ngModel", "?^form"],
27974 priority: r.BEFORE_NG_ARIA,
27975 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',
27976 compile: function(s, c) {
27977 return c.$set("tabindex", c.tabindex || "0"), c.$set("type", "checkbox"), c.$set("role", c.type), {
27978 pre: function(e, t) {
27979 t.on("click", function(e) {
27980 this.hasAttribute("disabled") && e.stopImmediatePropagation()
27983 post: function(s, c, l, u) {
27985 c[0].hasAttribute("disabled") || s.skipToggle || s.$apply(function() {
27986 var t = l.ngChecked && l.ngClick ? l.checked : !m.$viewValue;
27987 m.$setViewValue(t, e && e.type), m.$render()
27992 (h = !1 !== e) && c.attr("aria-checked", "mixed"), c.toggleClass("md-indeterminate", h)
27995 m = u[1] || o.fakeNgModel(),
27998 var v = p.isErrorGetter || function() {
27999 return m.$invalid && (m.$touched || g && g.$submitted)
28001 p.input = c, s.$watch(v, p.setInvalid)
28003 i(c), c.children().on("focus", function() {
28005 }), o.parseAttributeBoolean(l.mdIndeterminate) && (f(), s.$watch(l.mdIndeterminate, f)), l.ngChecked && s.$watch(s.$eval.bind(s, l.ngChecked), function(e) {
28006 m.$setViewValue(e), m.$render()
28008 function(e, t, n) {
28009 l[e] && s.$watch(l[e], function(e) {
28010 n[e] && c.attr(t, n[e])
28012 }("ngDisabled", "tabindex", {
28015 }), n.expectWithText(c, "aria-label"), e.link.pre(s, {
28018 }, l, [m]), c.on("click", d).on("keypress", function(e) {
28019 var t = e.which || e.keyCode;
28020 t !== r.KEY_CODE.SPACE && t !== r.KEY_CODE.ENTER || (e.preventDefault(), c.addClass("md-focused"), d(e))
28021 }).on("focus", function() {
28022 "keyboard" === a.getLastInteractionType() && c.addClass("md-focused")
28023 }).on("blur", function() {
28024 c.removeClass("md-focused")
28025 }), m.$render = function() {
28026 c.toggleClass("md-checked", !!m.$viewValue && !h)
28033 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], t.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
28036 function e(e, n, r) {
28039 var i = e.PALETTES[t.palette][t.hue];
28040 return i = r ? i.contrast : i.value, n.supplant("rgba({0}, {1}, {2}, {3})", [i[0], i[1], i[2], i[3] || t.opacity])
28045 r = e.hasOwnProperty("color");
28046 return t.forEach(e, function(e, t) {
28048 a = t.indexOf("background") > -1;
28049 n[t] = o(i), a && !r && (n.color = o(i, !0))
28054 var r = n.split("-"),
28055 i = t.isDefined(e.THEMES[r[0]]) ? r.splice(0, 1)[0] : e.defaultTheme();
28065 var o = t.length > 1 && -1 !== i.indexOf(t[1]),
28066 a = t[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
28067 if (o && (a = t[0] + "-" + t.splice(1, 1)), -1 === i.indexOf(a)) {
28068 var s = e.THEMES[r].colors[a];
28069 if (!s) throw new Error(n.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
28078 var i = e.THEMES[r].colors;
28079 if ("hue" === t[1]) {
28080 var o = parseInt(t.splice(2, 1)[0], 10);
28081 if (o < 1 || o > 3) throw new Error(n.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'", {
28084 if (t[1] = "hue-" + o, !(t[0] in i)) throw new Error(n.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'", {
28085 availableThemes: Object.keys(i).join(", "),
28088 return i[t[0]].hues[t[1]]
28090 return t[1] || i[t[0] in i ? t[0] : "primary"].hues.default
28092 return i = i || Object.keys(e.PALETTES), {
28093 applyThemeColors: function(e, t) {
28100 getThemeColor: function(e) {
28103 hasTheme: function(n) {
28104 return t.isDefined(e.THEMES[n.split("-")[0]])
28109 function n(e, n, i, o) {
28112 require: ["^?mdTheme"],
28113 compile: function(a, s) {
28114 var c = function() {
28115 var e = s.mdColors,
28116 i = e.indexOf("::") > -1,
28117 o = !!i || r.test(s.mdColors);
28118 s.mdColors = e.replace("::", "");
28119 var a = t.isDefined(s.mdColorsWatch);
28120 return !i && !o && (!a || n.parseAttributeBoolean(s.mdColorsWatch))
28122 return function(n, r, a, s) {
28126 "string" != typeof t && (t = ""), a.mdColors || (a.mdColors = "{}");
28127 var r = o(a.mdColors)(n);
28128 return l && Object.keys(r).forEach(function(n) {
28130 e.hasTheme(i) || (r[n] = (t || l.$mdTheme) + "-" + i)
28134 if (!t.equals(e, u)) {
28135 var n = Object.keys(u);
28136 u.background && !n.color && n.push("color"), n.forEach(function(e) {
28143 l && (h = l.registerChanges(function(t) {
28144 e.applyThemeColors(r, d(t))
28145 })), n.$on("$destroy", function() {
28149 c ? n.$watch(d, t.bind(this, e.applyThemeColors, r), !0) : e.applyThemeColors(r, d())
28157 n.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
28158 var r = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
28160 t.module("material.components.colors", ["material.core"]).directive("mdColors", n).service("$mdColors", e)
28166 controller: ["$scope", "$element", function(e, t) {
28167 this.$scope = e, this.$element = t
28169 link: function(t, r) {
28170 r.addClass("_md"), e(r), t.$broadcast("$mdContentLoaded", r), n(r[0])
28176 t.element(e).on("$md.pressdown", function(t) {
28177 "t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
28180 e.$inject = ["$mdTheming"], t.module("material.components.content", ["material.core"]).directive("mdContent", e)
28181 }(), t.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
28183 function e(e, n, r) {
28186 link: function(i, o) {
28187 o.addClass("_md"), n(o), e(function() {
28189 o.toggleClass("md-content-overflow", a.scrollHeight > a.clientHeight)
28191 var n, a = o[0].querySelector("md-dialog-content");
28192 a && (n = a.getElementsByTagName("img"), e(), t.element(n).on("load", e)), i.$on("$destroy", function() {
28203 template: ['<md-dialog md-theme="{{ dialog.theme || dialog.defaultTheme }}" aria-label="{{ dialog.ariaLabel }}" ng-class="dialog.css">', ' <md-dialog-content class="md-dialog-content" role="document" tabIndex="-1">', ' <h2 class="md-title">{{ dialog.title }}</h2>', ' <div ng-if="::dialog.mdHtmlContent" class="md-dialog-content-body" ', ' ng-bind-html="::dialog.mdHtmlContent"></div>', ' <div ng-if="::!dialog.mdHtmlContent" class="md-dialog-content-body">', " <p>{{::dialog.mdTextContent}}</p>", " </div>", ' <md-input-container md-no-float ng-if="::dialog.$type == \'prompt\'" class="md-prompt-input-container">', ' <input ng-keypress="dialog.keypress($event)" md-autofocus ng-model="dialog.result" placeholder="{{::dialog.placeholder}}" ng-required="dialog.required">', " </md-input-container>", " </md-dialog-content>", " <md-dialog-actions>", ' <md-button ng-if="dialog.$type === \'confirm\' || dialog.$type === \'prompt\'" ng-click="dialog.abort()" class="md-primary md-cancel-button">', " {{ dialog.cancel }}", " </md-button>", ' <md-button ng-click="dialog.hide()" class="md-primary md-confirm-button" md-autofocus="dialog.$type===\'alert\'" ng-disabled="dialog.required && !dialog.result">', " {{ dialog.ok }}", " </md-button>", " </md-dialog-actions>", "</md-dialog>"].join("").replace(/\s\s+/g, ""),
28205 controllerAs: "dialog",
28206 bindToController: !0
28211 this.$onInit = function() {
28212 var n = "prompt" == this.$type;
28213 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
28214 e.hide(!n || this.result)
28215 }, this.abort = function() {
28217 }, this.keypress = function(n) {
28218 n.keyCode === t.KEY_CODE.ENTER && e.hide(this.result)
28223 function o(e, r, i, o, c, l, u, d, f, h, p, m, g) {
28226 e.targetEvent && e.targetEvent.target && (n = t.element(e.targetEvent.target));
28227 var r = n && n.controller("mdTheme");
28229 e.themeWatch = r.$shouldWatch;
28230 var i = e.theme || r.$mdTheme;
28231 i && (e.scope.theme = i);
28232 var o = r.registerChanges(function(t) {
28233 e.scope.theme = t, e.themeWatch || o()
28240 var i = t.element(e || {});
28241 if (i && i.length) {
28248 a = t.isFunction(i[0].getBoundingClientRect);
28249 return t.extend(r || {}, {
28250 element: a ? i : n,
28251 bounds: a ? i[0].getBoundingClientRect() : t.extend({}, o, i[0]),
28252 focus: t.bind(i, i.focus)
28258 return t.isString(e) && (e = l[0].querySelector(e)), t.element(e || n)
28260 e.origin = t.extend({
28264 }, e.origin || {}), e.parent = i(e.parent, d), e.closeTo = r(i(e.closeTo)), e.openFrom = r(i(e.openFrom)), e.targetEvent && (e.origin = r(e.targetEvent.target, e.origin), e.originInteraction = g.getLastInteractionType())
28268 var a = t.element(u),
28269 s = i.debounce(function() {
28274 var t = "alert" == r.$type ? e.hide : e.cancel;
28277 if (r.escapeToClose) {
28280 e.keyCode === o.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), l())
28282 n.on("keydown", f), d.on("keydown", f), c.push(function() {
28283 n.off("keydown", f), d.off("keydown", f)
28286 if (a.on("resize", s), c.push(function() {
28288 }), r.clickOutsideToClose) {
28294 h === p[0] && e.target === p[0] && (e.stopPropagation(), e.preventDefault(), l())
28296 p.on("mousedown", m), p.on("mouseup", g), c.push(function() {
28297 p.off("mousedown", m), p.off("mouseup", g)
28300 r.deactivateListeners = function() {
28301 c.forEach(function(e) {
28303 }), r.deactivateListeners = null
28307 function _(e, t, n) {
28308 n.disableParentScroll && (n.restoreScroll = i.disableScrollAround(t, n.parent)), n.hasBackdrop && (n.backdrop = i.createBackdrop(e, "md-dialog-backdrop md-opaque"), c.enter(n.backdrop, n.parent)), n.hideBackdrop = function(e) {
28309 n.backdrop && (e ? n.backdrop.remove() : c.leave(n.backdrop)), n.disableParentScroll && (n.restoreScroll && n.restoreScroll(), delete n.restoreScroll), n.hideBackdrop = null
28314 var n = "alert" === t.$type ? "alertdialog" : "dialog",
28315 o = e.find("md-dialog-content"),
28317 l = "dialogContent_" + (c || i.nextUid());
28321 }), 0 === o.length && (o = e, c && (l = c)), o.attr("id", l), e.attr("aria-describedby", l), t.ariaLabel ? r.expect(e, "aria-label", t.ariaLabel) : r.expectAsync(e, "aria-label", function() {
28322 if (t.title) return t.title;
28323 var e = o.text().split(/\s+/);
28324 return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
28325 }), (a = document.createElement("div")).classList.add("md-dialog-focus-trap"), a.tabIndex = 0, s = a.cloneNode(!1);
28326 var u = function() {
28329 a.addEventListener("focus", u), s.addEventListener("focus", u), e[0].parentNode.insertBefore(a, e[0]), e.after(s)
28334 for (; e.parentNode;) {
28335 if (e === document.body) return;
28336 for (var t = e.parentNode.children, i = 0; i < t.length; i++) e === t[i] || x(t[i], ["SCRIPT", "STYLE"]) || t[i].hasAttribute("aria-live") || t[i].setAttribute("aria-hidden", r);
28337 n(e = e.parentNode)
28341 n(e[0]), t.unlockScreenReader = function() {
28342 r = !1, n(e[0]), t.unlockScreenReader = null
28347 var n = "fixed" == u.getComputedStyle(l[0].body).position,
28348 r = t.backdrop ? u.getComputedStyle(t.backdrop[0]) : null,
28349 i = r ? Math.min(l[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
28352 height: e.css("height")
28354 a = Math.abs(t.parent[0].getBoundingClientRect().top);
28356 top: (n ? a : 0) + "px",
28357 height: i ? i + "px" : "100%"
28365 t.parent.append(e), t.reverseContainerStretch = E(e, t);
28366 var n = e.find("md-dialog"),
28367 r = i.dom.animator,
28368 o = r.calculateZoomToOrigin,
28370 transitionInClass: "md-transition-in",
28371 transitionOutClass: "md-transition-out"
28373 s = r.toTransformCss(o(n, t.openFrom || t.origin)),
28374 c = r.toTransformCss("");
28375 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, s, c, a).then(function(e) {
28376 return t.reverseAnimate = function() {
28377 return delete t.reverseAnimate, t.closeTo ? (a = {
28378 transitionInClass: "md-transition-out",
28379 transitionOutClass: "md-transition-in"
28380 }, s = c, c = r.toTransformCss(o(n, t.closeTo)), r.translate3d(n, s, c, a)) : e(c = r.toTransformCss(o(n, t.origin)))
28381 }, t.clearAnimate = function() {
28382 return delete t.clearAnimate, n.removeClass([a.transitionOutClass, a.transitionInClass].join(" ")), r.translate3d(n, c, r.toTransformCss(""), {})
28388 return t.reverseAnimate().then(function() {
28389 t.contentElement && t.clearAnimate()
28394 if (-1 !== t.indexOf(e.nodeName)) return !0
28399 onCompiling: function(e) {
28400 e.defaultTheme = p.defaultTheme(), v(e)
28402 onShow: function(e, n, r, o) {
28404 n[0].querySelector(".md-actions") && f.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>.")
28408 r.focusOnOpen && (i.findFocusTarget(n) || n[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || c).focus()
28410 t.element(l[0].body).addClass("md-dialog-is-showing");
28411 var c = n.find("md-dialog");
28412 c.hasClass("ng-cloak") && f.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", n[0]);
28413 return b(r), $(c, r), _(e, n, r), y(n, r), k(n, r).then(function() {
28417 onShowing: function(e, t, n, r) {
28419 var i = r.htmlContent || n.htmlContent || "",
28420 o = r.textContent || n.textContent || r.content || n.content || "";
28421 if (i && !h.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
28422 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
28423 r.mdHtmlContent = i, r.mdTextContent = o
28426 onRemove: function(e, n, r) {
28428 t.element(l[0].body).removeClass("md-dialog-is-showing"), r.contentElement && r.reverseContainerStretch(), r.cleanupElement(), r.$destroy || "keyboard" !== r.originInteraction || r.origin.focus()
28430 return r.deactivateListeners(), r.unlockScreenReader(), r.hideBackdrop(r.$destroy), a && a.parentNode && a.parentNode.removeChild(a), s && s.parentNode && s.parentNode.removeChild(s), r.$destroy ? i() : C(0, r).then(i)
28432 clickOutsideToClose: !1,
28438 disableParentScroll: !0,
28441 transformTemplate: function(e, t) {
28442 var n = m.startSymbol(),
28444 return '<div class="md-dialog-container" tabindex="-1" md-theme="' + (n + (t.themeWatch ? "" : "::") + "theme" + r) + '">' + function(e) {
28445 return t.autoWrap && !/<\/md-dialog>/g.test(e) ? "<md-dialog>" + (e || "") + "</md-dialog>" : e || ""
28450 i.$inject = ["$mdDialog", "$mdConstant"], o.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"];
28452 return e("$mdDialog").setDefaults({
28453 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
28455 }).addPreset("alert", {
28456 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
28458 }).addPreset("confirm", {
28459 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
28461 }).addPreset("prompt", {
28462 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css", "required"],
28466 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], r.$inject = ["$$interimElementProvider"], t.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", r)
28475 e.$inject = ["$mdTheming"], t.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
28481 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
28482 compile: function(t, n) {
28483 var r = t.children();
28484 e.prefixer().hasAttribute(r, "ng-repeat") ? r.addClass("md-fab-action-item") : r.wrap('<div class="md-fab-action-item">')
28488 e.$inject = ["$mdUtil"], t.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
28491 function e(e, n, r, i, o, a) {
28493 S.direction = S.direction || "down", S.isOpen = S.isOpen || !1, u(), n.addClass("md-animations-waiting")
28497 var r = ["click", "focusin", "focusout"];
28498 t.forEach(r, function(e) {
28500 }), e.$on("$destroy", function() {
28501 t.forEach(r, function(e) {
28508 "click" == e.type && T(e), "focusout" != e.type || D || (D = a(function() {
28510 }, 100, !1)), "focusin" == e.type && D && (a.cancel(D), D = null)
28514 S.currentActionIndex = -1
28518 e.$watch("vm.direction", function(e, t) {
28519 r.removeClass(n, "md-" + t), r.addClass(n, "md-" + e), u()
28522 e.$watch("vm.isOpen", function(e) {
28523 u(), t && i || (t = M(), i = A()), e ? h() : p();
28524 var o = e ? "md-is-open" : "",
28525 a = e ? "" : "md-is-open";
28526 t.attr("aria-haspopup", !0), t.attr("aria-expanded", e), i.attr("aria-hidden", !e), r.setClass(n, o, a)
28531 n[0].scrollHeight > 0 ? r.addClass(n, "_md-animations-ready").then(function() {
28532 n.removeClass("md-animations-waiting")
28533 }) : O < 10 && (a(f, 100), O += 1)
28537 n.on("keydown", g), i.nextTick(function() {
28538 t.element(document).on("click touchend", m)
28543 n.off("keydown", g), t.element(document).off("click touchend", m)
28548 var t = i.getClosest(e.target, "md-fab-trigger"),
28549 n = i.getClosest(e.target, "md-fab-actions");
28550 t || n || S.close()
28556 case o.KEY_CODE.ESCAPE:
28557 return S.close(), e.preventDefault(), !1;
28558 case o.KEY_CODE.LEFT_ARROW:
28560 case o.KEY_CODE.UP_ARROW:
28562 case o.KEY_CODE.RIGHT_ARROW:
28564 case o.KEY_CODE.DOWN_ARROW:
28579 S.currentActionIndex = S.currentActionIndex + n, S.currentActionIndex = Math.min(r.length - 1, S.currentActionIndex), S.currentActionIndex = Math.max(0, S.currentActionIndex);
28580 var i = t.element(r[S.currentActionIndex]).children()[0];
28581 t.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
28585 var e = A()[0].querySelectorAll(".md-fab-action-item");
28586 return t.forEach(e, function(e) {
28587 t.element(t.element(e).children()[0]).attr("tabindex", -1)
28592 "left" === S.direction ? b(e) : v(e)
28596 "down" === S.direction ? v(e) : b(e)
28600 "left" === S.direction ? v(e) : b(e)
28604 "up" === S.direction ? v(e) : b(e)
28608 return i.getClosest(e, "md-fab-trigger")
28612 return i.getClosest(e, "md-fab-actions")
28616 C(e.target) && S.toggle(), x(e.target) && S.close()
28620 return n.find("md-fab-trigger")
28624 return n.find("md-fab-actions")
28628 S.open = function() {
28629 e.$evalAsync("vm.isOpen = true")
28630 }, S.close = function() {
28631 e.$evalAsync("vm.isOpen = false"), n.find("md-fab-trigger")[0].focus()
28632 }, S.toggle = function() {
28633 e.$evalAsync("vm.isOpen = !vm.isOpen")
28634 }, S.$onInit = function() {
28636 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit();
28639 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], t.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
28648 if (!n.hasClass("md-animations-waiting") || n.hasClass("_md-animations-ready")) {
28650 i = n.controller("mdFabSpeedDial"),
28651 o = r.querySelectorAll(".md-fab-action-item"),
28652 a = r.querySelector("md-fab-trigger"),
28653 s = r.querySelector("._md-css-variables"),
28654 c = parseInt(e.getComputedStyle(s).zIndex);
28655 t.forEach(o, function(e, t) {
28657 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = o.length - t + c
28658 }), a.style.zIndex = c + o.length + 1, i.isOpen || t.forEach(o, function(e, t) {
28659 var n, r, o = e.style,
28660 s = (a.clientHeight - e.clientHeight) / 2,
28661 c = (a.clientWidth - e.clientWidth) / 2;
28662 switch (i.direction) {
28664 n = e.scrollHeight * (t + 1) + s, r = "Y";
28667 n = -(e.scrollHeight * (t + 1) + s), r = "Y";
28670 n = e.scrollWidth * (t + 1) + c, r = "X";
28673 n = -(e.scrollWidth * (t + 1) + c), r = "X"
28675 var l = "translate" + r + "(" + n + "px)";
28676 o.transform = o.webkitTransform = l
28681 addClass: function(e, t, n) {
28682 e.hasClass("md-fling") ? (o(e), r(n)) : n()
28684 removeClass: function(e, t, n) {
28697 i = n.controller("mdFabSpeedDial"),
28698 o = r.querySelectorAll(".md-fab-action-item"),
28699 s = r.querySelector("._md-css-variables"),
28700 c = parseInt(e.getComputedStyle(s).zIndex);
28701 t.forEach(o, function(e, t) {
28704 n.opacity = i.isOpen ? 1 : 0, n.transform = n.webkitTransform = i.isOpen ? "scale(1)" : "scale(0)", n.transitionDelay = (i.isOpen ? r : o.length - r) + "ms", n.zIndex = o.length - t + c
28709 addClass: function(e, t, n) {
28712 removeClass: function(e, t, n) {
28717 n.$inject = ["$timeout"], r.$inject = ["$timeout"];
28719 t.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
28723 direction: "@?mdDirection",
28726 bindToController: !0,
28727 controller: "MdFabController",
28728 controllerAs: "vm",
28729 link: function(e, t) {
28730 t.prepend('<div class="_md-css-variables"></div>')
28733 }).animation(".md-fling", n).animation(".md-scale", r).service("mdFabSpeedDialFlingAnimation", n).service("mdFabSpeedDialScaleAnimation", r)
28737 function n(n, r, i) {
28740 a = n.controller("mdFabToolbar"),
28741 s = o.querySelector(".md-fab-toolbar-background"),
28742 c = o.querySelector("md-fab-trigger button"),
28743 l = o.querySelector("md-toolbar"),
28744 u = o.querySelector("md-fab-trigger button md-icon"),
28745 d = n.find("md-fab-actions").children();
28747 var f = e.getComputedStyle(c).getPropertyValue("background-color"),
28749 p = (o.offsetHeight, h / c.offsetWidth * 2);
28750 s.style.backgroundColor = f, s.style.borderRadius = h + "px", a.isOpen ? (l.style.pointerEvents = "inherit", s.style.width = c.offsetWidth + "px", s.style.height = c.offsetHeight + "px", s.style.transform = "scale(" + p + ")", s.style.transitionDelay = "0ms", u && (u.style.transitionDelay = ".3s"), t.forEach(d, function(e, t) {
28751 e.style.transitionDelay = 25 * (d.length - t) + "ms"
28752 })) : (l.style.pointerEvents = "none", s.style.transform = "scale(1)", s.style.top = "0", n.hasClass("md-right") && (s.style.left = "0", s.style.right = null), n.hasClass("md-left") && (s.style.right = "0", s.style.left = null), s.style.transitionDelay = "200ms", u && (u.style.transitionDelay = "0ms"), t.forEach(d, function(e, t) {
28753 e.style.transitionDelay = 200 + 25 * t + "ms"
28759 addClass: function(e, t, r) {
28762 removeClass: function(e, t, r) {
28767 t.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
28771 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
28773 direction: "@?mdDirection",
28776 bindToController: !0,
28777 controller: "MdFabController",
28778 controllerAs: "vm",
28779 link: function(e, t, n) {
28780 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
28783 }).animation(".md-fab-toolbar", n).service("mdFabToolbarAnimation", n)
28784 }(), t.module("material.components.icon", ["material.core"]),
28786 function e(e, r, i, o) {
28793 link: function(n, a, s, c) {
28795 null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
28802 function d(e, t, n, r, i, o, a) {
28803 var s = 1 / n * 100,
28810 u = "rtl" != document.dir && "rtl" != document.body.dir ? {
28858 }), u.paddingTop = T({
28862 }), u.marginTop = x({
28869 var d = 1 / r * 100,
28872 gutterShare: (r - 1) / r,
28888 function f(e, t, n, r, i) {
28896 }), o.paddingBottom = "";
28900 share: 1 / e * 100 * (1 / i),
28901 gutterShare: 1 === e ? 0 : (e - 1) / e,
28904 o.height = "", o.paddingBottom = T({
28914 return [].filter.call(a.children(), function(e) {
28915 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
28920 return [].map.call(e, function(e) {
28921 var n = t.element(e).controller("mdGridTile");
28923 row: parseInt(o.getResponsiveAttribute(n.$attrs, "md-rowspan"), 10) || 1,
28924 col: parseInt(o.getResponsiveAttribute(n.$attrs, "md-colspan"), 10) || 1
28930 var e = parseInt(o.getResponsiveAttribute(s, "md-cols"), 10);
28931 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
28936 return y(o.getResponsiveAttribute(s, "md-gutter") || 1)
28940 var e = o.getResponsiveAttribute(s, "md-row-height");
28941 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28946 var t = e.split(":");
28947 return parseFloat(t[0]) / parseFloat(t[1]);
28954 var e = o.getResponsiveAttribute(s, "md-row-height");
28955 if (!e) throw "md-grid-list: md-row-height attribute was not found";
28956 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
28960 return /\D$/.test(e) ? e : e + "px"
28962 a.addClass("_md"), a.attr("role", "list"), c.layoutDelegate = function(e) {
28971 if (e || !t.equals(o, w)) {
28972 var s = i(o.colCount, o.tileSpans, r).map(function(e, n) {
28976 style: f(o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
28978 tiles: e.map(function(e, i) {
28980 element: t.element(r[i]),
28981 style: d(e.position, e.spans, o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
28985 }).reflow().performance();
28993 var _ = t.bind(c, c.invalidateLayout),
28995 for (var e in r.MEDIA) o(e), o.getQuery(r.MEDIA[e]).addListener(_);
28996 return o.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, l)
28998 n.$on("$destroy", function() {
28999 c.layoutDelegate = t.noop, $();
29000 for (var e in r.MEDIA) o.getQuery(r.MEDIA[e]).removeListener(_)
29002 var w, E = e.startSymbol(),
29004 C = e(u("share") + "% - (" + u("gutter") + " * " + u("gutterShare") + ")"),
29005 x = e("calc((" + u("unit") + " + " + u("gutter") + ") * " + u("offset") + ")"),
29006 T = e("calc((" + u("unit") + ") * " + u("span") + " + (" + u("span") + " - 1) * " + u("gutter") + ")")
29012 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = t.noop
29017 var r, a, s, c, l, u;
29018 return c = e.time(function() {
29021 layoutInfo: function() {
29025 return l = e.time(function() {
29026 var e = r.layoutInfo();
29027 s = t(e.positioning, e.rowCount)
29030 reflow: function(t) {
29031 return u = e.time(function() {
29032 (t || o)(s.grid, s.tiles)
29035 performance: function() {
29037 tileCount: n.length,
29041 totalTime: c + l + u
29048 e.element.css(e.style), t.forEach(function(e) {
29049 e.element.css(e.style)
29055 if (t.col > e) throw "md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
29056 for (var l = 0, u = 0; u - l < t.col;) a >= e ? r() : -1 !== (l = c.indexOf(0, a)) && -1 !== (u = o(l + 1)) ? a = u + 1 : (l = u = 0, r());
29057 return i(l, t.col, t.row), a = l + t.col, {
29064 a = 0, s++, i(0, e, -1)
29067 function i(e, t, n) {
29068 for (var r = e; r < e + t; r++) c[r] = Math.max(c[r] + n, 0)
29073 for (t = e; t < c.length; t++)
29074 if (0 !== c[t]) return t;
29075 if (t === c.length) return t
29080 for (var t = [], n = 0; n < e; n++) t.push(0);
29084 positioning: t.map(function(e, t) {
29090 rowCount: s + Math.max.apply(Math, c)
29094 return n.animateWith = function(e) {
29095 o = t.isFunction(e) ? e : r
29102 require: "^mdGridList",
29103 template: "<figure ng-transclude></figure>",
29106 controller: ["$attrs", function(e) {
29109 link: function(n, r, i, o) {
29110 r.attr("role", "listitem");
29111 var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], i, t.bind(o, o.invalidateLayout));
29112 o.invalidateTiles(), n.$on("$destroy", function() {
29113 r[0].$$mdDestroyed = !0, a(), o.invalidateLayout()
29114 }), t.isDefined(n.$parent.$index) && n.$watch(function() {
29115 return n.$parent.$index
29116 }, function(e, t) {
29117 e !== t && o.invalidateTiles()
29125 template: "<figcaption ng-transclude></figcaption>",
29129 n.$inject = ["$mdUtil"], r.$inject = ["$mdUtil"], e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia"], i.$inject = ["$mdMedia"], t.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", i).directive("mdGridTileFooter", o).directive("mdGridTileHeader", o).factory("$mdGridLayout", r), n.prototype = {
29130 invalidateTiles: function() {
29131 this.tilesInvalidated = !0, this.invalidateLayout()
29133 invalidateLayout: function() {
29134 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(t.bind(this, this.layout)))
29136 layout: function() {
29138 this.layoutDelegate(this.tilesInvalidated)
29140 this.layoutInvalidated = !1, this.tilesInvalidated = !1
29147 function n(e, n, r, i) {
29149 o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.delegateClick = function() {
29151 }, o.element = n, o.setFocused = function(e) {
29152 n.toggleClass("md-input-focused", !!e)
29153 }, o.setHasValue = function(e) {
29154 n.toggleClass("md-input-has-value", !!e)
29155 }, o.setHasPlaceholder = function(e) {
29156 n.toggleClass("md-input-has-placeholder", !!e)
29157 }, o.setInvalid = function(e) {
29158 e ? i.addClass(n, "md-input-invalid") : i.removeClass(n, "md-input-invalid")
29159 }, e.$watch(function() {
29160 return o.label && o.input
29162 e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
29165 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
29166 var r = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
29167 i = r.reduce(function(e, t) {
29168 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
29170 o = r.reduce(function(e, t) {
29171 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
29175 compile: function(t) {
29176 var n = t[0].querySelector(i),
29177 r = t[0].querySelector(o);
29178 return n && t.addClass("md-icon-left"), r && t.addClass("md-icon-right"),
29187 function r(e, n, r, i, o) {
29190 require: ["^?mdInputContainer", "?ngModel", "?^form"],
29191 link: function(a, s, c, l) {
29193 return f.setHasValue(!p.$isEmpty(e)), e
29197 f.setHasValue(s.val().length > 0 || (s[0].validity || {}).badInput)
29201 p = l[1] || e.fakeNgModel(),
29203 g = t.isDefined(c.readonly),
29204 v = e.parseAttributeBoolean(c.mdNoAsterisk),
29205 b = s[0].tagName.toLowerCase();
29207 if ("hidden" !== c.type) {
29209 if (f.input[0].contains(s[0])) return;
29210 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
29212 f.input = s, f.label && c.$observe("required", function(e) {
29213 f.label.toggleClass("md-required", e && !v)
29215 var y = t.element('<div class="md-errors-spacer">');
29217 var _ = t.isString(c.placeholder) ? c.placeholder.trim() : "";
29218 f.label || _.length || r.expect(s, "aria-label"), s.addClass("md-input"), s.attr("id") || s.attr("id", "input_" + e.nextUid()), "input" === b && "number" === c.type && c.min && c.max && !c.step ? s.attr("step", "any") : "textarea" === b && function() {
29220 s.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
29223 var t = s[0].style.padding || "";
29224 y = s.css("padding", 0).prop("offsetHeight"), s[0].style.padding = t
29226 if (g && y && (e = Math.max(e, y * g)), v && y) {
29228 n < e ? (s.attr("md-no-autogrow", ""), e = n) : s.removeAttr("md-no-autogrow")
29230 y && s.attr("rows", Math.round(e / y)), s.css("height", e + "px").removeClass("md-no-flex")
29234 var e = _.offsetHeight,
29235 t = _.scrollHeight - e;
29236 return e + Math.max(t, 0)
29240 return e.nextTick(r), t
29244 if (m && (m = !1, t.element(n).off("resize", r), b && b(), s.attr("md-no-autogrow", "").off("input", r), h)) {
29245 var e = p.$formatters.indexOf(u);
29246 e > -1 && p.$formatters.splice(e, 1)
29249 var m = !c.hasOwnProperty("mdNoAutogrow");
29252 e.preventDefault(), u = !0, h = e.clientY, p = parseFloat(s.css("height")) || s.prop("offsetHeight")
29256 u && (e.preventDefault(), d(), m.addClass("md-input-resized"))
29260 u && s.css("height", p + e.pointer.distanceY + "px")
29264 u && (u = !1, m.removeClass("md-input-resized"))
29266 if (!c.hasOwnProperty("mdNoResize")) {
29267 var l = t.element('<div class="md-resize-handle"></div>'),
29272 g = o.register(l, "drag", {
29275 s.wrap('<div class="md-resize-wrapper">').after(l), l.on("mousedown", e), m.on("$md.dragstart", n).on("$md.drag", r).on("$md.dragend", i), a.$on("$destroy", function() {
29276 l.off("mousedown", e).remove(), m.off("$md.dragstart", n).off("$md.drag", r).off("$md.dragend", i), g(), l = null, m = null, g = null
29280 var g = c.hasOwnProperty("rows") ? parseInt(c.rows) : NaN,
29281 v = c.hasOwnProperty("maxRows") ? parseInt(c.maxRows) : NaN,
29282 b = a.$on("md-resize-textarea", r),
29287 }, 10, !1), s.on("input", r), h && p.$formatters.push(u), g || s.attr("rows", 1), t.element(n).on("resize", r), a.$on("$destroy", d), c.hasOwnProperty("mdDetectHidden")) {
29288 var $ = function() {
29290 return function() {
29291 var t = 0 === _.offsetHeight;
29292 !1 === t && !0 === e && r(), e = t
29295 a.$watch(function() {
29296 return e.nextTick($, !1), !0
29301 var $ = f.isErrorGetter || function() {
29302 return p.$invalid && (p.$touched || m && m.$submitted)
29304 a.$watch($, f.setInvalid), c.ngValue && c.$observe("value", d), p.$parsers.push(u), p.$formatters.push(u), s.on("input", d), g || s.on("focus", function(t) {
29305 e.nextTick(function() {
29308 }).on("blur", function(t) {
29309 e.nextTick(function() {
29310 f.setFocused(!1), d()
29312 }), a.$on("$destroy", function() {
29313 f.setFocused(!1), f.setHasValue(!1), f.input = null
29315 } else s.attr("aria-hidden", "true")
29323 require: ["ngModel", "^mdInputContainer"],
29324 link: function(r, i, o, a) {
29326 return l.parent ? (l.text(String(i.val() || e || "").length + " / " + c), e) : e
29328 var c, l, u, d = a[0],
29330 n.nextTick(function() {
29331 u = t.element(f.element[0].querySelector(".md-errors-spacer")), l = t.element('<div class="md-char-counter">'), u.append(l), o.$set("ngTrim", "false"), r.$watch(o.mdMaxlength, function(n) {
29332 c = n, t.isNumber(n) && n > 0 ? (l.parent().length || e.enter(l, u), s()) : e.leave(l)
29333 }), d.$validators["md-maxlength"] = function(e, n) {
29334 return !t.isNumber(c) || c < 0 || (s(), (e || i.val() || n || "").length <= c)
29344 require: "^^?mdInputContainer",
29347 pre: function(n, r, i, o) {
29349 var a = o.element.find("label"),
29350 s = o.element.attr("md-no-float");
29351 if (a && a.length || "" === s || n.$eval(s)) o.setHasPlaceholder(!0);
29352 else if ("MD-SELECT" != r[0].nodeName) {
29353 var c = t.element('<label ng-click="delegateClick()" tabindex="-1">' + i.placeholder + "</label>");
29354 i.$set("placeholder", null), o.element.addClass("md-icon-float").prepend(c), e(c)(n)
29365 link: function(t, n, r) {
29367 a = !0, e(function() {
29368 n[0].select(), a = !1
29373 a && e.preventDefault()
29375 if ("INPUT" === n[0].nodeName || "TEXTAREA" === n[0].nodeName) {
29377 n.on("focus", i).on("mouseup", o), t.$on("$destroy", function() {
29378 n.off("focus", i).off("mouseup", o)
29388 compile: function(t) {
29390 return !!e.getClosest(t, "md-input-container")
29394 e.toggleClass("md-input-message-animation", !0)
29397 else if (function() {
29398 for (var e = t[0]; e = e.parentNode;)
29399 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
29401 }()) return function(e, i) {
29409 function c(e, t, n, r) {
29410 return v(e, t, n, r), {
29411 addClass: function(e, t, n) {
29417 function l(e, t, n, r) {
29418 return v(e, t, n, r), {
29419 enter: function(e, t) {
29422 leave: function(e, t) {
29425 addClass: function(e, t, n) {
29426 "ng-hide" == t ? f(e, n) : n()
29428 removeClass: function(e, t, n) {
29429 "ng-hide" == t ? d(e, n) : n()
29434 function u(e, t, n, r) {
29435 return v(e, t, n, r), {
29436 enter: function(e, t) {
29437 h(e).start().done(t)
29439 leave: function(e, t) {
29440 p(e).start().done(t)
29449 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages show animation called on invalid messages element: ", e), void n();
29450 t.forEach(a, function(e) {
29451 r = h(t.element(e)), i.push(r.start())
29459 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages hide animation called on invalid messages element: ", e), void n();
29460 t.forEach(a, function(e) {
29461 r = p(t.element(e)), i.push(r.start())
29466 var n = parseInt(e.getComputedStyle(t[0]).height),
29467 r = parseInt(e.getComputedStyle(t[0]).marginTop),
29470 return r > -n || i.hasClass("md-auto-hide") && !o.hasClass("md-input-invalid") ? _(t, {}) : _(t, {
29475 "margin-top": -n + "px"
29486 var n = t[0].offsetHeight,
29487 r = e.getComputedStyle(t[0]);
29488 return 0 === parseInt(r.opacity) ? _(t, {}) : _(t, {
29497 "margin-top": -n + "px"
29504 return e.controller("mdInputContainer").element
29508 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? t.element($.getClosest(e, function(e) {
29509 return e.classList.contains("md-input-messages-animation")
29510 })) : t.element(e[0].querySelector(".md-input-messages-animation"))
29513 function v(e, t, n, r) {
29514 y = e, _ = t, $ = n, w = r
29516 n.$inject = ["$mdTheming", "$parse"], r.$inject = ["$mdUtil", "$window", "$mdAria", "$timeout", "$mdGesture"], i.$inject = ["$animate", "$mdUtil"], o.$inject = ["$compile"], s.$inject = ["$mdUtil"], a.$inject = ["$timeout"], c.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], l.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], u.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"];
29517 var b = t.module("material.components.input", ["material.core"]).directive("mdInputContainer", n).directive("label", function() {
29520 require: "^?mdInputContainer",
29521 link: function(e, t, n, r) {
29522 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
29527 }).directive("input", r).directive("textarea", r).directive("mdMaxlength", i).directive("placeholder", o).directive("ngMessages", function() {
29529 return E.some(function(t) {
29535 link: function(t, n, r, i) {
29536 i && (n.toggleClass("md-input-messages-animation", !0), n.toggleClass("md-auto-hide", !0), ("false" == r.mdAutoHide || e(r)) && n.toggleClass("md-auto-hide", !1))
29538 require: "^^?mdInputContainer"
29540 }).directive("ngMessage", s).directive("ngMessageExp", s).directive("mdSelectOnFocus", a).animation(".md-input-invalid", c).animation(".md-input-messages-animation", l).animation(".md-input-message-animation", u);
29541 e._mdMocksIncluded && b.service("$$mdInput", function() {
29549 }).service("mdInputInvalidAnimation", c).service("mdInputMessagesAnimation", l).service("mdInputMessageAnimation", u);
29550 var y, _, $, w, E = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"]
29556 compile: function(t) {
29557 return t[0].setAttribute("role", "list"), e
29562 function n(e, n, r, i) {
29563 var o = ["md-checkbox", "md-switch", "md-menu"];
29566 controller: "MdListController",
29567 compile: function(a, s) {
29569 if ("div" == n)(v = t.element('<div class="md-no-style md-list-item-inner">')).append(a.contents()), a.addClass("md-proxy-focus");
29571 v = t.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
29572 var r = t.element('<md-button class="md-no-style"></md-button>');
29573 u(a[0], r[0]), r.attr("aria-label") || r.attr("aria-label", e.getText(a)), a.hasClass("md-no-focus") && r.addClass("md-no-focus"), v.prepend(r), v.children().eq(1).append(a.contents()), a.addClass("_md-button-wrap")
29575 a[0].setAttribute("tabindex", "-1"), a.append(v)
29579 if (n && !f(n) && n.hasAttribute("ng-click")) {
29580 e.expect(n, "aria-label");
29581 var i = t.element('<md-button class="md-secondary md-icon-button">');
29582 u(n, i[0], ["ng-if", "ng-hide", "ng-show"]), n.setAttribute("tabindex", "-1"), i.append(n), n = i[0]
29584 n && (!h(n) || !s.ngClick && d(n)) && t.element(n).removeClass("md-secondary"), a.addClass("md-with-secondary"), r.append(n)
29587 function u(e, n, i) {
29588 var o = r.prefixer(["ng-if", "ng-click", "ng-dblclick", "aria-label", "ng-disabled", "ui-sref", "href", "ng-href", "rel", "target", "ng-attr-ui-sref", "ui-sref-opts"]);
29589 i && (o = o.concat(r.prefixer(i))), t.forEach(o, function(t) {
29590 e.hasAttribute(t) && (n.setAttribute(t, e.getAttribute(t)), e.removeAttribute(t))
29595 return -1 != o.indexOf(e.nodeName.toLowerCase())
29599 var t = e.nodeName.toUpperCase();
29600 return "MD-BUTTON" == t || "BUTTON" == t
29604 for (var t = e.attributes, n = 0; n < t.length; n++)
29605 if ("ngClick" === s.$normalize(t[n].name)) return !0;
29608 var p, m, g = a[0].querySelectorAll(".md-secondary"),
29610 if (a[0].setAttribute("role", "listitem"), s.ngClick || s.ngDblclick || s.ngHref || s.href || s.uiSref || s.ngAttrUiSref) c("button");
29611 else if (!a.hasClass("md-no-proxy")) {
29612 for (var b, y = 0; b = o[y]; ++y)
29613 if (m = a[0].querySelector(b)) {
29617 p ? c("div") : a.addClass("md-no-proxy")
29619 return function() {
29620 var e = t.element('<div class="md-secondary-container">');
29621 t.forEach(g, function(t) {
29626 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
29627 if ((e = a.find(t)[0]) && !e.hasAttribute("aria-label")) {
29628 var i = a.find("p")[0];
29630 e.setAttribute("aria-label", "Toggle " + i.textContent)
29632 }(), p && "MD-MENU" === m.nodeName && function() {
29633 var e = t.element(m),
29635 (e.parent().hasClass("md-secondary-container") || m.parentNode.firstElementChild !== m) && (n = "right"), e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
29636 var r = e.children().eq(0);
29637 h(r[0]) || r.attr("ng-click", "$mdMenu.open($event)"), r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
29639 function(e, a, s, c) {
29641 var t = ["md-slider"];
29642 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
29643 for (var n = e.path.indexOf(a.children()[0]), r = 0; r < n; r++)
29644 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
29648 d = a[0].firstElementChild,
29649 f = a.hasClass("_md-button-wrap") ? d.firstElementChild : d,
29651 m = a.hasClass("md-no-proxy");
29652 d && d.children && !p && !m && t.forEach(o, function(e) {
29653 t.forEach(d.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
29656 }), (1 == u.length || p) && (a.addClass("md-clickable"), p || c.attachRipple(e, t.element(a[0].querySelector(".md-no-style")))), u.length && t.forEach(u, function(n) {
29657 n = t.element(n), e.mouseActive = !1, n.on("mousedown", function() {
29658 e.mouseActive = !0, i(function() {
29661 }).on("focus", function() {
29662 !1 === e.mouseActive && a.addClass("md-focused"), n.on("blur", function e() {
29663 a.removeClass("md-focused"), n.off("blur", e)
29667 var g = function(e) {
29668 "INPUT" == e.target.nodeName || "TEXTAREA" == e.target.nodeName || e.target.isContentEditable || (e.which || e.keyCode) == n.KEY_CODE.SPACE && f && (f.click(), e.preventDefault(), e.stopPropagation())
29670 p || u.length || f && f.addEventListener("keypress", g), a.off("click"), a.off("keypress"), 1 == u.length && f && a.children().eq(0).on("click", function(e) {
29671 l(e) || !r.getClosest(e.target, "BUTTON") && f.contains(e.target) && t.forEach(u, function(n) {
29672 e.target === n || n.contains(e.target) || ("MD-MENU" === n.nodeName && (n = n.children[0]), t.element(n).triggerHandler("click"))
29674 }), e.$on("$destroy", function() {
29675 f && f.removeEventListener("keypress", g)
29682 function r(e, t, n) {
29683 this.attachRipple = function(e, t) {
29688 r.$inject = ["$scope", "$element", "$mdListInkRipple"], e.$inject = ["$mdTheming"], n.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"], t.module("material.components.list", ["material.core"]).controller("MdListController", r).directive("mdList", e).directive("mdListItem", n)
29689 }(), t.module("material.components.menu", ["material.core", "material.components.backdrop"]), t.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
29696 controllerAs: "ctrl",
29697 bindToController: !0,
29699 mdSelectedNavItem: "=?",
29701 navBarAriaLabel: "@?"
29703 template: '<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="listbox"tabindex="0"ng-focus="ctrl.onFocus()"ng-keydown="ctrl.onKeydown($event)"aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',
29704 link: function(r, i, o, a) {
29705 n(i), a.navBarAriaLabel || e.expectAsync(i, "aria-label", t.noop)
29710 function r(e, t, n, r) {
29711 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
29713 o = this._$scope.$watch(function() {
29714 return i._navBarEl.querySelectorAll("._md-nav-button").length
29716 e > 0 && (i._initTabs(), o())
29723 require: ["mdNavItem", "^mdNavBar"],
29725 bindToController: !0,
29726 controllerAs: "ctrl",
29729 template: function(e, t) {
29730 var n, r, i, o = t.mdNavClick,
29734 if ((o ? 1 : 0) + (a ? 1 : 0) + (s ? 1 : 0) > 1) throw Error("Must not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
29735 return o ? n = 'ng-click="ctrl.mdNavClick()"' : a ? n = 'ng-href="{{ctrl.mdNavHref}}"' : s && (n = 'ui-sref="{{ctrl.mdNavSref}}"'), r = c ? 'ui-sref-opts="{{ctrl.srefOpts}}" ' : "", n && (i = '<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" tabindex="-1" ' + r + n + '><span ng-transclude class="_md-nav-button-text"></span></md-button>'), '<li class="md-nav-item" role="option" aria-selected="{{ctrl.isSelected()}}">' + (i || "") + "</li>"
29744 link: function(r, i, o, a) {
29748 s = t.element(i[0].querySelector("._md-nav-button"));
29749 n.name || (n.name = t.element(i[0].querySelector("._md-nav-button-text")).text().trim()), s.on("click", function() {
29750 o.mdSelectedNavItem = n.name, r.$apply()
29751 }), e.expectWithText(i, "aria-label")
29758 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this._selected = !1, this._focused = !1
29760 r.$inject = ["$element", "$scope", "$timeout", "$mdConstant"], i.$inject = ["$mdAria", "$$rAF"], o.$inject = ["$element"], e.$inject = ["$mdAria", "$mdTheming"], t.module("material.components.navBar", ["material.core"]).controller("MdNavBarController", r).directive("mdNavBar", e).controller("MdNavItemController", o).directive("mdNavItem", i), r.prototype._initTabs = function() {
29761 this._inkbar = t.element(this._navBarEl.querySelector("md-nav-ink-bar"));
29763 this._$timeout(function() {
29764 e._updateTabs(e.mdSelectedNavItem, n)
29765 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(t, n) {
29766 e._$timeout(function() {
29767 e._updateTabs(t, n)
29770 }, r.prototype._updateTabs = function(e, t) {
29772 r = this._getTabs();
29776 a = this._getTabByName(e),
29777 s = this._getTabByName(t);
29778 s && (s.setSelected(!1), i = r.indexOf(s)), a && (a.setSelected(!0), o = r.indexOf(a)), this._$timeout(function() {
29779 n._updateInkBarStyles(a, o, i)
29782 }, r.prototype._updateInkBarStyles = function(e, t, n) {
29783 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", t > n), this._inkbar.css({
29784 display: t < 0 ? "none" : ""
29786 var r = e.getButtonEl(),
29790 width: r.offsetWidth + "px"
29793 }, r.prototype._getTabs = function() {
29794 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
29795 return t.element(e).controller("mdNavItem")
29797 return e.indexOf(n) ? e : null
29798 }, r.prototype._getTabByName = function(e) {
29799 return this._findTab(function(t) {
29800 return t.getName() == e
29802 }, r.prototype._getSelectedTab = function() {
29803 return this._findTab(function(e) {
29804 return e.isSelected()
29806 }, r.prototype.getFocusedTab = function() {
29807 return this._findTab(function(e) {
29808 return e.hasFocus()
29810 }, r.prototype._findTab = function(e) {
29811 for (var t = this._getTabs(), n = 0; n < t.length; n++)
29812 if (e(t[n])) return t[n];
29814 }, r.prototype.onFocus = function() {
29815 var e = this._getSelectedTab();
29816 e && e.setFocused(!0)
29817 }, r.prototype._moveFocus = function(e, t) {
29818 e.setFocused(!1), t.setFocused(!0)
29819 }, r.prototype.onKeydown = function(e) {
29820 var t = this._$mdConstant.KEY_CODE,
29821 n = this._getTabs(),
29822 r = this.getFocusedTab();
29824 var i = n.indexOf(r);
29825 switch (e.keyCode) {
29828 i > 0 && this._moveFocus(r, n[i - 1]);
29831 case t.RIGHT_ARROW:
29832 i < n.length - 1 && this._moveFocus(r, n[i + 1]);
29836 this._$timeout(function() {
29837 r.getButtonEl().click()
29841 }, o.prototype.getNgClassMap = function() {
29843 "md-active": this._selected,
29844 "md-primary": this._selected,
29845 "md-unselected": !this._selected,
29846 "md-focused": this._focused
29848 }, o.prototype.getName = function() {
29850 }, o.prototype.getButtonEl = function() {
29851 return this._$element[0].querySelector("._md-nav-button")
29852 }, o.prototype.setSelected = function(e) {
29854 }, o.prototype.isSelected = function() {
29855 return this._selected
29856 }, o.prototype.setFocused = function(e) {
29857 this._focused = e, e && this.getButtonEl().focus()
29858 }, o.prototype.hasFocus = function() {
29859 return this._focused
29864 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
29865 if (p.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
29866 delete t.id, delete t.position, delete t.animation, p[e] = t
29878 return ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
29879 return new a(p, e, t, n, r)
29883 function a(e, n, r, i, o) {
29884 this._defaultConfigOptions = {
29885 bindToController: !0,
29886 clickOutsideToClose: !1,
29887 disableParentScroll: !1,
29892 propagateContainerEvents: !1,
29893 transformTemplate: t.bind(this, this._wrapTemplate),
29896 }, this._config = {}, this._presets = e, this._$rootElement = n, this._$rootScope = r, this._$injector = i, this._$window = o, this._$mdUtil = this._$injector.get("$mdUtil"), this._trackedPanels = {}, this._groups = Object.create(null), this.animation = l.animation, this.xPosition = c.xPosition, this.yPosition = c.yPosition, this.interceptorTypes = s.interceptorTypes, this.closeReasons = s.closeReasons, this.absPosition = c.absPosition
29900 this._$q = t.get("$q"), this._$mdCompiler = t.get("$mdCompiler"), this._$mdConstant = t.get("$mdConstant"), this._$mdUtil = t.get("$mdUtil"), this._$mdTheming = t.get("$mdTheming"), this._$rootScope = t.get("$rootScope"), this._$animate = t.get("$animate"), this._$mdPanel = t.get("$mdPanel"), this._$log = t.get("$log"), this._$window = t.get("$window"), this._$$rAF = t.get("$$rAF"), this.id = e.id, this.config = e, this.panelContainer, this.panelEl, this.isAttached = !1, this._removeListeners = [], this._topFocusTrap, this._bottomFocusTrap, this._backdropRef, this._restoreScroll = null, this._interceptors = Object.create(null), this._compilerCleanup = null, this._restoreCache = {
29907 this._$window = e.get("$window"), this._isRTL = "rtl" === e.get("$mdUtil").bidi(), this._$mdConstant = e.get("$mdConstant"), this._absolute = !1, this._relativeToEl, this._top = "", this._bottom = "", this._left = "", this._right = "", this._translateX = [], this._translateY = [], this._positions = [], this._actualPosition
29911 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
29915 var n = t.isString(e) ? document.querySelector(e) : e;
29916 return t.element(n)
29920 var n = getComputedStyle(e[0] || e)[t],
29921 r = n.indexOf("("),
29922 i = n.lastIndexOf(")"),
29927 if (r > -1 && i > -1) {
29928 var a = n.substring(r + 1, i).split(", ").slice(-2);
29929 o.x = parseInt(a[0]), o.y = parseInt(a[1])
29933 a.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], t.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
29942 h = t.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
29944 a.prototype.create = function(e, n) {
29945 if ("string" == typeof e ? e = this._getPresetByName(e) : "object" != typeof e || !t.isUndefined(n) && n || (n = e, e = {}), e = e || {}, n = n || {}, t.isDefined(n.id) && this._trackedPanels[n.id]) {
29946 var r = this._trackedPanels[n.id];
29947 return t.extend(r.config, n), r
29949 this._config = t.extend({
29950 id: n.id || "panel_" + this._$mdUtil.nextUid(),
29951 scope: this._$rootScope.$new(!0),
29952 attachTo: this._$rootElement
29953 }, this._defaultConfigOptions, n, e);
29954 var i = new s(this._config, this._$injector);
29955 return this._trackedPanels[n.id] = i, this._config.groupName && (t.isString(this._config.groupName) && (this._config.groupName = [this._config.groupName]), t.forEach(this._config.groupName, function(e) {
29957 })), this._config.scope.$on("$destroy", t.bind(i, i.detach)), i
29958 }, a.prototype.open = function(e, t) {
29959 var n = this.create(e, t);
29960 return n.open().then(function() {
29963 }, a.prototype._getPresetByName = function(e) {
29964 if (!this._presets[e]) throw new Error("mdPanel: The panel preset configuration that you requested does not exist. Use the $mdPanelProvider to create a preset before requesting one.");
29965 return this._presets[e]
29966 }, a.prototype.newPanelPosition = function() {
29967 return new c(this._$injector)
29968 }, a.prototype.newPanelAnimation = function() {
29969 return new l(this._$injector)
29970 }, a.prototype.newPanelGroup = function(e, t) {
29971 if (!this._groups[e]) {
29975 maxOpen: (t = t || {}).maxOpen > 0 ? t.maxOpen : 1 / 0
29977 this._groups[e] = n
29979 return this._groups[e]
29980 }, a.prototype.setGroupMaxOpen = function(e, t) {
29981 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
29982 this._groups[e].maxOpen = t
29983 }, a.prototype._openCountExceedsMaxOpen = function(e) {
29984 if (this._groups[e]) {
29985 var t = this._groups[e];
29986 return t.maxOpen > 0 && t.openPanels.length > t.maxOpen
29989 }, a.prototype._closeFirstOpenedPanel = function(e) {
29990 this._groups[e].openPanels[0].close()
29991 }, a.prototype._wrapTemplate = function(e) {
29992 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
29993 }, a.prototype._wrapContentElement = function(e) {
29994 var n = t.element('<div class="md-panel-outer-wrapper">');
29995 return e.addClass("md-panel _md-panel-offscreen"), n.append(e), n
29996 }, s.interceptorTypes = {
29998 }, s.prototype.open = function() {
30000 return this._$q(function(n, r) {
30001 var i = e._done(n, e),
30002 o = e._simpleBind(e.show, e);
30003 e.attach().then(o).then(function() {
30004 e.config.groupName && t.forEach(e.config.groupName, function(t) {
30005 e._$mdPanel._openCountExceedsMaxOpen(t) && e._$mdPanel._closeFirstOpenedPanel(t)
30007 }).then(i).catch(r)
30009 }, s.prototype.close = function(e) {
30011 return this._$q(function(r, i) {
30012 n._callInterceptors(s.interceptorTypes.CLOSE).then(function() {
30013 var o = n._done(r, n),
30014 a = n._simpleBind(n.detach, n),
30015 s = n.config.onCloseSuccess || t.noop;
30016 s = t.bind(n, s, n, e), n.hide().then(a).then(o).then(s).catch(i)
30019 }, s.prototype.attach = function() {
30020 if (this.isAttached && this.panelEl) return this._$q.when(this);
30022 return this._$q(function(n, r) {
30023 var i = e._done(n, e),
30024 o = e.config.onDomAdded || t.noop;
30025 e._$q.all([e._createBackdrop(), e._createPanel().then(function(t) {
30026 return e.isAttached = !0, e._addEventListeners(), t
30027 }).catch(r)]).then(o).then(i).catch(r)
30029 }, s.prototype.detach = function() {
30030 if (!this.isAttached) return this._$q.when(this);
30032 n = e.config.onDomRemoved || t.noop,
30034 return e._removeEventListeners(), e._topFocusTrap && e._topFocusTrap.parentNode && e._topFocusTrap.parentNode.removeChild(e._topFocusTrap), e._bottomFocusTrap && e._bottomFocusTrap.parentNode && e._bottomFocusTrap.parentNode.removeChild(e._bottomFocusTrap), e._restoreCache.classes && (e.panelEl[0].className = e._restoreCache.classes), e.panelEl[0].style.cssText = e._restoreCache.styles || "", e._compilerCleanup(), e.panelContainer.remove(), e.isAttached = !1, e._$q.when(e)
30036 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(t, i) {
30037 var o = e._done(t, e);
30038 e._$q.all([r(), !e._backdropRef || e._backdropRef.detach()]).then(n).then(o).catch(i)
30040 }, s.prototype.destroy = function() {
30042 this.config.groupName && t.forEach(this.config.groupName, function(t) {
30043 e.removeFromGroup(t)
30044 }), this.config.scope.$destroy(), this.config.locals = null, this._interceptors = null
30045 }, s.prototype.show = function() {
30046 if (!this.panelContainer) return this._$q(function(e, t) {
30047 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30049 if (!this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30052 return e.panelContainer.removeClass("_md-panel-hidden"), e._animateOpen()
30054 return this._$q(function(r, i) {
30055 var o = e._done(r, e),
30056 a = e.config.onOpenComplete || t.noop;
30057 e._$q.all([e._backdropRef ? e._backdropRef.show() : e, n().then(function() {
30059 }, i)]).then(a).then(function() {
30060 e.config.groupName && t.forEach(e.config.groupName, function(t) {
30061 e._$mdPanel._groups[t].openPanels.push(e)
30063 }).then(o).catch(i)
30065 }, s.prototype.hide = function() {
30066 if (!this.panelContainer) return this._$q(function(e, t) {
30067 t("mdPanel: Panel does not exist yet. Call open() or attach().")
30069 if (this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
30071 return this._$q(function(n, r) {
30072 var i = e._done(n, e),
30073 o = e.config.onRemoving || t.noop;
30074 e._$q.all([e._backdropRef ? e._backdropRef.hide() : e, e._animateClose().then(o).then(function() {
30075 e.panelContainer.addClass("_md-panel-hidden")
30076 }).then(function() {
30077 if (e.config.groupName) {
30079 t.forEach(e.config.groupName, function(t) {
30080 t = e._$mdPanel._groups[t], (n = t.openPanels.indexOf(e)) > -1 && t.openPanels.splice(n, 1)
30083 }).then(function() {
30084 var t = e.config.origin;
30086 }).catch(r)]).then(i, r)
30088 }, s.prototype.addClass = function(e, t) {
30089 if (this._$log.warn("mdPanel: The addClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30090 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
30091 }, s.prototype.removeClass = function(e, t) {
30092 if (this._$log.warn("mdPanel: The removeClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30093 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
30094 }, s.prototype.toggleClass = function(e, t) {
30095 if (this._$log.warn("mdPanel: The toggleClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30096 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
30097 }, s.prototype._compile = function() {
30099 return e._$mdCompiler.compile(e.config).then(function(n) {
30101 if (r.contentElement) {
30103 e._restoreCache.styles = i[0].style.cssText, e._restoreCache.classes = i[0].className, e.panelContainer = e._$mdPanel._wrapContentElement(i), e.panelEl = i
30104 } else e.panelContainer = n.link(r.scope), e.panelEl = t.element(e.panelContainer[0].querySelector(".md-panel"));
30105 return e._compilerCleanup = n.cleanup, u(e.config.attachTo).append(e.panelContainer), e
30107 }, s.prototype._createPanel = function() {
30109 return this._$q(function(t, n) {
30110 e.config.locals || (e.config.locals = {}), e.config.locals.mdPanelRef = e, e._compile().then(function() {
30111 e.config.disableParentScroll && (e._restoreScroll = e._$mdUtil.disableScrollAround(null, e.panelContainer, {
30112 disableScrollMask: !0
30113 })), e.config.panelClass && e.panelEl.addClass(e.config.panelClass), e.config.propagateContainerEvents && (e.panelContainer.css("pointer-events", "none"), e.panelEl.css("pointer-events", "all")), e._$animate.pin && e._$animate.pin(e.panelContainer, u(e.config.attachTo)), e._configureTrapFocus(), e._addStyles().then(function() {
30118 }, s.prototype._addStyles = function() {
30120 return this._$q(function(t) {
30121 e.panelContainer.css("z-index", e.config.zIndex), e.panelEl.css("z-index", e.config.zIndex + 1);
30122 var n = function() {
30123 e._setTheming(), e.panelEl.removeClass("_md-panel-offscreen"), e.panelContainer.addClass("_md-panel-hidden"), t(e)
30125 if (e.config.fullscreen) return e.panelEl.addClass("_md-panel-fullscreen"), void n();
30126 e.config.position ? e._$rootScope.$$postDigest(function() {
30127 e._updatePosition(!0), e._setTheming(), t(e)
30130 }, s.prototype._setTheming = function() {
30131 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
30132 }, s.prototype.updatePosition = function(e) {
30133 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
30134 this.config.position = e, this._updatePosition()
30135 }, s.prototype._updatePosition = function(e) {
30136 var t = this.config.position;
30137 t && (t._setPanelPosition(this.panelEl), e && (this.panelEl.removeClass("_md-panel-offscreen"), this.panelContainer.addClass("_md-panel-hidden")), this.panelEl.css(c.absPosition.TOP, t.getTop()), this.panelEl.css(c.absPosition.BOTTOM, t.getBottom()), this.panelEl.css(c.absPosition.LEFT, t.getLeft()), this.panelEl.css(c.absPosition.RIGHT, t.getRight()))
30138 }, s.prototype._focusOnOpen = function() {
30139 if (this.config.focusOnOpen) {
30141 this._$rootScope.$$postDigest(function() {
30142 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
30145 }, s.prototype._createBackdrop = function() {
30146 if (this.config.hasBackdrop) {
30147 if (!this._backdropRef) {
30148 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
30149 open: "_md-opaque-enter",
30150 close: "_md-opaque-leave"
30152 this.config.animation && e.duration(this.config.animation._rawDuration);
30155 attachTo: this.config.attachTo,
30157 panelClass: "_md-panel-backdrop",
30158 zIndex: this.config.zIndex - 1
30160 this._backdropRef = this._$mdPanel.create(t)
30162 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
30164 }, s.prototype._addEventListeners = function() {
30165 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
30166 }, s.prototype._removeEventListeners = function() {
30167 this._removeListeners && this._removeListeners.forEach(function(e) {
30169 }), this._removeListeners = []
30170 }, s.prototype._configureEscapeToClose = function() {
30171 if (this.config.escapeToClose) {
30172 var e = u(this.config.attachTo),
30175 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(s.closeReasons.ESCAPE))
30177 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
30178 t.panelContainer.off("keydown", n), e.off("keydown", n)
30181 }, s.prototype._configureClickOutsideToClose = function() {
30182 if (this.config.clickOutsideToClose) {
30183 var e, n = this.config.propagateContainerEvents ? t.element(document.body) : this.panelContainer,
30189 i.config.propagateContainerEvents ? e === i.panelEl[0] || i.panelEl[0].contains(e) || i.close() : e === n[0] && t.target === n[0] && (t.stopPropagation(), t.preventDefault(), i.close(s.closeReasons.CLICK_OUTSIDE))
30191 n.on("mousedown", r), n.on("mouseup", o), this._removeListeners.push(function() {
30192 n.off("mousedown", r), n.off("mouseup", o)
30195 }, s.prototype._configureScrollListener = function() {
30196 if (!this.config.disableParentScroll) {
30197 var e = t.bind(this, this._updatePosition),
30198 n = this._$$rAF.throttle(e),
30203 this._$window.addEventListener("scroll", i, !0), this._removeListeners.push(function() {
30204 r._$window.removeEventListener("scroll", i, !0)
30207 }, s.prototype._configureTrapFocus = function() {
30208 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
30209 var e = this.panelEl;
30210 this._topFocusTrap = h.clone()[0], this._bottomFocusTrap = h.clone()[0];
30211 var t = function() {
30214 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
30215 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
30216 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
30218 }, s.prototype.updateAnimation = function(e) {
30219 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
30220 }, s.prototype._animateOpen = function() {
30221 this.panelContainer.addClass("md-panel-is-showing");
30222 var e = this.config.animation;
30223 if (!e) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
30225 return this._$q(function(n) {
30226 var r = t._done(n, t);
30227 e.animateOpen(t.panelEl).then(r, function() {
30228 t._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), r()
30231 }, s.prototype._animateClose = function() {
30232 var e = this.config.animation;
30233 if (!e) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
30235 return this._$q(function(n) {
30236 var r = function() {
30237 t.panelContainer.removeClass("md-panel-is-showing"), n(t)
30239 e.animateClose(t.panelEl).then(r, function() {
30240 t._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), r()
30243 }, s.prototype.registerInterceptor = function(e, n) {
30245 if (t.isString(e) ? t.isFunction(n) || (r = "Interceptor callback must be a function, instead got " + typeof n) : r = "Interceptor type must be a string, instead got " + typeof e, r) throw new Error("MdPanel: " + r);
30246 var i = this._interceptors[e] = this._interceptors[e] || [];
30247 return -1 === i.indexOf(n) && i.push(n), this
30248 }, s.prototype.removeInterceptor = function(e, t) {
30249 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
30250 return n > -1 && this._interceptors[e].splice(n, 1), this
30251 }, s.prototype.removeAllInterceptors = function(e) {
30252 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
30253 }, s.prototype._callInterceptors = function(e) {
30256 return (n._interceptors && n._interceptors[e] || []).reduceRight(function(e, i) {
30257 var o = i && t.isFunction(i.then) ? i : null;
30258 return e.then(function() {
30267 }, s.prototype._simpleBind = function(e, t) {
30268 return function(n) {
30269 return e.apply(t, n)
30271 }, s.prototype._done = function(e, t) {
30272 return function() {
30275 }, s.prototype.addToGroup = function(e) {
30276 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
30277 var t = this._$mdPanel._groups[e];
30278 t.panels.indexOf(this) < 0 && t.panels.push(this)
30279 }, s.prototype.removeFromGroup = function(e) {
30280 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
30281 var t = this._$mdPanel._groups[e],
30282 n = t.panels.indexOf(this);
30283 n > -1 && t.panels.splice(n, 1)
30284 }, s.closeReasons = {
30285 CLICK_OUTSIDE: "clickOutsideToClose",
30286 ESCAPE: "escapeToClose"
30289 ALIGN_START: "align-start",
30290 ALIGN_END: "align-end",
30291 OFFSET_START: "offset-start",
30292 OFFSET_END: "offset-end"
30295 ALIGN_TOPS: "align-tops",
30296 ALIGN_BOTTOMS: "align-bottoms",
30299 }, c.absPosition = {
30304 }, c.viewportMargin = 8, c.prototype.absolute = function() {
30305 return this._absolute = !0, this
30306 }, c.prototype._setPosition = function(e, n) {
30307 if (e === c.absPosition.RIGHT || e === c.absPosition.LEFT) this._left = this._right = "";
30309 if (e !== c.absPosition.BOTTOM && e !== c.absPosition.TOP) {
30310 var r = Object.keys(c.absPosition).join().toLowerCase();
30311 throw new Error("mdPanel: Position must be one of " + r + ".")
30313 this._top = this._bottom = ""
30315 return this["_" + e] = t.isString(n) ? n : "0", this
30316 }, c.prototype.top = function(e) {
30317 return this._setPosition(c.absPosition.TOP, e)
30318 }, c.prototype.bottom = function(e) {
30319 return this._setPosition(c.absPosition.BOTTOM, e)
30320 }, c.prototype.start = function(e) {
30321 var t = this._isRTL ? c.absPosition.RIGHT : c.absPosition.LEFT;
30322 return this._setPosition(t, e)
30323 }, c.prototype.end = function(e) {
30324 var t = this._isRTL ? c.absPosition.LEFT : c.absPosition.RIGHT;
30325 return this._setPosition(t, e)
30326 }, c.prototype.left = function(e) {
30327 return this._setPosition(c.absPosition.LEFT, e)
30328 }, c.prototype.right = function(e) {
30329 return this._setPosition(c.absPosition.RIGHT, e)
30330 }, c.prototype.centerHorizontally = function() {
30331 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
30332 }, c.prototype.centerVertically = function() {
30333 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
30334 }, c.prototype.center = function() {
30335 return this.centerHorizontally().centerVertically()
30336 }, c.prototype.relativeTo = function(e) {
30337 return this._absolute = !1, this._relativeToEl = u(e), this
30338 }, c.prototype.addPanelPosition = function(e, t) {
30339 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
30340 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
30344 }, c.prototype._validateYPosition = function(e) {
30346 for (var t, n = Object.keys(c.yPosition), r = [], i = 0; t = n[i]; i++) {
30347 var o = c.yPosition[t];
30348 if (r.push(o), o === e) return
30350 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
30352 }, c.prototype._validateXPosition = function(e) {
30354 for (var t, n = Object.keys(c.xPosition), r = [], i = 0; t = n[i]; i++) {
30355 var o = c.xPosition[t];
30356 if (r.push(o), o === e) return
30358 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
30360 }, c.prototype.withOffsetX = function(e) {
30361 return this._translateX.push(e), this
30362 }, c.prototype.withOffsetY = function(e) {
30363 return this._translateY.push(e), this
30364 }, c.prototype.getTop = function() {
30366 }, c.prototype.getBottom = function() {
30367 return this._bottom
30368 }, c.prototype.getLeft = function() {
30370 }, c.prototype.getRight = function() {
30372 }, c.prototype.getTransform = function() {
30373 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
30374 }, c.prototype._setTransform = function(e) {
30375 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
30376 }, c.prototype._isOnscreen = function(e) {
30377 var t = parseInt(this.getLeft()),
30378 n = parseInt(this.getTop());
30379 if (this._translateX.length || this._translateY.length) {
30380 var r = d(e, this._$mdConstant.CSS.TRANSFORM);
30383 var i = t + e[0].offsetWidth,
30384 o = n + e[0].offsetHeight;
30385 return t >= 0 && n >= 0 && o <= this._$window.innerHeight && i <= this._$window.innerWidth
30386 }, c.prototype.getActualPosition = function() {
30387 return this._actualPosition
30388 }, c.prototype._reduceTranslateValues = function(e, n) {
30389 return n.map(function(n) {
30390 var r = t.isFunction(n) ? n(this) : n;
30391 return e + "(" + r + ")"
30393 }, c.prototype._setPanelPosition = function(e) {
30394 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
30396 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
30397 for (var t = 0; t < this._positions.length; t++)
30398 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
30399 this._constrainToViewport(e)
30401 }, c.prototype._constrainToViewport = function(e) {
30402 var t = c.viewportMargin,
30405 if (this.getTop()) {
30406 var i = parseInt(this.getTop()),
30407 o = e[0].offsetHeight + i,
30408 a = this._$window.innerHeight;
30409 i < t ? this._top = t + "px" : o > a && (this._top = i - (o - a + t) + "px")
30411 if (this.getLeft()) {
30412 var s = parseInt(this.getLeft()),
30413 l = e[0].offsetWidth + s,
30414 u = this._$window.innerWidth;
30415 s < t ? this._left = t + "px" : l > u && (this._left = s - (l - u + t) + "px")
30417 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
30418 }, c.prototype._reverseXPosition = function(e) {
30419 if (e === c.xPosition.CENTER) return e;
30420 return e.indexOf("start") > -1 ? e.replace("start", "end") : e.replace("end", "start")
30421 }, c.prototype._bidi = function(e) {
30422 return this._isRTL ? this._reverseXPosition(e) : e
30423 }, c.prototype._calculatePanelPosition = function(e, t) {
30424 var n = e[0].getBoundingClientRect(),
30427 o = this._relativeToEl[0].getBoundingClientRect(),
30431 switch (this._bidi(t.x)) {
30432 case c.xPosition.OFFSET_START:
30433 this._left = a - r + "px";
30435 case c.xPosition.ALIGN_END:
30436 this._left = s - r + "px";
30438 case c.xPosition.CENTER:
30439 var u = a + .5 * l - .5 * r;
30440 this._left = u + "px";
30442 case c.xPosition.ALIGN_START:
30443 this._left = a + "px";
30445 case c.xPosition.OFFSET_END:
30446 this._left = s + "px"
30452 case c.yPosition.ABOVE:
30453 this._top = d - i + "px";
30455 case c.yPosition.ALIGN_BOTTOMS:
30456 this._top = f - i + "px";
30458 case c.yPosition.CENTER:
30459 var p = d + .5 * h - .5 * i;
30460 this._top = p + "px";
30462 case c.yPosition.ALIGN_TOPS:
30463 this._top = d + "px";
30465 case c.yPosition.BELOW:
30466 this._top = f + "px"
30469 SLIDE: "md-panel-animate-slide",
30470 SCALE: "md-panel-animate-scale",
30471 FADE: "md-panel-animate-fade"
30472 }, l.prototype.openFrom = function(e) {
30473 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
30474 }, l.prototype.closeTo = function(e) {
30475 return this._closeTo = this._getPanelAnimationTarget(e), this
30476 }, l.prototype.duration = function(e) {
30478 if (t.isNumber(e)) return e / 1e3
30480 return e && (t.isNumber(e) ? this._openDuration = this._closeDuration = n(e) : t.isObject(e) && (this._openDuration = n(e.open), this._closeDuration = n(e.close))), this._rawDuration = e, this
30481 }, l.prototype._getPanelAnimationTarget = function(e) {
30482 return t.isDefined(e.top) || t.isDefined(e.left) ? {
30488 } : this._getBoundingClientRect(u(e))
30489 }, l.prototype.withAnimation = function(e) {
30490 return this._animationClass = e, this
30491 }, l.prototype.animateOpen = function(e) {
30492 var n = this._$mdUtil.dom.animator;
30493 this._fixBounds(e);
30495 i = e[0].style.transform || "",
30496 o = n.toTransformCss(i),
30497 a = n.toTransformCss(i);
30498 switch (this._animationClass) {
30499 case l.animation.SLIDE:
30500 e.css("opacity", "1"), r = {
30501 transitionInClass: "_md-panel-animate-enter"
30503 var s = n.calculateSlideToOrigin(e, this._openFrom) || "";
30504 o = n.toTransformCss(s + " " + i);
30506 case l.animation.SCALE:
30508 transitionInClass: "_md-panel-animate-enter"
30510 var c = n.calculateZoomToOrigin(e, this._openFrom) || "";
30511 o = n.toTransformCss(c + " " + i);
30513 case l.animation.FADE:
30515 transitionInClass: "_md-panel-animate-enter"
30519 r = t.isString(this._animationClass) ? {
30520 transitionInClass: this._animationClass
30522 transitionInClass: this._animationClass.open,
30523 transitionOutClass: this._animationClass.close
30526 return r.duration = this._openDuration, n.translate3d(e, o, a, r)
30527 }, l.prototype.animateClose = function(e) {
30528 var n = this._$mdUtil.dom.animator,
30530 i = e[0].style.transform || "",
30531 o = n.toTransformCss(i),
30532 a = n.toTransformCss(i);
30533 switch (this._animationClass) {
30534 case l.animation.SLIDE:
30535 e.css("opacity", "1"), r = {
30536 transitionInClass: "_md-panel-animate-leave"
30538 var s = n.calculateSlideToOrigin(e, this._closeTo) || "";
30539 a = n.toTransformCss(s + " " + i);
30541 case l.animation.SCALE:
30543 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
30545 var c = n.calculateZoomToOrigin(e, this._closeTo) || "";
30546 a = n.toTransformCss(c + " " + i);
30548 case l.animation.FADE:
30550 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
30554 r = t.isString(this._animationClass) ? {
30555 transitionOutClass: this._animationClass
30557 transitionInClass: this._animationClass.close,
30558 transitionOutClass: this._animationClass.open
30561 return r.duration = this._closeDuration, n.translate3d(e, o, a, r)
30562 }, l.prototype._fixBounds = function(e) {
30563 var t = e[0].offsetWidth,
30564 n = e[0].offsetHeight;
30565 this._openFrom && null == this._openFrom.bounds.height && (this._openFrom.bounds.height = n), this._openFrom && null == this._openFrom.bounds.width && (this._openFrom.bounds.width = t), this._closeTo && null == this._closeTo.bounds.height && (this._closeTo.bounds.height = n), this._closeTo && null == this._closeTo.bounds.width && (this._closeTo.bounds.width = t)
30566 }, l.prototype._getBoundingClientRect = function(e) {
30567 if (e instanceof t.element) return {
30569 bounds: e[0].getBoundingClientRect()
30572 }(), t.module("material.components.progressCircular", ["material.core"]),
30574 function e(e, n, r) {
30575 function i(r, i, d) {
30577 var e = (d.mdMode || "").trim();
30578 if (e) switch (e) {
30592 var i = n.supplant("translateX({0}%) scale({1},1)", [(r - 100) / 2, r / 100]),
30596 t.element(e).css(o)
30600 var p, m = d.hasOwnProperty("disabled"),
30601 g = n.dom.animator.toCss,
30602 v = t.element(i[0].querySelector(".md-bar1")),
30603 b = t.element(i[0].querySelector(".md-bar2")),
30604 y = t.element(i[0].querySelector(".md-container"));
30605 i.attr("md-mode", f()).toggleClass(u, m),
30607 if (t.isUndefined(d.mdMode)) {
30608 var e = t.isDefined(d.value) ? a : s;
30609 i.attr("md-mode", e), d.mdMode = e
30611 }(), d.$observe("value", function(e) {
30613 i.attr("aria-valuenow", t), f() != l && h(b, t)
30614 }), d.$observe("mdBufferValue", function(e) {
30616 }), d.$observe("disabled", function(e) {
30617 m = !0 === e || !1 === e ? !!e : t.isDefined(e), i.toggleClass(u, m), y.toggleClass(p, !m)
30618 }), d.$observe("mdMode", function(e) {
30619 switch (p && y.removeClass(p), e) {
30624 y.addClass(p = "md-mode-" + e);
30627 y.addClass(p = "md-mode-" + s)
30633 return Math.max(0, Math.min(e || 0, 100))
30635 var a = "determinate",
30636 s = "indeterminate",
30639 u = "_md-progress-linear-disabled";
30642 template: '<div class="md-container"><div class="md-dashed"></div><div class="md-bar md-bar1"></div><div class="md-bar md-bar2"></div></div>',
30643 compile: function(e, t, n) {
30644 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), i
30648 e.$inject = ["$mdTheming", "$mdUtil", "$log"], t.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
30651 function e(e, n, r, i) {
30653 this._radioButtonRenderFns = [], this.$element = e
30657 var i = e.iterator(n[0].querySelectorAll("md-radio-button"), !0);
30659 var o = n[0].querySelector("md-radio-button.md-checked"),
30660 a = i[r < 0 ? "previous" : "next"](o, function(e) {
30661 return !t.element(e).attr("disabled")
30663 t.element(a).triggerHandler("click")
30666 return o.prototype = {
30667 init: function(e) {
30668 this._ngModelCtrl = e, this._ngModelCtrl.$render = t.bind(this, this.render)
30671 this._radioButtonRenderFns.push(e)
30673 remove: function(e) {
30674 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
30676 render: function() {
30677 this._radioButtonRenderFns.forEach(function(e) {
30681 setViewValue: function(e, t) {
30682 this._ngModelCtrl.$setViewValue(e, t), this.render()
30684 getViewValue: function() {
30685 return this._ngModelCtrl.$viewValue
30687 selectNext: function() {
30688 return a(this.$element, 1)
30690 selectPrevious: function() {
30691 return a(this.$element, -1)
30693 setActiveDescendant: function(e) {
30694 this.$element.attr("aria-activedescendant", e)
30696 isDisabled: function() {
30697 return this.$element[0].hasAttribute("disabled")
30701 controller: ["$element", o],
30702 require: ["mdRadioGroup", "?ngModel"],
30704 pre: function(o, a, s, c) {
30706 a.hasClass("md-focused") || a.addClass("md-focused")
30708 a.addClass("_md"), r(a);
30710 d = c[1] || e.fakeNgModel();
30711 u.init(d), o.mouseActive = !1, a.attr({
30712 role: "radiogroup",
30713 tabIndex: a.attr("tabindex") || "0"
30714 }).on("keydown", function(r) {
30715 var i = r.which || r.keyCode;
30716 if (i == n.KEY_CODE.ENTER || r.currentTarget == r.target) switch (i) {
30717 case n.KEY_CODE.LEFT_ARROW:
30718 case n.KEY_CODE.UP_ARROW:
30719 r.preventDefault(), u.selectPrevious(), l();
30721 case n.KEY_CODE.RIGHT_ARROW:
30722 case n.KEY_CODE.DOWN_ARROW:
30723 r.preventDefault(), u.selectNext(), l();
30725 case n.KEY_CODE.ENTER:
30726 var o = t.element(e.getClosest(a[0], "form"));
30727 o.length > 0 && o.triggerHandler("submit")
30729 }).on("mousedown", function(e) {
30730 o.mouseActive = !0, i(function() {
30733 }).on("focus", function() {
30734 !1 === o.mouseActive && u.$element.addClass("md-focused")
30735 }).on("blur", function() {
30736 u.$element.removeClass("md-focused")
30743 function n(e, t, n) {
30744 var r = "md-checked";
30747 require: "^mdRadioGroup",
30749 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',
30750 link: function(i, o, a, s) {
30752 if (!s) throw "RadioButton: No RadioGroupController could be found.";
30753 s.add(u), a.$observe("value", u), o.on("click", l).on("$destroy", function() {
30759 o[0].hasAttribute("disabled") || s.isDisabled() || i.$apply(function() {
30760 s.setViewValue(a.value, e && e.type)
30765 var e = s.getViewValue() == a.value;
30766 e !== d && ("md-radio-group" !== o[0].parentNode.nodeName.toLowerCase() && o.parent().toggleClass(r, e), e && s.setActiveDescendant(o.attr("id")), d = e, o.attr("aria-checked", e).toggleClass(r, e))
30772 id: a.id || "radio_" + t.nextUid(),
30774 "aria-checked": "false"
30775 }), e.expectWithText(n, "aria-label")
30776 }(o), a.ngValue ? t.nextTick(c, !1) : c()
30780 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], n.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], t.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", n)
30783 function r(e, r, i, o, a, c, l, u) {
30784 var d = i.KEY_CODE;
30785 d.SPACE, d.ENTER, d.UP_ARROW, d.DOWN_ARROW;
30788 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
30789 compile: function(u, d) {
30790 var f = t.element("<md-select-value><span></span></md-select-value>");
30791 f.append('<span class="md-select-icon" aria-hidden="true"></span>'), f.addClass("md-select-value"), f[0].hasAttribute("id") || f.attr("id", "select_value_label_" + r.nextUid());
30792 var h = u.find("md-content");
30793 if (h.length || u.append(t.element("<md-content>").append(u.contents())), h.attr("role", "presentation"), d.mdOnOpen && (u.find("md-content").prepend(t.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')), u.find("md-option").attr("ng-show", "$$loadingAsyncDone")), d.name) {
30794 var p = t.element('<select class="md-visually-hidden">');
30797 "aria-hidden": "true",
30800 var m = u.find("md-option");
30801 t.forEach(m, function(e) {
30802 var n = t.element("<option>" + e.innerHTML + "</option>");
30803 e.hasAttribute("ng-value") ? n.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && n.attr("value", e.getAttribute("value")), p.append(n)
30804 }), p.append('<option ng-value="' + d.ngModel + '" selected></option>'), u.parent().append(p)
30806 var g = r.parseAttributeBoolean(d.multiple),
30807 v = g ? "multiple" : "",
30808 b = '<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';
30809 return b = r.supplant(b, [v, u.html()]), u.empty().append(f), u.append(b), d.tabindex || d.$set("tabindex", 0),
30810 function(u, d, f, h) {
30812 var e = d.attr("aria-label") || d.attr("placeholder");
30813 !e && k && k.label && (e = k.label.text()), w = e, a.expect(d, "aria-label", e)
30817 D && (I = I || D.find("md-select-menu").controller("mdSelectMenu"), C.setLabelText(I.selectedLabels()))
30822 var e = I.selectedLabels({
30825 d.attr("aria-label", e.length ? w + ": " + e : w)
30830 k && k.setHasValue(I.selectedLabels().length > 0 || (d[0].validity || {}).badInput)
30834 if (i.isNavigationKey(e)) e.preventDefault(), _();
30835 else if (s(e, i)) {
30836 e.preventDefault();
30837 var n = I.optNodeForKeyboardSearch(e);
30838 if (!n || n.hasAttribute("disabled")) return;
30839 var r = t.element(n).controller("mdOption");
30840 I.isMultiple || I.deselect(Object.keys(I.selected)[0]), I.select(r.hashKey, r.value), I.refreshViewValue()
30845 N._mdSelectIsOpen = !0, d.attr("aria-expanded", "true"), e.show({
30852 preserveElement: !0,
30854 loadingAsync: !!f.mdOnOpen && (u.$eval(f.mdOnOpen) || !0)
30855 }).finally(function() {
30856 N._mdSelectIsOpen = !1, d.focus(), d.attr("aria-expanded", "false"), x.$setTouched()
30864 M = d.find("md-select-value"),
30865 A = t.isDefined(f.readonly),
30866 S = r.parseAttributeBoolean(f.mdNoAsterisk);
30867 if (S && d.addClass("md-no-asterisk"), k) {
30868 var O = k.isErrorGetter || function() {
30869 return x.$invalid && (x.$touched || T && T.$submitted)
30871 if (k.input && d.find("md-select-header").find("input")[0] !== k.input[0]) throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");
30872 k.input = d, k.label || a.expect(d, "aria-label", d.attr("placeholder")), u.$watch(O, k.setInvalid)
30876 if (D = t.element(d[0].querySelector(".md-select-menu-container")), N = u, f.mdContainerClass) {
30877 var e = D[0].getAttribute("class") + " " + f.mdContainerClass;
30878 D[0].setAttribute("class", e)
30879 }(I = D.find("md-select-menu").controller("mdSelectMenu")).init(x, f.ngModel), d.on("$destroy", function() {
30882 }(), o(d), T && t.isDefined(f.multiple) && r.nextTick(function() {
30883 (x.$modelValue || x.$viewValue) && T.$setPristine()
30886 x.$render = function() {
30888 }, f.$observe("placeholder", x.$render), k && k.label && f.$observe("required", function(e) {
30889 k.label.toggleClass("md-required", e && !S)
30890 }), C.setLabelText = function(e) {
30891 C.setIsPlaceholder(!e);
30893 if (f.mdSelectedText && f.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
30894 f.mdSelectedText || f.mdSelectedHtml ? (e = c(f.mdSelectedText || f.mdSelectedHtml)(u), t = !0) : e || (e = f.placeholder || (k && k.label ? k.label.text() : "") || "", t = !0);
30895 var n = M.children().eq(0);
30896 f.mdSelectedHtml ? n.html(l.getTrustedHtml(e)) : t ? n.text(e) : n.html(e)
30897 }, C.setIsPlaceholder = function(e) {
30898 e ? (M.addClass("md-select-placeholder"), k && k.label && k.label.addClass("md-placeholder")) : (M.removeClass("md-select-placeholder"), k && k.label && k.label.removeClass("md-placeholder"))
30899 }, A || (d.on("focus", function(e) {
30900 k && k.setFocused(!0)
30901 }), d.on("blur", function(e) {
30902 E && (E = !1, N._mdSelectIsOpen && e.stopImmediatePropagation()), N._mdSelectIsOpen || (k && k.setFocused(!1), b())
30903 })), C.triggerClose = function() {
30905 }, u.$$postDigest(function() {
30907 }), u.$watch(function() {
30908 return I.selectedLabels()
30911 f.$observe("ngMultiple", function(e) {
30914 P = u.$watch(function() {
30916 }, function(e, t) {
30917 e === n && t === n || (e ? d.attr("multiple", "multiple") : d.removeAttr("multiple"), d.attr("aria-multiselectable", e ? "true" : "false"), D && (I.setMultiple(e), R = x.$render, x.$render = function() {
30921 }), f.$observe("disabled", function(e) {
30922 t.isString(e) && (e = !0), $ !== n && $ === e || ($ = e, e ? d.attr({
30923 "aria-disabled": "true"
30924 }).removeAttr("tabindex").off("click", _).off("keydown", y) : d.attr({
30925 tabindex: f.tabindex,
30926 "aria-disabled": "false"
30927 }).on("click", _).on("keydown", y))
30928 }), f.hasOwnProperty("disabled") || f.hasOwnProperty("ngDisabled") || (d.attr({
30929 "aria-disabled": "false"
30930 }), d.on("click", _), d.on("keydown", y));
30933 "aria-expanded": "false",
30934 "aria-multiselectable": g && !f.ngMultiple ? "true" : "false"
30936 d[0].hasAttribute("id") || (j.id = "select_" + r.nextUid());
30937 var H = "select_container_" + r.nextUid();
30938 D.attr("id", H), d.find("md-select-menu").length || (j["aria-owns"] = H), d.attr(j), u.$on("$destroy", function() {
30939 e.destroy().finally(function() {
30940 k && (k.setFocused(!1), k.setHasValue(!1), k.input = null), x.$setTouched()
30945 controller: function() {}
30949 function i(e, r, i, o) {
30950 function a(o, a, s) {
30952 var e = d.ngModel.$modelValue || d.ngModel.$viewValue || [];
30953 if (t.isArray(e)) {
30954 var n = Object.keys(d.selected),
30955 r = e.map(d.hashGetter);
30956 n.filter(function(e) {
30957 return -1 === r.indexOf(e)
30958 }).forEach(d.deselect), r.forEach(function(t, n) {
30965 var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
30966 Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
30969 d.isMultiple = t.isDefined(a.multiple), d.selected = {}, d.options = {}, o.$watchCollection(function() {
30972 d.ngModel.$render()
30975 d.setMultiple = function(e) {
30977 return t.isArray(e || n || [])
30980 f = f || r.$isEmpty, d.isMultiple = e, d.isMultiple ? (r.$validators["md-multiple"] = n, r.$render = c, o.$watchCollection(d.modelBinding, function(e) {
30981 n(e) && c(), d.ngModel.$setPristine()
30982 }), r.$isEmpty = function(e) {
30983 return !e || 0 === e.length
30984 }) : (delete r.$validators["md-multiple"], r.$render = u)
30986 var h, p, m, g = "";
30987 d.optNodeForKeyboardSearch = function(e) {
30988 h && clearTimeout(h), h = setTimeout(function() {
30989 h = n, g = "", m = n, p = n
30991 var r = e.keyCode - (i.isNumPadKey(e) ? 48 : 0);
30992 g += String.fromCharCode(r);
30993 var o = new RegExp("^" + g, "i");
30994 p || (p = s.find("md-option"), m = new Array(p.length), t.forEach(p, function(e, t) {
30995 m[t] = e.textContent.trim()
30997 for (var a = 0; a < m.length; ++a)
30998 if (o.test(m[a])) return p[a]
30999 }, d.init = function(n, i) {
31000 d.ngModel = n, d.modelBinding = i, d.ngModel.$isEmpty = function(e) {
31001 return !d.options[d.hashGetter(e)]
31003 var a = r.getModelOption(n, "trackBy");
31007 d.hashGetter = function(e, t) {
31008 return s.$value = e, c(t || o, s)
31010 } else d.hashGetter = function(e) {
31011 return t.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++l)) : e
31013 d.setMultiple(d.isMultiple)
31014 }, d.selectedLabels = function(e) {
31015 var t = (e = e || {}).mode || "html",
31016 n = r.nodesToArray(s[0].querySelectorAll("md-option[selected]"));
31019 return "html" == t ? i = function(e) {
31020 if (e.hasAttribute("md-option-empty")) return "";
31021 var t = e.innerHTML,
31022 n = e.querySelector(".md-ripple-container");
31023 n && (t = t.replace(n.outerHTML, ""));
31024 var r = e.querySelector(".md-container");
31025 return r && (t = t.replace(r.outerHTML, "")), t
31026 } : "aria" == t && (i = function(e) {
31027 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
31028 }), r.uniq(n.map(i)).join(", ")
31031 }, d.select = function(e, t) {
31032 var n = d.options[e];
31033 n && n.setSelected(!0), d.selected[e] = t
31034 }, d.deselect = function(e) {
31035 var t = d.options[e];
31036 t && t.setSelected(!1), delete d.selected[e]
31037 }, d.addOption = function(e, n) {
31038 if (t.isDefined(d.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + n.value + '" found.');
31039 d.options[e] = n, t.isDefined(d.selected[e]) && (d.select(e, n.value), t.isDefined(d.ngModel.$modelValue) && d.hashGetter(d.ngModel.$modelValue) === e && d.ngModel.$validate(), d.refreshViewValue())
31040 }, d.removeOption = function(e) {
31041 delete d.options[e]
31042 }, d.refreshViewValue = function() {
31044 for (var i in d.selected)(e = d.options[i]) ? n.push(e.value) : n.push(d.selected[i]);
31045 var o = r.getModelOption(d.ngModel, "trackBy"),
31046 a = d.isMultiple ? n : n[0],
31047 s = d.ngModel.$modelValue;
31048 (o ? t.equals(s, a) : s + "" === a) || (d.ngModel.$setViewValue(a), d.ngModel.$render())
31051 return a.$inject = ["$scope", "$attrs", "$element"], {
31053 require: ["mdSelectMenu"],
31057 pre: function(e, n, i, a) {
31059 var i = r.getClosest(n.target, "md-option"),
31060 o = i && t.element(i).data("$mdOptionController");
31062 if (i.hasAttribute("disabled")) return n.stopImmediatePropagation(), !1;
31063 var a = c.hashGetter(o.value),
31064 s = t.isDefined(c.selected[a]);
31065 e.$apply(function() {
31066 c.isMultiple ? s ? c.deselect(a) : c.select(a, o.value) : s || (c.deselect(Object.keys(c.selected)[0]), c.select(a, o.value)), c.refreshViewValue()
31071 n.addClass("_md"), o(n), n.on("click", s), n.on("keypress", function(e) {
31072 13 != e.keyCode && 32 != e.keyCode || s(e)
31079 function o(e, n, r) {
31086 function o(i, o, a, s) {
31087 function c(e, t, n) {
31088 if (d.hashGetter) {
31089 var r = d.hashGetter(t, i),
31090 o = d.hashGetter(e, i);
31091 l.hashKey = o, l.value = e, d.removeOption(r, l), d.addOption(o, l)
31092 } else n || i.$$postDigest(function() {
31098 r(o), d.isMultiple && (o.addClass("md-checkbox-enabled"), o.prepend(u.clone())), t.isDefined(a.ngValue) ? i.$watch(a.ngValue, c) : t.isDefined(a.value) ? c(a.value) : i.$watch(function() {
31099 return o.text().trim()
31100 }, c), a.$observe("disabled", function(e) {
31101 e ? o.attr("tabindex", "-1") : o.attr("tabindex", "0")
31102 }), i.$$postDigest(function() {
31103 a.$observe("selected", function(e) {
31104 t.isDefined(e) && ("string" == typeof e && (e = !0), e ? (d.isMultiple || d.deselect(Object.keys(d.selected)[0]), d.select(l.hashKey, l.value)) : d.deselect(l.hashKey), d.refreshViewValue())
31106 }), e.attach(i, o),
31110 "aria-selected": "false"
31112 o[0].hasAttribute("id") || (e.id = "select_option_" + n.nextUid()), o.attr(e)
31113 }(), i.$on("$destroy", function() {
31114 d.removeOption(l.hashKey, l)
31119 this.selected = !1, this.setSelected = function(t) {
31120 t && !this.selected ? e.attr({
31121 selected: "selected",
31122 "aria-selected": "true"
31123 }) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
31126 return a.$inject = ["$element"], {
31128 require: ["mdOption", "^^mdSelectMenu"],
31130 compile: function(e, n) {
31131 return e.append(t.element('<div class="md-text">').append(e.contents())), e.attr("tabindex", n.tabindex || "0"), i(n) || e.attr("md-option-empty", ""), o
31137 function i(r, i, d, f, h, p, m, g, v) {
31139 var t = e.selectCtrl;
31141 var n = e.selectEl.controller("mdSelectMenu");
31142 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
31146 function y(n, r, i) {
31148 p = i.target[0].children[0],
31151 b = i.contentEl[0],
31152 y = m.getBoundingClientRect(),
31153 _ = p.getBoundingClientRect(),
31157 bottom: y.height - c,
31158 right: y.width - c - (d.floatingScrollbars() ? 16 : 0)
31161 top: _.top - $.top,
31162 left: _.left - $.left,
31163 right: $.right - (_.left + _.width),
31164 bottom: $.bottom - (_.top + _.height)
31166 E = y.width - 2 * c,
31167 k = g.querySelector("md-option[selected]"),
31168 C = g.getElementsByTagName("md-option"),
31169 x = g.getElementsByTagName("md-optgroup"),
31171 s = o(i.loadingAsync) ? b.firstElementChild || b : k || (x.length ? x[0] : C.length ? C[0] : b.firstElementChild || b), b.offsetWidth > E ? b.style["max-width"] = E + "px" : b.style.maxWidth = null, T && g.classList.add("md-overflow");
31173 "MD-OPTGROUP" === (M.tagName || "").toUpperCase() && (s = M = C[0] || b.firstElementChild || b), i.focusedNode = M, h.style.display = "block";
31174 var A = g.getBoundingClientRect(),
31177 var O = f.getComputedStyle(s);
31178 S.paddingLeft = parseInt(O.paddingLeft, 10) || 0, S.paddingRight = parseInt(O.paddingRight, 10) || 0
31181 var D = b.offsetHeight / 2;
31182 b.scrollTop = S.top + S.height / 2 - D, w.top < D ? b.scrollTop = Math.min(S.top, b.scrollTop + D - w.top) : w.bottom < D && (b.scrollTop = Math.max(S.top + S.height - A.height, b.scrollTop - D + w.bottom))
31185 N = _.left + S.left - S.paddingLeft + 2, I = Math.floor(_.top + _.height / 2 - S.height / 2 - S.top + b.scrollTop) + 2, R = S.left + _.width / 2 + "px " + (S.top + S.height / 2 - b.scrollTop) + "px 0px", P = Math.min(_.width + S.paddingLeft + S.paddingRight, E), j = e.getComputedStyle(p)["font-size"];
31186 var H = h.getBoundingClientRect(),
31187 L = Math.round(100 * Math.min(_.width / A.width, 1)) / 100,
31188 F = Math.round(100 * Math.min(_.height / A.height, 1)) / 100;
31191 element: t.element(h),
31193 left: Math.floor(a($.left, N, $.right - H.width)),
31194 top: Math.floor(a($.top, I, $.bottom - H.height)),
31200 element: t.element(g),
31202 transformOrigin: R,
31203 transform: i.alreadyOpen ? "" : d.supplant("scale({0},{1})", [L, F])
31208 var _ = "$mdSelect.show() expected a target element in options.target but got '{0}'!",
31209 $ = d.dom.animator,
31214 onShow: function(e, o, a) {
31216 return h(function(e) {
31217 if (a.isRemoved) return h.reject(!1);
31218 var t = y(0, o, a);
31219 t.container.element.css($.toCss(t.container.styles)), t.dropDown.element.css($.toCss(t.dropDown.styles)), p(function() {
31220 o.addClass("md-active"), t.dropDown.element.css($.toCss({
31228 e && !e.hasAttribute("disabled") && e.focus()
31232 var e = function(e, t, n) {
31233 return function() {
31234 if (!n.isRemoved) {
31235 var e = y(0, t, n),
31238 r.element.css($.toCss(r.styles)), i.element.css($.toCss(i.styles))
31243 return n.on("resize", e), n.on("orientationchange", e),
31245 n.off("resize", e), n.off("orientationchange", e)
31251 e.preventDefault(), e.stopPropagation(), a.restoreFocus = !1, d.nextTick(r.hide, !0)
31255 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
31262 var t = d.getClosest(e.target, "md-option");
31263 t && (h.triggerHandler({
31266 }), e.preventDefault()), f(e);
31270 e.stopPropagation(), e.preventDefault(), a.restoreFocus = !0, d.nextTick(r.hide, !0);
31274 var n = h.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
31275 a.focusedNode = n || a.focusedNode, n && n.focus()
31281 var t, r = d.nodesToArray(a.optionNodes),
31282 i = r.indexOf(a.focusedNode);
31284 -1 === i ? i = 0 : "next" === e && i < r.length - 1 ? i++ : "prev" === e && i > 0 && i--, (t = r[i]).hasAttribute("disabled") && (t = n)
31285 } while (!t && i < r.length - 1 && i > 0);
31286 t && t.focus(), a.focusedNode = t
31298 if (!(e && "click" == e.type && e.currentTarget != h[0] || function() {
31300 if (e && e.currentTarget.children.length > 0) {
31301 var n = e.currentTarget.children[0];
31302 n.scrollHeight > n.clientHeight && n.children.length > 0 && e.pageX - e.currentTarget.getBoundingClientRect().left > n.querySelector("md-option").offsetWidth && (t = !0)
31306 var t = d.getClosest(e.target, "md-option");
31307 t && t.hasAttribute && !t.hasAttribute("disabled") && (e.preventDefault(), e.stopPropagation(), p.isMultiple || (a.restoreFocus = !0, d.nextTick(function() {
31308 r.hide(p.ngModel.$viewValue)
31312 if (!a.isRemoved) {
31313 var h = a.selectEl,
31314 p = h.controller("mdSelectMenu") || {};
31315 return o.addClass("md-clickable"), a.backdrop && a.backdrop.on("click", e), h.on("keydown", t), h.on("click", f),
31317 a.backdrop && a.backdrop.off("click", e), h.off("keydown", t), h.off("click", f), o.removeClass("md-clickable"), a.isRemoved = !0
31321 return a.loadingAsync && !a.isRemoved && (e.$$loadingAsyncDone = !1, h.when(a.loadingAsync).then(function() {
31322 e.$$loadingAsyncDone = !0, delete a.loadingAsync
31323 }).then(function() {
31327 var r = o.find("md-select-menu");
31328 if (!n.target) throw new Error(d.supplant(_, [n.target]));
31331 target: t.element(n.target),
31332 parent: t.element(n.parent),
31334 contentEl: o.find("md-content"),
31335 optionNodes: r[0].getElementsByTagName("md-option")
31337 }(0, a), a.hideBackdrop = function(e, t, n) {
31338 return n.disableParentScroll && !d.getClosest(n.target, "MD-DIALOG") ? n.restoreScroll = d.disableScrollAround(n.element, n.parent) : n.disableParentScroll = !1, n.hasBackdrop && (n.backdrop = d.createBackdrop(e, "md-select-backdrop md-click-catcher"), g.enter(n.backdrop, v[0].body, null, {
31342 n.backdrop && n.backdrop.remove(), n.disableParentScroll && n.restoreScroll(), delete n.restoreScroll
31345 function(e, t, n) {
31346 return n.parent !== t.parent() && t.parent().attr("aria-owns", t.attr("id")), t.parent().find("md-select-value").attr("aria-hidden", "true"), n.parent.append(t), h(function(e, n) {
31349 removeClass: "md-leave",
31351 }).start().then(c).then(e)
31356 }(0, o, a).then(function(e) {
31357 return o.attr("aria-hidden", "false"), a.alreadyOpen = !0, a.cleanupInteraction = b(), a.cleanupResizing = u(), l(a.focusedNode), e
31360 onRemove: function(e, t, n) {
31362 o(), t.removeClass("md-active").attr("aria-hidden", "true").css("display", "none"), t.parent().find("md-select-value").removeAttr("aria-hidden"), b(n), !n.$destroy && n.restoreFocus && n.target.focus()
31365 o = e.$on("$destroy", function() {
31368 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? r() : (i = m(t, {
31369 addClass: "md-leave"
31370 })).start().then(r)
31373 disableParentScroll: !0
31378 return e && t.isFunction(e.then)
31381 function a(e, t, n) {
31382 return Math.max(e, Math.min(t, n))
31387 left: e.offsetLeft,
31389 width: e.offsetWidth,
31390 height: e.offsetHeight
31402 var r = e[0].style.display;
31403 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
31407 return i.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], r("$mdSelect").setDefaults({
31408 methods: ["target"],
31414 var n = String.fromCharCode(e.keyCode),
31415 r = e.keyCode <= 31;
31416 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
31418 r.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], i.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], o.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], a.$inject = ["$$interimElementProvider"];
31421 u = t.element('<div class="md-container"><div class="md-icon"></div></div>');
31422 t.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", r).directive("mdSelectMenu", i).directive("mdOption", o).directive("mdOptgroup", function() {
31425 compile: function(e, n) {
31426 e.parent().find("md-select-header").length || function() {
31427 var r = e.find("label");
31428 r.length || (r = t.element("<label>"), e.prepend(r)), r.addClass("md-container-ignore"), r.attr("aria-hidden", "true"), n.label && r.text(n.label)
31432 }).directive("mdSelectHeader", function() {
31436 }).provider("$mdSelect", a)
31440 return ["$mdUtil", "$window", function(n, r) {
31444 link: function(i, o, a) {
31445 var s = i.$on("$md-resize-enable", function() {
31448 l = c.nodeType === r.Node.ELEMENT_NODE ? r.getComputedStyle(c) : {};
31449 i.$watch(a[e], function(e) {
31451 n.nextTick(function() {
31452 i.$broadcast("$md-resize")
31455 cachedTransitionStyles: l
31457 n.dom.animator.waitTransitionEnd(o, r).then(function() {
31458 i.$broadcast("$md-resize")
31467 t.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
31470 function e(e, r, i, o) {
31472 var o = function() {
31476 return i.when(r.supplant(c, [n || ""]))
31485 then: function(e) {
31486 return s(n).then(e || t.noop)
31492 return e.when(t).catch(o.error)
31494 var c = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
31496 find: function(t, i) {
31498 return a || i ? a : (o.error(r.supplant(c, [t || ""])), n)
31502 return function(e, n) {
31503 if (t.isUndefined(e)) return l;
31506 return !i && r ? l.waitFor(e) : !i && t.isUndefined(n) ? a(l, e) : i
31510 function r(e, r, i, o, a, s, c, l, u, d, f, h, p) {
31511 function m(c, m, g, v) {
31514 r = e[0].scrollTop;
31518 bottom: n.style.bottom,
31519 height: n.style.height
31524 height: e[0].clientHeight + "px"
31528 if (!t && C) return function() {
31529 n.style.top = C.top, n.style.bottom = C.bottom, n.style.height = C.height, E[0].style.top = null, E[0].style.bottom = null, E[0].style.height = null, C = null
31534 e && !w ? (w = x.css("overflow"), x.css("overflow", "hidden")) : t.isDefined(w) && (x.css("overflow", w), w = n)
31538 return e.keyCode === i.KEY_CODE.ESCAPE ? $(e) : d.when(!0)
31542 return e.preventDefault(), v.close()
31544 var w, E, k, C, x = null,
31547 A = l(g.mdIsLockedOpen),
31549 g.mdDisableScrollTarget && ((x = f[0].querySelector(g.mdDisableScrollTarget)) ? x = t.element(x) : u.warn(r.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.', {
31550 selector: g.mdDisableScrollTarget
31551 }))), x || (x = m.parent()), g.hasOwnProperty("mdDisableBackdrop") || (E = r.createBackdrop(c, "md-sidenav-backdrop md-opaque ng-enter")), m.addClass("_md"), o(m), E && o.inherit(E, m), m.on("$destroy", function() {
31552 E && E.remove(), v.destroy()
31553 }), c.$on("$destroy", function() {
31555 }), c.$watch(function() {
31556 return A(c.$parent, {
31557 $media: function(t) {
31558 return u.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), e(t)
31562 }, function(e, t) {
31563 c.isLockedOpen = e, e === t ? m.toggleClass("md-locked-open", !!e) : s[e ? "addClass" : "removeClass"](m, "md-locked-open"), E && E.toggleClass("md-locked-open", !!e)
31564 }), c.$watch("isOpen", function(e) {
31565 var t = r.findFocusTarget(m) || r.findFocusTarget(m, "[md-sidenav-focus]") || m,
31567 n[e ? "on" : "off"]("keydown", _), E && E[e ? "on" : "off"]("click", $);
31569 return e && (T = f[0].activeElement, k = a.getLastInteractionType()), y(e), M = d.all([e && E ? s.enter(E, n) : E ? s.leave(E) : d.when(!0), s[e ? "removeClass" : "addClass"](m, "md-closed")]).then(function() {
31570 c.isOpen && (p(function() {
31571 S.triggerHandler("resize")
31572 }), t && t.focus()), i && i()
31574 }), v.$toggleOpen = function(e) {
31575 return c.isOpen == e ? d.when(!0) : (c.isOpen && v.onCloseCb && v.onCloseCb(), d(function(t) {
31576 c.isOpen = e, r.nextTick(function() {
31577 M.then(function(e) {
31578 !c.isOpen && T && "keyboard" === k && (T.focus(), T = null), t(e)
31587 isOpen: "=?mdIsOpen"
31589 controller: "$mdSidenavController",
31590 compile: function(e) {
31591 return e.addClass("md-closed").attr("tabIndex", "-1"), m
31596 function i(e, t, n, r, i) {
31598 o.isOpen = function() {
31600 }, o.isLockedOpen = function() {
31601 return !!e.isLockedOpen
31602 }, o.onClose = function(e) {
31603 return o.onCloseCb = e, o
31604 }, o.open = function() {
31605 return o.$toggleOpen(!0)
31606 }, o.close = function() {
31607 return o.$toggleOpen(!1)
31608 }, o.toggle = function() {
31609 return o.$toggleOpen(!e.isOpen)
31610 }, o.$toggleOpen = function(t) {
31611 return r.when(e.isOpen = t)
31613 var a = t.mdComponentId,
31614 s = a && a.indexOf(i.startSymbol()) > -1,
31615 c = s ? i(a)(e.$parent) : a;
31616 o.destroy = n.register(o, c), s && t.$observe("mdComponentId", function(e) {
31617 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
31620 e.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"], r.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"], i.$inject = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"], t.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", r).directive("mdSidenavFocus", function() {
31623 require: "^mdSidenav",
31624 link: function(e, t, n, r) {}
31626 }).controller("$mdSidenavController", i)
31629 function e(e, n, r, i, o, a, s, c, l, u) {
31630 function d(r, d, f, h) {
31636 Z = parseFloat(e), d.attr("aria-valuemin", e), p()
31640 X = parseFloat(e), d.attr("aria-valuemax", e), p()
31648 J = C(parseInt(e), 0, 6)
31652 if (Y && !j() && !t.isUndefined(Q)) {
31654 var e = "Slider step value must be greater than zero when in discrete mode";
31655 throw l.error(e), new Error(e)
31657 var r = Math.floor((X - Z) / Q);
31658 ee || (ee = t.element("<canvas>").css("position", "absolute"), V.append(ee), te = ee[0].getContext("2d"));
31660 !i || i.height || i.width || ($(), i = ne), ee[0].width = i.width, ee[0].height = i.height;
31661 for (var o, a = 0; a <= r; a++) {
31662 var s = n.getComputedStyle(V[0]);
31663 te.fillStyle = s.color || "black", o = Math.floor((W ? i.height : i.width) * (a / r)), te.fillRect(W ? 0 : o - 1, W ? o - 1 : 0, W ? i.width : 2, W ? 2 : i.height)
31671 te.clearRect(0, 0, e.width, e.height)
31676 ne = q[0].getBoundingClientRect()
31684 R.$setViewValue(C(x(e)))
31688 isNaN(R.$viewValue) && (R.$viewValue = R.$modelValue), R.$viewValue = C(R.$viewValue);
31689 var e = I(R.$viewValue);
31690 r.modelValue = R.$viewValue, d.attr("aria-valuenow", R.$viewValue), T(e), L.text(R.$viewValue)
31693 function C(e, n, r) {
31694 if (t.isNumber(e)) return n = t.isNumber(n) ? n : Z, r = t.isNumber(r) ? r : X, Math.max(n, Math.min(r, e))
31698 if (t.isNumber(e)) {
31699 var n = Math.round((e - Z) / Q) * Q + Z;
31700 return n = Math.round(n * Math.pow(10, J)) / Math.pow(10, J), P && P.fitInputWidthToTextLength && i.debounce(function() {
31701 P.fitInputWidthToTextLength(n.toString().length)
31707 var t = 100 * (e = O(e)) + "%",
31708 n = G ? 100 * (1 - e) + "%" : t;
31709 W ? F.css("bottom", t) : i.bidiProperty(F, "left", "right", t), U.css(W ? "height" : "width", n), d.toggleClass(G ? "md-max" : "md-min", 0 === e), d.toggleClass(G ? "md-min" : "md-max", 1 === e)
31713 Y ? S(W ? e.pointer.y : e.pointer.x) : A(W ? e.pointer.y : e.pointer.x)
31717 r.$evalAsync(function() {
31723 var t = C(x(N(D(e))));
31728 return Math.max(0, Math.min(e || 0, 1))
31732 var t = (e - (W ? ne.top : ne.left)) / (W ? ne.height : ne.width);
31733 return W || "rtl" !== i.bidi() || (t = 1 - t), Math.max(0, Math.min(1, W ? 1 - t : t))
31737 return Z + (G ? 1 - e : e) * (X - Z)
31741 var t = (e - Z) / (X - Z);
31742 return G ? 1 - t : t
31746 $setViewValue: function(e) {
31747 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
31753 $viewChangeListeners: []
31756 j = (t.element(i.getClosest(d, "_md-slider-container", !0)), f.ngDisabled ? t.bind(null, c(f.ngDisabled), r.$parent) : function() {
31757 return d[0].hasAttribute("disabled")
31759 H = t.element(d[0].querySelector(".md-thumb")),
31760 L = t.element(d[0].querySelector(".md-thumb-text")),
31762 q = t.element(d[0].querySelector(".md-track-container")),
31763 U = t.element(d[0].querySelector(".md-track-fill")),
31764 V = t.element(d[0].querySelector(".md-track-ticks")),
31765 z = t.element(d[0].getElementsByClassName("md-slider-wrapper")),
31766 B = (t.element(d[0].getElementsByClassName("md-slider-content")), i.throttle($, 5e3)),
31767 W = t.isDefined(f.mdVertical),
31768 Y = t.isDefined(f.mdDiscrete),
31769 G = t.isDefined(f.mdInvert);
31770 t.isDefined(f.min) ? f.$observe("min", m) : m(0), t.isDefined(f.max) ? f.$observe("max", g) : g(100), t.isDefined(f.step) ? f.$observe("step", v) : v(1), t.isDefined(f.round) ? f.$observe("round", b) : b(3);
31772 f.ngDisabled && r.$parent.$watch(f.ngDisabled, function() {
31773 d.attr("aria-disabled", !!j())
31774 }), s.register(z, "drag", {
31776 }), r.mouseActive = !1, z.on("keydown", function(e) {
31779 (W ? e.keyCode === o.KEY_CODE.DOWN_ARROW : e.keyCode === o.KEY_CODE.LEFT_ARROW) ? t = -Q: (W ? e.keyCode === o.KEY_CODE.UP_ARROW : e.keyCode === o.KEY_CODE.RIGHT_ARROW) && (t = Q), (t = G ? -t : t) && ((e.metaKey || e.ctrlKey || e.altKey) && (t *= 4), e.preventDefault(), e.stopPropagation(), r.$evalAsync(function() {
31780 E(R.$viewValue + t)
31783 }).on("mousedown", function() {
31784 y(), r.mouseActive = !0, z.removeClass("md-focused"), u(function() {
31787 }).on("focus", function() {
31788 !1 === r.mouseActive && z.addClass("md-focused")
31789 }).on("blur", function() {
31790 z.removeClass("md-focused"), d.removeClass("md-active"), _()
31791 }).on("$md.pressdown", function(e) {
31793 d.addClass("md-active"), d[0].focus(), $();
31794 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31795 r.$apply(function() {
31799 }).on("$md.pressup", function(e) {
31801 d.removeClass("md-dragging");
31802 var t = C(x(N(D(W ? e.pointer.y : e.pointer.x))));
31803 r.$apply(function() {
31807 }).on("$md.dragstart", function(e) {
31808 j() || (re = !0, e.stopPropagation(), d.addClass("md-dragging"), M(e))
31809 }).on("$md.drag", function(e) {
31810 re && (e.stopPropagation(), M(e))
31811 }).on("$md.dragend", function(e) {
31812 re && (e.stopPropagation(), re = !1)
31813 }), setTimeout(p, 0);
31814 var K = e.throttle(p);
31815 t.element(n).on("resize", K), r.$on("$destroy", function() {
31816 t.element(n).off("resize", K)
31817 }), R.$render = k, R.$viewChangeListeners.push(k), R.$formatters.push(C), R.$formatters.push(x);
31818 var Z, X, Q, J, ee, te, ne = {};
31824 require: ["?ngModel", "?^mdSliderContainer"],
31825 template: '<div class="md-slider-wrapper"><div class="md-slider-content"><div class="md-track-container"><div class="md-track"></div><div class="md-track md-track-fill"></div><div class="md-track-ticks"></div></div><div class="md-thumb-container"><div class="md-thumb"></div><div class="md-focus-thumb"></div><div class="md-focus-ring"></div><div class="md-sign"><span class="md-thumb-text"></span></div><div class="md-disabled-thumb"></div></div></div></div>',
31826 compile: function(e, n) {
31827 var i = t.element(e[0].getElementsByClassName("md-slider-wrapper")),
31828 o = n.tabindex || 0;
31829 return i.attr("tabindex", o), (n.disabled || n.ngDisabled) && i.attr("tabindex", -1), i.attr("role", "slider"), r.expect(e, "aria-label"), d
31833 e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse", "$log", "$timeout"], t.module("material.components.slider", ["material.core"]).directive("mdSlider", e).directive("mdSliderContainer", function() {
31835 controller: function() {},
31836 compile: function(e) {
31837 var r = e.find("md-slider");
31838 if (r) return r.attr("md-vertical") !== n && e.attr("md-vertical", ""), r.attr("flex") || r.attr("flex", ""),
31839 function(e, n, r, i) {
31841 n.children().attr("disabled", e), n.find("input").attr("disabled", e)
31845 r.disabled ? o(!0) : r.ngDisabled && (a = e.$watch(r.ngDisabled, function(e) {
31847 })), e.$on("$destroy", function() {
31851 i.fitInputWidthToTextLength = function(e) {
31852 var t = n[0].querySelector("md-input-container");
31854 var r = getComputedStyle(t),
31855 i = parseInt(r.minWidth),
31856 o = 2 * parseInt(r.padding);
31857 s = s || parseInt(r.maxWidth);
31858 var a = Math.max(s, i + o + i / 2 * e);
31859 t.style.maxWidth = a + "px"
31868 function e(e, t, r, i) {
31871 p.items.forEach(s), p.items = p.items.sort(function(e, t) {
31872 return e.top < t.top ? -1 : 1
31874 for (var e, t = f.prop("scrollTop"), n = p.items.length - 1; n >= 0; n--)
31875 if (t > p.items[n].top) {
31883 var t = e.element[0];
31884 for (e.top = 0, e.left = 0, e.right = 0; t && t !== f[0];) e.top += t.offsetTop, e.left += t.offsetLeft, t.offsetParent && (e.right += t.offsetParent.offsetWidth - t.offsetWidth - t.offsetLeft), t = t.offsetParent;
31885 e.height = e.element.prop("offsetHeight");
31886 var i = r.floatingScrollbars() ? "0" : n;
31887 r.bidi(e.clone, "margin-left", e.left, i), r.bidi(e.clone, "margin-right", i, e.right)
31891 var e = f.prop("scrollTop"),
31892 t = e > (c.prevScrollTop || 0);
31893 if (c.prevScrollTop = e, 0 !== e) {
31895 if (p.next && p.next.top <= e) return void l(p.next);
31896 if (p.current && p.next && p.next.top - e <= p.next.height) return void d(p.current, e + (p.next.top - p.next.height - e))
31899 if (p.current && p.prev && e < p.current.top) return void l(p.prev);
31900 if (p.next && p.current && e >= p.next.top - p.current.height) return void d(p.current, e + (p.next.top - e - p.current.height))
31902 p.current && d(p.current, e)
31907 if (p.current !== e) {
31908 p.current && (d(p.current, null), u(p.current, null)), e && u(e, "active"), p.current = e;
31909 var t = p.items.indexOf(e);
31910 p.next = p.items[t + 1], p.prev = p.items[t - 1], u(p.next, "next"), u(p.prev, "prev")
31915 e && e.state !== t && (e.state && (e.clone.attr("sticky-prev-state", e.state), e.element.attr("sticky-prev-state", e.state)), e.clone.attr("sticky-state", t), e.element.attr("sticky-state", t), e.state = t)
31919 t && (null === i || i === n ? t.translateY && (t.translateY = null, t.clone.css(e.CSS.TRANSFORM, "")) : (t.translateY = i, r.bidi(t.clone, e.CSS.TRANSFORM, "translate3d(" + t.left + "px," + i + "px,0)", "translateY(" + i + "px)")))
31921 var f = i.$element,
31923 a(f), f.on("$scrollstart", h), f.on("$scroll", c);
31930 add: function(e, t) {
31931 t.addClass("md-sticky-clone");
31936 return p.items.push(n), r.nextTick(function() {
31940 p.items.forEach(function(t, n) {
31941 t.element[0] === e[0] && (p.items.splice(n, 1), t.clone.remove())
31951 +r.now() - o > a ? (i = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), t.throttle(n))
31954 e.on("scroll touchmove", function() {
31955 i || (i = !0, t.throttle(n), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), o = +r.now()
31958 var s = r.checkStickySupport();
31959 return function(e, t, n) {
31960 var r = t.controller("mdContent");
31968 var a = r.$element.data("$$sticky");
31969 a || (a = o(r), r.$element.data("$$sticky", a));
31970 var c = n || i(t.clone())(e),
31972 e.$on("$destroy", l)
31976 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], t.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
31979 function e(e, n, r, i, o) {
31984 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
31985 link: function(a, s, c, l, u) {
31987 return t.element(e[0].querySelector(".md-subheader-content"))
31989 r(s), s.addClass("_md"), i.prefixer().removeAttribute(s, "ng-repeat");
31990 var f = s[0].outerHTML;
31991 c.$set("role", "heading"), o.expect(s, "aria-level", "2"), u(a, function(e) {
31993 }), s.hasClass("md-no-sticky") || u(a, function(t) {
31994 var r = n('<div class="md-subheader-wrapper" aria-hidden="true">' + f + "</div>")(a);
31995 i.nextTick(function() {
32002 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], t.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
32009 link: function(t, i, o) {
32011 i.on(r, function(e) {
32012 t.$applyAsync(function() {
32021 t.$inject = ["$parse"];
32023 r = "$md." + e.toLowerCase();
32026 t.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
32029 function e(e, n, r, i, o, a, s) {
32033 priority: r.BEFORE_NG_ARIA,
32035 template: '<div class="md-container"><div class="md-bar"></div><div class="md-thumb-container"><div class="md-thumb" md-ink-ripple md-ink-ripple-checkbox></div></div></div><div ng-transclude class="md-label"></div>',
32036 require: ["^?mdInputContainer", "?ngModel", "?^form"],
32037 compile: function(e, l) {
32038 var u = c.compile(e, l).post;
32039 return e.addClass("md-dragging"),
32040 function(e, c, l, d) {
32042 e.$apply(function() {
32043 h.$setViewValue(t), h.$render()
32047 var h = d[1] || n.fakeNgModel(),
32049 null != l.disabled ? p = function() {
32051 } : l.ngDisabled && (p = i(l.ngDisabled));
32052 var m = t.element(c[0].querySelector(".md-thumb-container")),
32053 g = t.element(c[0].querySelector(".md-container")),
32054 v = t.element(c[0].querySelector(".md-label"));
32056 c.removeClass("md-dragging")
32057 }), u(e, c, l, d), p && e.$watch(p, function(e) {
32058 c.attr("tabindex", e ? -1 : 0)
32059 }), l.$observe("mdInvert", function(e) {
32060 var t = n.parseAttributeBoolean(e);
32061 t ? c.prepend(v) : c.prepend(g), c.toggleClass("md-inverted", t)
32062 }), a.register(g, "drag"), g.on("$md.dragstart", function(t) {
32063 p && p(e) || (t.stopPropagation(), c.addClass("md-dragging"), b = {
32064 width: m.prop("offsetWidth")
32066 }).on("$md.drag", function(e) {
32068 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
32069 var t = e.pointer.distanceX / b.width,
32070 n = h.$viewValue ? 1 + t : t;
32071 n = Math.max(0, Math.min(1, n)), m.css(r.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
32073 }).on("$md.dragend", function(t) {
32074 b && (t.stopPropagation(), c.removeClass("md-dragging"), m.css(r.CSS.TRANSFORM, ""), (h.$viewValue ? b.translate < .5 : b.translate > .5) && f(!h.$viewValue), b = null, e.skipToggle = !0, s(function() {
32083 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], t.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
32084 }(), t.module("material.components.tabs", ["material.core", "material.components.icon"]),
32086 t.module("material.components.tabs").service("MdTabsPaginationService", function() {
32090 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], i.push(r), r += n.offsetWidth;
32096 for (t = 0; t < e.tabs.length; t++) n += e.tabs[t].offsetWidth;
32100 decreasePageOffset: function(t, n) {
32101 var r, i, o = t.canvas,
32103 for (r = 0; r < a.length; r++)
32108 return Math.max(0, i - o.clientWidth)
32110 increasePageOffset: function(n, r) {
32111 var i, o, a = n.canvas,
32112 s = t(n) - a.clientWidth,
32114 for (i = 0; c.length, c[i] <= r + a.clientWidth; i++) o = c[i];
32115 return Math.min(s, o)
32118 getTotalTabsWidth: t
32126 link: function(t, n) {
32127 n.addClass("_md"), t.$on("$destroy", function() {
32140 this.$onInit = function() {
32142 n.highlightAction && (t.highlightClasses = ["md-highlight", n.highlightClass]), t.$watch(function() {
32146 }), this.resolve = function() {
32152 function i(e, n, r, i) {
32154 return i("gt-xs") ? "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom") : "md-toast-open-bottom"
32156 var s = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
32158 onShow: function(t, c, l) {
32159 o = l.textContent || l.content;
32160 var u = !i("gt-sm");
32161 return c = r.extractElementByName(c, "md-toast", !0), l.element = c, l.onSwipe = function(e, t) {
32162 var i = e.type.replace("$md.", ""),
32163 o = i.replace("swipe", "");
32164 "down" === o && -1 != l.position.indexOf("top") && !u || "up" === o && (-1 != l.position.indexOf("bottom") || u) || ("left" !== o && "right" !== o || !u) && (c.addClass("md-" + i), r.nextTick(n.cancel))
32165 }, l.openClass = a(l.position), c.addClass(l.toastClass), l.parent.addClass(l.openClass), r.hasComputedStyle(l.parent, "position", "static") && l.parent.css("position", "relative"), c.on(s, l.onSwipe), c.addClass(u ? "md-bottom" : l.position.split(" ").map(function(e) {
32167 }).join(" ")), l.parent && l.parent.addClass("md-toast-animating"), e.enter(c, l.parent).then(function() {
32168 l.parent && l.parent.removeClass("md-toast-animating")
32171 onRemove: function(t, n, i) {
32172 return n.off(s, i.onSwipe), i.parent && i.parent.addClass("md-toast-animating"), i.openClass && i.parent.removeClass(i.openClass), (1 == i.$destroy ? n.remove() : e.leave(n)).then(function() {
32173 i.parent && i.parent.removeClass("md-toast-animating"), r.hasComputedStyle(i.parent, "position", "static") && i.parent.css("position", "")
32177 position: "bottom left",
32181 transformTemplate: function(e, n) {
32182 if (n.autoWrap && e && !/md-toast-content/g.test(e)) {
32183 var r = document.createElement("md-template");
32185 for (var i = 0; i < r.children.length; i++)
32186 if ("MD-TOAST" === r.children[i].nodeName) {
32187 var o = t.element('<div class="md-toast-content">');
32188 o.append(t.element(r.children[i].childNodes)), r.children[i].appendChild(o[0])
32196 r.$inject = ["$mdToast", "$scope"], i.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"];
32198 return e("$mdToast").setDefaults({
32199 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
32201 }).addPreset("simple", {
32202 argOption: "textContent",
32203 methods: ["textContent", "content", "action", "highlightAction", "highlightClass", "theme", "parent"],
32204 options: ["$mdToast", "$mdTheming", function(e, t) {
32206 template: '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}"> <div class="md-toast-content"> <span class="md-toast-text" role="alert" aria-relevant="all" aria-atomic="true"> {{ toast.content }} </span> <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="highlightClasses"> {{ toast.action }} </md-button> </div></md-toast>',
32208 theme: t.defaultTheme(),
32209 controllerAs: "toast",
32210 bindToController: !0
32213 }).addMethod("updateTextContent", n).addMethod("updateContent", n)
32215 e.$inject = ["$mdToast"], n.$inject = ["$$interimElementProvider"], t.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", n)
32218 function e(e, n, r, i, o) {
32219 var a = t.bind(null, r.supplant, "translate3d(0,{0}px,0)");
32223 link: function(s, c, l) {
32224 c.addClass("_md"), i(c), r.nextTick(function() {
32225 c.addClass("_md-toolbar-transitions")
32226 }, !1), t.isDefined(l.mdScrollShrink) && function() {
32228 t && c.parent()[0] === t.parent()[0] && (p && p.off("scroll", y), p = t, m = d())
32232 var t = e ? e.target.scrollTop : v;
32233 _(), g = Math.min(h / b, Math.max(0, g + t - v)), c.css(n.CSS.TRANSFORM, a([-g * b])), p.css(n.CSS.TRANSFORM, a([(h - g) * b])), v = t, r.nextTick(function() {
32234 var e = c.hasClass("md-whiteframe-z1");
32235 e && !g ? o.removeClass(c, "md-whiteframe-z1") : !e && g && o.addClass(c, "md-whiteframe-z1")
32240 return p ? (p.on("scroll", y), p.attr("scroll-shrink", "true"), r.nextTick(f, !1), function() {
32241 p.off("scroll", y), p.attr("scroll-shrink", "false"), f()
32246 var e = -(h = c.prop("offsetHeight")) * b + "px";
32252 var h, p, m = t.noop,
32255 b = l.mdShrinkSpeedFactor || .5,
32257 _ = r.debounce(f, 5e3);
32258 s.$on("$mdContentLoaded", i), l.$observe("mdScrollShrink", function(e) {
32259 var t = c.parent().find("md-content");
32260 !p && t.length && i(0, t), !1 === (e = s.$eval(e)) ? m() : m = d()
32261 }), l.ngShow && s.$watch(l.ngShow, f), l.ngHide && s.$watch(l.ngHide, f), s.$on("$destroy", m)
32266 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], t.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
32269 function n(e, n, r, i, o, a, s, c) {
32270 var l = "focus touchstart mouseenter",
32271 u = "blur touchcancel mouseleave",
32277 x: s.xPosition.CENTER,
32278 y: s.yPosition.ABOVE
32281 x: s.xPosition.OFFSET_END,
32282 y: s.yPosition.CENTER
32285 x: s.xPosition.CENTER,
32286 y: s.yPosition.BELOW
32289 x: s.xPosition.OFFSET_START,
32290 y: s.yPosition.CENTER
32297 mdZIndex: "=?mdZIndex",
32298 mdDelay: "=?mdDelay",
32299 mdVisible: "=?mdVisible",
32300 mdAutohide: "=?mdAutohide",
32301 mdDirection: "@?mdDirection"
32303 link: function(m, g, v) {
32305 m.mdZIndex = m.mdZIndex || d, m.mdDelay = m.mdDelay || f, p[m.mdDirection] || (m.mdDirection = h)
32309 var t = e || o(g.text().trim())(m.$parent);
32310 (!D.attr("aria-label") && !D.attr("aria-labelledby") || D.attr("md-labeled-by-tooltip")) && (D.attr("aria-label", t), D.attr("md-labeled-by-tooltip") || D.attr("md-labeled-by-tooltip", O))
32314 b(), M && M.panelEl && M.panelEl.removeClass(C), C = "md-origin-" + m.mdDirection, x = p[m.mdDirection], T = s.newPanelPosition().relativeTo(D).addPanelPosition(x.x, x.y), M && M.panelEl && (M.panelEl.addClass(C), M.updatePosition(T))
32318 $.queued && $.value === !!t || !$.queued && m.mdVisible === !!t || ($.value = !!t, $.queued || (t ? ($.queued = !0, S = e(function() {
32319 m.mdVisible = $.value, $.queued = !1, S = null, m.visibleWatcher || w(m.mdVisible)
32320 }, m.mdDelay)) : a.nextTick(function() {
32321 m.mdVisible = !1, m.visibleWatcher || w(!1)
32330 if (!g[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
32332 var e = t.element(document.body),
32333 n = s.newPanelAnimation().openFrom(D).closeTo(D).withAnimation({
32341 propagateContainerEvents: !0,
32342 panelClass: "md-tooltip " + C,
32345 zIndex: m.mdZIndex,
32350 M.open().then(function() {
32351 M.panelEl.attr("role", "tooltip")
32358 var C, x, T, M, A, S, O = "md-tooltip-" + a.nextUid(),
32359 D = a.getParentWithPointerEvents(g),
32363 b(), y(), g.detach(), _(),
32366 return e.some(function(e) {
32367 return "disabled" === e.attributeName && D[0].disabled
32376 R = document.activeElement === D[0]
32380 "focus" === e.type && R ? R = !1 : m.mdVisible || (D.on(u, d), $(!0), "touchstart" === e.type && D.one("touchend", function() {
32381 a.nextTick(function() {
32382 i.one("touchend", d)
32388 ((A = m.hasOwnProperty("mdAutohide") ? m.mdAutohide : v.hasOwnProperty("mdAutohide")) || I || i[0].activeElement !== D[0]) && (S && (e.cancel(S), $.queued = !1, S = null), D.off(u, d), D.triggerHandler("blur"), $(!1)), I = !1
32394 if (D[0] && "MutationObserver" in n) {
32395 var h = new MutationObserver(function(e) {
32396 t(e) && a.nextTick(function() {
32404 R = !1, c.register("scroll", r, !0), c.register("blur", o), c.register("resize", N), m.$on("$destroy", function() {
32405 c.deregister("scroll", r, !0), c.deregister("blur", o), c.deregister("resize", N), D.off(l, s).off(u, d).off("mousedown", f), d(), h && h.disconnect()
32406 }), D.on("mousedown", f), D.on(l, s)
32412 if (g[0] && "MutationObserver" in n) {
32413 var t = new MutationObserver(function(e) {
32414 e.forEach(function(e) {
32415 "md-visible" !== e.attributeName || m.visibleWatcher || (m.visibleWatcher = m.$watch("mdVisible", w))
32420 }), v.hasOwnProperty("mdVisible") && (m.visibleWatcher = m.$watch("mdVisible", w))
32421 } else m.visibleWatcher = m.$watch("mdVisible", w);
32422 m.$watch("mdDirection", _), g.one("$destroy", e), D.one("$destroy", e), m.$on("$destroy", function() {
32423 $(!1), M && M.destroy(), t && t.disconnect(), g.remove()
32424 }), g.text().indexOf(o.startSymbol()) > -1 && m.$watch(function() {
32425 return g.text().trim()
32431 n.$inject = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"], t.module("material.components.tooltip", ["material.core", "material.components.panel"]).directive("mdTooltip", n).service("$$mdTooltipRegistry", function() {
32433 r[e.type] && r[e.type].forEach(function(t) {
32440 register: function(t, o, a) {
32441 var s = r[t] = r[t] || [];
32442 s.length || (a ? e.addEventListener(t, n, !0) : i.on(t, n)), -1 === s.indexOf(o) && s.push(o)
32444 deregister: function(t, o, a) {
32446 c = s ? s.indexOf(o) : -1;
32447 c > -1 && (s.splice(c, 1), 0 === s.length && (a ? e.removeEventListener(t, n, !0) : i.off(t, n)))
32454 e.addClass("md-truncate")
32456 e.$inject = ["$element"], t.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
32460 controllerAs: "$ctrl",
32461 bindToController: !0
32467 return '<div class="md-virtual-repeat-scroller" role="presentation"><div class="md-virtual-repeat-sizer" role="presentation"></div><div class="md-virtual-repeat-offsetter" role="presentation">' + e[0].innerHTML + "</div></div>"
32470 function n(e, n, r, i, o, a, s, c, l) {
32471 this.$rootScope = o, this.$scope = s, this.$element = c, this.$attrs = l, this.size = 0, this.scrollSize = 0, this.scrollOffset = 0, this.horizontal = this.$attrs.hasOwnProperty("mdOrientHorizontal"), this.repeater = null, this.autoShrink = this.$attrs.hasOwnProperty("mdAutoShrink"), this.autoShrinkMin = parseInt(this.$attrs.mdAutoShrinkMin, 10) || 0, this.originalSize = null, this.offsetSize = parseInt(this.$attrs.mdOffsetSize, 10) || 0, this.oldElementSize = null, this.maxElementPixels = r.ELEMENT_MAX_PIXELS, this.$attrs.mdTopIndex ? (this.bindTopIndex = i(this.$attrs.mdTopIndex), this.topIndex = this.bindTopIndex(this.$scope), t.isDefined(this.topIndex) || (this.topIndex = 0, this.bindTopIndex.assign(this.$scope, 0)), this.$scope.$watch(this.bindTopIndex, t.bind(this, function(e) {
32472 e !== this.topIndex && this.scrollToIndex(e)
32473 }))) : this.topIndex = 0, this.scroller = c[0].querySelector(".md-virtual-repeat-scroller"), this.sizer = this.scroller.querySelector(".md-virtual-repeat-sizer"), this.offsetter = this.scroller.querySelector(".md-virtual-repeat-offsetter");
32474 var u = t.bind(this, this.updateSize);
32475 e(t.bind(this, function() {
32477 var e = n.debounce(u, 10, null, !1),
32479 this.size || e(), r.on("resize", e), s.$on("$destroy", function() {
32481 }), s.$emit("$md-resize-enable"), s.$on("$md-resize", u)
32489 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
32492 transclude: "element",
32493 compile: function(t, n) {
32494 var r = n.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
32497 a = n.mdExtraName && e(n.mdExtraName);
32498 return function(e, t, n, r, s) {
32499 r[0].link_(r[1], s, i, o, a)
32505 function i(e, n, r, i, o, a, s, c) {
32506 this.$scope = e, this.$element = n, this.$attrs = r, this.$browser = i, this.$document = o, this.$mdUtil = c, this.$rootScope = a, this.$$rAF = s, this.onDemand = c.parseAttributeBoolean(r.mdOnDemand), this.browserCheckUrlChange = i.$$checkUrlChange, this.newStartIndex = 0, this.newEndIndex = 0, this.newVisibleEnd = 0, this.startIndex = 0, this.endIndex = 0, this.itemSize = e.$eval(r.mdItemSize) || null, this.isFirstRender = !0, this.isVirtualRepeatUpdating_ = !1, this.itemsLength = 0, this.unwatchItemSize_ = t.noop, this.blocks = {}, this.pooledBlocks = [], e.$on("$destroy", t.bind(this, this.cleanupBlocks_))
32510 if (!t.isFunction(e.getItemAtIndex) || !t.isFunction(e.getLength)) throw Error("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength() ");
32517 link: function(e, t, n) {
32518 var r = e.$eval(n.mdForceHeight) || null;
32519 r && t && (t[0].style.height = r)
32523 n.$inject = ["$$rAF", "$mdUtil", "$mdConstant", "$parse", "$rootScope", "$window", "$scope", "$element", "$attrs"], i.$inject = ["$scope", "$element", "$attrs", "$browser", "$document", "$rootScope", "$$rAF", "$mdUtil"], r.$inject = ["$parse"], t.module("material.components.virtualRepeat", ["material.core", "material.components.showHide"]).directive("mdVirtualRepeatContainer", function() {
32527 compile: function(e, t) {
32528 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
32531 }).directive("mdVirtualRepeat", r).directive("mdForceHeight", a);
32532 n.prototype.register = function(e) {
32533 this.repeater = e, t.element(this.scroller).on("scroll wheel touchmove touchend", t.bind(this, this.handleScroll_))
32534 }, n.prototype.isHorizontal = function() {
32535 return this.horizontal
32536 }, n.prototype.getSize = function() {
32538 }, n.prototype.setSize_ = function(e) {
32539 var t = this.getDimensionName_();
32540 this.size = e, this.$element[0].style[t] = e + "px"
32541 }, n.prototype.unsetSize_ = function() {
32542 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
32543 }, n.prototype.updateSize = function() {
32544 this.originalSize || (this.size = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight, this.handleScroll_(), this.repeater && this.repeater.containerUpdated())
32545 }, n.prototype.getScrollSize = function() {
32546 return this.scrollSize
32547 }, n.prototype.getDimensionName_ = function() {
32548 return this.isHorizontal() ? "width" : "height"
32549 }, n.prototype.sizeScroller_ = function(e) {
32550 var t = this.getDimensionName_(),
32551 n = this.isHorizontal() ? "height" : "width";
32552 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
32554 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
32555 var r = Math.floor(e / this.maxElementPixels),
32556 i = document.createElement("div");
32557 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
32558 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
32559 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
32561 }, n.prototype.autoShrink_ = function(e) {
32562 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
32563 if (this.autoShrink && t !== this.size) {
32564 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
32565 var n = this.originalSize || this.size;
32566 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
32567 else if (null !== this.originalSize) {
32569 var r = this.originalSize;
32570 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
32572 this.repeater.containerUpdated()
32574 }, n.prototype.setScrollSize = function(e) {
32575 var t = e + this.offsetSize;
32576 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
32577 }, n.prototype.getScrollOffset = function() {
32578 return this.scrollOffset
32579 }, n.prototype.scrollTo = function(e) {
32580 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
32581 }, n.prototype.scrollToIndex = function(e) {
32582 var t = this.repeater.getItemSize(),
32583 n = this.repeater.itemsLength;
32584 e > n && (e = n - 1), this.scrollTo(t * e)
32585 }, n.prototype.resetScroll = function() {
32587 }, n.prototype.handleScroll_ = function() {
32588 var e = "rtl" != document.dir && "rtl" != document.body.dir;
32589 e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
32590 var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
32591 if (!(t === this.scrollOffset || t > this.scrollSize - this.size)) {
32592 var n = this.repeater.getItemSize();
32594 var r = Math.max(0, Math.floor(t / n) - 3),
32595 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
32596 if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
32597 var o = Math.floor(t / n);
32598 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
32600 this.repeater.containerUpdated()
32603 }, i.prototype.link_ = function(e, n, r, i, o) {
32604 this.container = e, this.transclude = n, this.repeatName = r, this.rawRepeatListExpression = i, this.extraName = o, this.sized = !1, this.repeatListExpression = t.bind(this, this.repeatListExpression_), this.container.register(this)
32605 }, i.prototype.cleanupBlocks_ = function() {
32606 t.forEach(this.pooledBlocks, function(e) {
32609 }, i.prototype.readItemSize_ = function() {
32610 if (!this.itemSize) {
32611 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
32612 var e = this.getBlock_(0);
32613 e.element[0].parentNode || this.parentNode.appendChild(e.element[0]), this.itemSize = e.element[0][this.container.isHorizontal() ? "offsetWidth" : "offsetHeight"] || null, this.blocks[0] = e, this.poolBlock_(0), this.itemSize && this.containerUpdated()
32615 }, i.prototype.repeatListExpression_ = function(e) {
32616 var t = this.rawRepeatListExpression(e);
32617 if (this.onDemand && t) {
32619 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
32622 }, i.prototype.containerUpdated = function() {
32623 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== t.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e) {
32624 e && e.length && this.readItemSize_()
32625 })), void(this.$rootScope.$$phase || this.$scope.$digest());
32626 this.sized || (this.items = this.repeatListExpression(this.$scope)), this.sized || (this.unwatchItemSize_(), this.sized = !0, this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e, t) {
32627 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
32628 }))), this.updateIndexes_(), (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) && (this.items instanceof o && this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex), this.virtualRepeatUpdate_(this.items, this.items))
32629 }, i.prototype.getItemSize = function() {
32630 return this.itemSize
32631 }, i.prototype.getItemCount = function() {
32632 return this.itemsLength
32633 }, i.prototype.virtualRepeatUpdate_ = function(e, n) {
32634 this.isVirtualRepeatUpdating_ = !0;
32635 var r = e && e.length || 0,
32637 if (this.items && r < this.items.length && 0 !== this.container.getScrollOffset()) {
32639 var o = this.container.getScrollOffset();
32640 this.container.resetScroll(), this.container.scrollTo(o)
32642 r !== this.itemsLength && (i = !0, this.itemsLength = r), this.items = e, (e !== n || i) && this.updateIndexes_(), this.parentNode = this.$element[0].parentNode, i && this.container.setScrollSize(r * this.itemSize), Object.keys(this.blocks).forEach(function(e) {
32643 var t = parseInt(e, 10);
32644 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
32645 }, this), this.$browser.$$checkUrlChange = t.noop;
32648 for (a = this.newStartIndex; a < this.newEndIndex && null == this.blocks[a]; a++) s = this.getBlock_(a), this.updateBlock_(s, a), c.push(s);
32649 for (; null != this.blocks[a]; a++) this.updateBlock_(this.blocks[a], a);
32650 for (var u = a - 1; a < this.newEndIndex; a++) s = this.getBlock_(a), this.updateBlock_(s, a), l.push(s);
32651 if (c.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(c), this.$element[0].nextSibling), l.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(l), this.blocks[u] && this.blocks[u].element[0].nextSibling), this.$browser.$$checkUrlChange = this.browserCheckUrlChange, this.startIndex = this.newStartIndex, this.endIndex = this.newEndIndex, this.isFirstRender) {
32652 this.isFirstRender = !1;
32653 var d = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex;
32654 this.$mdUtil.nextTick(function() {
32655 this.container.scrollToIndex(d)
32658 this.isVirtualRepeatUpdating_ = !1
32659 }, i.prototype.getBlock_ = function(e) {
32660 if (this.pooledBlocks.length) return this.pooledBlocks.pop();
32662 return this.transclude(t.bind(this, function(t, r) {
32667 }, this.updateScope_(r, e), this.parentNode.appendChild(t[0])
32669 }, i.prototype.updateBlock_ = function(e, t) {
32670 this.blocks[t] = e, (e.new || e.scope.$index !== t || e.scope[this.repeatName] !== this.items[t]) && (e.new = !1, this.updateScope_(e.scope, t), this.$rootScope.$$phase || e.scope.$digest())
32671 }, i.prototype.updateScope_ = function(e, t) {
32672 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
32673 }, i.prototype.poolBlock_ = function(e) {
32674 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
32675 }, i.prototype.domFragmentFromBlocks_ = function(e) {
32676 var t = this.$document[0].createDocumentFragment();
32677 return e.forEach(function(e) {
32678 t.appendChild(e.element[0])
32680 }, i.prototype.updateIndexes_ = function() {
32681 var e = this.items ? this.items.length : 0,
32682 t = Math.ceil(this.container.getSize() / this.itemSize);
32683 this.newStartIndex = Math.max(0, Math.min(e - t, Math.floor(this.container.getScrollOffset() / this.itemSize))), this.newVisibleEnd = this.newStartIndex + t + 3, this.newEndIndex = Math.min(e, this.newVisibleEnd), this.newStartIndex = Math.max(0, this.newStartIndex - 3)
32684 }, o.prototype.$$includeIndexes = function(e, t) {
32685 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
32686 this.length = this.model.getLength()
32687 }, a.$inject = ["$mdUtil"]
32696 link: function(o, a, s) {
32698 s.$observe("mdWhiteframe", function(o) {
32699 (o = parseInt(o, 10) || i) != t && (o > r || o < n) && (e.warn("md-whiteframe attribute value is invalid. It should be a number between " + n + " and " + r, a[0]), o = i);
32700 var l = o == t ? "" : "md-whiteframe-" + o + "dp";
32701 s.$updateClass(l, c), c = l
32706 e.$inject = ["$log"], t.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
32709 function e(e, s, c, l, u, d, f, h, p, m, g, v) {
32711 e.requireMatch && ye && ye.$setValidity("md-require-match", !!e.selectedItem || !e.searchText)
32715 if (!fe) return c.nextTick(y, !1, e);
32716 var t, n = (e.dropdownItems || i) * r,
32717 l = fe.wrap.getBoundingClientRect(),
32718 u = fe.snap.getBoundingClientRect(),
32719 d = fe.root.getBoundingClientRect(),
32720 f = u.bottom - d.top,
32721 h = d.bottom - u.top,
32722 m = l.left - d.left,
32726 t = s.find("md-input-container");
32728 var n = t.find("input");
32729 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
32733 b = e.dropdownPosition;
32734 if (b || (b = f > h && d.height - f - o < n ? "top" : "bottom"), p.mdFloatingLabel && (m += a, g -= 2 * a), t = {
32736 minWidth: g + "px",
32737 maxWidth: Math.max(l.right - d.left, d.right - l.left) - o + "px"
32738 }, "top" === b) t.top = "auto", t.bottom = h + "px", t.maxHeight = Math.min(n, l.top - d.top - o) + "px";
32740 var _ = d.bottom - l.bottom - o + c.getViewportTop();
32741 t.top = f - v + "px", t.bottom = "auto", t.maxHeight = Math.min(n, _) + "px"
32743 fe.$.scrollContainer.css(t), c.nextTick(function() {
32744 var e = fe.scrollContainer.getBoundingClientRect(),
32746 e.right > d.right - o && (t.left = l.right - e.width + "px"), fe.$.scrollContainer.css(t)
32751 fe.$.root.length && (u(fe.$.scrollContainer), fe.$.scrollContainer.detach(), fe.$.root.append(fe.$.scrollContainer), f.pin && f.pin(fe.$.scrollContainer, h))
32759 var n = parseInt(e.delay, 10) || 0;
32760 p.$observe("disabled", function(e) {
32761 le.isDisabled = c.parseAttributeBoolean(e, !1)
32762 }), p.$observe("required", function(e) {
32763 le.isRequired = c.parseAttributeBoolean(e, !1)
32764 }), p.$observe("readonly", function(e) {
32765 le.isReadonly = c.parseAttributeBoolean(e, !1)
32766 }), e.$watch("searchText", n ? c.debounce(N, n) : N), e.$watch("selectedItem", A), t.element(d).on("resize", _e), e.$on("$destroy", E)
32770 if (le.hidden || c.enableScrolling(), t.element(d).off("resize", _e), fe) {
32771 var e = ["ul", "scroller", "scrollContainer", "input"];
32772 t.forEach(e, function(e) {
32782 scrollContainer: s[0].querySelector(".md-virtual-repeat-container"),
32783 scroller: s[0].querySelector(".md-virtual-repeat-scroller"),
32784 ul: s.find("ul")[0],
32785 input: s.find("input")[0],
32788 root: document.body
32789 }).li = fe.ul.getElementsByTagName("li"), fe.$ = x(fe), ye = fe.$.input.controller("ngModel")
32794 for (e = s; e.length && (n = e.attr("md-autocomplete-snap"), !t.isDefined(n)); e = e.parent());
32795 if (e.length) return {
32797 wrap: "width" === n.toLowerCase() ? e[0] : s.find("md-autocomplete-wrap")[0]
32799 var r = s.find("md-autocomplete-wrap")[0];
32808 for (var r in e) e.hasOwnProperty(r) && (n[r] = t.element(e[r]));
32816 return e.on("wheel", t), e.on("touchmove", t),
32818 e.off("wheel", t), e.off("touchmove", t)
32823 ge || le.hidden || fe.input.focus(), pe = !1, le.hidden = F()
32827 b(), n ? P(n).then(function(t) {
32828 e.searchText = t, D(n, r)
32829 }) : r && e.searchText && P(r).then(function(n) {
32830 t.isString(e.searchText) && n.toString().toLowerCase() === e.searchText.toLowerCase() && (e.searchText = "")
32835 t.isFunction(e.itemChange) && e.itemChange(j(e.selectedItem))
32839 t.isFunction(e.textChange) && e.textChange()
32843 me.forEach(function(n) {
32849 le.index = H(), t !== n && (b(), P(e.selectedItem).then(function(r) {
32850 t !== r && (e.selectedItem = null, t !== n && O(), G() ? oe() : (le.matches = [], L(!1), J(!1, $e.Count)))
32855 e && (pe = !1, ge = !1), fe.input.blur()
32859 return t.isNumber(e.minLength) ? e.minLength : 1
32863 return m.when(function(t) {
32864 return t && e.itemText ? e.itemText(j(t)) : null
32865 }(n) || n).then(function(e) {
32866 return e && !t.isString(e) && g.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."), e
32873 return le.itemName && (t[le.itemName] = e), t
32877 return e.autoselect ? 0 : -1
32881 le.loading != e && (le.loading = e), le.hidden = F()
32885 return !q() || !z()
32889 return !(le.loading && !B()) && (!W() && !!ge)
32893 return V("blur") || !le.hidden || le.loading || V("clear") && e.searchText
32897 return !e.escapeOptions || -1 !== e.escapeOptions.toLowerCase().indexOf(t)
32901 return G() && B() || ie()
32905 return !!le.matches.length
32909 return !!le.scope.selectedItem
32913 return P(le.matches[le.index])
32917 return (e.searchText || "").length >= R()
32921 c.nextTick(function() {
32922 P(le.matches[t]).then(function(e) {
32923 var t = fe.$.input.controller("ngModel");
32924 t.$setViewValue(e), t.$render()
32925 }).finally(function() {
32926 e.selectedItem = le.matches[t], L(!1)
32932 le.index = 0, le.matches = []
32936 L(!0), e.searchText = "";
32937 var t = document.createEvent("CustomEvent");
32938 t.initCustomEvent("change", !0, !0, {
32940 }), fe.input.dispatchEvent(t), fe.input.blur(), e.searchText = "", fe.input.focus()
32945 he[o] = t, (n || "") === (e.searchText || "") && ae(t)
32947 var i = e.$parent.$eval(de),
32948 o = n.toLowerCase(),
32951 a ? r(i) : s && function(t) {
32952 t && (t = m.when(t), ve++, L(!0), c.nextTick(function() {
32953 t.then(r).finally(function() {
32961 var n = e ? "polite" : "assertive",
32963 t & $e.Selected && -1 !== le.index && r.push(Y()), t & $e.Count && r.push(m.resolve(ee())), m.all(r).then(function(e) {
32964 v.announce(e.join(" "), n)
32969 switch (le.matches.length) {
32971 return "There are no matches available.";
32973 return "There is 1 match available.";
32975 return "There are " + le.matches.length + " matches available."
32981 var e = fe.li[0].offsetHeight,
32984 r = fe.scroller.clientHeight,
32985 i = fe.scroller.scrollTop;
32986 t < i ? re(t) : n > i + r && re(n - r)
32995 fe.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
32999 var e = (le.scope.searchText || "").length;
33000 return le.hasNotFound && !B() && (!le.loading || ne()) && e >= R() && (ge || pe) && !W()
33004 var t = e.searchText || "",
33005 n = t.toLowerCase();
33006 !e.noCache && he[n] ? ae(he[n]) : Q(t), le.hidden = F()
33010 le.matches = t, le.hidden = F(), le.loading && L(!1), e.selectOnMatch && se(), y(), J(!0, $e.Count)
33014 var t = e.searchText,
33017 1 === n.length && P(r).then(function(n) {
33019 e.matchInsensitive && !r && (r = t.toLowerCase() == n.toLowerCase()), r && K(0)
33023 function ce(t, n) {
33024 p[t] && e.$parent.$eval(p[t], n || {})
33027 ue = e.itemsExpr.split(/ in /i),
33037 _e = c.debounce(function() {
33040 ! function(e, t, n) {
33041 Object.defineProperty(le, e, {
33050 }("hidden", function(e, n) {
33051 !e && n ? (y(), J(!0, $e.Count | $e.Selected), fe && (c.disableScrollAround(fe.ul), be = T(t.element(fe.wrap)))) : e && !n && (c.enableScrolling(), be && (be(), be = null))
33052 }, !0), le.scope = e, le.parent = e.$parent, le.itemName = ue[0], le.matches = [], le.loading = !1, le.hidden = !0, le.index = null, le.id = c.nextUid(), le.isDisabled = null, le.isRequired = null, le.isReadonly = null, le.hasNotFound = !1, le.keydown = function(t) {
33053 switch (t.keyCode) {
33054 case l.KEY_CODE.DOWN_ARROW:
33055 if (le.loading) return;
33056 t.stopPropagation(), t.preventDefault(), le.index = Math.min(le.index + 1, le.matches.length - 1), te(), J(!1, $e.Selected);
33058 case l.KEY_CODE.UP_ARROW:
33059 if (le.loading) return;
33060 t.stopPropagation(), t.preventDefault(), le.index = le.index < 0 ? le.matches.length - 1 : Math.max(0, le.index - 1), te(), J(!1, $e.Selected);
33062 case l.KEY_CODE.TAB:
33063 if (M(), le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33066 case l.KEY_CODE.ENTER:
33067 if (le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
33069 t.stopPropagation(), t.preventDefault(), K(le.index);
33071 case l.KEY_CODE.ESCAPE:
33072 if (t.preventDefault(), !U()) return;
33073 t.stopPropagation(), Z(), e.searchText && V("clear") && X(), le.hidden = !0, V("blur") && I(!0)
33075 }, le.blur = function(e) {
33076 ge = !1, pe || (le.hidden = F(), ce("ngBlur", {
33079 }, le.focus = function(e) {
33080 ge = !0, q() && G() && oe(), le.hidden = F(), ce("ngFocus", {
33083 }, le.clear = function() {
33085 }, le.select = K, le.listEnter = function() {
33087 }, le.listLeave = M, le.mouseUp = function() {
33089 }, le.getCurrentDisplayValue = Y, le.registerSelectedItemWatcher = function(e) {
33090 -1 == me.indexOf(e) && me.push(e)
33091 }, le.unregisterSelectedItemWatcher = function(e) {
33092 var t = me.indexOf(e); - 1 != t && me.splice(t, 1)
33093 }, le.notFoundVisible = ie, le.loadingIsVisible = function() {
33094 return le.loading && !W()
33095 }, le.positionDropdown = y;
33100 return c.initOptionalProperties(e, p, {
33102 selectedItem: null,
33104 }), u(s), w(), void c.nextTick(function() {
33105 k(), _(), e.autofocus && s.on("focus", $)
33108 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], t.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
33117 controller: "MdAutocompleteCtrl",
33118 controllerAs: "$mdAutocompleteCtrl",
33120 inputName: "@mdInputName",
33121 inputMinlength: "@mdInputMinlength",
33122 inputMaxlength: "@mdInputMaxlength",
33123 searchText: "=?mdSearchText",
33124 selectedItem: "=?mdSelectedItem",
33125 itemsExpr: "@mdItems",
33126 itemText: "&mdItemText",
33127 placeholder: "@placeholder",
33128 noCache: "=?mdNoCache",
33129 requireMatch: "=?mdRequireMatch",
33130 selectOnMatch: "=?mdSelectOnMatch",
33131 matchInsensitive: "=?mdMatchCaseInsensitive",
33132 itemChange: "&?mdSelectedItemChange",
33133 textChange: "&?mdSearchTextChange",
33134 minLength: "=?mdMinLength",
33135 delay: "=?mdDelay",
33136 autofocus: "=?mdAutofocus",
33137 floatingLabel: "@?mdFloatingLabel",
33138 autoselect: "=?mdAutoselect",
33139 menuClass: "@?mdMenuClass",
33140 inputId: "@?mdInputId",
33141 escapeOptions: "@?mdEscapeOptions",
33142 dropdownItems: "=?mdDropdownItems",
33143 dropdownPosition: "@?mdDropdownPosition",
33144 clearButton: "=?mdClearButton"
33146 compile: function(e, n) {
33147 var r = ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"],
33148 i = e.find("input");
33149 return r.forEach(function(e) {
33150 var t = n[n.$normalize(e)];
33151 null !== t && i.attr(e, t)
33153 function(e, n, r, i) {
33154 i.hasNotFound = !!n.attr("md-has-not-found"), t.isDefined(r.mdClearButton) || e.floatingLabel || (e.clearButton = !0)
33157 template: function(t, n) {
33158 var r = function() {
33159 var e = t.find("md-not-found").detach(),
33160 n = e.length ? e.html() : "";
33161 return n ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + n + "</li>" : ""
33164 var e = t.find("md-item-template").detach(),
33165 n = e.length ? e.html() : t.html();
33166 return e.length || t.empty(), "<md-autocomplete-parent-scope md-autocomplete-replace>" + n + "</md-autocomplete-parent-scope>"
33170 return r && t.attr("md-has-not-found", !0), t.attr("tabindex", "-1"), " <md-autocomplete-wrap ng-class=\"{ 'md-whiteframe-z1': !floatingLabel, 'md-menu-showing': !$mdAutocompleteCtrl.hidden, 'md-show-clear-button': !!clearButton }\"> " + (n.mdFloatingLabel ? ' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" ' + (null != a ? 'tabindex="' + a + '"' : "") + ' id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-model-options="{ allowInvalid: true }" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{floatingLabel}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/> <div md-autocomplete-parent-scope md-autocomplete-replace>' + o + "</div> </md-input-container>" : ' <input type="search" ' + (null != a ? 'tabindex="' + a + '"' : "") + ' id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-if="!floatingLabel" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" placeholder="{{placeholder}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{placeholder}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>') + ' <button type="button" aria-label="Clear Input" tabindex="-1" ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText" ng-click="$mdAutocompleteCtrl.clear($event)"><md-icon md-svg-src="' + e.mdClose + '"></md-icon></button> <md-progress-linear class="' + (n.mdFloatingLabel ? "md-inline" : "") + '" ng-if="$mdAutocompleteCtrl.loadingIsVisible()" md-mode="indeterminate"></md-progress-linear> <md-virtual-repeat-container md-auto-shrink md-auto-shrink-min="1" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()" ng-hide="$mdAutocompleteCtrl.hidden" class="md-autocomplete-suggestions-container md-whiteframe-z1" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation"> <ul class="md-autocomplete-suggestions" ng-class="::menuClass" id="ul-{{$mdAutocompleteCtrl.id}}"> <li md-virtual-repeat="item in $mdAutocompleteCtrl.matches" ng-class="{ selected: $index === $mdAutocompleteCtrl.index }" ng-click="$mdAutocompleteCtrl.select($index)" md-extra-name="$mdAutocompleteCtrl.itemName"> ' + i + " </li>" + r + " </ul> </md-virtual-repeat-container> </md-autocomplete-wrap>"
33174 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.autocomplete").directive("mdAutocomplete", e)
33180 compile: function(e, n, r) {
33181 return function(e, n, i) {
33183 s[r] = e[n], e.$watch(n, function(e) {
33184 t.nextTick(function() {
33189 var a = e.$mdAutocompleteCtrl,
33190 s = a.parent.$new(),
33192 o("$index", "$index"), o("item", c),
33196 e.$watch(function() {
33197 n || t || (t = !0, e.$$postDigest(function() {
33198 n || s.$digest(), t = n = !1
33200 }), s.$watch(function() {
33203 }(), r(s, function(e) {
33209 transclude: "element"
33212 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
33215 function e(e, t, n) {
33216 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
33218 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(e, t) {
33219 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(n) {
33224 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
33225 }, e.prototype.onRender = function(e, t) {
33226 var n = e.contentText;
33227 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
33228 }, e.prototype.applyRegex = function(e) {
33229 var n = this.resolveTokens(e);
33230 this.$element.empty(), n.forEach(function(e) {
33232 var n = t.element('<span class="highlight">').text(e.text);
33233 this.$element.append(n)
33234 } else this.$element.append(document.createTextNode(e))
33236 }, e.prototype.resolveTokens = function(e) {
33238 var i = e.slice(t, r);
33243 return e.replace(this.regex, function(e, i) {
33247 }), r = i + e.length
33249 }, e.prototype.createRegex = function(e, t) {
33252 i = this.sanitizeRegex(e);
33253 return t.indexOf("^") >= 0 && (n = "^"), t.indexOf("$") >= 0 && (r = "$"), new RegExp(n + i + r, t.replace(/[$\^]/g, ""))
33254 }, e.prototype.sanitizeRegex = function(e) {
33255 return e && e.toString().replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g, "\\$&")
33262 controller: "MdHighlightCtrl",
33263 compile: function(n, r) {
33264 var i = t(r.mdHighlightText),
33266 return function(e, t, n, r) {
33272 e.$inject = ["$interpolate", "$parse"], t.module("material.components.autocomplete").directive("mdHighlightText", e)
33275 function r(e, t, r, i, o) {
33276 this.$scope = e, this.$element = t, this.$mdConstant = r, this.$timeout = i, this.$mdUtil = o, this.isEditting = !1, this.parentController = n, this.enableChipEdit = !1
33278 r.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], t.module("material.components.chips").controller("MdChipCtrl", r), r.prototype.init = function(e) {
33279 this.parentController = e, this.enableChipEdit = this.parentController.enableChipEdit, this.enableChipEdit && (this.$element.on("keydown", this.chipKeyDown.bind(this)), this.$element.on("mousedown", this.chipMouseDown.bind(this)), this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))
33280 }, r.prototype.getChipContent = function() {
33281 var e = this.$element[0].getElementsByClassName("md-chip-content");
33282 return t.element(e[0])
33283 }, r.prototype.getContentElement = function() {
33284 return t.element(this.getChipContent().children()[0])
33285 }, r.prototype.getChipIndex = function() {
33286 return parseInt(this.$element.attr("index"))
33287 }, r.prototype.goOutOfEditMode = function() {
33288 if (this.isEditting) {
33289 this.isEditting = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
33290 var e = this.getChipIndex();
33291 this.getContentElement().text() ? (this.parentController.updateChipContents(e, this.getContentElement().text()), this.$mdUtil.nextTick(function() {
33292 this.parentController.selectedChip === e && this.parentController.focusChip(e)
33293 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
33295 }, r.prototype.selectNodeContents = function(t) {
33297 document.body.createTextRange ? ((n = document.body.createTextRange()).moveToElementText(t), n.select()) : e.getSelection && (r = e.getSelection(), (n = document.createRange()).selectNodeContents(t), r.removeAllRanges(), r.addRange(n))
33298 }, r.prototype.goInEditMode = function() {
33299 this.isEditting = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
33300 this.goOutOfEditMode()
33301 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
33302 }, r.prototype.chipKeyDown = function(e) {
33303 this.isEditting || e.keyCode !== this.$mdConstant.KEY_CODE.ENTER && e.keyCode !== this.$mdConstant.KEY_CODE.SPACE ? this.isEditting && e.keyCode === this.$mdConstant.KEY_CODE.ENTER && (e.preventDefault(), this.goOutOfEditMode()) : (e.preventDefault(), this.goInEditMode())
33304 }, r.prototype.chipMouseDown = function() {
33305 this.getChipIndex() == this.parentController.selectedChip && this.enableChipEdit && !this.isEditting && this.goInEditMode()
33309 function e(e, r, i, o) {
33310 var a = r.processTemplate(n);
33313 require: ["^?mdChips", "mdChip"],
33314 link: function(n, r, s, c) {
33317 d = t.element(r[0].querySelector(".md-chip-content"));
33318 e(r), l && (u.init(l), d.append(i(a)(n)), d.on("blur", function() {
33319 l.resetSelectedChip(), l.$scope.$applyAsync()
33320 })), o(function() {
33321 l && l.shouldFocusLastChip && l.focusLastChipThenInput()
33324 controller: "MdChipCtrl"
33327 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], t.module("material.components.chips").directive("mdChip", e);
33328 var n = ' <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.deleteHint}} </span>'
33334 require: "^mdChips",
33336 link: function(t, n, r, i) {
33337 n.on("click", function(e) {
33338 t.$apply(function() {
33339 i.removeChip(t.$$replacedScope.$index)
33345 }), n.find("button").attr("tabindex", "-1")
33350 e.$inject = ["$timeout"], t.module("material.components.chips").directive("mdChipRemove", e)
33357 link: function(t, n, r) {
33358 var i = t.$parent.$mdChipsCtrl,
33359 o = i.parent.$new(!1, i.parent);
33360 o.$$replacedScope = t, o.$chip = t.$chip, o.$index = t.$index, o.$mdChipsCtrl = i;
33361 var a = i.$scope.$eval(r.mdChipTransclude);
33362 n.html(a), e(n.contents())(o)
33367 e.$inject = ["$compile"], t.module("material.components.chips").directive("mdChipTransclude", e)
33370 function e(e, t, r, i, o, a, s) {
33371 this.$timeout = a, this.$mdConstant = r, this.$scope = e, this.parent = e.$parent, this.$mdUtil = s, this.$log = i, this.$element = o, this.$attrs = t, this.ngModelCtrl = null, this.userInputNgModelCtrl = null, this.autocompleteCtrl = null, this.userInputElement = null, this.items = [], this.selectedChip = -1, this.enableChipEdit = s.parseAttributeBoolean(t.mdEnableChipEdit), this.addOnBlur = s.parseAttributeBoolean(t.mdAddOnBlur), this.inputAriaLabel = "Chips input.", this.containerHint = "Chips container. Use arrow keys to select chips.", this.deleteHint = "Press delete to remove this chip.", this.deleteButtonLabel = "Remove", this.chipBuffer = "", this.useTransformChip = !1, this.useOnAdd = !1, this.useOnRemove = !1, this.wrapperId = "", this.contentIds = [], this.ariaTabIndex = null, this.chipAppendDelay = n, this.init()
33373 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil"];
33375 t.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
33377 e.wrapperId = "_md-chips-wrapper-" + e.$mdUtil.nextUid(), e.$scope.$watchCollection("$mdChipsCtrl.items", function() {
33378 e.setupInputAria(), e.setupWrapperAria()
33379 }), e.$attrs.$observe("mdChipAppendDelay", function(t) {
33380 e.chipAppendDelay = parseInt(t) || n
33382 }, e.prototype.setupInputAria = function() {
33383 var e = this.$element.find("input");
33384 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0))
33385 }, e.prototype.setupWrapperAria = function() {
33387 t = this.$element.find("md-chips-wrap");
33388 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
33389 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
33390 }), t.attr("aria-owns", this.contentIds.join(" "))) : (t.removeAttr("role"), t.removeAttr("aria-owns"))
33391 }, e.prototype.inputKeydown = function(e) {
33392 var t = this.getChipBuffer();
33393 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
33394 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
33395 if (0 !== this.getCursorPosition(e.target)) return;
33396 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
33398 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
33399 if (this.autocompleteCtrl && this.requireMatch || !t) return;
33400 if (e.preventDefault(), this.hasMaxChipsReached()) return;
33401 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
33404 }, e.prototype.getCursorPosition = function(e) {
33406 if (e.selectionStart === e.selectionEnd) return e.selectionStart
33408 if (!e.value) return 0
33410 }, e.prototype.updateChipContents = function(e, t) {
33411 e >= 0 && e < this.items.length && (this.items[e] = t, this.ngModelCtrl.$setDirty())
33412 }, e.prototype.isEditingChip = function() {
33413 return !!this.$element[0].querySelector("._md-chip-editing")
33414 }, e.prototype.isRemovable = function() {
33415 return !!this.ngModelCtrl && (this.readonly ? this.removable : !t.isDefined(this.removable) || this.removable)
33416 }, e.prototype.chipKeydown = function(e) {
33417 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
33418 case this.$mdConstant.KEY_CODE.BACKSPACE:
33419 case this.$mdConstant.KEY_CODE.DELETE:
33420 if (this.selectedChip < 0) return;
33421 if (e.preventDefault(), !this.isRemovable()) return;
33422 this.removeAndSelectAdjacentChip(this.selectedChip);
33424 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
33425 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 == this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
33427 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
33428 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
33430 case this.$mdConstant.KEY_CODE.ESCAPE:
33431 case this.$mdConstant.KEY_CODE.TAB:
33432 if (this.selectedChip < 0) return;
33433 e.preventDefault(), this.onFocus()
33435 }, e.prototype.getPlaceholder = function() {
33436 return this.items && this.items.length && ("" == this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
33437 }, e.prototype.removeAndSelectAdjacentChip = function(e) {
33439 n = t.getAdjacentChipIndex(e);
33440 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
33441 t.removeChip(e), t.$timeout(function() {
33442 t.$timeout(function() {
33443 t.selectAndFocusChipSafe(n)
33446 }, e.prototype.resetSelectedChip = function() {
33447 this.selectedChip = -1, this.ariaTabIndex = null
33448 }, e.prototype.getAdjacentChipIndex = function(e) {
33449 var t = this.items.length - 1;
33450 return 0 == t ? -1 : e == t ? e - 1 : e
33451 }, e.prototype.appendChip = function(e) {
33452 if (this.shouldFocusLastChip = !0, this.useTransformChip && this.transformChip) {
33453 var n = this.transformChip({
33456 t.isDefined(n) && (e = n)
33458 if (!(t.isObject(e) && this.items.some(function(n) {
33459 return t.equals(e, n)
33460 }) || null == e || this.items.indexOf(e) + 1)) {
33461 var r = this.items.push(e) - 1;
33462 this.ngModelCtrl.$setDirty(), this.validateModel(), this.useOnAdd && this.onAdd && this.onAdd({
33467 }, e.prototype.useTransformChipExpression = function() {
33468 this.useTransformChip = !0
33469 }, e.prototype.useOnAddExpression = function() {
33471 }, e.prototype.useOnRemoveExpression = function() {
33472 this.useOnRemove = !0
33473 }, e.prototype.useOnSelectExpression = function() {
33474 this.useOnSelect = !0
33475 }, e.prototype.getChipBuffer = function() {
33476 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
33477 return t.isString(e) ? e : ""
33478 }, e.prototype.resetChipBuffer = function() {
33479 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
33480 }, e.prototype.hasMaxChipsReached = function() {
33481 return t.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), this.maxChips > 0 && this.items.length >= this.maxChips
33482 }, e.prototype.validateModel = function() {
33483 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached())
33484 }, e.prototype.removeChip = function(e) {
33485 var t = this.items.splice(e, 1);
33486 this.ngModelCtrl.$setDirty(), this.validateModel(), t && t.length && this.useOnRemove && this.onRemove && this.onRemove({
33490 }, e.prototype.removeChipAndFocusInput = function(e) {
33491 this.removeChip(e), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
33492 }, e.prototype.selectAndFocusChipSafe = function(e) {
33493 if (!this.items.length || -1 === e) return this.focusInput();
33494 if (e >= this.items.length) {
33495 if (!this.readonly) return this.onFocus();
33498 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
33499 }, e.prototype.focusLastChipThenInput = function() {
33501 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
33503 }, e.chipAppendDelay)
33504 }, e.prototype.focusInput = function() {
33505 this.selectChip(-1), this.onFocus()
33506 }, e.prototype.selectChip = function(e) {
33507 e >= -1 && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
33508 $chip: this.items[e]
33509 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
33510 }, e.prototype.selectAndFocusChip = function(e) {
33511 this.selectChip(e), -1 != e && this.focusChip(e)
33512 }, e.prototype.focusChip = function(e) {
33513 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
33514 this.ariaTabIndex = e, t.focus()
33515 }, e.prototype.configureNgModel = function(e) {
33516 this.ngModelCtrl = e;
33518 e.$render = function() {
33519 t.items = t.ngModelCtrl.$viewValue
33521 }, e.prototype.onFocus = function() {
33522 var e = this.$element[0].querySelector("input");
33523 e && e.focus(), this.resetSelectedChip()
33524 }, e.prototype.onInputFocus = function() {
33525 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
33526 }, e.prototype.onInputBlur = function() {
33527 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
33528 }, e.prototype.configureUserInput = function(e) {
33529 this.userInputElement = e;
33530 var n = e.controller("ngModel");
33531 n != this.ngModelCtrl && (this.userInputNgModelCtrl = n);
33532 var r = this.$scope,
33534 o = function(e, n) {
33535 r.$evalAsync(t.bind(i, n, e))
33539 }).on("keydown", function(e) {
33540 o(e, i.inputKeydown)
33541 }).on("focus", function(e) {
33542 o(e, i.onInputFocus)
33543 }).on("blur", function(e) {
33544 o(e, i.onInputBlur)
33546 }, e.prototype.configureAutocomplete = function(e) {
33547 e && (this.autocompleteCtrl = e, e.registerSelectedItemWatcher(t.bind(this, function(e) {
33549 if (this.hasMaxChipsReached()) return;
33550 this.appendChip(e), this.resetChipBuffer()
33552 })), this.$element.find("input").on("focus", t.bind(this, this.onInputFocus)).on("blur", t.bind(this, this.onInputBlur)))
33553 }, e.prototype.shouldAddOnBlur = function() {
33554 this.validateModel();
33555 var e = this.getChipBuffer().trim(),
33556 t = this.ngModelCtrl.$valid,
33557 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
33558 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
33559 }, e.prototype.hasFocus = function() {
33560 return this.inputHasFocus || this.selectedChip >= 0
33561 }, e.prototype.contentIdFor = function(e) {
33562 return this.contentIds[e]
33566 function e(e, t, a, s, c, l) {
33568 chips: t.processTemplate(n),
33569 input: t.processTemplate(r),
33570 default: t.processTemplate(i),
33571 remove: t.processTemplate(o)
33574 template: function(e, t) {
33575 return t.$mdUserTemplate = e.clone(), u.chips
33577 require: ["mdChips"],
33579 controller: "MdChipsCtrl",
33580 controllerAs: "$mdChipsCtrl",
33581 bindToController: !0,
33582 compile: function(n, r) {
33585 var t = o[0].querySelector(e);
33586 return t && t.outerHTML
33589 var o = r.$mdUserTemplate;
33590 r.$mdUserTemplate = null;
33591 var d = i("md-chips>md-chip-template"),
33592 f = i(t.prefixer().buildList("md-chip-remove").map(function(e) {
33593 return "md-chips>*[" + e + "]"
33594 }).join(",")) || u.remove,
33595 h = d || u.default,
33596 p = i("md-chips>md-autocomplete") || i("md-chips>input") || u.input,
33597 m = o.find("md-chip");
33598 return o[0].querySelector("md-chip-template>*[md-chip-remove]") && s.warn("invalid placement of md-chip-remove within md-chip-template."),
33599 function(n, i, o, s) {
33600 t.initOptionalProperties(n, r), e(i);
33602 if (d && (g.enableChipEdit = !1), g.chipContentsTemplate = h, g.chipRemoveTemplate = f, g.chipInputTemplate = p, g.mdCloseIcon = l.mdClose, i.attr({
33604 }).on("focus", function() {
33606 }), r.ngModel && (g.configureNgModel(i.controller("ngModel")), o.mdTransformChip && g.useTransformChipExpression(), o.mdOnAppend && g.useOnAppendExpression(), o.mdOnAdd && g.useOnAddExpression(), o.mdOnRemove && g.useOnRemoveExpression(), o.mdOnSelect && g.useOnSelectExpression(), p != u.input && n.$watch("$mdChipsCtrl.readonly", function(e) {
33607 e || t.nextTick(function() {
33608 if (0 === p.indexOf("<md-autocomplete")) {
33609 var e = i.find("md-autocomplete");
33610 g.configureAutocomplete(e.controller("mdAutocomplete"))
33612 g.configureUserInput(i.find("input"))
33614 }), t.nextTick(function() {
33615 var e = i.find("input");
33616 e && e.toggleClass("md-input", !0)
33617 })), m.length > 0) {
33618 var v = a(m.clone())(n.$parent);
33620 i.find("md-chips-wrap").prepend(v)
33626 readonly: "=readonly",
33627 removable: "=mdRemovable",
33629 secondaryPlaceholder: "@",
33630 maxChips: "@mdMaxChips",
33631 transformChip: "&mdTransformChip",
33632 onAppend: "&mdOnAppend",
33634 onRemove: "&mdOnRemove",
33635 onSelect: "&mdOnSelect",
33636 inputAriaLabel: "@",
33637 containerHint: "@",
33639 deleteButtonLabel: "@",
33640 separatorKeys: "=?mdSeparatorKeys",
33641 requireMatch: "=?mdRequireMatch",
33642 chipAppendDelayString: "@?mdChipAppendDelay"
33646 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], t.module("material.components.chips").directive("mdChips", e);
33647 var n = ' <md-chips-wrap id="{{$mdChipsCtrl.wrapperId}}" tabindex="{{$mdChipsCtrl.readonly ? 0 : -1}}" ng-keydown="$mdChipsCtrl.chipKeydown($event)" ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus(), \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly, \'md-removable\': $mdChipsCtrl.isRemovable() }" aria-setsize="{{$mdChipsCtrl.items.length}}" class="md-chips"> <span ng-if="$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.containerHint}} </span> <md-chip ng-repeat="$chip in $mdChipsCtrl.items" index="{{$index}}" ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index, \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly}"> <div class="md-chip-content" tabindex="{{$mdChipsCtrl.ariaTabIndex == $index ? 0 : -1}}" id="{{$mdChipsCtrl.contentIdFor($index)}}" role="option" aria-selected="{{$mdChipsCtrl.selectedChip == $index}}" aria-posinset="{{$index}}" ng-click="!$mdChipsCtrl.readonly && $mdChipsCtrl.focusChip($index)" ng-focus="!$mdChipsCtrl.readonly && $mdChipsCtrl.selectChip($index)" md-chip-transclude="$mdChipsCtrl.chipContentsTemplate"></div> <div ng-if="$mdChipsCtrl.isRemovable()" class="md-chip-remove-container" tabindex="-1" md-chip-transclude="$mdChipsCtrl.chipRemoveTemplate"></div> </md-chip> <div class="md-chip-input-container" ng-if="!$mdChipsCtrl.readonly && $mdChipsCtrl.ngModelCtrl"> <div md-chip-transclude="$mdChipsCtrl.chipInputTemplate"></div> </div> </md-chips-wrap>',
33648 r = ' <input class="md-input" tabindex="0" aria-label="{{$mdChipsCtrl.inputAriaLabel}}" placeholder="{{$mdChipsCtrl.getPlaceholder()}}" ng-model="$mdChipsCtrl.chipBuffer" ng-focus="$mdChipsCtrl.onInputFocus()" ng-blur="$mdChipsCtrl.onInputBlur()" ng-keydown="$mdChipsCtrl.inputKeydown($event)">',
33649 i = " <span>{{$chip}}</span>",
33650 o = ' <button class="md-chip-remove" ng-if="$mdChipsCtrl.isRemovable()" ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index)" type="button" tabindex="-1"> <md-icon md-svg-src="{{ $mdChipsCtrl.mdCloseIcon }}"></md-icon> <span class="md-visually-hidden"> {{$mdChipsCtrl.deleteButtonLabel}} </span> </button>'
33654 this.selectedItem = null, this.searchText = ""
33656 t.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.queryContact = function(e) {
33657 return this.contactQuery({
33660 }, e.prototype.itemName = function(e) {
33661 return e[this.contactName]
33667 template: function(e, t) {
33671 controller: "MdContactChipsCtrl",
33672 controllerAs: "$mdContactChipsCtrl",
33673 bindToController: !0,
33674 compile: function(n, r) {
33675 return function(n, i, o, a) {
33677 t.initOptionalProperties(n, r), e(i), i.attr("tabindex", "-1"), o.$observe("mdChipAppendDelay", function(e) {
33678 s.chipAppendDelay = e
33683 contactQuery: "&mdContacts",
33685 secondaryPlaceholder: "@",
33686 contactName: "@mdContactName",
33687 contactImage: "@mdContactImage",
33688 contactEmail: "@mdContactEmail",
33689 contacts: "=ngModel",
33690 requireMatch: "=?mdRequireMatch",
33691 minLength: "=?mdMinLength",
33692 highlightFlags: "@?mdHighlightFlags",
33693 chipAppendDelay: "@?mdChipAppendDelay"
33697 e.$inject = ["$mdTheming", "$mdUtil"], t.module("material.components.chips").directive("mdContactChips", e);
33698 var n = ' <md-chips class="md-contact-chips" ng-model="$mdContactChipsCtrl.contacts" md-require-match="$mdContactChipsCtrl.requireMatch" md-chip-append-delay="{{$mdContactChipsCtrl.chipAppendDelay}}" md-autocomplete-snap> <md-autocomplete md-menu-class="md-contact-chips-suggestions" md-selected-item="$mdContactChipsCtrl.selectedItem" md-search-text="$mdContactChipsCtrl.searchText" md-items="item in $mdContactChipsCtrl.queryContact($mdContactChipsCtrl.searchText)" md-item-text="$mdContactChipsCtrl.itemName(item)" md-no-cache="true" md-min-length="$mdContactChipsCtrl.minLength" md-autoselect placeholder="{{$mdContactChipsCtrl.contacts.length == 0 ? $mdContactChipsCtrl.placeholder : $mdContactChipsCtrl.secondaryPlaceholder}}"> <div class="md-contact-suggestion"> <img ng-src="{{item[$mdContactChipsCtrl.contactImage]}}" alt="{{item[$mdContactChipsCtrl.contactName]}}" ng-if="item[$mdContactChipsCtrl.contactImage]" /> <span class="md-contact-name" md-highlight-text="$mdContactChipsCtrl.searchText" md-highlight-flags="{{$mdContactChipsCtrl.highlightFlags}}"> {{item[$mdContactChipsCtrl.contactName]}} </span> <span class="md-contact-email" >{{item[$mdContactChipsCtrl.contactEmail]}}</span> </div> </md-autocomplete> <md-chip-template> <div class="md-contact-avatar"> <img ng-src="{{$chip[$mdContactChipsCtrl.contactImage]}}" alt="{{$chip[$mdContactChipsCtrl.contactName]}}" ng-if="$chip[$mdContactChipsCtrl.contactImage]" /> </div> <div class="md-contact-name"> {{$chip[$mdContactChipsCtrl.contactName]}} </div> </md-chip-template> </md-chips>'
33701 function e(e, n, i, o, a, s, c, l, u) {
33702 s(e), this.$element = e, this.$scope = n, this.dateUtil = i, this.$mdUtil = o, this.keyCode = a.KEY_CODE, this.$$rAF = c, this.$mdDateLocale = u, this.today = this.dateUtil.createDateAtMidnight(), this.ngModelCtrl = null, this.SELECTED_DATE_CLASS = "md-calendar-selected-date", this.TODAY_CLASS = "md-calendar-date-today", this.FOCUSED_DATE_CLASS = "md-focus", this.id = r++, this.displayDate = null, this.selectedDate = null, this.firstRenderableDate = null, this.lastRenderableDate = null, this.isInitialized = !1, this.width = 0, this.scrollbarWidth = 0, l.tabindex || e.attr("tabindex", "-1");
33703 var d, f = t.bind(this, this.handleKeyEvent);
33704 (d = e.parent().hasClass("md-datepicker-calendar") ? t.element(document.body) : e).on("keydown", f), n.$on("$destroy", function() {
33705 d.off("keydown", f)
33706 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
33708 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendar", function() {
33710 template: function(e, t) {
33711 return '<div ng-switch="calendarCtrl.currentView" ' + (t.hasOwnProperty("ngIf") ? "" : 'ng-if="calendarCtrl.isInitialized"') + '><md-calendar-year ng-switch-when="year"></md-calendar-year><md-calendar-month ng-switch-default></md-calendar-month></div>'
33714 minDate: "=mdMinDate",
33715 maxDate: "=mdMaxDate",
33716 dateFilter: "=mdDateFilter",
33717 _currentView: "@mdCurrentView"
33719 require: ["ngModel", "mdCalendar"],
33721 controllerAs: "calendarCtrl",
33722 bindToController: !0,
33723 link: function(e, t, n, r) {
33725 r[1].configureNgModel(i)
33731 e.prototype.$onInit = function() {
33732 this.currentView = this._currentView || "month";
33733 var e = this.$mdDateLocale;
33734 this.minDate && this.minDate > e.firstRenderableDate ? this.firstRenderableDate = this.minDate : this.firstRenderableDate = e.firstRenderableDate, this.maxDate && this.maxDate < e.lastRenderableDate ? this.lastRenderableDate = this.maxDate : this.lastRenderableDate = e.lastRenderableDate
33735 }, e.prototype.configureNgModel = function(e) {
33737 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
33738 t.isInitialized = !0
33739 }), e.$render = function() {
33740 var e = this.$viewValue;
33741 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
33743 }, e.prototype.setNgModelValue = function(e) {
33744 var t = this.dateUtil.createDateAtMidnight(e);
33745 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
33746 }, e.prototype.setCurrentView = function(e, n) {
33748 r.$mdUtil.nextTick(function() {
33749 r.currentView = e, n && (r.displayDate = t.isDate(n) ? n : new Date(n))
33751 }, e.prototype.focus = function(e) {
33752 if (this.dateUtil.isValidDate(e)) {
33753 var t = this.$element[0].querySelector(".md-focus");
33754 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
33755 var n = this.getDateId(e, this.currentView),
33756 r = document.getElementById(n);
33757 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
33759 var i = this.$element[0].querySelector("[ng-switch]");
33762 }, e.prototype.getActionFromKeyEvent = function(e) {
33763 var t = this.keyCode;
33767 case t.RIGHT_ARROW:
33768 return "move-right";
33770 return "move-left";
33772 return e.metaKey ? "move-page-down" : "move-row-down";
33774 return e.metaKey ? "move-page-up" : "move-row-up";
33776 return "move-page-down";
33778 return "move-page-up";
33786 }, e.prototype.handleKeyEvent = function(e) {
33788 this.$scope.$apply(function() {
33789 if (e.which == t.keyCode.ESCAPE || e.which == t.keyCode.TAB) return t.$scope.$emit("md-calendar-close"), void(e.which == t.keyCode.TAB && e.preventDefault());
33790 var n = t.getActionFromKeyEvent(e);
33791 n && (e.preventDefault(), e.stopPropagation(), t.$scope.$broadcast("md-calendar-parent-action", n))
33793 }, e.prototype.hideVerticalScrollbar = function(e) {
33795 var t = r.width || n,
33796 i = r.scrollbarWidth,
33797 a = e.calendarScroller;
33798 o.style.width = t + "px", a.style.width = t + i + "px", a.style.paddingRight = i + "px"
33802 o = i.querySelector(".md-calendar-scroll-mask");
33803 r.width > 0 ? t() : r.$$rAF(function() {
33804 var n = e.calendarScroller;
33805 r.scrollbarWidth = n.offsetWidth - n.clientWidth, r.width = i.querySelector("table").offsetWidth, t()
33807 }, e.prototype.getDateId = function(e, t) {
33808 if (!t) throw new Error("A namespace for the date id has to be specified.");
33809 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
33810 }, e.prototype.updateVirtualRepeat = function() {
33811 var e = this.$scope,
33812 t = e.$on("$md-resize-enable", function() {
33813 e.$$phase || e.$apply(), t()
33818 function e(e, t, n, r, i, o) {
33819 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.dateLocale = o, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1;
33821 this.cellClickHandler = function() {
33822 var e = i.getTimestampFromNode(this);
33823 a.$scope.$apply(function() {
33824 a.calendarCtrl.setNgModelValue(e)
33826 }, this.headerClickHandler = function() {
33827 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
33830 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonth", function() {
33832 template: '<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="' + (r - n) + '"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-month-body role="rowgroup" md-virtual-repeat="i in monthCtrl.items" md-month-offset="$index" class="md-calendar-month" md-start-index="monthCtrl.getSelectedMonthIndex()" md-item-size="' + n + '"><tr aria-hidden="true" md-force-height="\'' + n + "px'\"></tr></tbody></table></md-virtual-repeat-container></div>",
33833 require: ["^^mdCalendar", "mdCalendarMonth"],
33835 controllerAs: "monthCtrl",
33836 bindToController: !0,
33837 link: function(e, t, n, r) {
33845 e.prototype.initialize = function(e) {
33847 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
33848 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
33849 }, e.prototype.getSelectedMonthIndex = function() {
33850 var e = this.calendarCtrl;
33851 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
33852 }, e.prototype.changeSelectedDate = function(e) {
33853 var t = this.calendarCtrl,
33854 n = t.selectedDate;
33855 t.selectedDate = e, this.changeDisplayDate(e).then(function() {
33856 var r = t.SELECTED_DATE_CLASS;
33858 var i = document.getElementById(t.getDateId(n, "month"));
33859 i && (i.classList.remove(r), i.setAttribute("aria-selected", "false"))
33862 var o = document.getElementById(t.getDateId(e, "month"));
33863 o && (o.classList.add(r), o.setAttribute("aria-selected", "true"))
33866 }, e.prototype.changeDisplayDate = function(e) {
33867 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
33868 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
33869 this.isMonthTransitionInProgress = !0;
33870 var t = this.animateDateChange(e);
33871 this.calendarCtrl.displayDate = e;
33873 return t.then(function() {
33874 n.isMonthTransitionInProgress = !1
33876 }, e.prototype.animateDateChange = function(e) {
33877 if (this.dateUtil.isValidDate(e)) {
33878 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
33879 this.calendarScroller.scrollTop = t * n
33881 return this.$q.when()
33882 }, e.prototype.buildWeekHeader = function() {
33883 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
33884 var i = document.createElement("th");
33885 i.textContent = t[(r + e) % 7], n.appendChild(i)
33887 this.$element.find("thead").append(n)
33888 }, e.prototype.attachScopeListeners = function() {
33890 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
33891 e.changeSelectedDate(n)
33892 }), e.$scope.$on("md-calendar-parent-action", t.bind(this, this.handleKeyEvent))
33893 }, e.prototype.handleKeyEvent = function(e, t) {
33894 var n = this.calendarCtrl,
33896 if ("select" === t) n.setNgModelValue(r);
33902 i = o.incrementDays(r, 1);
33905 i = o.incrementDays(r, -1);
33907 case "move-page-down":
33908 i = o.incrementMonths(r, 1);
33910 case "move-page-up":
33911 i = o.incrementMonths(r, -1);
33913 case "move-row-down":
33914 i = o.incrementDays(r, 7);
33916 case "move-row-up":
33917 i = o.incrementDays(r, -7);
33920 i = o.getFirstDateOfMonth(r);
33923 i = o.getLastDateOfMonth(r)
33925 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
33933 var i = e('<md-icon md-svg-src="' + r.mdTabsArrow + '"></md-icon>')({})[0];
33935 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
33937 offset: "=mdMonthOffset"
33940 controllerAs: "mdMonthBodyCtrl",
33941 bindToController: !0,
33942 link: function(e, n, r, o) {
33946 c.calendarCtrl = a, c.monthCtrl = s, c.arrowIcon = i.cloneNode(!0), e.$watch(function() {
33949 t.isNumber(e) && c.generateContent()
33955 function n(e, t, n) {
33956 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
33958 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
33959 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
33960 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
33961 }, n.prototype.buildDateCell = function(e) {
33962 var t = this.monthCtrl,
33963 n = this.calendarCtrl,
33964 r = document.createElement("td");
33965 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
33966 r.setAttribute("tabindex", "-1"), r.setAttribute("aria-label", this.dateLocale.longDateFormatter(e)), r.id = n.getDateId(e, "month"), r.setAttribute("data-timestamp", e.getTime()), this.dateUtil.isSameDay(e, n.today) && r.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameDay(e, n.selectedDate) && (r.classList.add(n.SELECTED_DATE_CLASS), r.setAttribute("aria-selected", "true"));
33967 var i = this.dateLocale.dates[e.getDate()];
33968 if (this.isDateEnabled(e)) {
33969 var o = document.createElement("span");
33970 o.classList.add("md-calendar-date-selection-indicator"), o.textContent = i, r.appendChild(o), r.addEventListener("click", t.cellClickHandler), n.displayDate && this.dateUtil.isSameDay(e, n.displayDate) && (this.focusAfterAppend = r)
33971 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
33974 }, n.prototype.isDateEnabled = function(e) {
33975 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!t.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
33976 }, n.prototype.buildDateRow = function(e) {
33977 var t = document.createElement("tr");
33978 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
33979 }, n.prototype.buildCalendarForMonth = function(e) {
33980 var t = this.dateUtil.isValidDate(e) ? e : new Date,
33981 n = this.dateUtil.getFirstDateOfMonth(t),
33982 r = this.getLocaleDay_(n),
33983 i = this.dateUtil.getNumberOfDaysInMonth(t),
33984 o = document.createDocumentFragment(),
33986 s = this.buildDateRow(a);
33988 var c = this.offset === this.monthCtrl.items.length - 1,
33990 u = document.createElement("td"),
33991 d = document.createElement("span");
33992 if (d.textContent = this.dateLocale.monthHeaderFormatter(t), u.appendChild(d), u.classList.add("md-calendar-month-label"), this.calendarCtrl.maxDate && n > this.calendarCtrl.maxDate ? u.classList.add("md-calendar-month-label-disabled") : (u.addEventListener("click", this.monthCtrl.headerClickHandler), u.setAttribute("data-timestamp", n.getTime()), u.setAttribute("aria-label", this.dateLocale.monthFormatter(t)), u.appendChild(this.arrowIcon.cloneNode(!0))), r <= 2) {
33993 u.setAttribute("colspan", "7");
33994 var f = this.buildDateRow();
33995 if (f.appendChild(u), o.insertBefore(f, s), c) return o
33996 } else l = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
33997 for (var h = l; h < r; h++) s.appendChild(this.buildDateCell());
33998 for (var p = r, m = n, g = 1; g <= i; g++) {
34001 p = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
34004 var v = this.buildDateCell(m);
34005 s.appendChild(v), p++
34007 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
34008 for (; o.childNodes.length < 6;) {
34009 for (var b = this.buildDateRow(), y = 0; y < 7; y++) b.appendChild(this.buildDateCell());
34013 }, n.prototype.getLocaleDay_ = function(e) {
34014 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
34018 function e(e, t, n, r, i) {
34019 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1;
34021 this.cellClickHandler = function() {
34022 o.calendarCtrl.setCurrentView("month", i.getTimestampFromNode(this))
34025 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil"], t.module("material.components.datepicker").directive("mdCalendarYear", function() {
34027 template: '<div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-year-body role="rowgroup" md-virtual-repeat="i in yearCtrl.items" md-year-offset="$index" class="md-calendar-year" md-start-index="yearCtrl.getFocusedYearIndex()" md-item-size="' + n + '"><tr aria-hidden="true" md-force-height="\'' + n + "px'\"></tr></tbody></table></md-virtual-repeat-container></div>",
34028 require: ["^^mdCalendar", "mdCalendarYear"],
34030 controllerAs: "yearCtrl",
34031 bindToController: !0,
34032 link: function(e, t, n, r) {
34039 e.prototype.initialize = function(e) {
34041 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
34042 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
34043 }, e.prototype.getFocusedYearIndex = function() {
34044 var e = this.calendarCtrl;
34045 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
34046 }, e.prototype.changeDate = function(e) {
34047 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
34048 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
34050 n = this.animateDateChange(e);
34051 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
34052 t.isMonthTransitionInProgress = !1
34055 }, e.prototype.animateDateChange = function(e) {
34056 if (this.dateUtil.isValidDate(e)) {
34057 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
34058 this.calendarScroller.scrollTop = t * n
34060 return this.$q.when()
34061 }, e.prototype.handleKeyEvent = function(e, t) {
34062 var n = this.calendarCtrl,
34064 if ("select" === t) this.changeDate(r).then(function() {
34065 n.setCurrentView("month", r), n.focus(r)
34072 i = o.incrementMonths(r, 1);
34075 i = o.incrementMonths(r, -1);
34077 case "move-row-down":
34078 i = o.incrementMonths(r, 6);
34080 case "move-row-up":
34081 i = o.incrementMonths(r, -6)
34084 var a = n.minDate ? o.getFirstDateOfMonth(n.minDate) : null,
34085 s = n.maxDate ? o.getFirstDateOfMonth(n.maxDate) : null;
34086 i = o.getFirstDateOfMonth(this.dateUtil.clampDate(i, a, s)), this.changeDate(i).then(function() {
34091 }, e.prototype.attachScopeListeners = function() {
34093 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
34095 }), e.$scope.$on("md-calendar-parent-action", t.bind(e, e.handleKeyEvent))
34099 function e(e, t, n) {
34100 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
34102 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
34104 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
34106 offset: "=mdYearOffset"
34109 controllerAs: "mdYearBodyCtrl",
34110 bindToController: !0,
34111 link: function(e, n, r, i) {
34115 s.calendarCtrl = o, s.yearCtrl = a, e.$watch(function() {
34118 t.isNumber(e) && s.generateContent()
34122 }), e.prototype.generateContent = function() {
34123 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
34124 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
34125 }, e.prototype.buildMonthCell = function(e, t) {
34126 var n = this.calendarCtrl,
34128 i = this.buildBlankCell(),
34129 o = new Date(e, t, 1);
34130 i.setAttribute("aria-label", this.dateLocale.monthFormatter(o)), i.id = n.getDateId(o, "year"), i.setAttribute("data-timestamp", o.getTime()), this.dateUtil.isSameMonthAndYear(o, n.today) && i.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameMonthAndYear(o, n.selectedDate) && (i.classList.add(n.SELECTED_DATE_CLASS), i.setAttribute("aria-selected", "true"));
34131 var a = this.dateLocale.shortMonths[t];
34132 if (this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate)) {
34133 var s = document.createElement("span");
34134 s.classList.add("md-calendar-date-selection-indicator"), s.textContent = a, i.appendChild(s), i.addEventListener("click", r.cellClickHandler), n.displayDate && this.dateUtil.isSameMonthAndYear(o, n.displayDate) && (this.focusAfterAppend = i)
34135 } else i.classList.add("md-calendar-date-disabled"), i.textContent = a;
34137 }, e.prototype.buildBlankCell = function() {
34138 var e = document.createElement("td");
34139 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
34140 }, e.prototype.buildCalendarForYear = function(e) {
34141 var t, n = e.getFullYear(),
34142 r = document.createDocumentFragment(),
34143 i = document.createElement("tr"),
34144 o = document.createElement("td");
34145 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
34147 var a = document.createElement("tr");
34148 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
34149 return r.appendChild(a), r
34151 }(), t.module("material.components.datepicker").config(["$provide", function(e) {
34153 this.months = null, this.shortMonths = null, this.days = null, this.shortDays = null, this.dates = null, this.firstDayOfWeek = 0, this.formatDate = null, this.parseDate = null, this.monthHeaderFormatter = null, this.weekNumberFormatter = null, this.longDateFormatter = null, this.msgCalendar = "", this.msgOpenCalendar = ""
34155 t.prototype.$get = function(e, t) {
34156 for (var n = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
34157 return e.substring(0, 1)
34158 }), r = Array(32), i = 1; i <= 31; i++) r[i] = i;
34159 var o = new Date(1880, 0, 1),
34160 a = new Date(o.getFullYear() + 250, 0, 1),
34162 months: this.months || e.DATETIME_FORMATS.MONTH,
34163 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
34164 days: this.days || e.DATETIME_FORMATS.DAY,
34165 shortDays: this.shortDays || n,
34166 dates: this.dates || r,
34167 firstDayOfWeek: this.firstDayOfWeek || 0,
34168 formatDate: this.formatDate || function(e, n) {
34170 var r = e.toLocaleTimeString(),
34172 return 0 !== e.getHours() || -1 === r.indexOf("11:") && -1 === r.indexOf("23:") || (i = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 1, 0, 0)), t("date")(i, "M/d/yyyy", n)
34174 parseDate: this.parseDate || function(e) {
34177 isDateComplete: this.isDateComplete || function(e) {
34178 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
34180 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
34181 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
34183 monthFormatter: this.monthFormatter || function(e) {
34184 return s.months[e.getMonth()] + " " + e.getFullYear()
34186 weekNumberFormatter: this.weekNumberFormatter || function(e) {
34189 longDateFormatter: this.longDateFormatter || function(e) {
34190 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
34192 msgCalendar: this.msgCalendar || "Calendar",
34193 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
34194 firstRenderableDate: this.firstRenderableDate || o,
34195 lastRenderableDate: this.lastRenderableDate || a
34198 }, t.prototype.$get.$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
34199 }]), t.module("material.components.datepicker").factory("$$mdDateUtil", function() {
34201 return new Date(e.getFullYear(), e.getMonth(), 1)
34205 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
34209 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
34213 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
34217 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
34221 var r = new Date(e.getFullYear(), e.getMonth() + t, 1),
34223 return i < e.getDate() ? r.setDate(i) : r.setDate(e.getDate()), r
34227 return e && e.getTime && !isNaN(e.getTime())
34231 s(e) && e.setHours(0, 0, 0, 0)
34236 return n = t.isUndefined(e) ? new Date : new Date(e), c(n), n
34239 getFirstDateOfMonth: e,
34240 getNumberOfDaysInMonth: n,
34241 getDateInNextMonth: r,
34242 getDateInPreviousMonth: i,
34243 isInNextMonth: function(e, t) {
34246 isInPreviousMonth: function(e, t) {
34249 getDateMidpoint: function(e, t) {
34250 return l((e.getTime() + t.getTime()) / 2)
34252 isSameMonthAndYear: o,
34253 getWeekOfMonth: function(t) {
34255 return Math.floor((n.getDay() + t.getDate() - 1) / 7)
34257 incrementDays: function(e, t) {
34258 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
34260 incrementMonths: a,
34261 getLastDateOfMonth: function(e) {
34262 return new Date(e.getFullYear(), e.getMonth(), n(e))
34264 isSameDay: function(e, t) {
34265 return e.getDate() == t.getDate() && o(e, t)
34267 getMonthDistance: function(e, t) {
34268 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
34271 setDateTimeToMidnight: c,
34272 createDateAtMidnight: l,
34273 isDateWithinRange: function(e, t, n) {
34275 i = s(t) ? l(t) : null,
34276 o = s(n) ? l(n) : null;
34277 return (!i || i <= r) && (!o || o >= r)
34279 incrementYears: function(e, t) {
34280 return a(e, 12 * t)
34282 getYearDistance: function(e, t) {
34283 return t.getFullYear() - e.getFullYear()
34285 clampDate: function(e, t, n) {
34287 return t && e < t && (r = new Date(t.getTime())), n && e > n && (r = new Date(n.getTime())), r
34289 getTimestampFromNode: function(e) {
34290 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
34292 isMonthWithinRange: function(e, t, n) {
34293 var r = e.getMonth(),
34294 i = e.getFullYear();
34295 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
34300 function n(e, n, i, c) {
34302 template: function(t, n) {
34303 var r = n.mdHideIcons,
34304 i = n.ariaLabel || n.mdPlaceholder,
34305 o = "all" === r || "calendar" === r ? "" : '<md-button class="md-datepicker-button md-icon-button" type="button" tabindex="-1" aria-hidden="true" ng-click="ctrl.openCalendarPane($event)"><md-icon class="md-datepicker-calendar-icon" aria-label="md-calendar" md-svg-src="' + e.mdCalendar + '"></md-icon></md-button>',
34307 return "all" !== r && "triangle" !== r && (a = '<md-button type="button" md-no-ink class="md-datepicker-triangle-button md-icon-button" ng-click="ctrl.openCalendarPane($event)" aria-label="{{::ctrl.locale.msgOpenCalendar}}"><div class="md-datepicker-expand-triangle"></div></md-button>', t.addClass(s)), o + '<div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input ' + (i ? 'aria-label="' + i + '" ' : "") + 'class="md-datepicker-input" aria-haspopup="true" aria-expanded="{{ctrl.isCalendarOpen}}" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"> ' + a + '</div><div class="md-datepicker-calendar-pane md-whiteframe-z1" id="{{::ctrl.calendarPaneId}}"><div class="md-datepicker-input-mask"><div class="md-datepicker-input-mask-opaque"></div></div><div class="md-datepicker-calendar"><md-calendar role="dialog" aria-label="{{::ctrl.locale.msgCalendar}}" md-current-view="{{::ctrl.currentView}}"md-min-date="ctrl.minDate"md-max-date="ctrl.maxDate"md-date-filter="ctrl.dateFilter"ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen"></md-calendar></div></div>'
34309 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
34311 minDate: "=mdMinDate",
34312 maxDate: "=mdMaxDate",
34313 placeholder: "@mdPlaceholder",
34314 currentView: "@mdCurrentView",
34315 dateFilter: "=mdDateFilter",
34316 isOpen: "=?mdIsOpen",
34317 debounceInterval: "=mdDebounceInterval",
34318 dateLocale: "=mdDateLocale"
34321 controllerAs: "ctrl",
34322 bindToController: !0,
34323 link: function(e, r, s, l) {
34328 p = n.parseAttributeBoolean(s.mdNoAsterisk);
34329 if (d.configureNgModel(u, f, c), f) {
34330 var m = r[0].querySelector(".md-errors-spacer");
34331 m && r.after(t.element("<div>").append(m)), f.setHasPlaceholder(s.mdPlaceholder), f.input = r, f.element.addClass(o).toggleClass(a, "calendar" !== s.mdHideIcons && "all" !== s.mdHideIcons), f.label ? p || s.$observe("required", function(e) {
34332 f.label.toggleClass("md-required", !!e)
34333 }) : i.expect(r, "aria-label", s.mdPlaceholder), e.$watch(f.isErrorGetter || function() {
34334 return u.$invalid && (u.$touched || h && h.$submitted)
34336 } else if (h) var g = e.$watch(function() {
34337 return h.$submitted
34339 e && (d.updateErrorState(), g())
34345 function r(n, r, i, o, a, s, l, u, d, f, h) {
34346 this.$window = o, this.dateUtil = d, this.$mdConstant = a, this.$mdUtil = l, this.$$rAF = f, this.$mdDateLocale = u, this.documentElement = t.element(document.documentElement), this.ngModelCtrl = null, this.inputElement = r[0].querySelector("input"), this.ngInputElement = t.element(this.inputElement), this.inputContainer = r[0].querySelector(".md-datepicker-input-container"), this.calendarPane = r[0].querySelector(".md-datepicker-calendar-pane"), this.calendarButton = r[0].querySelector(".md-datepicker-button"), this.inputMask = t.element(r[0].querySelector(".md-datepicker-input-mask-opaque")), this.$element = r, this.$attrs = i, this.$scope = n, this.date = null, this.isFocused = !1, this.isDisabled, this.setDisabled(r[0].disabled || t.isString(i.disabled)), this.isCalendarOpen = !1, this.openOnFocus = i.hasOwnProperty("mdOpenOnFocus"), this.mdInputContainer = null, this.calendarPaneOpenedFrom = null, this.calendarPaneId = "md-date-pane-" + l.nextUid(), this.bodyClickHandler = t.bind(this, this.handleBodyClick), this.windowEventName = c.test(navigator.userAgent || navigator.vendor || e.opera) ? "orientationchange" : "resize", this.windowEventHandler = l.debounce(t.bind(this, this.closeCalendarPane), 100), this.windowBlurHandler = t.bind(this, this.handleWindowBlur), this.ngDateFilter = h("date"), this.leftMargin = 20, this.topMargin = null, i.tabindex ? (this.ngInputElement.attr("tabindex", i.tabindex), i.$set("tabindex", null)) : i.$set("tabindex", "-1"), i.$set("aria-owns", this.calendarPaneId), s(r), s(t.element(this.calendarPane));
34348 n.$on("$destroy", function() {
34349 p.detachCalendarPane()
34350 }), i.mdIsOpen && n.$watch("ctrl.isOpen", function(e) {
34351 e ? p.openCalendarPane({
34352 target: p.inputElement
34353 }) : p.closeCalendarPane()
34354 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
34356 r.$inject = ["$scope", "$element", "$attrs", "$window", "$mdConstant", "$mdTheming", "$mdUtil", "$mdDateLocale", "$$mdDateUtil", "$$rAF", "$filter"], n.$inject = ["$$mdSvgRegistry", "$mdUtil", "$mdAria", "inputDirective"], t.module("material.components.datepicker").directive("mdDatepicker", n);
34357 var i = "md-datepicker-open",
34358 o = "_md-datepicker-floating-label",
34359 a = "_md-datepicker-has-calendar-icon",
34360 s = "_md-datepicker-has-triangle-icon",
34361 c = /ipad|iphone|ipod|android/i;
34362 r.prototype.$onInit = function() {
34363 this.locale = this.dateLocale ? t.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
34364 }, r.prototype.configureNgModel = function(e, n, r) {
34365 this.ngModelCtrl = e, this.mdInputContainer = n, this.$attrs.$set("type", "date"), r[0].link.pre(this.$scope, {
34369 }, this.$attrs, [e]);
34371 i.ngModelCtrl.$formatters.push(function(e) {
34372 var n = t.isDefined(e) ? Date.parse(e) : null;
34373 if (!isNaN(n) && t.isNumber(n) && (e = new Date(n)), e && !(e instanceof Date)) throw Error("The ng-model for md-datepicker must be a Date instance or a value that can be parsed into a date. Currently the model is of type: " + typeof e);
34374 return i.onExternalChange(e), e
34375 }), e.$viewChangeListeners.unshift(t.bind(this, this.updateErrorState));
34376 var o = i.$mdUtil.getModelOption(e, "updateOn");
34377 o && this.ngInputElement.on(o, t.bind(this.$element, this.$element.triggerHandler, o))
34378 }, r.prototype.attachChangeListeners = function() {
34380 e.$scope.$on("md-calendar-change", function(t, n) {
34381 e.setModelValue(n), e.onExternalChange(n), e.closeCalendarPane()
34382 }), e.ngInputElement.on("input", t.bind(e, e.resizeInputElement));
34383 var n = t.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
34384 e.ngInputElement.on("input", e.$mdUtil.debounce(e.handleInputEvent, n, e))
34385 }, r.prototype.attachInteractionListeners = function() {
34388 r = this.$mdConstant.KEY_CODE;
34389 e.ngInputElement.on("keydown", function(t) {
34390 t.altKey && t.keyCode == r.DOWN_ARROW && (e.openCalendarPane(t), n.$digest())
34391 }), e.openOnFocus && (e.ngInputElement.on("focus", t.bind(e, e.openCalendarPane)), t.element(e.$window).on("blur", e.windowBlurHandler), n.$on("$destroy", function() {
34392 t.element(e.$window).off("blur", e.windowBlurHandler)
34393 })), n.$on("md-calendar-close", function() {
34394 e.closeCalendarPane()
34396 }, r.prototype.installPropertyInterceptors = function() {
34398 if (this.$attrs.ngDisabled) {
34399 var t = this.$scope.$parent;
34400 t && t.$watch(this.$attrs.ngDisabled, function(t) {
34404 Object.defineProperty(this, "placeholder", {
34406 return e.inputElement.placeholder
34409 e.inputElement.placeholder = t || ""
34412 }, r.prototype.setDisabled = function(e) {
34413 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
34414 }, r.prototype.updateErrorState = function(e) {
34415 var n = e || this.date;
34416 if (this.clearErrorState(), this.dateUtil.isValidDate(n)) {
34417 if (n = this.dateUtil.createDateAtMidnight(n), this.dateUtil.isValidDate(this.minDate)) {
34418 var r = this.dateUtil.createDateAtMidnight(this.minDate);
34419 this.ngModelCtrl.$setValidity("mindate", n >= r)
34421 if (this.dateUtil.isValidDate(this.maxDate)) {
34422 var i = this.dateUtil.createDateAtMidnight(this.maxDate);
34423 this.ngModelCtrl.$setValidity("maxdate", n <= i)
34425 t.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(n))
34426 } else this.ngModelCtrl.$setValidity("valid", null == n);
34427 t.element(this.inputContainer).toggleClass("md-datepicker-invalid", !this.ngModelCtrl.$valid)
34428 }, r.prototype.clearErrorState = function() {
34429 this.inputContainer.classList.remove("md-datepicker-invalid"), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
34430 this.ngModelCtrl.$setValidity(e, !0)
34432 }, r.prototype.resizeInputElement = function() {
34433 this.inputElement.size = this.inputElement.value.length + 3
34434 }, r.prototype.handleInputEvent = function() {
34435 var e = this.inputElement.value,
34436 t = e ? this.locale.parseDate(e) : null;
34437 this.dateUtil.setDateTimeToMidnight(t), ("" == e || this.dateUtil.isValidDate(t) && this.locale.isDateComplete(e) && this.isDateEnabled(t)) && (this.setModelValue(t), this.date = t), this.updateErrorState(t)
34438 }, r.prototype.isDateEnabled = function(e) {
34439 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!t.isFunction(this.dateFilter) || this.dateFilter(e))
34440 }, r.prototype.attachCalendarPane = function() {
34441 var e = this.calendarPane,
34443 e.style.transform = "", this.$element.addClass(i), this.mdInputContainer && this.mdInputContainer.element.addClass(i), t.element(n).addClass("md-datepicker-is-showing");
34444 var r = this.inputContainer.getBoundingClientRect(),
34445 o = n.getBoundingClientRect();
34446 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
34447 var a = r.top - o.top - this.topMargin,
34448 s = r.left - o.left - this.leftMargin,
34449 c = o.top < 0 && 0 == document.body.scrollTop ? -o.top : document.body.scrollTop,
34450 l = o.left < 0 && 0 == document.body.scrollLeft ? -o.left : document.body.scrollLeft,
34451 u = c + this.$window.innerHeight,
34452 d = l + this.$window.innerWidth;
34453 if (this.inputMask.css({
34454 position: "absolute",
34455 left: this.leftMargin + "px",
34456 top: this.topMargin + "px",
34457 width: r.width - 1 + "px",
34458 height: r.height - 2 + "px"
34460 if (d - 360 > 0) s = d - 360;
34463 var f = this.$window.innerWidth / 360;
34464 e.style.transform = "scale(" + f + ")"
34466 e.classList.add("md-datepicker-pos-adjusted")
34468 a + 368 > u && u - 368 > c && (a = u - 368, e.classList.add("md-datepicker-pos-adjusted")), e.style.left = s + "px", e.style.top = a + "px", document.body.appendChild(e), this.$$rAF(function() {
34469 e.classList.add("md-pane-open")
34471 }, r.prototype.detachCalendarPane = function() {
34472 this.$element.removeClass(i), this.mdInputContainer && this.mdInputContainer.element.removeClass(i), t.element(document.body).removeClass("md-datepicker-is-showing"), this.calendarPane.classList.remove("md-pane-open"), this.calendarPane.classList.remove("md-datepicker-pos-adjusted"), this.isCalendarOpen && this.$mdUtil.enableScrolling(), this.calendarPane.parentNode && this.calendarPane.parentNode.removeChild(this.calendarPane)
34473 }, r.prototype.openCalendarPane = function(t) {
34474 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
34475 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = t.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
34477 this.$mdUtil.nextTick(function() {
34478 n.documentElement.on("click touchstart", n.bodyClickHandler)
34479 }, !1), e.addEventListener(this.windowEventName, this.windowEventHandler)
34481 }, r.prototype.closeCalendarPane = function() {
34483 n.isCalendarOpen = n.isOpen = !1
34485 if (this.isCalendarOpen) {
34487 n.detachCalendarPane(), n.ngModelCtrl.$setTouched(), n.evalAttr("ngBlur"), n.documentElement.off("click touchstart", n.bodyClickHandler), e.removeEventListener(n.windowEventName, n.windowEventHandler), n.calendarPaneOpenedFrom.focus(), n.calendarPaneOpenedFrom = null, n.openOnFocus ? n.$mdUtil.nextTick(t) : t()
34489 }, r.prototype.getCalendarCtrl = function() {
34490 return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
34491 }, r.prototype.focusCalendar = function() {
34493 this.$mdUtil.nextTick(function() {
34494 e.getCalendarCtrl().focus()
34496 }, r.prototype.setFocused = function(e) {
34497 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
34498 }, r.prototype.handleBodyClick = function(e) {
34499 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
34500 }, r.prototype.handleWindowBlur = function() {
34501 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
34502 }, r.prototype.evalAttr = function(e) {
34503 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
34504 }, r.prototype.setModelValue = function(e) {
34505 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34506 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
34507 }, r.prototype.onExternalChange = function(e) {
34508 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
34509 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
34513 t.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(e, t, n, r) {
34516 link: function(r, i, o) {
34518 if (!o.mdSvgIcon && !o.mdSvgSrc) {
34519 o.mdFontIcon && (i.removeClass(s), i.addClass(o.mdFontIcon), s = o.mdFontIcon);
34520 var t = e.fontSet(o.mdFontSet);
34521 c !== t && (i.removeClass(c), i.addClass(t), c = t)
34525 var s = o.mdFontIcon,
34526 c = e.fontSet(o.mdFontSet);
34527 o.mdSvgIcon || o.mdSvgSrc || (o.mdFontIcon && i.addClass("md-font " + o.mdFontIcon), i.addClass(c)), o.$observe("mdFontIcon", a), o.$observe("mdFontSet", a), i[0].getAttribute(o.$attr.mdSvgSrc);
34528 var l = o.$normalize(o.$attr.mdSvgIcon || o.$attr.mdSvgSrc || "");
34529 if (o.role || (n.expect(i, "role", "img"), o.role = "img"), "img" === o.role && !o.ariaHidden && !n.hasAriaLabel(i)) {
34531 o.alt ? n.expect(i, "aria-label", o.alt) : n.parentHasAriaLabel(i, 2) ? n.expect(i, "aria-hidden", "true") : (u = o.mdFontIcon || o.mdSvgIcon || i.text()) ? n.expect(i, "aria-label", u) : n.expect(i, "aria-hidden", "true")
34533 l && o.$observe(l, function(t) {
34534 i.empty(), t && e(t).then(function(e) {
34535 i.empty(), i.append(e)
34546 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
34549 function i(n, r, i, o, a, s) {
34551 return e = e || "", t.isString(e) || (e = s.getTrustedUrl(e)), g[e] ? i.when(l(g[e])) : b.test(e) || y.test(e) ? h(e).then(u(e)) : (-1 == e.indexOf(":") && (e = "$default:" + e), (n[e] ? d : f)(e).then(u(e)))
34556 r = "_cache" + a.nextUid();
34557 return n.id && (n.id += r), t.forEach(n.querySelectorAll("[id]"), function(e) {
34563 return function(t) {
34564 return g[e] = p(t) ? t : new m(t, n[e]), g[e].clone()
34570 return h(t.url).then(function(e) {
34577 var t = "icon " + e + " not found";
34578 return o.warn(t), i.reject(t || e)
34580 var r = e.substring(0, e.lastIndexOf(":")) || "$default",
34582 return a ? h(a.url).then(function(n) {
34583 var r = e.slice(e.lastIndexOf(":") + 1),
34584 i = n.querySelector("#" + r);
34585 return i ? new m(i, a) : t(e)
34590 return y.test(n) ? function(n) {
34592 o = /base64/i.test(n) ? e.atob(r[2]) : r[2];
34593 return i.when(t.element(o)[0])
34594 }(n) : function(e) {
34595 return i(function(n, i) {
34596 r(e, !0).then(function(r) {
34597 v[e] || (v[e] = t.element("<div>").append(r)[0].querySelector("svg")), n(v[e])
34599 var n = t.isString(e) ? e : e.message || e.data || e.statusText;
34607 return t.isDefined(e.element) && t.isDefined(e.config)
34611 e && "svg" != e.tagName && (e = t.element('<svg xmlns="http://www.w3.org/2000/svg">').append(e.cloneNode(!0))[0]), e.getAttribute("xmlns") || e.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.element = e, this.config = n, this.prepare()
34615 b = /[-\w@:%\+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%\+.~#?&//=]*)?/i,
34616 y = /^data:image\/svg\+xml[\s*;\w\-\=]*?(base64)?,(.*)$/i;
34617 return m.prototype = {
34618 clone: function() {
34619 return this.element.cloneNode(!0)
34621 prepare: function() {
34622 var e = this.config ? this.config.viewBoxSize : n.defaultViewBoxSize;
34627 preserveAspectRatio: "xMidYMid meet",
34628 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
34630 }, function(e, t) {
34631 this.element.setAttribute(t, e)
34634 }, c.fontSet = function(e) {
34635 if (t.isUndefined(e) || !e || !e.length) return n.defaultFontSet;
34637 return t.forEach(n.fontSets, function(t) {
34638 t.alias == e && (r = t.fontSet || r)
34642 i.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], t.module("material.components.icon").constant("$$mdSvgRegistry", {
34643 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
34644 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
34645 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
34646 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
34647 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
34648 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
34649 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
34650 }).provider("$mdIcon", n);
34652 defaultViewBoxSize: 24,
34653 defaultFontSet: "material-icons",
34657 icon: function(e, t, n) {
34658 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
34660 iconSet: function(e, t, n) {
34661 return o[e] = new r(t, n), this
34663 defaultIconSet: function(e, t) {
34664 return o.$default || (o.$default = new r(e, t)), o.$default.viewBoxSize = t || o.defaultViewBoxSize, this
34666 defaultViewBoxSize: function(e) {
34667 return o.defaultViewBoxSize = e, this
34669 fontSet: function(e, t) {
34670 return o.fontSets.push({
34675 defaultFontSet: function(e) {
34676 return o.defaultFontSet = e || "", this
34678 defaultIconSize: function(e) {
34679 return o.defaultIconSize = e, this
34681 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, a) {
34682 return i(o, e, t, n, r, a)
34687 function e(e, r, i, o, a, s, c, l, u) {
34688 var d, f, h = a.prefixer(),
34690 this.nestLevel = parseInt(r.mdNestLevel, 10) || 0, this.init = function(n, r) {
34691 r = r || {}, d = n, (f = i[0].querySelector(h.buildSelector(["ng-click", "ng-mouseenter"]))).setAttribute("aria-expanded", "false"), this.isInMenuBar = r.isInMenuBar, this.nestedMenus = a.nodesToArray(d[0].querySelectorAll(".md-nested-menu")), d.on("$mdInterimElementRemove", function() {
34692 p.isOpen = !1, a.nextTick(function() {
34693 p.onIsOpenChanged(p.isOpen)
34695 }), a.nextTick(function() {
34696 p.onIsOpenChanged(p.isOpen)
34698 var s = "menu_container_" + a.nextUid();
34699 d.attr("id", s), t.element(f).attr({
34701 "aria-haspopup": "true"
34702 }), o.$on("$destroy", t.bind(this, function() {
34703 this.disableHoverListener(), e.destroy()
34704 })), d.on("$destroy", function() {
34709 this.enableHoverListener = function() {
34710 v.push(c.$on("$mdMenuOpen", function(e, t) {
34711 d[0].contains(t[0]) && (p.currentlyOpenMenu = t.controller("mdMenu"), p.isAlreadyOpening = !1, p.currentlyOpenMenu.registerContainerProxy(p.triggerContainerProxy.bind(p)))
34712 })), v.push(c.$on("$mdMenuClose", function(e, t) {
34713 d[0].contains(t[0]) && (p.currentlyOpenMenu = n)
34714 })), (g = t.element(a.nodesToArray(d[0].children[0].children))).on("mouseenter", p.handleMenuItemHover), g.on("mouseleave", p.handleMenuItemMouseLeave)
34715 }, this.disableHoverListener = function() {
34716 for (; v.length;) v.shift()();
34717 g && g.off("mouseenter", p.handleMenuItemHover), g && g.off("mouseleave", p.handleMenuItemMouseLeave)
34718 }, this.handleMenuItemHover = function(e) {
34719 if (!p.isAlreadyOpening) {
34720 var n = e.target.querySelector("md-menu") || a.getClosest(e.target, "MD-MENU");
34722 if (n && (n = t.element(n).controller("mdMenu")), p.currentlyOpenMenu && p.currentlyOpenMenu != n) {
34723 var e = p.nestLevel + 1;
34724 p.currentlyOpenMenu.close(!0, {
34726 }), p.isAlreadyOpening = !!n, n && n.open()
34727 } else n && !n.isOpen && n.open && (p.isAlreadyOpening = !!n, n && n.open())
34729 var r = e.currentTarget.querySelector(".md-button:not([disabled])");
34732 }, this.handleMenuItemMouseLeave = function() {
34733 m && (s.cancel(m), m = n)
34734 }, this.open = function(t) {
34735 t && t.stopPropagation(), t && t.preventDefault(), p.isOpen || (p.enableHoverListener(), p.isOpen = !0, a.nextTick(function() {
34736 p.onIsOpenChanged(p.isOpen)
34737 }), (f = f || (t ? t.target : i[0])).setAttribute("aria-expanded", "true"), o.$emit("$mdMenuOpen", i), e.show({
34740 nestLevel: p.nestLevel,
34743 preserveElement: !0,
34745 }).finally(function() {
34746 f.setAttribute("aria-expanded", "false"), p.disableHoverListener()
34748 }, this.onIsOpenChanged = function(e) {
34749 e ? (d.attr("aria-hidden", "false"), i[0].classList.add("md-open"), t.forEach(p.nestedMenus, function(e) {
34750 e.classList.remove("md-open")
34751 })) : (d.attr("aria-hidden", "true"), i[0].classList.remove("md-open")), o.$mdMenuIsOpen = p.isOpen
34752 }, this.focusMenuContainer = function() {
34753 var e = d[0].querySelector(h.buildSelector(["md-menu-focus-target", "md-autofocus"]));
34754 e || (e = d[0].querySelector(".md-button:not([disabled])")), e.focus()
34755 }, this.registerContainerProxy = function(e) {
34756 this.containerProxy = e
34757 }, this.triggerContainerProxy = function(e) {
34758 this.containerProxy && this.containerProxy(e)
34759 }, this.destroy = function() {
34760 return p.isOpen ? e.destroy() : l.when(!1)
34761 }, this.close = function(n, r) {
34763 p.isOpen = !1, a.nextTick(function() {
34764 p.onIsOpenChanged(p.isOpen)
34766 var s = t.extend({}, r, {
34769 if (o.$emit("$mdMenuClose", i, s), e.hide(null, r), !n) {
34770 var c = p.restoreFocusTo || i.find("button")[0];
34771 c instanceof t.element && (c = c[0]), c && c.focus()
34774 }, this.positionMode = function() {
34775 var e = (r.mdPositionMode || "target").split(" ");
34776 return 1 == e.length && e.push(e[0]), {
34780 }, this.offsets = function() {
34781 var e = (r.mdOffset || "0 0").split(" ").map(parseFloat);
34782 if (2 == e.length) return {
34786 if (1 == e.length) return {
34790 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
34794 }, o.$mdOpenMenu = t.bind(this, function() {
34795 return u.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
34798 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], t.module("material.components.menu").controller("mdMenuCtrl", e)
34802 function n(e, n, r, i) {
34805 s = t.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
34806 c = n.children()[1];
34807 n.addClass("_md"), c.hasAttribute("role") || c.setAttribute("role", "menu"), s.append(c), n.on("$destroy", function() {
34809 }), n.append(s), s[0].style.display = "none", o.init(s, {
34813 var r = "Invalid HTML for md-menu: ";
34816 require: ["mdMenu", "?^mdMenuBar"],
34817 controller: "mdMenuCtrl",
34819 compile: function(i) {
34820 i.addClass("md-menu");
34821 var o = i.children()[0],
34822 a = i.children()[1],
34824 s.hasAttribute(o, "ng-click") || (o = o.querySelector(s.buildSelector(["ng-click", "ng-mouseenter"])) || o);
34825 var c = "MD-BUTTON" === o.nodeName || "BUTTON" === o.nodeName;
34826 if (o && c && !o.hasAttribute("type") && o.setAttribute("type", "button"), !o) throw Error(r + "Expected the menu to have a trigger element.");
34827 if (!a || "MD-MENU-CONTENT" !== a.nodeName) throw Error(r + "Expected the menu to contain a `md-menu-content` element.");
34828 o && o.setAttribute("aria-haspopup", "true");
34829 var l = i[0].querySelectorAll("md-menu"),
34830 u = parseInt(i[0].getAttribute("md-nest-level"), 10) || 0;
34831 return l && t.forEach(e.nodesToArray(l), function(e) {
34832 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", u + 1)
34837 e.$inject = ["$mdUtil"], t.module("material.components.menu").directive("mdMenu", e)
34841 function r(e, r, a, s, c, l, u, d, f, h) {
34842 function p(n, r, i) {
34843 return i.nestLevel ? t.noop : (i.disableParentScroll && !e.getClosest(i.target, "MD-DIALOG") ? i.restoreScroll = e.disableScrollAround(i.element, i.parent) : i.disableParentScroll = !1, i.hasBackdrop && (i.backdrop = e.createBackdrop(n, "md-menu-backdrop md-click-catcher"), f.enter(i.backdrop, s[0].body)), function() {
34844 i.backdrop && i.backdrop.remove(), i.disableParentScroll && i.restoreScroll()
34848 function m(t, n, r, i) {
34849 for (var o, a = e.getClosest(t.target, "MD-MENU-ITEM"), s = e.nodesToArray(n[0].children), c = s.indexOf(a) + i; c >= 0 && c < s.length && !(o = g(s[c].querySelector(".md-button"))); c += i);
34854 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), s[0].activeElement == e
34858 t.preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e))
34863 l = t[0].firstElementChild,
34864 u = l.getBoundingClientRect(),
34865 d = s[0].body.getBoundingClientRect(),
34866 f = c.getComputedStyle(l),
34867 h = r.target[0].querySelector(y.buildSelector("md-menu-origin")) || r.target[0],
34868 p = h.getBoundingClientRect(),
34871 top: Math.max(d.top, 0) + o,
34872 bottom: Math.max(d.bottom, Math.max(d.top, 0) + d.height) - o,
34887 b = r.mdMenuCtrl.positionMode();
34888 "target" != b.top && "target" != b.left && "target-right" != b.left || (i = function() {
34889 for (var e = 0; e < l.children.length; ++e)
34890 if ("none" != c.getComputedStyle(l.children[e]).display) return l.children[e]
34891 }()) && (g = (i = (i = i.firstElementChild || i).querySelector(y.buildSelector("md-menu-align-target")) || i).getBoundingClientRect(), v = {
34892 top: parseFloat(a.style.top || 0),
34893 left: parseFloat(a.style.left || 0)
34899 _.top = v.top + p.top - g.top;
34902 _.top = p.top - parseFloat(f.paddingTop) - h.style.top;
34905 _.top = p.top + p.height;
34908 throw new Error('Invalid target mode "' + b.top + '" specified for md-menu on Y axis.')
34910 var w = "rtl" == e.bidi();
34913 _.left = v.left + p.left - g.left, $ += w ? "right" : "left";
34915 case "target-left":
34916 _.left = p.left, $ += "left";
34918 case "target-right":
34919 _.left = p.right - u.width + (u.right - g.right), $ += "right";
34922 var E = w ? p.left - u.width < m.left : p.right + u.width < m.right;
34923 _.left = E ? p.right - h.style.left : p.left - h.style.left - u.width, $ += E ? "left" : "right";
34926 w ? (_.left = p.right - p.width, $ += "left") : (_.left = p.right - u.width, $ += "right");
34929 w ? (_.left = p.right - u.width, $ += "right") : (_.left = p.left, $ += "left");
34932 throw new Error('Invalid target mode "' + b.left + '" specified for md-menu on X axis.')
34934 var k = r.mdMenuCtrl.offsets();
34935 _.top += k.top, _.left += k.left,
34937 e.top = Math.max(Math.min(e.top, m.bottom - a.offsetHeight), m.top), e.left = Math.max(Math.min(e.left, m.right - a.offsetWidth), m.left)
34939 var C = Math.round(100 * Math.min(p.width / a.offsetWidth, 1)) / 100,
34940 x = Math.round(100 * Math.min(p.height / a.offsetHeight, 1)) / 100;
34942 top: Math.round(_.top),
34943 left: Math.round(_.left),
34944 transform: r.alreadyOpen ? n : e.supplant("scale({0},{1})", [C, x]),
34948 var y = e.prefixer(),
34949 _ = e.dom.animator;
34952 onShow: function(n, i, o) {
34954 return o.backdrop ? (o.backdrop.on("click", f), function() {
34955 o.backdrop.off("click", f)
34960 e.preventDefault(), e.stopPropagation(), n.$apply(function() {
34961 o.mdMenuCtrl.close(!0, {
34970 switch (t.keyCode) {
34971 case a.KEY_CODE.ESCAPE:
34972 o.mdMenuCtrl.close(!1, {
34976 case a.KEY_CODE.UP_ARROW:
34977 m(t, o.menuContentEl, 0, -1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34979 case a.KEY_CODE.DOWN_ARROW:
34980 m(t, o.menuContentEl, 0, 1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34982 case a.KEY_CODE.LEFT_ARROW:
34983 o.nestLevel ? o.mdMenuCtrl.close() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
34985 case a.KEY_CODE.RIGHT_ARROW:
34986 var r = e.getClosest(t.target, "MD-MENU");
34987 r && r != o.parent[0] ? t.target.click() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0
34989 n && (t.preventDefault(), t.stopImmediatePropagation())
34995 for (var n, r = 0; n = t[r]; ++r)
34996 if (y.hasAttribute(e, n)) return !0;
35001 if (i == o.menuContentEl[0]) return;
35002 if ((r(i, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == i.nodeName || "MD-BUTTON" == i.nodeName) && !r(i, ["md-prevent-menu-close"])) {
35003 var a = e.getClosest(i, "MD-MENU");
35004 i.hasAttribute("disabled") || a && a != o.parent[0] || n.$apply(function() {
35005 o.mdMenuCtrl.close(!0, {
35011 } while (i = i.parentNode)
35013 if (!o.menuContentEl[0]) return t.noop;
35014 o.menuContentEl.on("keydown", r), o.menuContentEl[0].addEventListener("click", i, !0);
35015 var s = o.menuContentEl[0].querySelector(y.buildSelector(["md-menu-focus-target", "md-autofocus"]));
35017 for (var c = o.menuContentEl[0].children.length, l = 0; l < c; l++) {
35018 var u = o.menuContentEl[0].children[l];
35019 if (s = u.querySelector(".md-button:not([disabled])")) break;
35020 if (u.firstElementChild && !u.firstElementChild.disabled) {
35021 s = u.firstElementChild;
35025 return s && s.focus(),
35027 o.menuContentEl.off("keydown", r), o.menuContentEl[0].removeEventListener("click", i, !0)
35030 return function() {
35031 if (!o.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
35035 target: t.element(o.target),
35036 parent: t.element(o.parent),
35037 menuContentEl: t.element(i[0].querySelector("md-menu-content"))
35039 }(), o.menuContentEl[0] ? r.inherit(o.menuContentEl, o.target) : h.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.", i), o.cleanupResizing = function() {
35040 var e = function(e, t) {
35041 return u.throttle(function() {
35042 if (!o.isRemoved) {
35048 return c.addEventListener("resize", e), c.addEventListener("orientationchange", e),
35050 c.removeEventListener("resize", e), c.removeEventListener("orientationchange", e)
35052 }(), o.hideBackdrop = p(n, i, o), (o.parent.append(i), i[0].style.display = "", l(function(e) {
35054 i.removeClass("md-leave"), d(i, {
35055 addClass: "md-active",
35061 })).then(function(e) {
35062 return o.alreadyOpen = !0, o.cleanupInteraction = g(), o.cleanupBackdrop = s(), i.addClass("md-clickable"), e
35065 onRemove: function(e, t, n) {
35067 t.removeClass("md-active"), v(t, n), n.alreadyOpen = !1
35069 return n.cleanupInteraction(), n.cleanupBackdrop(), n.cleanupResizing(), n.hideBackdrop(), t.removeClass("md-clickable"), !0 === n.$destroy ? r() : d(t, {
35070 addClass: "md-leave"
35074 disableParentScroll: !0,
35083 return e instanceof t.element && (e = e[0]), e
35085 r.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
35087 return e("$mdMenu").setDefaults({
35088 methods: ["target"],
35092 e.$inject = ["$$interimElementProvider"], t.module("material.components.menu").provider("$mdMenu", e)
35095 function e(e, n, i, o, a, s, c, l) {
35096 this.$element = i, this.$attrs = o, this.$mdConstant = a, this.$mdUtil = c, this.$document = s, this.$scope = e, this.$rootScope = n, this.$timeout = l;
35098 t.forEach(r, function(e) {
35099 u[e] = t.bind(u, u[e])
35102 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], t.module("material.components.menuBar").controller("MenuBarController", e);
35103 var r = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
35104 e.prototype.init = function() {
35105 var e = this.$element,
35110 e.on("keydown", this.handleKeyDown), this.parentToolbar = t.getClosest(e, "MD-TOOLBAR"), o.push(this.$rootScope.$on("$mdMenuOpen", function(t, n) {
35111 -1 != i.getMenus().indexOf(n[0]) && (e[0].classList.add("md-open"), n[0].classList.add("md-open"), i.currentlyOpenMenu = n.controller("mdMenu"), i.currentlyOpenMenu.registerContainerProxy(i.handleKeyDown), i.enableOpenOnHover())
35112 })), o.push(this.$rootScope.$on("$mdMenuClose", function(r, o, a) {
35113 var s = i.getMenus();
35114 if (-1 != s.indexOf(o[0]) && (e[0].classList.remove("md-open"), o[0].classList.remove("md-open")), e[0].contains(o[0])) {
35115 for (var c = o[0]; c && -1 == s.indexOf(c);) c = t.getClosest(c, "MD-MENU", !0);
35116 c && (a.skipFocus || c.querySelector("button:not([disabled])").focus(), i.currentlyOpenMenu = n, i.disableOpenOnHover(), i.setKeyboardMode(!0))
35118 })), r.$on("$destroy", function() {
35119 for (i.disableOpenOnHover(); o.length;) o.shift()()
35120 }), this.setKeyboardMode(!0)
35121 }, e.prototype.setKeyboardMode = function(e) {
35122 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
35123 }, e.prototype.enableOpenOnHover = function() {
35124 if (!this.openOnHoverEnabled) {
35126 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
35127 t.element(e.parentToolbar).on("click", e.handleParentClick)
35128 }, !1)), t.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
35130 }, e.prototype.handleMenuHover = function(e) {
35131 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
35132 }, e.prototype.disableOpenOnHover = function() {
35133 this.openOnHoverEnabled && (this.openOnHoverEnabled = !1, this.parentToolbar && (this.parentToolbar.classList.remove("md-has-open-menu"), t.element(this.parentToolbar).off("click", this.handleParentClick)), t.element(this.getMenus()).off("mouseenter", this.handleMenuHover))
35134 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
35135 var n = t.element(e.currentTarget).controller("mdMenu");
35136 this.setKeyboardMode(!1), this.scheduleOpenMenu(n)
35137 }, e.prototype.scheduleOpenMenu = function(e) {
35140 e != t.currentlyOpenMenu && (r.cancel(t.pendingMenuOpen), t.pendingMenuOpen = r(function() {
35141 t.pendingMenuOpen = n, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
35145 }, e.prototype.handleKeyDown = function(e) {
35146 var n = this.$mdConstant.KEY_CODE,
35147 r = this.currentlyOpenMenu,
35149 this.setKeyboardMode(!0);
35151 switch (e.keyCode) {
35153 r ? r.focusMenuContainer() : this.openFocusedMenu(), o = !0;
35156 r && r.close(), o = !0;
35159 a = this.focusMenu(-1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0;
35161 case n.RIGHT_ARROW:
35162 a = this.focusMenu(1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0
35164 o && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
35165 }, e.prototype.focusMenu = function(e) {
35166 var t = this.getMenus(),
35167 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
35169 if (-1 == n ? (n = 0, r = !0) : (e < 0 && n > 0 || e > 0 && n < t.length - e) && (n += e, r = !0), r) return t[n].querySelector("button").focus(), t[n]
35170 }, e.prototype.openFocusedMenu = function() {
35171 var e = this.getFocusedMenu();
35172 e && t.element(e).controller("mdMenu").open()
35173 }, e.prototype.getMenus = function() {
35174 var e = this.$element;
35175 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
35176 return "MD-MENU" == e.nodeName
35178 }, e.prototype.getFocusedMenu = function() {
35179 return this.getMenus()[this.getFocusedMenuIndex()]
35180 }, e.prototype.getFocusedMenuIndex = function() {
35181 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
35182 return e ? this.getMenus().indexOf(e) : -1
35183 }, e.prototype.getOpenMenuIndex = function() {
35184 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
35185 if (e[t].classList.contains("md-open")) return t;
35187 }, e.prototype.handleParentClick = function(e) {
35188 var n = this.querySelector("md-menu.md-open");
35189 n && !n.contains(e.target) && t.element(n).controller("mdMenu").close(!0, {
35198 require: "mdMenuBar",
35199 controller: "MenuBarController",
35200 compile: function(r, i) {
35201 return i.ariaRole || r[0].setAttribute("role", "menubar"), t.forEach(r[0].children, function(n) {
35202 if ("MD-MENU" == n.nodeName) {
35203 n.hasAttribute("md-position-mode") || (n.setAttribute("md-position-mode", "left bottom"), n.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
35204 var r = e.nodesToArray(n.querySelectorAll("md-menu-content"));
35205 t.forEach(r, function(e) {
35206 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
35209 }), r.find("md-menu-item").addClass("md-in-menu-bar"),
35210 function(e, t, r, i) {
35211 t.addClass("_md"), n(e, t), i.init()
35216 e.$inject = ["$mdUtil", "$mdTheming"], t.module("material.components.menuBar").directive("mdMenuBar", e)
35219 t.module("material.components.menuBar").directive("mdMenuDivider", function() {
35222 compile: function(e, t) {
35223 t.role || e[0].setAttribute("role", "separator")
35229 function e(e, t, n) {
35230 this.$element = t, this.$attrs = n, this.$scope = e
35232 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
35233 var t = this.$element,
35235 this.ngModel = e, "checkbox" != n.type && "radio" != n.type || (this.mode = n.type, this.iconEl = t[0].children[0], this.buttonEl = t[0].children[1], e && this.initClickListeners())
35236 }, e.prototype.clearNgAria = function() {
35237 var e = this.$element[0],
35238 n = ["role", "tabindex", "aria-invalid", "aria-checked"];
35239 t.forEach(n, function(t) {
35240 e.removeAttribute(t)
35242 }, e.prototype.initClickListeners = function() {
35244 if ("radio" == s) {
35245 var e = a.ngValue ? o.$eval(a.ngValue) : a.value;
35246 return i.$modelValue == e
35248 return i.$modelValue
35252 e ? l.off("click", u) : l.on("click", u)
35258 s = (this.$element, this.mode);
35259 this.handleClick = t.bind(this, this.handleClick);
35260 var c = this.iconEl,
35261 l = t.element(this.buttonEl),
35262 u = this.handleClick;
35263 a.$observe("disabled", n), n(a.disabled), i.$render = function() {
35264 r.clearNgAria(), e() ? (c.style.display = "", l.attr("aria-checked", "true")) : (c.style.display = "none", l.attr("aria-checked", "false"))
35265 }, o.$$postDigest(i.$render)
35266 }, e.prototype.handleClick = function(e) {
35267 var t, n = this.mode,
35270 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
35274 function e(e, n, r) {
35276 controller: "MenuItemController",
35277 require: ["mdMenuItem", "?ngModel"],
35278 priority: n.BEFORE_NG_ARIA,
35279 compile: function(n, i) {
35280 function o(e, r, i) {
35281 (i = i || n) instanceof t.element && (i = i[0]), i.hasAttribute(e) || i.setAttribute(e, r)
35284 if ("checkbox" != a && "radio" != a || !n.hasClass("md-in-menu-bar")) o("role", "menuitem", n[0].querySelector("md-button, button, a"));
35286 var s = n[0].textContent,
35287 c = t.element('<md-button type="button"></md-button>'),
35288 l = '<md-icon md-svg-src="' + r.mdChecked + '"></md-icon>';
35289 c.html(s), c.attr("tabindex", "0"), n.html(""), n.append(t.element(l)), n.append(c), n.addClass("md-indent").removeClass("md-in-menu-bar"), o("role", "checkbox" == a ? "menuitemcheckbox" : "menuitemradio", c),
35291 var i = e.prefixer(r);
35292 t.forEach(i, function(e) {
35293 if (n[0].hasAttribute(e)) {
35294 var t = n[0].getAttribute(e);
35295 c[0].setAttribute(e, t), n[0].removeAttribute(e)
35300 return function(e, t, n, r) {
35308 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], t.module("material.components.menuBar").directive("mdMenuItem", e)
35311 function e(e, n, r, i, o, a) {
35312 function s(a, s, y) {
35313 function _(t, r, o, s, c, u) {
35315 M.attr("stroke-dashoffset", l(b, y, e, E)), M.attr("transform", "rotate(" + w + " " + b / 2 + " " + b / 2 + ")")
35320 b = d(a.mdDiameter),
35323 $ = s || n.duration,
35324 w = -90 * (c || 0),
35326 r === t ? p(r) : k = h(function n() {
35327 var r = e.Math.max(0, e.Math.min(i.now() - g, $));
35328 p(_(r, t, v, $)), m === D && r < $ && (k = h(n))
35333 _(A, S, n.easeFnIndeterminate, n.durationIndeterminate, O, 75), O = ++O % 4
35337 C || (C = o($, n.durationIndeterminate, 0, !1), $(), s.addClass(b).removeAttr("aria-valuenow"))
35341 C && (o.cancel(C), C = null, s.removeClass(b))
35343 var k, C, x = s[0],
35344 T = t.element(x.querySelector("svg")),
35345 M = t.element(x.querySelector("path")),
35346 A = n.startIndeterminate,
35347 S = n.endIndeterminate,
35350 r(s), s.toggleClass(v, y.hasOwnProperty("disabled")), a.mdMode === g && w(), a.$on("$destroy", function() {
35352 }), a.$watchGroup(["value", "mdMode", function() {
35353 var e = x.disabled;
35354 return !0 === e || !1 === e ? e : t.isDefined(s.attr("disabled"))
35355 }], function(e, t) {
35358 if (r !== t[2] && s.toggleClass(v, !!r), r) E();
35359 else if (n !== m && n !== g && (n = g, y.$set("mdMode", n)), n === g) w();
35362 E(), s.attr("aria-valuenow", i), _(u(t[0]), i)
35364 }), a.$watch("mdDiameter", function(t) {
35373 T[0].setAttribute("viewBox", "0 0 " + n + " " + n), T.css(h).css("transform-origin", o + " " + o + " " + o), s.css(h), M.attr("stroke-width", r), M.attr("stroke-linecap", "square"), a.mdMode == g ? (M.attr("d", c(n, r, !0)), M.attr("stroke-dasharray", (n - r) * e.Math.PI * .75), M.attr("stroke-dashoffset", l(n, r, 1, 75))) : (M.attr("d", c(n, r, !1)), M.attr("stroke-dasharray", (n - r) * e.Math.PI), M.attr("stroke-dashoffset", l(n, r, 0, 100)), _(i, i))
35377 function c(e, t, n) {
35382 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
35385 function l(t, n, r, i) {
35386 return (t - n) * e.Math.PI * (3 * (i || 100) / 100 - r / 100)
35390 return e.Math.max(0, e.Math.min(t || 0, 100))
35394 var t = n.progressSize;
35396 var r = parseFloat(e);
35397 return e.lastIndexOf("%") === e.length - 1 && (r = r / 100 * t), r
35403 return n.strokeWidth / 100 * e
35405 var h = e.requestAnimationFrame || e.webkitRequestAnimationFrame || t.noop,
35406 p = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || t.noop,
35408 g = "indeterminate",
35409 v = "_md-progress-circular-disabled",
35410 b = "md-mode-indeterminate";
35418 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
35419 compile: function(e, n) {
35421 "aria-valuemin": 0,
35422 "aria-valuemax": 100,
35423 role: "progressbar"
35424 }), t.isUndefined(n.mdMode)) {
35425 var r = n.hasOwnProperty("value") ? m : g;
35426 n.$set("mdMode", r)
35427 } else n.$set("mdMode", n.mdMode.trim());
35432 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], t.module("material.components.progressCircular").directive("mdProgressCircular", e)
35435 t.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
35436 function e(e, t, n, r) {
35437 return n * e / r + t
35440 function n(e, t, n, r) {
35441 var i = (e /= r) * e,
35443 return t + n * (6 * o * i + -15 * i * i + 10 * o)
35450 durationIndeterminate: 1333,
35451 startIndeterminate: 1,
35452 endIndeterminate: 149,
35453 easeFnIndeterminate: n,
35460 configure: function(e) {
35461 return r = t.extend(r, e || {})
35470 t.module("material.components.tabs").directive("mdTab", function() {
35471 function e(e, r, i, o) {
35473 var a = o.getTabElementIndex(r),
35474 s = n(r, "md-tab-body").remove(),
35475 c = n(r, "md-tab-label").remove(),
35481 template: s.html(),
35484 e.select = e.select || t.noop, e.deselect = e.deselect || t.noop, e.$watch("active", function(e) {
35485 e && o.select(l.getIndex(), !0)
35486 }), e.$watch("disabled", function() {
35488 }), e.$watch(function() {
35489 return o.getTabElementIndex(r)
35491 l.index = e, o.updateTabOrder()
35492 }), e.$on("$destroy", function() {
35499 for (var r = e[0].children, i = 0, o = r.length; i < o; i++) {
35501 if (a.tagName === n.toUpperCase()) return t.element(a)
35506 require: "^?mdTabs",
35508 compile: function(r, i) {
35509 var o = n(r, "md-tab-label"),
35510 a = n(r, "md-tab-body");
35511 if (0 === o.length && (o = t.element("<md-tab-label></md-tab-label>"), i.label ? o.text(i.label) : o.append(r.contents()), 0 === a.length)) {
35512 var s = r.contents().detach();
35513 (a = t.element("<md-tab-body></md-tab-body>")).append(s)
35515 return r.append(o), a.html() && r.append(a), e
35518 active: "=?mdActive",
35519 disabled: "=?ngDisabled",
35520 select: "&?mdOnSelect",
35521 deselect: "&?mdOnDeselect"
35527 t.module("material.components.tabs").directive("mdTabItem", function() {
35529 require: "^?mdTabs",
35530 link: function(e, t, n, r) {
35531 r && r.attachRipple(e, t)
35537 t.module("material.components.tabs").directive("mdTabLabel", function() {
35547 compile: function(t, n) {
35548 var r = e(n.mdTabScroll, null, !0);
35549 return function(e, t) {
35550 t.on("mousewheel", function(t) {
35551 e.$apply(function() {
35561 e.$inject = ["$parse"], t.module("material.components.tabs").directive("mdTabScroll", e)
35564 function e(e, r, i, o, a, s, c, l, u, d, f, h) {
35566 te.selectedIndex = te.selectedIndex || 0, m(), v(), g(), d(r), s.nextTick(function() {
35567 re = I(), K(), B(), Z(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select(), ae = !0, F()
35572 var e = l.$mdTabsTemplate,
35573 n = t.element(r[0].querySelector("md-tab-data"));
35574 n.html(e), u(n.contents())(te.parent), delete l.$mdTabsTemplate
35578 t.element(i).on("resize", O), e.$on("$destroy", _)
35582 e.$watch("$mdTabsCtrl.selectedIndex", M)
35586 var n = l.$normalize("md-" + e);
35587 t && L(e, t), l.$observe(n, function(t) {
35594 te[e] = "false" !== t
35596 var r = l.$normalize("md-" + e);
35597 t && L(e, t), l.hasOwnProperty(r) && n(l[r]), l.$observe(r, n)
35601 oe = !0, t.element(i).off("resize", O)
35606 t.element(n.wrapper).toggleClass("md-stretch-tabs", R()), Z()
35610 te.shouldCenterTabs = P()
35616 t.forEach(r.tabs, function(t) {
35617 t.style.maxWidth = e + "px"
35618 }), t.forEach(r.dummies, function(t) {
35619 t.style.maxWidth = e + "px"
35620 }), s.nextTick(te.updateInkBarStyles)
35625 e !== t && (te.maxTabWidth = U(), te.shouldCenterTabs = P(), s.nextTick(function() {
35626 te.maxTabWidth = U(), B(te.selectedIndex)
35631 r[e ? "removeClass" : "addClass"]("md-no-tab-content")
35636 i = (te.shouldCenterTabs || ee() ? "" : "-") + n + "px";
35637 i = i.replace("--", ""), t.element(r.paging).css(o.CSS.TRANSFORM, "translate3d(" + i + ", 0, 0)"), e.$broadcast("$mdTabsPaginationChanged")
35641 e !== t && I().tabs[e] && (B(), z())
35645 t !== n && (te.selectedIndex = H(t), te.lastSelectedIndex = n, te.updateInkBarStyles(), K(), B(t), e.$broadcast("$mdTabsChanged"), te.tabs[n] && te.tabs[n].scope.deselect(), te.tabs[t] && te.tabs[t].scope.select())
35649 A.watcher || (A.watcher = e.$watch(function() {
35650 s.nextTick(function() {
35651 A.watcher && r.prop("offsetParent") && (A.watcher(), A.watcher = null, O())
35657 ne || (te.focusIndex = te.selectedIndex = e), t && te.noSelectClick || s.nextTick(function() {
35658 te.tabs[e].element.triggerHandler("click")
35663 te.lastSelectedIndex = te.selectedIndex, te.offsetLeft = Q(te.offsetLeft), s.nextTick(function() {
35664 te.updateInkBarStyles(), F()
35669 t.element(I().inkBar).toggleClass("ng-hide", e)
35673 r.toggleClass("md-dynamic-height", e)
35679 return e.wrapper = t.querySelector("md-tabs-wrapper"), e.canvas = e.wrapper.querySelector("md-tabs-canvas"), e.paging = e.canvas.querySelector("md-pagination-wrapper"), e.inkBar = e.paging.querySelector("md-ink-bar"), e.nextButton = t.querySelector("md-next-button"), e.prevButton = t.querySelector("md-prev-button"), e.contents = t.querySelectorAll("md-tabs-content-wrapper > md-tab-content"), e.tabs = e.paging.querySelectorAll("md-tab-item"), e.dummies = e.canvas.querySelectorAll("md-dummy-tab"), e
35683 switch (te.stretchTabs) {
35689 return !te.shouldPaginate && i.matchMedia("(max-width: 600px)").matches
35694 return te.centerTabs && !te.shouldPaginate
35698 if (te.noPagination || !ae) return !1;
35699 var e = r.prop("clientWidth");
35700 return t.forEach(I().tabs, function(t) {
35706 if (-1 === e) return -1;
35707 var t, n, r = Math.max(te.tabs.length - e, e);
35708 for (t = 0; t <= r; t++) {
35709 if ((n = te.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
35710 if ((n = te.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
35715 function L(e, t, n) {
35716 Object.defineProperty(te, e, {
35722 n = e, t && t(e, r)
35728 te.maxTabWidth = U(), te.shouldPaginate = j()
35733 return t.forEach(e, function(e) {
35734 n += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
35739 var e = I().canvas.clientWidth;
35740 return Math.max(0, Math.min(e - 1, 264))
35744 var n, r = t ? "focusIndex" : "selectedIndex",
35746 for (n = i + e; te.tabs[n] && te.tabs[n].scope.disabled; n += e);
35747 n = (i + e + te.tabs.length) % te.tabs.length, te.tabs[n] && (te[r] = n)
35751 te.styleTabItemFocus = "keyboard" === f.getLastInteractionType(), I().tabs[te.focusIndex].focus()
35756 if (t.isNumber(e) || (e = te.focusIndex), n.tabs[e] && !te.shouldCenterTabs) {
35759 o = r.offsetWidth + i;
35762 var a = q(Array.prototype.slice.call(n.tabs, 0, e)),
35763 s = q(Array.prototype.slice.call(n.tabs, 0, e + 1));
35764 te.offsetLeft = Math.min(te.offsetLeft, Q(a)), te.offsetLeft = Math.max(te.offsetLeft, Q(s - n.canvas.clientWidth))
35765 } else te.offsetLeft = Math.max(te.offsetLeft, Q(o - n.canvas.clientWidth + 32)), te.offsetLeft = Math.min(te.offsetLeft, Q(i));
35766 else te.offsetLeft = 0
35771 ie.forEach(function(e) {
35777 for (var e = !1, t = 0; t < te.tabs.length; t++)
35778 if (te.tabs[t].hasContent) {
35786 te.selectedIndex = H(te.selectedIndex), te.focusIndex = H(te.focusIndex)
35790 if (!te.dynamicHeight) return r.css("height", "");
35791 if (!te.tabs.length) return ie.push(K);
35793 t = e.contents[te.selectedIndex],
35794 i = t ? t.offsetHeight : 0,
35795 o = e.wrapper.offsetHeight,
35797 l = r.prop("clientHeight");
35799 "bottom" === r.attr("md-align-tabs") && (l -= o, a -= o, r.attr("md-border-bottom") !== n && ++l), ne = !0;
35809 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
35811 }).start().done(function() {
35813 transition: "none",
35815 }), s.nextTick(function() {
35816 r.css("transition", "")
35824 if (e.tabs[te.selectedIndex]) {
35825 if (!te.tabs.length) return ie.push(te.updateInkBarStyles);
35826 if (!r.prop("offsetParent")) return A();
35827 var n = te.selectedIndex,
35828 i = e.paging.offsetWidth,
35831 c = i - a - o.offsetWidth;
35832 te.shouldCenterTabs && i > q(e.tabs) && s.nextTick(Z, !1), X(), t.element(e.inkBar).css({
35836 } else t.element(e.inkBar).css({
35844 n = te.selectedIndex,
35845 r = te.lastSelectedIndex,
35846 i = t.element(e.inkBar);
35847 t.isNumber(r) && i.toggleClass("md-left", n < r).toggleClass("md-right", n > r)
35852 if (!t.tabs.length || !te.shouldPaginate) return 0;
35853 var n = t.tabs[t.tabs.length - 1],
35854 r = n.offsetLeft + n.offsetWidth;
35855 return ee() ? (e = Math.min(t.paging.offsetWidth - t.canvas.clientWidth, e), e = Math.max(0, e)) : (e = Math.max(0, e), e = Math.min(r - t.canvas.clientWidth, e)), e
35859 if (e.hasContent) {
35860 var n = r[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
35861 t.element(n).attr("aria-controls", te.tabContentPrefix + e.id)
35866 return "rtl" == s.bidi()
35874 te.$onInit = function() {
35875 b("stretchTabs", $), L("focusIndex", T, te.selectedIndex || 0), L("offsetLeft", x, 0), L("hasContent", C, !1), L("maxTabWidth", E, U()), L("shouldPaginate", k, !1), y("noInkBar", D), y("dynamicHeight", N), y("noPagination"), y("swipeContent"), y("noDisconnect"), y("autoselect"), y("noSelectClick"), y("centerTabs", w), y("enableDisconnect"), te.scope = e, te.parent = e.$parent, te.tabs = [], te.lastSelectedIndex = null, te.hasFocus = !1, te.styleTabItemFocus = !1, te.shouldCenterTabs = P(), te.tabContentPrefix = "tab-content-", p()
35876 }, te.updatePagination = s.debounce(F, 100), te.redirectFocus = z, te.attachRipple = function(e, n) {
35879 colorElement: t.element(r.inkBar)
35882 }, te.insertTab = function(e, n) {
35885 getIndex: function() {
35886 return te.tabs.indexOf(o)
35888 isActive: function() {
35889 return this.getIndex() === te.selectedIndex
35891 isLeft: function() {
35892 return this.getIndex() < te.selectedIndex
35894 isRight: function() {
35895 return this.getIndex() > te.selectedIndex
35897 shouldRender: function() {
35898 return !te.noDisconnect || this.isActive()
35900 hasFocus: function() {
35901 return te.styleTabItemFocus && te.hasFocus && this.getIndex() === te.focusIndex
35904 hasContent: !(!e.template || !e.template.trim())
35906 o = t.extend(i, e);
35907 return t.isDefined(n) ? te.tabs.splice(n, 0, o) : te.tabs.push(o), W(), Y(), s.nextTick(function() {
35908 F(), J(o), r && te.autoselect && s.nextTick(function() {
35909 s.nextTick(function() {
35910 S(te.tabs.indexOf(o))
35914 }, te.removeTab = function(e) {
35916 var t = te.selectedIndex,
35917 n = te.tabs.splice(e.getIndex(), 1)[0];
35918 G(), te.selectedIndex === t && (n.scope.deselect(), te.tabs[te.selectedIndex] && te.tabs[te.selectedIndex].scope.select()), s.nextTick(function() {
35919 F(), te.offsetLeft = Q(te.offsetLeft)
35922 }, te.select = S, te.scroll = function(e) {
35923 te.shouldPaginate && (e.preventDefault(), te.offsetLeft = Q(te.offsetLeft - e.wheelDelta))
35924 }, te.nextPage = function() {
35925 if (te.canPageForward()) {
35926 var e = h.increasePageOffset(I(), te.offsetLeft);
35927 te.offsetLeft = Q(e)
35929 }, te.previousPage = function() {
35930 if (te.canPageBack()) {
35931 var e = h.decreasePageOffset(I(), te.offsetLeft);
35932 te.offsetLeft = Q(e)
35934 }, te.keydown = function(e) {
35935 switch (e.keyCode) {
35936 case o.KEY_CODE.LEFT_ARROW:
35937 e.preventDefault(), V(-1, !0);
35939 case o.KEY_CODE.RIGHT_ARROW:
35940 e.preventDefault(), V(1, !0);
35942 case o.KEY_CODE.SPACE:
35943 case o.KEY_CODE.ENTER:
35944 e.preventDefault(), ne || S(te.focusIndex);
35946 case o.KEY_CODE.TAB:
35947 te.focusIndex !== te.selectedIndex && (te.focusIndex = te.selectedIndex)
35949 }, te.canPageForward = function() {
35951 t = e.tabs[e.tabs.length - 1];
35952 return ee() ? te.offsetLeft < e.paging.offsetWidth - e.canvas.offsetWidth : t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + te.offsetLeft
35953 }, te.canPageBack = function() {
35954 return te.offsetLeft > 0
35955 }, te.refreshIndex = G, te.incrementIndex = V, te.getTabElementIndex = function(e) {
35956 var t = r[0].getElementsByTagName("md-tab");
35957 return Array.prototype.indexOf.call(t, e[0])
35958 }, te.updateInkBarStyles = s.debounce(Z, 100), te.updateTabOrder = s.debounce(function() {
35959 var e = te.tabs[te.selectedIndex],
35960 t = te.tabs[te.focusIndex];
35961 te.tabs = te.tabs.sort(function(e, t) {
35962 return e.index - t.index
35963 }), te.selectedIndex = te.tabs.indexOf(e), te.focusIndex = te.tabs.indexOf(t)
35964 }, 100), te.getFocusedTabId = function() {
35965 var e = te.tabs[te.focusIndex];
35966 return e && e.id ? "tab-item-" + e.id : null
35967 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
35969 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "MdTabsPaginationService"], t.module("material.components.tabs").controller("MdTabsController", e)
35975 selectedIndex: "=?mdSelected"
35977 template: function(t, n) {
35978 return n.$mdTabsTemplate = t.html(), '<md-tabs-wrapper> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-next-button> <md-tabs-canvas ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate, \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ng-keydown="$mdTabsCtrl.keydown($event)"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" md-tab-scroll="$mdTabsCtrl.scroll($event)" role="tablist"> <md-tab-item tabindex="{{ tab.isActive() ? 0 : -1 }}" class="md-tab" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" id="tab-item-{{::tab.id}}" md-tab-id="{{::tab.id}}"aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-right="$mdTabsCtrl.previousPage()" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-tab-item> <md-ink-bar></md-ink-bar> </md-pagination-wrapper> <md-tabs-dummy-wrapper aria-hidden="true" class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab class="md-tab" tabindex="-1" ng-repeat="tab in $mdTabsCtrl.tabs" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-dummy-tab> </md-tabs-dummy-wrapper> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent && $mdTabsCtrl.selectedIndex >= 0" class="_md"> <md-tab-content id="{{:: $mdTabsCtrl.tabContentPrefix + tab.id}}" class="_md" role="tabpanel" aria-labelledby="tab-item-{{::tab.id}}" md-swipe-left="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(1)" md-swipe-right="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(-1)" ng-if="tab.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': $mdTabsCtrl.dynamicHeight }"> <div md-tabs-template="::tab.template" md-connected-if="tab.isActive()" md-scope="::tab.parent" ng-if="$mdTabsCtrl.enableDisconnect || tab.shouldRender()"></div> </md-tab-content> </md-tabs-content-wrapper>'
35980 controller: "MdTabsController",
35981 controllerAs: "$mdTabsCtrl",
35982 bindToController: !0
35985 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.tabs").directive("mdTabs", e)
35990 require: "^?mdTabs",
35991 link: function(n, r, i, o) {
35993 var a, s, c = function() {
35994 o.updatePagination(), o.updateInkBarStyles()
35996 if ("MutationObserver" in t) {
36002 (a = new MutationObserver(c)).observe(r[0], l), s = a.disconnect.bind(a)
36004 var u = e.debounce(c, 15, null, !1);
36005 r.on("DOMSubtreeModified", u), s = r.off.bind(r, "DOMSubtreeModified", u)
36007 n.$on("$destroy", function() {
36014 e.$inject = ["$mdUtil", "$window"], t.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
36020 link: function(n, r, i, o) {
36022 o.enableDisconnect && t.disconnectScope(c)
36026 o.enableDisconnect && t.reconnectScope(c)
36029 var c = o.enableDisconnect ? n.compileScope.$new() : n.compileScope;
36030 return r.html(n.template), e(r.contents())(c), t.nextTick(function() {
36031 n.$watch("connected", function(e) {
36032 !1 === e ? a() : s()
36033 }), n.$on("$destroy", s)
36038 template: "=mdTabsTemplate",
36039 connected: "=?mdConnectedIf",
36040 compileScope: "=mdScope"
36042 require: "^?mdTabs"
36045 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.tabs").directive("mdTabsTemplate", e)
36046 }(), t.module("material.core").constant("$MD_THEME_CSS", 'md-autocomplete.md-THEME_NAME-theme{background:"{{background-A100}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-100}}"}md-autocomplete.md-THEME_NAME-theme button md-icon path{fill:"{{background-600}}"}md-autocomplete.md-THEME_NAME-theme button:after{background:"{{background-600-0.3}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-A100}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{background-900}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li .highlight{color:"{{background-600}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li.selected,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-200}}"}md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-50}}";border-top-color:"{{background-300}}"}md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item{color:"{{foreground-1}}"}md-bottom-sheet.md-THEME_NAME-theme .md-subheader{background-color:"{{background-50}}";color:"{{foreground-1}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}md-chips.md-THEME_NAME-theme .md-chips{box-shadow:0 1px "{{foreground-4}}"}md-chips.md-THEME_NAME-theme .md-chips.md-focused{box-shadow:0 2px "{{primary-color}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input{color:"{{foreground-1}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme md-chip{background:"{{background-300}}";color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip md-icon{color:"{{background-700}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused{background:"{{primary-color}}";color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon{color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip._md-chip-editing{background:transparent;color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path{fill:"{{background-500}}"}.md-contact-suggestion span.md-contact-email{color:"{{background-400}}"}md-checkbox.md-THEME_NAME-theme .md-ripple{color:"{{accent-A700}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before{background-color:"{{accent-color-0.26}}"}md-checkbox.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon{background-color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after{border-color:"{{accent-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple{color:"{{primary-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon{background-color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after{border-color:"{{primary-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple{color:"{{warn-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon{background-color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before{background-color:"{{warn-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon{background-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-label{color:"{{foreground-3}}"}md-content.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-default}}"}.md-calendar.md-THEME_NAME-theme{background:"{{background-A100}}";color:"{{background-A200-0.87}}"}.md-calendar.md-THEME_NAME-theme tr:last-child td{border-bottom-color:"{{background-200}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-300}}";color:"{{background-A200-0.87}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator{border:1px solid "{{primary-500}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled{color:"{{primary-500-0.6}}"}.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover{background:"{{background-300}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator{background:"{{primary-500}}";color:"{{primary-500-contrast}}";border-color:transparent}.md-THEME_NAME-theme .md-calendar-date-disabled,.md-THEME_NAME-theme .md-calendar-month-label-disabled{color:"{{background-A200-0.435}}"}.md-THEME_NAME-theme .md-datepicker-input{color:"{{foreground-1}}"}.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input-container{border-bottom-color:"{{foreground-4}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid,.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar-pane{border-color:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle{border-top-color:"{{foreground-2}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon,.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon{color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon,.md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar{background:"{{background-A100}}"}.md-THEME_NAME-theme .md-datepicker-input-mask-opaque{box-shadow:0 0 0 9999px "{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container{background:"{{background-hue-1}}"}md-dialog.md-THEME_NAME-theme{border-radius:4px;background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions,md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions,md-divider.md-THEME_NAME-theme{border-top-color:"{{foreground-4}}"}.layout-gt-lg-row>md-divider.md-THEME_NAME-theme,.layout-gt-md-row>md-divider.md-THEME_NAME-theme,.layout-gt-sm-row>md-divider.md-THEME_NAME-theme,.layout-gt-xs-row>md-divider.md-THEME_NAME-theme,.layout-lg-row>md-divider.md-THEME_NAME-theme,.layout-md-row>md-divider.md-THEME_NAME-theme,.layout-row>md-divider.md-THEME_NAME-theme,.layout-sm-row>md-divider.md-THEME_NAME-theme,.layout-xl-row>md-divider.md-THEME_NAME-theme,.layout-xs-row>md-divider.md-THEME_NAME-theme{border-right-color:"{{foreground-4}}"}md-icon.md-THEME_NAME-theme{color:"{{foreground-2}}"}md-icon.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}md-icon.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}md-icon.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-input-container.md-THEME_NAME-theme .md-input{color:"{{foreground-1}}";border-color:"{{foreground-4}}"}md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme>md-icon{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme .md-placeholder,md-input-container.md-THEME_NAME-theme label{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme label.md-required:after{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-focused):not(.md-input-invalid) label.md-required:after{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation,md-input-container.md-THEME_NAME-theme .md-input-messages-animation{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation .md-char-counter,md-input-container.md-THEME_NAME-theme .md-input-messages-animation .md-char-counter{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-moz-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-ms-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-webkit-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-resized .md-input{border-color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon{color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input{border-color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent md-icon{color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn md-icon{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter,md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input-message-animation,md-input-container.md-THEME_NAME-theme.md-input-invalid label{color:"{{warn-A700}}"}[disabled] md-input-container.md-THEME_NAME-theme .md-input,md-input-container.md-THEME_NAME-theme .md-input[disabled]{border-bottom-color:transparent;color:"{{foreground-3}}";background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4{color:"{{foreground-1}}"}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style{background-color:"{{background-100}}"}md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon{background-color:"{{foreground-3}}";color:"{{background-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight{color:"{{primary-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight.md-accent{color:"{{accent-color}}"}md-menu-content.md-THEME_NAME-theme{background-color:"{{background-A100}}"}md-menu-content.md-THEME_NAME-theme md-menu-item{color:"{{background-A200-0.87}}"}md-menu-content.md-THEME_NAME-theme md-menu-item md-icon{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled],md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled] md-icon{color:"{{background-A200-0.25}}"}md-menu-content.md-THEME_NAME-theme md-menu-divider{background-color:"{{background-A200-0.11}}"}md-menu-bar.md-THEME_NAME-theme>button.md-button{color:"{{foreground-2}}";border-radius:2px}md-menu-bar.md-THEME_NAME-theme md-menu.md-open>button,md-menu-bar.md-THEME_NAME-theme md-menu>button:focus{outline:none;background:"{{background-200}}"}md-menu-bar.md-THEME_NAME-theme.md-open:not(.md-keyboard-mode) md-menu:hover>button{background-color:"{{ background-500-0.2}}"}md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:focus,md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:hover{background:transparent}md-menu-content.md-THEME_NAME-theme .md-menu>.md-button:after{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme .md-menu.md-open>.md-button{background-color:"{{ background-500-0.2}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar{background-color:"{{background-A100}}";color:"{{background-A200}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler{background-color:"{{primary-color}}";color:"{{background-A100-0.87}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler md-icon{color:"{{background-A100-0.87}}"}md-nav-bar.md-THEME_NAME-theme .md-nav-bar{background-color:transparent;border-color:"{{foreground-4}}"}md-nav-bar.md-THEME_NAME-theme .md-button._md-nav-button.md-unselected{color:"{{foreground-2}}"}md-nav-bar.md-THEME_NAME-theme md-nav-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar{background-color:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar{background-color:"{{warn-color}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar{background-color:"{{primary-color}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{primary-color}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}._md-panel-backdrop.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-progress-circular.md-THEME_NAME-theme path{stroke:"{{primary-color}}"}md-progress-circular.md-THEME_NAME-theme.md-warn path{stroke:"{{warn-color}}"}md-progress-circular.md-THEME_NAME-theme.md-accent path{stroke:"{{accent-color}}"}md-progress-linear.md-THEME_NAME-theme .md-container{background-color:"{{primary-100}}"}md-progress-linear.md-THEME_NAME-theme .md-bar{background-color:"{{primary-color}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-container{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar{background-color:"{{warn-color}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-container{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar{background-color:"{{accent-color}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-primary .md-bar1{background-color:"{{primary-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-primary .md-dashed:before{background:radial-gradient("{{primary-100}}" 0,"{{primary-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before{background:radial-gradient("{{warn-100}}" 0,"{{warn-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before{background:radial-gradient("{{accent-100}}" 0,"{{accent-100}}" 16%,transparent 42%)}md-radio-button.md-THEME_NAME-theme .md-off{border-color:"{{foreground-2}}"}md-radio-button.md-THEME_NAME-theme .md-on{background-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-off{border-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme .md-container .md-ripple{color:"{{accent-A700}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on{background-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off{border-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple{color:"{{primary-600}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on{background-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off{border-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple{color:"{{warn-600}}"}md-radio-button.md-THEME_NAME-theme[disabled],md-radio-group.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}"}md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on{border-color:"{{foreground-3}}"}md-radio-group.md-THEME_NAME-theme .md-checked .md-ink-ripple{color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked:not([disabled]).md-primary .md-ink-ripple,md-radio-group.md-THEME_NAME-theme.md-primary .md-checked:not([disabled]) .md-ink-ripple{color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked.md-primary .md-ink-ripple{color:"{{warn-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before{background-color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-primary .md-checked .md-container:before{background-color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-warn .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-warn .md-checked .md-container:before{background-color:"{{warn-color-0.26}}"}md-input-container md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-input-container:not(.md-input-focused):not(.md-input-invalid) md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{foreground-3}}"}md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value,md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{primary-color}}"}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme[disabled] .md-select-value{border-bottom-color:transparent;background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-select.md-THEME_NAME-theme .md-select-value{border-bottom-color:"{{foreground-4}}"}md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value{border-bottom-color:"{{primary-color}}";color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder{color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value{border-bottom-color:"{{accent-color}}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value{border-bottom-color:"{{warn-color}}"}md-select.md-THEME_NAME-theme[disabled] .md-select-icon,md-select.md-THEME_NAME-theme[disabled] .md-select-value,md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-icon{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content{background:"{{background-A100}}"}md-select-menu.md-THEME_NAME-theme md-content md-optgroup{color:"{{background-600-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option{color:"{{background-900-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[disabled] .md-text{color:"{{background-400-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):focus,md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):hover{background:"{{background-200}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]{color:"{{primary-500}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]:focus{color:"{{primary-600}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent{color:"{{accent-color}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent:focus{color:"{{accent-A700}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ripple{color:"{{primary-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ripple{color:"{{background-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ink-ripple{color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon{background-color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected].md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon:after{border-color:"{{primary-contrast-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}.md-checkbox-enabled.md-THEME_NAME-theme md-option .md-text{color:"{{background-900-0.87}}"}md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}md-slider.md-THEME_NAME-theme .md-track{background-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme .md-track-ticks{color:"{{background-contrast}}"}md-slider.md-THEME_NAME-theme .md-focus-ring{background-color:"{{accent-A200-0.2}}"}md-slider.md-THEME_NAME-theme .md-disabled-thumb{border-color:"{{background-color}}";background-color:"{{background-color}}"}md-slider.md-THEME_NAME-theme.md-min .md-thumb:after{background-color:"{{background-color}}";border-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme.md-min .md-focus-ring{background-color:"{{foreground-3-0.38}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-thumb:after{background-color:"{{background-contrast}}";border-color:transparent}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme .md-track.md-track-fill{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb:after{border-color:"{{accent-color}}";background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign:after{border-top-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb-text{color:"{{accent-contrast}}"}md-slider.md-THEME_NAME-theme.md-warn .md-focus-ring{background-color:"{{warn-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after{border-color:"{{warn-color}}";background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign:after{border-top-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text{color:"{{warn-contrast}}"}md-slider.md-THEME_NAME-theme.md-primary .md-focus-ring{background-color:"{{primary-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after{border-color:"{{primary-color}}";background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign:after{border-top-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text{color:"{{primary-contrast}}"}md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after{border-color:transparent}md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after,md-slider.md-THEME_NAME-theme[disabled][md-discrete] .md-thumb:after{background-color:"{{foreground-3}}";border-color:transparent}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-disabled-thumb{border-color:transparent;background-color:transparent}md-slider-container[disabled]>:first-child:not(md-slider),md-slider-container[disabled]>:last-child:not(md-slider){color:"{{foreground-3}}"}.md-subheader.md-THEME_NAME-theme{color:"{{ foreground-2-0.23 }}";background-color:"{{background-default}}"}.md-subheader.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-subheader.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-subheader.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme .md-ink-ripple{color:"{{background-500}}"}md-switch.md-THEME_NAME-theme .md-thumb{background-color:"{{background-50}}"}md-switch.md-THEME_NAME-theme .md-bar{background-color:"{{background-500}}"}md-switch.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-thumb{background-color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-bar{background-color:"{{accent-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before{background-color:"{{accent-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-ink-ripple{color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb{background-color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar{background-color:"{{primary-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before{background-color:"{{primary-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-ink-ripple{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb{background-color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar{background-color:"{{warn-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before{background-color:"{{warn-color-0.26}}"}md-switch.md-THEME_NAME-theme[disabled] .md-thumb{background-color:"{{background-400}}"}md-switch.md-THEME_NAME-theme[disabled] .md-bar{background-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme md-tabs-wrapper{background-color:transparent;border-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme .md-paginator md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme md-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme .md-tab{color:"{{foreground-2}}"}md-tabs.md-THEME_NAME-theme .md-tab[disabled],md-tabs.md-THEME_NAME-theme .md-tab[disabled] md-icon{color:"{{foreground-3}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-active,md-tabs.md-THEME_NAME-theme .md-tab.md-active md-icon,md-tabs.md-THEME_NAME-theme .md-tab.md-focused,md-tabs.md-THEME_NAME-theme .md-tab.md-focused md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-focused{background:"{{primary-color-0.1}}"}md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper{background-color:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper{background-color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper{background-color:"{{warn-color}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{primary-color}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toast.md-THEME_NAME-theme .md-toast-content{background-color:#323232;color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button{color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight{color:"{{accent-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary{color:"{{primary-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn{color:"{{warn-color}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar){background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) md-icon{color:"{{primary-contrast}}";fill:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) .md-button[disabled] md-icon{color:"{{primary-contrast-0.26}}";fill:"{{primary-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-ink-ripple{color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent md-icon{color:"{{accent-contrast}}";fill:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-button[disabled] md-icon{color:"{{accent-contrast-0.26}}";fill:"{{accent-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-warn{background-color:"{{warn-color}}";color:"{{warn-contrast}}"}.md-panel.md-tooltip.md-THEME_NAME-theme{color:"{{background-700-contrast}}";background-color:"{{background-700}}"}body.md-THEME_NAME-theme,html.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-color}}"}')
36047 }(window, window.angular), window.ngMaterial = {
36053 angular.module("ngCsv.config", []).value("ngCsv.config", {
36055 }).config(["$compileProvider", function(e) {
36056 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
36057 }]), angular.module("ngCsv.directives", ["ngCsv.services"]), angular.module("ngCsv.services", []), angular.module("ngCsv", ["ngCsv.config", "ngCsv.services", "ngCsv.directives", "ngSanitize"]), "undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ngCsv"), angular.module("ngCsv.services").service("CSV", ["$q", function(e) {
36066 this.stringifyField = function(e, t) {
36067 return "locale" === t.decimalSep && this.isFloat(e) ? e.toLocaleString() : "." !== t.decimalSep && this.isFloat(e) ? e.toString().replace(".", t.decimalSep) : "string" == typeof e ? (e = e.replace(/"/g, '""'), (t.quoteStrings || e.indexOf(",") > -1 || e.indexOf("\n") > -1 || e.indexOf("\r") > -1) && (e = t.txtDelim + e + t.txtDelim), e) : "boolean" == typeof e ? e ? "TRUE" : "FALSE" : e
36068 }, this.isFloat = function(e) {
36069 return +e === e && (!isFinite(e) || Boolean(e % 1))
36070 }, this.stringify = function(n, r) {
36075 c = e.when(n).then(function(e) {
36076 if (angular.isDefined(r.header) && r.header) {
36078 n = [], angular.forEach(r.header, function(e, t) {
36079 this.push(o.stringifyField(e, r))
36080 }, n), c = n.join(r.fieldSep ? r.fieldSep : ","), s += c + t
36083 if (angular.isArray(e) ? l = e : angular.isFunction(e) && (l = e()), angular.isDefined(r.label) && r.label && "boolean" == typeof r.label) {
36086 var f = r.columnOrder ? r.columnOrder : l[0];
36087 angular.forEach(f, function(e, t) {
36088 var n = r.columnOrder ? e : t;
36089 this.push(o.stringifyField(n, r))
36090 }, u), d = u.join(r.fieldSep ? r.fieldSep : ","), s += d + t
36092 angular.forEach(l, function(e, n) {
36093 var i, a, c = angular.copy(l[n]);
36095 var u = r.columnOrder ? r.columnOrder : c;
36096 angular.forEach(u, function(e, t) {
36097 var n = r.columnOrder ? c[e] : e;
36098 this.push(o.stringifyField(n, r))
36099 }, a), i = a.join(r.fieldSep ? r.fieldSep : ","), s += n < l.length ? i + t : i
36100 }), r.addByteOrderMarker && (a += "\ufeff"), a += s, i.resolve(a)
36102 return "function" == typeof c.catch && c.catch(function(e) {
36105 }, this.isSpecialChar = function(e) {
36106 return void 0 !== n[e]
36107 }, this.getSpecialChar = function(e) {
36110 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(t, n, r, i, o) {
36115 filename: "@filename",
36116 header: "&csvHeader",
36117 columnOrder: "&csvColumnOrder",
36118 txtDelim: "@textDelimiter",
36119 decimalSep: "@decimalSeparator",
36120 quoteStrings: "@quoteStrings",
36121 fieldSep: "@fieldSeparator",
36122 lazyLoad: "@lazyLoad",
36123 addByteOrderMarker: "@addBom",
36125 charset: "@charset",
36128 controller: ["$scope", "$element", "$attrs", "$transclude", function(e, t, i, o) {
36131 txtDelim: e.txtDelim ? e.txtDelim : '"',
36132 decimalSep: e.decimalSep ? e.decimalSep : ".",
36133 quoteStrings: e.quoteStrings,
36134 addByteOrderMarker: e.addByteOrderMarker
36136 return angular.isDefined(i.csvHeader) && (t.header = e.$eval(e.header)), angular.isDefined(i.csvColumnOrder) && (t.columnOrder = e.$eval(e.columnOrder)), angular.isDefined(i.csvLabel) && (t.label = e.$eval(e.label)), t.fieldSep = e.fieldSep ? e.fieldSep : ",", t.fieldSep = r.isSpecialChar(t.fieldSep) ? r.getSpecialChar(t.fieldSep) : t.fieldSep, t
36138 e.csv = "", angular.isDefined(e.lazyLoad) && "true" == e.lazyLoad || angular.isArray(e.data) && e.$watch("data", function(t) {
36140 }, !0), e.getFilename = function() {
36141 return e.filename || "download.csv"
36142 }, e.buildCSV = function() {
36145 return t.addClass(i.ngCsvLoadingClass || "ng-csv-loading"), s = e.data(), angular.isFunction(s) && (s = s()), r.stringify(s, a()).then(function(n) {
36146 e.csv = n, t.removeClass(i.ngCsvLoadingClass || "ng-csv-loading"), o.resolve(n)
36147 }), e.$apply(), o.promise
36150 link: function(t, n, r) {
36152 var n = t.charset || "utf-8",
36153 r = new Blob([t.csv], {
36154 type: "text/csv;charset=" + n + ";"
36156 if (e.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(r, t.getFilename());
36158 var a = angular.element('<div data-tap-disabled="true"><a></a></div>'),
36159 s = angular.element(a.children()[0]);
36160 s.attr("href", e.URL.createObjectURL(r)), s.attr("download", t.getFilename()), i.find("body").append(a), o(function() {
36161 s[0].click(), s.remove()
36165 n.bind("click", function(e) {
36166 t.buildCSV().then(function(e) {
36173 }(window, document),
36175 if ("function" == typeof define && define.amd) define(["jquery"], e);
36176 else if ("object" == typeof module && module.exports) {
36177 var t = require("jquery");
36178 module.exports = e(t)
36181 if (void 0 === e) throw new Error("jQuery.textcomplete requires jQuery");
36182 return function(e) {
36184 var t = function(e) {
36185 console.warn && console.warn(e)
36188 e.fn.textcomplete = function(r, i) {
36189 var o = Array.prototype.slice.call(arguments);
36190 return this.each(function() {
36193 c = s.data("textComplete");
36194 if (c || (i || (i = {}), i._oid = n++, c = new e.fn.textcomplete.Completer(this, i), s.data("textComplete", c)), "string" == typeof r) {
36196 o.shift(), c[r].apply(c, o), "destroy" === r && s.removeData("textComplete")
36197 } else e.each(r, function(n) {
36198 e.each(["header", "footer", "placement", "maxCount"], function(e) {
36199 n[e] && (c.option[e] = n[e], t(e + "as a strategy param is deprecated. Use option."), delete n[e])
36201 }), c.register(e.fn.textcomplete.Strategy.parse(r, {
36212 if (this.$el = e(n), this.id = "textcomplete" + r++, this.strategies = [], this.views = [], this.option = e.extend({}, t.defaults, o), !(this.$el.is("input[type=text]") || this.$el.is("input[type=search]") || this.$el.is("textarea") || n.isContentEditable || "true" == n.contentEditable)) throw new Error("textcomplete must be called on a Textarea or a ContentEditable.");
36213 if (n === n.ownerDocument.activeElement) this.initialize();
36216 this.$el.one("focus." + this.id, function() {
36218 }), this.option.adapter && "CKEditor" != this.option.adapter || "undefined" == typeof CKEDITOR || !this.$el.is("textarea") || CKEDITOR.on("instanceReady", function(t) {
36219 -1 == e.inArray(t.editor.id, i) && (i.push(t.editor.id), t.editor.on("focus", function(n) {
36220 a.$el = e(t.editor.editable().$), a.option.adapter || (a.option.adapter = e.fn.textcomplete.CKEditor), a.option.ckeditor_instance = t.editor, a.initialize()
36225 var n = function(e) {
36226 return "[object String]" === Object.prototype.toString.call(e)
36233 dropdownClassName: "dropdown-menu textcomplete-dropdown",
36236 rightEdgeOffset: 30
36237 }, e.extend(t.prototype, {
36245 initialize: function() {
36246 var t = this.$el.get(0);
36247 if (this.$el.prop("ownerDocument") !== document && window.frames.length)
36248 for (var n = 0; n < window.frames.length; n++)
36249 if (this.$el.prop("ownerDocument") === window.frames[n].document) {
36250 this.$iframe = e(window.frames[n].frameElement);
36253 this.dropdown = new e.fn.textcomplete.Dropdown(t, this, this.option);
36255 this.option.adapter ? r = this.option.adapter : (i = this.$el.is("textarea") || this.$el.is("input[type=text]") || this.$el.is("input[type=search]") ? "number" == typeof t.selectionEnd ? "Textarea" : "IETextarea" : "ContentEditable", r = e.fn.textcomplete[i]), this.adapter = new r(t, this, this.option)
36257 destroy: function() {
36258 this.$el.off("." + this.id), this.adapter && this.adapter.destroy(), this.dropdown && this.dropdown.destroy(), this.$el = this.adapter = this.dropdown = null
36260 deactivate: function() {
36261 this.dropdown && this.dropdown.deactivate()
36263 trigger: function(e, t) {
36264 this.dropdown || this.initialize(), null != e || (e = this.adapter.getTextFromHeadToCaret());
36265 var n = this._extractSearchQuery(e);
36268 if (t && this._term === r && "" !== r) return;
36269 this._term = r, this._search.apply(this, n)
36270 } else this._term = null, this.dropdown.deactivate()
36272 fire: function(e) {
36273 var t = Array.prototype.slice.call(arguments, 1);
36274 return this.$el.trigger(e, t), this
36276 register: function(e) {
36277 Array.prototype.push.apply(this.strategies, e)
36279 select: function(e, t, n) {
36280 this._term = null, this.adapter.select(e, t, n), this.fire("change").fire("textComplete:select", e, t), this.adapter.focus()
36284 _extractSearchQuery: function(t) {
36285 for (var r = 0; r < this.strategies.length; r++) {
36286 var i = this.strategies[r],
36288 if (o || "" === o) {
36289 var a = e.isFunction(i.match) ? i.match(t) : i.match;
36291 var s = t.match(a);
36292 if (s) return [i, s[i.index], s]
36297 _search: function(e) {
36299 return function() {
36300 var r = Array.prototype.slice.call(arguments);
36305 r.unshift(function r() {
36308 n = void 0, o.unshift(r), e.apply(i, o)
36310 }), e.apply(this, r)
36313 }(function(e, t, n, r) {
36315 t.search(n, function(r, o) {
36316 i.dropdown.shown || i.dropdown.activate(), i._clearAtNext && (i.dropdown.clear(), i._clearAtNext = !1), i.dropdown.setPosition(i.adapter.getCaretPosition()), i.dropdown.render(i._zip(r, t, n)), o || (e(), i._clearAtNext = !0)
36319 _zip: function(t, n, r) {
36320 return e.map(t, function(e) {
36328 }), e.fn.textcomplete.Completer = t
36333 function t(n, r, o) {
36334 this.$el = t.createElement(o), this.completer = r, this.id = r.id + "dropdown", this._data = [], this.$inputEl = e(n), this.option = o, o.listPosition && (this.setPosition = o.listPosition), o.height && this.$el.height(o.height);
36336 e.each(["maxCount", "placement", "footer", "header", "noResultsMessage", "className"], function(e, t) {
36337 null != o[t] && (a[t] = o[t])
36338 }), this._bindEvents(n), i[this.id] = this
36341 r = function(e, t) {
36342 var n, r, i = t.strategy.idProperty;
36343 for (n = 0; n < e.length; n++)
36344 if ((r = e[n]).strategy === t.strategy)
36346 if (r.value[i] === t.value[i]) return !0
36347 } else if (r.value === t.value) return !0;
36351 e(document).on("click", function(t) {
36352 var n = t.originalEvent && t.originalEvent.keepTextCompleteDropdown;
36353 e.each(i, function(e, t) {
36354 e !== n && t.deactivate()
36367 createElement: function(t) {
36368 var n = t.appendTo;
36369 return n instanceof e || (n = e(n)), e("<ul></ul>").addClass(t.dropdownClassName).attr("id", "textcomplete-dropdown-" + t._oid).css({
36372 position: "absolute",
36376 }), e.extend(t.prototype, {
36388 destroy: function() {
36389 this.deactivate(), this.$el.off("." + this.id), this.$inputEl.off("." + this.id), this.clear(), this.$el.remove(), this.$el = this.$inputEl = this.completer = null, delete i[this.id]
36391 render: function(t) {
36392 var n = this._buildContents(t),
36393 r = e.map(t, function(e) {
36397 var i = t[0].strategy;
36398 i.id ? this.$el.attr("data-strategy", i.id) : this.$el.removeAttr("data-strategy"), this._renderHeader(r), this._renderFooter(r), n && (this._renderContents(n), this._fitToBottom(), this._fitToRight(), this._activateIndexedItem()), this._setScroll()
36399 } else this.noResultsMessage ? this._renderNoResultsMessage(r) : this.shown && this.deactivate()
36401 setPosition: function(t) {
36402 var r = "absolute";
36403 return this.$inputEl.add(this.$inputEl.parents()).each(function() {
36404 return "absolute" !== e(this).css("position") && ("fixed" === e(this).css("position") ? (t.top -= n.scrollTop(), t.left -= n.scrollLeft(), r = "fixed", !1) : void 0)
36405 }), this.$el.css(this._applyPlacement(t)), this.$el.css({
36409 clear: function() {
36410 this.$el.html(""), this.data = [], this._index = 0, this._$header = this._$footer = this._$noResultsMessage = null
36412 activate: function() {
36413 return this.shown || (this.clear(), this.$el.show(), this.className && this.$el.addClass(this.className), this.completer.fire("textComplete:show"), this.shown = !0), this
36415 deactivate: function() {
36416 return this.shown && (this.$el.hide(), this.className && this.$el.removeClass(this.className), this.completer.fire("textComplete:hide"), this.shown = !1), this
36418 isUp: function(e) {
36419 return 38 === e.keyCode || e.ctrlKey && 80 === e.keyCode
36421 isDown: function(e) {
36422 return 40 === e.keyCode || e.ctrlKey && 78 === e.keyCode
36424 isEnter: function(e) {
36425 return !(e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) && (13 === e.keyCode || 9 === e.keyCode || !0 === this.option.completeOnSpace && 32 === e.keyCode)
36427 isPageup: function(e) {
36428 return 33 === e.keyCode
36430 isPagedown: function(e) {
36431 return 34 === e.keyCode
36433 isEscape: function(e) {
36434 return 27 === e.keyCode
36439 _$noResultsMessage: null,
36441 _bindEvents: function() {
36442 this.$el.on("mousedown." + this.id, ".textcomplete-item", e.proxy(this._onClick, this)), this.$el.on("touchstart." + this.id, ".textcomplete-item", e.proxy(this._onClick, this)), this.$el.on("mouseover." + this.id, ".textcomplete-item", e.proxy(this._onMouseover, this)), this.$inputEl.on("keydown." + this.id, e.proxy(this._onKeydown, this))
36444 _onClick: function(t) {
36445 var n = e(t.target);
36446 t.preventDefault(), t.originalEvent.keepTextCompleteDropdown = this.id, n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item"));
36447 var r = this.data[parseInt(n.data("index"), 10)];
36448 this.completer.select(r.value, r.strategy, t);
36450 setTimeout(function() {
36451 i.deactivate(), "touchstart" === t.type && i.$inputEl.focus()
36454 _onMouseover: function(t) {
36455 var n = e(t.target);
36456 t.preventDefault(), n.hasClass("textcomplete-item") || (n = n.closest(".textcomplete-item")), this._index = parseInt(n.data("index"), 10), this._activateIndexedItem()
36458 _onKeydown: function(t) {
36461 switch (e.isFunction(this.option.onKeydown) && (n = this.option.onKeydown(t, o)), null == n && (n = this._defaultKeydown(t)), n) {
36463 t.preventDefault(), this._up();
36466 t.preventDefault(), this._down();
36469 t.preventDefault(), this._enter(t);
36472 t.preventDefault(), this._pageup();
36474 case o.KEY_PAGEDOWN:
36475 t.preventDefault(), this._pagedown();
36478 t.preventDefault(), this.deactivate()
36482 _defaultKeydown: function(e) {
36483 return this.isUp(e) ? o.KEY_UP : this.isDown(e) ? o.KEY_DOWN : this.isEnter(e) ? o.KEY_ENTER : this.isPageup(e) ? o.KEY_PAGEUP : this.isPagedown(e) ? o.KEY_PAGEDOWN : this.isEscape(e) ? o.KEY_ESCAPE : void 0
36486 0 === this._index ? this._index = this.data.length - 1 : this._index -= 1, this._activateIndexedItem(), this._setScroll()
36488 _down: function() {
36489 this._index === this.data.length - 1 ? this._index = 0 : this._index += 1, this._activateIndexedItem(), this._setScroll()
36491 _enter: function(e) {
36492 var t = this.data[parseInt(this._getActiveElement().data("index"), 10)];
36493 this.completer.select(t.value, t.strategy, e), this.deactivate()
36495 _pageup: function() {
36497 n = this._getActiveElement().position().top - this.$el.innerHeight();
36498 this.$el.children().each(function(r) {
36499 if (e(this).position().top + e(this).outerHeight() > n) return t = r, !1
36500 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36502 _pagedown: function() {
36503 var t = this.data.length - 1,
36504 n = this._getActiveElement().position().top + this.$el.innerHeight();
36505 this.$el.children().each(function(r) {
36506 if (e(this).position().top > n) return t = r, !1
36507 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36509 _activateIndexedItem: function() {
36510 this.$el.find(".textcomplete-item.active").removeClass("active"), this._getActiveElement().addClass("active")
36512 _getActiveElement: function() {
36513 return this.$el.children(".textcomplete-item:nth(" + this._index + ")")
36515 _setScroll: function() {
36516 var e = this._getActiveElement(),
36517 t = e.position().top,
36518 n = e.outerHeight(),
36519 r = this.$el.innerHeight(),
36520 i = this.$el.scrollTop();
36521 0 === this._index || this._index == this.data.length - 1 || t < 0 ? this.$el.scrollTop(t + i) : t + n > r && this.$el.scrollTop(t + n + i - r)
36523 _buildContents: function(e) {
36524 var t, n, i, o = "";
36525 for (n = 0; n < e.length && this.data.length !== this.maxCount; n++) t = e[n], r(this.data, t) || (i = this.data.length, this.data.push(t), o += '<li class="textcomplete-item" data-index="' + i + '"><a>', o += t.strategy.template(t.value, t.term), o += "</a></li>");
36528 _renderHeader: function(t) {
36530 this._$header || (this._$header = e('<li class="textcomplete-header"></li>').prependTo(this.$el));
36531 var n = e.isFunction(this.header) ? this.header(t) : this.header;
36532 this._$header.html(n)
36535 _renderFooter: function(t) {
36537 this._$footer || (this._$footer = e('<li class="textcomplete-footer"></li>').appendTo(this.$el));
36538 var n = e.isFunction(this.footer) ? this.footer(t) : this.footer;
36539 this._$footer.html(n)
36542 _renderNoResultsMessage: function(t) {
36543 if (this.noResultsMessage) {
36544 this._$noResultsMessage || (this._$noResultsMessage = e('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));
36545 var n = e.isFunction(this.noResultsMessage) ? this.noResultsMessage(t) : this.noResultsMessage;
36546 this._$noResultsMessage.html(n)
36549 _renderContents: function(e) {
36550 this._$footer ? this._$footer.before(e) : this.$el.append(e)
36552 _fitToBottom: function() {
36553 var e = n.scrollTop() + n.height(),
36554 t = this.$el.height();
36555 this.$el.position().top + t > e && (this.completer.$iframe || this.$el.offset({
36559 _fitToRight: function() {
36560 for (var e, t = this.option.rightEdgeOffset, r = this.$el.offset().left, i = this.$el.width(), o = n.width() - t; r + i > o && (this.$el.offset({
36562 }), !((e = this.$el.offset().left) >= r));) r = e
36564 _applyPlacement: function(e) {
36565 return -1 !== this.placement.indexOf("top") ? e = {
36567 bottom: this.$el.parent().height() - e.top + e.lineHeight,
36569 } : (e.bottom = "auto", delete e.lineHeight), -1 !== this.placement.indexOf("absleft") ? e.left = 0 : -1 !== this.placement.indexOf("absright") && (e.right = 0, e.left = "auto"), e
36571 }), e.fn.textcomplete.Dropdown = t, e.extend(e.fn.textcomplete, o)
36577 e.extend(this, t), this.cache && (this.search = n(this.search))
36579 var n = function(e) {
36581 return function(n, r) {
36582 t[n] ? r(t[n]) : e.call(this, n, function(e) {
36583 t[n] = (t[n] || []).concat(e), r.apply(null, arguments)
36587 t.parse = function(n, r) {
36588 return e.map(n, function(e) {
36590 return n.el = r.el, n.$el = r.$el, n
36592 }, e.extend(t.prototype, {
36598 context: function() {
36602 template: function(e) {
36606 }), e.fn.textcomplete.Strategy = t
36612 var n = Date.now || function() {
36613 return (new Date).getTime()
36615 r = function(e, t) {
36616 var r, i, o, a, s, c = function() {
36618 l < t ? r = setTimeout(c, t - l) : (r = null, s = e.apply(o, i), o = i = null)
36620 return function() {
36621 return o = this, i = arguments, a = n(), r || (r = setTimeout(c, t)), s
36624 e.extend(t.prototype, {
36630 initialize: function(t, n, i) {
36631 this.el = t, this.$el = e(t), this.id = n.id + this.constructor.name, this.completer = n, this.option = i, this.option.debounce && (this._onKeyup = r(this._onKeyup, this.option.debounce)), this._bindEvents()
36633 destroy: function() {
36634 this.$el.off("." + this.id), this.$el = this.el = this.completer = null
36636 select: function() {
36637 throw new Error("Not implemented")
36639 getCaretPosition: function() {
36640 var t = this._getCaretRelativePosition(),
36641 n = this.$el.offset(),
36642 r = this.option.appendTo;
36644 r instanceof e || (r = e(r));
36645 var i = r.offsetParent().offset();
36646 n.top -= i.top, n.left -= i.left
36648 return t.top += n.top, t.left += n.left, t
36650 focus: function() {
36653 _bindEvents: function() {
36654 this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36656 _onKeyup: function(e) {
36657 this._skipSearch(e) || this.completer.trigger(this.getTextFromHeadToCaret(), !0)
36659 _skipSearch: function(e) {
36660 switch (e.keyCode) {
36673 if (e.ctrlKey) switch (e.keyCode) {
36679 }), e.fn.textcomplete.Adapter = t
36684 function t(e, t, n) {
36685 this.initialize(e, t, n)
36687 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36688 select: function(t, n, r) {
36689 var i, o = this.getTextFromHeadToCaret(),
36690 a = this.el.value.substring(this.el.selectionEnd),
36691 s = n.replace(t, r);
36692 void 0 !== s && (e.isArray(s) && (a = s[1] + a, s = s[0]), i = e.isFunction(n.match) ? n.match(o) : n.match, o = o.replace(i, s), this.$el.val(o + a), this.el.selectionStart = this.el.selectionEnd = o.length)
36694 getTextFromHeadToCaret: function() {
36695 return this.el.value.substring(0, this.el.selectionEnd)
36697 _getCaretRelativePosition: function() {
36698 var t = e.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart);
36700 top: t.top + this._calculateLineHeight() - this.$el.scrollTop(),
36701 left: t.left - this.$el.scrollLeft(),
36702 lineHeight: this._calculateLineHeight()
36705 _calculateLineHeight: function() {
36706 var e = parseInt(this.$el.css("line-height"), 10);
36708 var t = this.el.parentNode,
36709 n = document.createElement(this.el.nodeName),
36711 n.setAttribute("style", "margin:0px;padding:0px;font-family:" + r.fontFamily + ";font-size:" + r.fontSize), n.innerHTML = "test", t.appendChild(n), e = n.clientHeight, t.removeChild(n)
36715 }), e.fn.textcomplete.Textarea = t
36720 function t(t, r, i) {
36721 this.initialize(t, r, i), e("<span>" + n + "</span>").css({
36722 position: "absolute",
36728 e.extend(t.prototype, e.fn.textcomplete.Textarea.prototype, {
36729 select: function(t, n, r) {
36730 var i, o = this.getTextFromHeadToCaret(),
36731 a = this.el.value.substring(o.length),
36732 s = n.replace(t, r);
36733 if (void 0 !== s) {
36734 e.isArray(s) && (a = s[1] + a, s = s[0]), i = e.isFunction(n.match) ? n.match(o) : n.match, o = o.replace(i, s), this.$el.val(o + a), this.el.focus();
36735 var c = this.el.createTextRange();
36736 c.collapse(!0), c.moveEnd("character", o.length), c.moveStart("character", o.length), c.select()
36739 getTextFromHeadToCaret: function() {
36741 var e = document.selection.createRange();
36742 e.moveStart("character", -this.el.value.length);
36743 var t = e.text.split(n);
36744 return 1 === t.length ? t[0] : t[1]
36746 }), e.fn.textcomplete.IETextarea = t
36751 function t(e, t, n) {
36752 this.initialize(e, t, n)
36754 e.extend(t.prototype, e.fn.textcomplete.Adapter.prototype, {
36755 select: function(t, n, r) {
36756 var i = this.getTextFromHeadToCaret(),
36757 o = this.el.ownerDocument.getSelection(),
36758 a = o.getRangeAt(0),
36759 s = a.cloneRange();
36760 s.selectNodeContents(a.startContainer);
36761 var c, l = s.toString().substring(a.startOffset),
36762 u = n.replace(t, r);
36763 if (void 0 !== u) {
36764 e.isArray(u) && (l = u[1] + l, u = u[0]), c = e.isFunction(n.match) ? n.match(i) : n.match, i = i.replace(c, u).replace(/ $/, " "), a.selectNodeContents(a.startContainer), a.deleteContents();
36765 var d = this.el.ownerDocument.createElement("div");
36767 var f = this.el.ownerDocument.createElement("div");
36769 for (var h, p, m = this.el.ownerDocument.createDocumentFragment(); h = d.firstChild;) p = m.appendChild(h);
36770 for (; h = f.firstChild;) m.appendChild(h);
36771 a.insertNode(m), a.setStartAfter(p), a.collapse(!0), o.removeAllRanges(), o.addRange(a)
36774 _getCaretRelativePosition: function() {
36775 var t = this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),
36776 n = t.endContainer.parentNode,
36777 r = this.el.ownerDocument.createElement("span");
36778 t.insertNode(r), t.selectNodeContents(r), t.deleteContents(), setTimeout(function() {
36783 if (o.left -= this.$el.offset().left, o.top += i.height() - this.$el.offset().top, o.lineHeight = i.height(), this.completer.$iframe) {
36784 var a = this.completer.$iframe.offset();
36785 o.top += a.top, o.left += a.left, o.top -= e(this.completer.$iframe[0].contentWindow.document).scrollTop()
36787 return i.remove(), o
36789 getTextFromHeadToCaret: function() {
36790 var e = this.el.ownerDocument.getSelection().getRangeAt(0),
36791 t = e.cloneRange();
36792 return t.selectNodeContents(e.startContainer), t.toString().substring(0, e.startOffset)
36794 }), e.fn.textcomplete.ContentEditable = t
36799 function t(e, t, n) {
36800 this.initialize(e, t, n)
36802 e.extend(t.prototype, e.fn.textcomplete.ContentEditable.prototype, {
36803 _bindEvents: function() {
36805 this.option.ckeditor_instance.on("key", function(e) {
36807 if (t._onKeyup(n), t.completer.dropdown.shown && t._skipSearch(n)) return !1
36808 }, null, null, 1), this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36810 }), e.fn.textcomplete.CKEditor = t
36813 var t = ["direction", "boxSizing", "width", "height", "overflowX", "overflowY", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderStyle", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "fontStyle", "fontVariant", "fontWeight", "fontStretch", "fontSize", "fontSizeAdjust", "lineHeight", "fontFamily", "textAlign", "textTransform", "textIndent", "textDecoration", "letterSpacing", "wordSpacing", "tabSize", "MozTabSize"],
36814 n = "undefined" != typeof window,
36815 r = n && null != window.mozInnerScreenX;
36816 e.fn.textcomplete.getCaretCoordinates = function(e, i, o) {
36817 if (!n) throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");
36818 var a = o && o.debug || !1;
36820 var s = document.querySelector("#input-textarea-caret-position-mirror-div");
36821 s && s.parentNode.removeChild(s)
36823 var c = document.createElement("div");
36824 c.id = "input-textarea-caret-position-mirror-div", document.body.appendChild(c);
36826 u = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;
36827 l.whiteSpace = "pre-wrap", "INPUT" !== e.nodeName && (l.wordWrap = "break-word"), l.position = "absolute", a || (l.visibility = "hidden"), t.forEach(function(e) {
36829 }), r ? e.scrollHeight > parseInt(u.height) && (l.overflowY = "scroll") : l.overflow = "hidden", c.textContent = e.value.substring(0, i), "INPUT" === e.nodeName && (c.textContent = c.textContent.replace(/\s/g, " "));
36830 var d = document.createElement("span");
36831 d.textContent = e.value.substring(i) || ".", c.appendChild(d);
36833 top: d.offsetTop + parseInt(u.borderTopWidth),
36834 left: d.offsetLeft + parseInt(u.borderLeftWidth)
36836 return a ? d.style.backgroundColor = "#aaa" : document.body.removeChild(c), f
36839 }), window = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, document = window.document || {},
36841 "function" == typeof require && "object" == typeof exports && "object" == typeof module ? e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(t.jQuery)
36846 S ? e() : O.push(e)
36849 function n(t, n, r) {
36853 n = n.toLowerCase();
36855 var a = 1 == o ? "@" + n : n;
36856 M[t.id][a] && M[t.id][a].length && e.each(M[t.id][a], function(e, n) {
36857 return i = !1 !== n.apply(t, r || [])
36864 function r(t, n, r, i) {
36865 i = i || function(t, n) {
36866 return e(n.currentTarget)
36867 }, e.each(r, function(o, a) {
36868 o = e.isArray(r) ? a : o, (A[t.id][a] || (A[t.id][a] = [])).push([n, o, i])
36872 function i(e, t, n) {
36873 var r, i = S.imageType;
36874 r = "svg" == i ? S.imagePathSVG : S.imagePathPNG;
36876 n && (o = n.substr(1, n.length - 2).replace(/_/g, " ").replace(/\w\S*/g, function(e) {
36877 return e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()
36880 return t.uc_base && R > 4 ? (a = t.uc_base, t = t.uc_output.toUpperCase()) : a = t, e.replace("{name}", n || "").replace("{friendlyName}", o).replace("{img}", r + (2 > R ? a.toUpperCase() : a) + "." + i).replace("{uni}", t).replace("{alt}", S.convert(t))
36883 function o(e, t, n) {
36884 return e.replace(/:?\+?[\w_\-]+:?/g, function(e) {
36885 e = ":" + e.replace(/:$/, "").replace(/^:/, "") + ":";
36886 var r = S.emojioneList[e];
36887 return r ? R > 4 ? i(t, r, e) : (R > 3 && (r = r.unicode), i(t, r[r.length - 1], e)) : n ? "" : e
36893 if (window.getSelection) {
36894 if ((t = window.getSelection()).getRangeAt && t.rangeCount) {
36895 (n = t.getRangeAt(0)).deleteContents();
36896 var r = document.createElement("div");
36898 for (var i, o, a = document.createDocumentFragment(); i = r.firstChild;) o = a.appendChild(i);
36899 n.insertNode(a), o && ((n = n.cloneRange()).setStartAfter(o), n.collapse(!0), t.removeAllRanges(), t.addRange(n))
36901 } else document.selection && "Control" != document.selection.type && document.selection.createRange().pasteHTML(e)
36905 return "object" == typeof e
36910 return e.cacheBustParam ? (t = e.cacheBustParam, s(e.jsEscapeMap) ? "?v=1.2.4" === t ? "2.0.0" : "?v=2.0.1" === t ? "2.1.0" : "?v=2.1.1" === t ? "2.1.1" : "?v=2.1.2" === t ? "2.1.2" : "?v=2.1.3" === t ? "2.1.3" : "?v=2.1.4" === t ? "2.1.4" : "2.2.7" : "1.5.2") : e.emojiVersion
36944 if (t && t.filters) {
36946 e.each(t.filters, function(t, n) {
36947 return !s(n) || e.isEmptyObject(n) ? void delete r[t] : void e.each(n, function(e, n) {
36952 return e.extend({}, n, t)
36956 return e.replace(L, function(e) {
36957 var n = S[0 === R ? "jsecapeMap" : "jsEscapeMap"];
36958 return void 0 !== e && e in n ? i(t, n[e]) : e
36963 return e = e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/`/g, "`").replace(/(?:\r\n|\r|\n)/g, "\n").replace(/(\n+)/g, "<div>$1</div>").replace(/\n/g, "<br/>").replace(/<br\/><\/div>/g, "</div>"), t.shortnames && (e = S.shortnameToUnicode(e)), d(e, t.emojiTemplate).replace(/\t/g, " ").replace(/ /g, " ")
36967 switch (e = e.replace(/ /g, "\n").replace(/	/g, "\t").replace(/<img[^>]*alt="([^"]+)"[^>]*>/gi, "$1").replace(/\n|\r/g, "").replace(/<br[^>]*>/gi, "\n").replace(/(?:<(?:div|p|ol|ul|li|pre|code|object)[^>]*>)+/gi, "<div>").replace(/(?:<\/(?:div|p|ol|ul|li|pre|code|object)>)+/gi, "</div>").replace(/\n<div><\/div>/gi, "\n").replace(/<div><\/div>\n/gi, "\n").replace(/(?:<div>)+<\/div>/gi, "\n").replace(/([^\n])<\/div><div>/gi, "$1\n").replace(/(?:<\/div>)+/gi, "</div>").replace(/([^\n])<\/div>([^\n])/gi, "$1\n$2").replace(/<\/div>/gi, "").replace(/([^\n])<div>/gi, "$1\n").replace(/\n<div>/gi, "\n").replace(/<div>\n/gi, "\n\n").replace(/<(?:[^>]+)?>/g, "").replace(new RegExp(P, "g"), "").replace(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/`/g, "`").replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"), t.saveEmojisAs) {
36969 e = d(e, t.emojiTemplate);
36979 t = e.editor[0].offsetWidth - e.editor[0].clientWidth,
36980 n = parseInt(e.button.css("marginRight"));
36981 n !== t && (e.button.css({
36983 }), e.floatingPicker && e.picker.css({
36984 right: parseInt(e.picker.css("right")) - n + t
36990 if (!t.sprite && t.lasyEmoji[0]) {
36991 var n = t.picker.offset().top,
36992 r = n + t.picker.height() + 20;
36993 t.lasyEmoji.each(function() {
36995 i = t.offset().top;
36996 i > n && r > i && t.attr("src", t.data("src")).removeClass("lazy-emoji")
36997 }), t.lasyEmoji = t.lasyEmoji.filter(".lazy-emoji")
37002 return (t ? "" : ".") + I + (e ? "-" + e : "")
37006 var n = e("<div/>", s(t) ? t : {
37009 return e.each(N.call(arguments).slice(1), function(t, r) {
37010 e.isFunction(r) && (r = r.call(n)), r && e(r).appendTo(n)
37015 return localStorage.getItem("recent_emojis") || ""
37020 if (!t.recent || t.recent !== r || n) {
37022 var i, a, s = t.scrollArea.is(".skinnable");
37023 s || (i = t.scrollArea.scrollTop(), n && t.recentCategory.show(), a = t.recentCategory.is(":visible") ? t.recentCategory.height() : 0);
37024 var c = o(r, t.emojiBtnTemplate, !0).split("|").join("");
37025 if (t.recentCategory.children(".emojibtn").remove(), e(c).insertAfter(t.recentCategory.children(".emojionearea-category-title")), t.recentCategory.children(".emojibtn").on("click", function() {
37026 t.trigger("emojibtn.click", e(this))
37027 }), t.recentFilter.show(), !s) {
37028 t.recentCategory.show();
37029 var l = t.recentCategory.height();
37030 a !== l && t.scrollArea.scrollTop(i + l - a)
37032 } else t.recentFilter.hasClass("active") && t.recentFilter.removeClass("active").next().addClass("active"), t.recentCategory.hide(), t.recentFilter.hide();
37038 var n = b().split("|"),
37039 r = n.indexOf(t); - 1 !== r && n.splice(r, 1), n.unshift(t), n.length > 9 && n.pop(), localStorage.setItem("recent_emojis", n.join("|")), y(e)
37045 return localStorage.setItem(e, e), localStorage.removeItem(e), !0
37051 function w(t, i, c) {
37052 c = u(c), t.sprite = c.sprite && 3 > R, t.inline = null === c.inline ? i.is("INPUT") : c.inline, t.shortnames = c.shortnames, t.saveEmojisAs = c.saveEmojisAs, t.standalone = c.standalone, t.emojiTemplate = '<img alt="{alt}" class="emojione' + (t.sprite ? '-{uni}" src="' + D + '"/>' : 'emoji" src="{img}"/>'), t.emojiTemplateAlt = t.sprite ? '<i class="emojione-{uni}"/>' : '<img class="emojioneemoji" src="{img}"/>', t.emojiBtnTemplate = '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}">' + t.emojiTemplateAlt + "</i>", t.recentEmojis = c.recentEmojis && $();
37053 var l = c.pickerPosition;
37054 t.floatingPicker = "top" === l || "bottom" === l, t.source = i, (i.is(":disabled") || i.is(".disabled")) && t.disable();
37055 var d, w, E, k, T, M, A, O, N, j, H = i.is("TEXTAREA") || i.is("INPUT") ? "val" : "text",
37057 class: I + (t.standalone ? " " + I + "-standalone " : " ") + (i.attr("class") || ""),
37058 role: "application"
37059 }, d = t.editor = v("editor").attr({
37060 contenteditable: !t.standalone,
37061 placeholder: c.placeholder || i.data("placeholder") || i.attr("placeholder") || "",
37063 }), w = t.button = v("button", v("button-open"), v("button-close")).attr("title", c.buttonTitle), E = t.picker = v("picker", v("wrapper", T = v("filters"), A = v("search", c.search ? function() {
37064 t.search = e("<input/>", {
37065 placeholder: "SEARCH",
37068 }), this.append(t.search)
37069 } : null), k = v("tones", function() {
37071 this.addClass(g("tones-" + c.tonesStyle, !0));
37072 for (var t = 0; 5 >= t; t++) this.append(e("<i/>", {
37073 class: "btn-tone btn-tone-" + t + (t ? "" : " active"),
37078 }), j = v("scroll-area", O = v("emojis-list")))).addClass(g("picker-position-" + c.pickerPosition, !0)).addClass(g("filters-position-" + c.filtersPosition, !0)).addClass("hidden"));
37079 if (t.searchSel = null, d.data(i.data()), e.each(c.attributes, function(e, t) {
37081 }), v("category").attr({
37083 }).appendTo(O), e.each(c.filters, function(n, r) {
37085 if ("recent" !== n || t.recentEmojis) {
37086 if ("tones" !== n) e("<i/>", {
37087 class: g("filter", !0) + " " + g("filter-" + n, !0),
37090 }).wrapInner(o(r.icon, t.emojiTemplateAlt)).appendTo(T);
37092 if (!c.tones) return;
37100 0 === i ? (a = O.children('[data-tone="0"]'), s["data-sub-category"] = !0) : a = O;
37101 var l = v("category").attr(s).appendTo(a),
37102 u = r.emoji.replace(/[\s,;]+/g, "|");
37103 i > 0 && (l.hide(), u = u.split("|").join("_tone" + i + "|") + "_tone" + i), "recent" === n && (u = b()), u = o(u, t.sprite ? '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><i class="emojione-{uni}"></i></i>' : '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><img class="emojioneemoji lazy-emoji" data-src="{img}"/></i>', !0).split("|").join(""), l.html(u), e('<div class="emojionearea-category-title"/>').text(r.title).prependTo(l)
37106 }), c.filters = null, t.sprite || (t.lasyEmoji = O.find(".lazy-emoji")), (M = T.find(g("filter"))).eq(0).addClass("active"), N = O.find(g("category")), t.recentFilter = M.filter('[data-filter="recent"]'), t.recentCategory = N.filter("[name=recent]"), t.scrollArea = j, c.container ? e(c.container).wrapInner(L) : L.insertAfter(i), c.hideSource && i.hide(), t.setText(i[H]()), i[H](t.getText()), p.apply(t), t.standalone && !t.getText().length) {
37107 var F = e(i).data("emoji-placeholder") || c.emojiPlaceholder;
37108 t.setText(F), d.addClass("has-placeholder")
37110 r(t, O.find(".emojibtn"), {
37111 click: "emojibtn.click"
37114 }), r(t, k.children(), {
37115 click: "tone.click"
37117 mousedown: "!mousedown"
37119 click: "button.click"
37122 }, d), r(t, d, ["focus", "blur"], function() {
37123 return !t.stayFocused && d
37125 mousedown: "picker.mousedown",
37126 mouseup: "picker.mouseup",
37127 click: "picker.click",
37128 keyup: "picker.keyup",
37129 keydown: "picker.keydown",
37130 keypress: "picker.keypress"
37131 }), r(t, d, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]), r(t, E.find(".emojionearea-filter"), {
37132 click: "filter.click"
37133 }), c.search && r(t, t.search, {
37134 keyup: "search.keypress",
37135 focus: "search.focus",
37136 blur: "search.blur"
37139 if (j.on("scroll", function() {
37140 if (!q && (m.call(t), j.is(":not(.skinnable)"))) {
37142 r = j.offset().top;
37143 N.each(function(t, i) {
37144 return !(e(i).offset().top - r >= 10) && void(n = e(i))
37146 var i = M.filter('[data-filter="' + n.attr("name") + '"]');
37147 i[0] && !i.is(".active") && (M.removeClass("active"), i.addClass("active"))
37149 }), t.on("@filter.click", function(e) {
37150 var n = e.is(".active");
37151 if (j.is(".skinnable")) {
37153 k.children().eq(0).click()
37155 q = !0, n || (M.filter(".active").removeClass("active"), e.addClass("active"));
37156 var r = N.filter('[name="' + e.data("filter") + '"]').offset().top,
37158 o = j.offset().top;
37160 scrollTop: r + i - o - 2
37161 }, 200, "swing", function() {
37164 }).on("@picker.show", function() {
37165 t.recentEmojis && y(t), m.call(t)
37166 }).on("@tone.click", function(e) {
37167 k.children().removeClass("active");
37168 var n = e.addClass("active").data("skin");
37169 n ? (j.addClass("skinnable"), N.filter(":not([data-sub-category])").hide().filter("[data-tone=" + n + "]").show(), M.eq(0).is('.active[data-filter="recent"]') && M.eq(0).removeClass("active").next().addClass("active")) : (j.removeClass("skinnable"), N.filter(":not([data-sub-category])").hide().filter("[data-tone=0]").show(), M.eq(0).click()), m.call(t), c.search && t.trigger("search.keypress")
37170 }).on("@button.click", function(e) {
37171 e.is(".active") ? t.hidePicker() : (t.showPicker(), t.searchSel = null)
37172 }).on("@!paste", function(r, i) {
37173 var o = function(i) {
37174 var o = "caret-" + (new Date).getTime(),
37176 a(s), a('<i id="' + o + '"></i>'), r.scrollTop(l);
37177 var c = e("#" + o),
37178 u = c.offset().top - r.offset().top,
37180 (l + u >= d || l > u) && r.scrollTop(l + u - 2 * d / 3), c.remove(), t.stayFocused = !1, p.apply(t), n(t, "paste", [r, i, s])
37182 if (i.originalEvent.clipboardData) {
37183 var s = i.originalEvent.clipboardData.getData("text/plain");
37184 return o(s), i.preventDefault ? i.preventDefault() : i.stop(), i.returnValue = !1, i.stopPropagation(), !1
37186 t.stayFocused = !0, a("<span>" + P + "</span>");
37190 contenteditable: !0
37198 }).appendTo(e("BODY")).focus();
37199 window.setTimeout(function() {
37200 r.focus(), x(r[0], c);
37201 var e = h(u.html().replace(/\r\n|\n|\r/g, "<br>"), t);
37204 }).on("@emojibtn.click", function(e) {
37205 d.removeClass("has-placeholder"), null !== t.searchSel && (d.focus(), x(d[0], t.searchSel), t.searchSel = null), t.standalone ? (d.html(o(e.data("name"), t.emojiTemplate)), t.trigger("blur")) : (C(d[0]), a(o(e.data("name"), t.emojiTemplate))), t.recentEmojis && _(t, e.data("name")), t.trigger("search.keypress")
37206 }).on("@!resize @keyup @emojibtn.click", p).on("@!mousedown", function(n, r) {
37207 return e(r.target).hasClass("search") ? (t.stayFocused = !0, null === t.searchSel && (t.searchSel = C(n[0]))) : (L.is(".focused") || n.focus(), r.preventDefault()), !1
37208 }).on("@change", function() {
37209 var e = t.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi, "");
37210 e.length && !/^<br[^>]*>$/i.test(e) || t.editor.html(t.content = ""), i[H](t.getText())
37211 }).on("@focus", function() {
37212 L.addClass("focused")
37213 }).on("@blur", function() {
37214 L.removeClass("focused"), c.hidePickerOnBlur && t.hidePicker();
37215 var e = t.editor.html();
37216 t.content !== e ? (t.content = e, n(t, "change", [t.editor]), i.blur().trigger("change")) : i.blur(), c.search && (t.search.val("").trigger("keyup"), t.trigger("search.keypress"))
37217 }), c.search && t.on("@search.focus", function() {
37218 t.stayFocused = !0, t.search.addClass("focused")
37219 }).on("@search.keypress", function() {
37220 var n = E.find(".emojionearea-filter"),
37221 r = c.tones ? k.find("i.active").data("skin") : 0,
37222 i = t.search.val().replace(/ /g, "_").replace(/"/g, '\\"');
37223 i && i.length ? (t.recentFilter.hasClass("active") && t.recentFilter.removeClass("active").next().addClass("active"), t.recentCategory.hide(), t.recentFilter.hide(), N.filter(":not([data-sub-category])").each(function() {
37224 var t = function(e, t) {
37225 var r = e.find('.emojibtn[data-name*="' + i + '"]');
37226 0 === r.length ? (e.data("tone") === t && e.hide(), n.filter('[data-filter="' + e.attr("name") + '"]').hide()) : (e.find('.emojibtn:not([data-name*="' + i + '"])').hide(), r.show(), e.data("tone") === t && e.show(), n.filter('[data-filter="' + e.attr("name") + '"]').show())
37229 t(o, r), 0 === o.data("tone") && o.children(g("category") + ':not([name="recent"])').each(function() {
37232 }), q ? m.call(t) : j.trigger("scroll")) : (y(t, !0), N.filter('[data-tone="' + k.find("i.active").data("skin") + '"]:not([name="recent"])').show(), e(".emojibtn", N).show(), n.show(), m.call(t))
37233 }).on("@search.blur", function() {
37234 t.stayFocused = !1, t.search.removeClass("focused"), t.trigger("blur")
37235 }), c.shortcuts && t.on("@keydown", function(e, n) {
37236 n.ctrlKey || (9 == n.which ? (n.preventDefault(), w.click()) : 27 == n.which && (n.preventDefault(), w.is(".active") && t.hidePicker()))
37237 }), s(c.events) && !e.isEmptyObject(c.events) && e.each(c.events, function(e, n) {
37238 t.on(e.replace(/_/g, "."), n)
37239 }), c.autocomplete) {
37240 var U = function() {
37242 maxCount: c.textcomplete.maxCount,
37243 placement: c.textcomplete.placement
37245 c.shortcuts && (n.onKeydown = function(e, t) {
37246 return e.ctrlKey || 13 != e.which ? void 0 : t.KEY_ENTER
37248 var r = e.map(S.emojioneList, function(e, t) {
37249 return c.autocompleteTones ? t : /_tone[12345]/.test(t) ? null : t
37251 r.sort(), d.textcomplete([{
37253 match: /\B(:[\-+\w]*)$/,
37254 search: function(t, n) {
37255 n(e.map(r, function(e) {
37256 return 0 === e.indexOf(t) ? e : null
37259 template: function(e) {
37260 return o(e, t.emojiTemplate) + " " + e.replace(/:/g, "")
37262 replace: function(e) {
37263 return o(e, t.emojiTemplate)
37267 }], n), c.textcomplete.placement && "static" == e(d.data("textComplete").option.appendTo).css("position") && e(d.data("textComplete").option.appendTo).css("position", "relative")
37271 var e = function() {
37272 t.off("enabled", e), U()
37277 e.fn.textcomplete ? V() : e.ajax({
37278 url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",
37279 dataType: "script",
37284 t.inline && (L.addClass(g("inline", !0)), t.on("@keydown", function(e, t) {
37285 13 == t.which && t.preventDefault()
37286 })), /firefox/i.test(navigator.userAgent) && document.execCommand("enableObjectResizing", !1, !1), t.isReady = !0, t.trigger("onLoad", d), t.trigger("ready", d)
37290 if (n = u(n), !F.isLoading)
37291 if (!S || l(c(S)) < 2) {
37294 r = l(j) > 5 ? F.defaultBase3 + "npm/emojione@" + j : l(j) > 4 ? F.defaultBase3 + "emojione/" + j : F.defaultBase + "/" + j, e.ajax({
37295 url: r + "/lib/js/emojione.min.js",
37296 dataType: "script",
37298 success: function() {
37299 S = window.emojione, j = c(S);
37301 for ((R = l(j)) > 4 ? (F.base = F.defaultBase3 + "emojione/assets/" + j, t = F.base + "/sprites/emojione-sprite-" + S.emojiSize + ".css") : (F.base = F.defaultBase + j + "/assets", t = F.base + "/sprites/emojione.sprites.css"), n.sprite && (document.createStyleSheet ? document.createStyleSheet(t) : e("<link/>", {
37304 }).appendTo("head")); O.length;) O.shift().call();
37308 } else j = c(S), R = l(j), F.base = R > 4 ? F.defaultBase3 + "emojione/assets/" + j : F.defaultBase + j + "/assets";
37311 n.useInternalCDN && (R > 4 && (e = S.emojiSize + "/"), S.imagePathPNG = F.base + "/png/" + e, S.imagePathSVG = F.base + "/svg/" + e, S.imagePathSVGSprites = F.base + "/sprites/emojione.sprites.svg", S.imageType = n.imageType), l(j) > 4 ? (L = S.regUnicode, S.imageType = n.imageType || "png") : L = new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(" + S.unicodeRegexp + ")", "gi")
37316 r = r.replace(/^@/, "");
37318 A[i][r] && (e.each(A[i][r], function(i, o) {
37319 e.each(e.isArray(o[0]) ? o[0] : [o[0]], function(i, a) {
37320 e(a).on(o[1], function() {
37321 var i = N.call(arguments),
37322 a = e.isFunction(o[2]) ? o[2].apply(t, [r].concat(i)) : o[2];
37323 a && n(t, r, [a].concat(i))
37326 }), A[i][r] = null)
37331 S = window.emojione,
37333 D = "data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",
37335 I = "emojionearea",
37338 j = window.emojioneVersion || "2.2.7",
37340 if (e.fn.emojioneArea && e.fn.emojioneArea.defaults) return e.fn.emojioneArea.defaults;
37345 autocomplete: "off",
37346 autocorrect: "off",
37347 autocapitalize: "off"
37351 emojiPlaceholder: ":smiley:",
37352 searchPlaceholder: "SEARCH",
37357 pickerPosition: "top",
37358 filtersPosition: "top",
37359 hidePickerOnBlur: !0,
37360 buttonTitle: "Use the TAB key to insert emoji faster",
37362 tonesStyle: "bullet",
37364 saveEmojisAs: "unicode",
37367 autocompleteTones: !1,
37369 useInternalCDN: !0,
37377 n = l(S ? c(S) : j);
37378 return t.filters = n > 4 ? {
37380 title: "Diversity",
37381 emoji: "open_hands raised_hands clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear nose baby boy girl man woman blond-haired_woman blond_haired_person blond-haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban person_wearing_turban man_wearing_turban woman_police_officer police_officer man_police_officer woman_construction_worker construction_worker man_construction_worker woman_guard guard man_guard woman_detective detective man_detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman woman_bowing person_bowing man_bowing person_tipping_hand man_tipping_hand woman_tipping_hand person_gesturing_no man_gesturing_no woman_gesturing_no person_gesturing_ok man_gesturing_ok woman_gesturing_ok person_raising_hand man_raising_hand woman_raising_hand woman_facepalming man_facepalming person_facepalming woman_shrugging man_shrugging person_shrugging person_pouting man_pouting woman_pouting person_frowning man_frowning woman_frowning person_getting_haircut man_getting_haircut woman_getting_haircut person_getting_massage man_getting_face_massage woman_getting_face_massage levitate dancer man_dancing woman_walking person_walking man_walking woman_running person_running man_running adult child older_adult bearded_person woman_with_headscarf mage fairy vampire merperson elf love_you_gesture palms_up_together woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf snowboarder woman_lifting_weights person_lifting_weights man_lifting_weights woman_cartwheeling man_cartwheeling person_doing_cartwheel woman_bouncing_ball person_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball person_playing_handball woman_golfing person_golfing man_golfing woman_surfing person_surfing man_surfing woman_swimming person_swimming man_swimming woman_playing_water_polo man_playing_water_polo person_playing_water_polo woman_rowing_boat person_rowing_boat man_rowing_boat horse_racing woman_biking person_biking man_biking woman_mountain_biking person_mountain_biking man_mountain_biking woman_juggling man_juggling person_juggling breast_feeding person_in_steamy_room person_climbing person_in_lotus_position woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position bath sleeping_accommodation"
37390 title: "Smileys & People",
37391 emoji: "grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down wink relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses clown cowboy smirk unamused disappointed pensive worried confused slight_frown frowning2 persevere confounded tired_face weary triumph angry rage no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face flushed scream fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking lying_face grimacing zipper_mouth nauseated_face sneezing_face mask thermometer_face head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader robot jack_o_lantern smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat open_hands raised_hands clap pray handshake thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_person older_man older_woman man_with_chinese_cap woman_wearing_turban person_wearing_turban woman_police_officer police_officer woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman woman_bowing person_bowing person_tipping_hand man_tipping_hand person_gesturing_no man_gesturing_no person_gesturing_ok man_gesturing_ok person_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging person_pouting man_pouting person_frowning man_frowning person_getting_haircut man_getting_haircut person_getting_massage man_getting_face_massage levitate dancer man_dancing people_with_bunny_ears_partying men_with_bunny_ears_partying woman_walking person_walking woman_running person_running couple two_women_holding_hands two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses closed_umbrella umbrella2 face_with_raised_eyebrow star_struck crazy_face shushing_face face_with_symbols_over_mouth face_with_hand_over_mouth face_vomiting exploding_head face_with_monocle adult child older_adult bearded_person woman_with_headscarf brain billed_cap scarf gloves coat socks love_you_gesture palms_up_together woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie"
37395 title: "Animals & Nature",
37396 emoji: "dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado fog ocean droplet sweat_drops umbrella giraffe zebra hedgehog sauropod t_rex cricket"
37400 title: "Food & Drink",
37401 emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food"
37404 icon: "basketball",
37406 emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder woman_lifting_weights person_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling man_cartwheeling woman_bouncing_ball person_bouncing_ball woman_playing_handball man_playing_handball woman_golfing person_golfing woman_surfing person_surfing woman_swimming person_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat person_rowing_boat horse_racing woman_biking person_biking woman_mountain_biking person_mountain_biking running_shirt_with_sash medal military_medal first_place second_place third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling video_game slot_machine sled breast_feeding curling_stone woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position"
37410 title: "Travel & Places",
37411 emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape night_with_stars milky_way bridge_at_night foggy flying_saucer"
37416 emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock orange_heart"
37419 icon: "heartpulse",
37421 emoji: "heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond white_square_button black_square_button black_small_square white_small_square black_medium_small_square white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230"
37426 emoji: "flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf united_nations england scotland wales"
37430 title: "Diversity",
37431 emoji: "santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand"
37440 title: "Smileys & People",
37441 emoji: "grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella"
37445 title: "Animals & Nature",
37446 emoji: "dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean"
37450 title: "Food & Drink",
37451 emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne sake tea coffee baby_bottle fork_and_knife fork_knife_plate"
37454 icon: "basketball",
37456 emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin clapper video_game space_invader dart game_die slot_machine bowling"
37460 title: "Travel & Places",
37461 emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine"
37466 emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain black_nib pencil pencil2 crayon paintbrush mag mag_right"
37469 icon: "heartpulse",
37471 emoji: "heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble"
37476 emoji: "ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc "
37480 window.getSelection && document.createRange ? (C = function(e) {
37481 var t = window.getSelection && window.getSelection();
37482 return t && t.rangeCount > 0 ? t.getRangeAt(0) : void 0
37483 }, x = function(e, t) {
37484 var n = document.createRange();
37485 n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), (t = window.getSelection()).removeAllRanges(), t.addRange(n)
37486 }) : document.selection && document.body.createTextRange && (C = function(e) {
37487 return document.selection.createRange()
37488 }, x = function(e, t) {
37489 var n = document.body.createTextRange();
37490 n.moveToElementText(e), n.setStart(t.startContanier, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n.select()
37493 defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/",
37494 defaultBase3: "https://cdn.jsdelivr.net/",
37498 q = function(e, n) {
37500 E(n), M[r.id = ++T] = {}, A[r.id] = {}, t(function() {
37504 q.prototype.on = function(t, n) {
37505 if (t && e.isFunction(n)) {
37507 e.each(t.toLowerCase().split(" "), function(e, t) {
37508 k(r, t), (M[r.id][t] || (M[r.id][t] = [])).push(n)
37512 }, q.prototype.off = function(t, n) {
37515 e.each(t.toLowerCase().replace(/_/g, ".").split(" "), function(t, i) {
37516 M[r][i] && !/^@/.test(i) && (n ? e.each(M[r][i], function(e, t) {
37517 t === n && (M[r][i] = M[r][i].splice(e, 1))
37522 }, q.prototype.trigger = function() {
37523 var e = N.call(arguments),
37524 t = [this].concat(e.slice(0, 1));
37525 return t.push(e.slice(1)), n.apply(this, t)
37526 }, q.prototype.setFocus = function() {
37528 return t(function() {
37531 }, q.prototype.setText = function(e) {
37533 return t(function() {
37534 r.editor.html(f(e, r)), r.content = r.editor.html(), n(r, "change", [r.editor]), p.apply(r)
37536 }, q.prototype.getText = function() {
37537 return h(this.editor.html(), this)
37538 }, q.prototype.showPicker = function() {
37540 return e._sh_timer && window.clearTimeout(e._sh_timer), e.picker.removeClass("hidden"), e._sh_timer = window.setTimeout(function() {
37541 e.button.addClass("active")
37542 }, 50), n(e, "picker.show", [e.picker]), e
37543 }, q.prototype.hidePicker = function() {
37545 return e._sh_timer && window.clearTimeout(e._sh_timer), e.button.removeClass("active"), e._sh_timer = window.setTimeout(function() {
37546 e.picker.addClass("hidden")
37547 }, 500), n(e, "picker.hide", [e.picker]), e
37548 }, q.prototype.enable = function() {
37551 e.disabled = !1, e.editor.prop("contenteditable", !0), e.button.show();
37552 var t = e[e.standalone ? "button" : "editor"];
37553 t.parent().removeClass("emojionearea-disable"), n(e, "enabled", [t])
37555 return e.isReady ? t() : e.on("ready", t), e
37556 }, q.prototype.disable = function() {
37559 var t = function() {
37560 e.editor.prop("contenteditable", !1), e.hidePicker(), e.button.hide();
37561 var t = e[e.standalone ? "button" : "editor"];
37562 t.parent().addClass("emojionearea-disable"), n(e, "disabled", [t])
37564 return e.isReady ? t() : e.on("ready", t), e
37565 }, e.fn.emojioneArea = function(t) {
37566 return this.each(function() {
37567 return this.emojioneArea ? this.emojioneArea : (e.data(this, "emojioneArea", this.emojioneArea = new q(e(this), t)), this.emojioneArea)
37569 }, e.fn.emojioneArea.defaults = H(), e.fn.emojioneAreaText = function(n) {
37572 shortnames: !n || void 0 === n.shortnames || n.shortnames,
37573 emojiTemplate: '<img alt="{alt}" class="emojione' + (n && n.sprite && 3 > R ? '-{uni}" src="' + D : 'emoji" src="{img}') + '"/>'
37575 return E(n), t(function() {
37576 r.each(function() {
37578 return t.hasClass("emojionearea-text") || t.addClass("emojionearea-text").html(f(t.is("TEXTAREA") || t.is("INPUT") ? t.val() : t.text(), i)), t